CCNP路由实验之十 组播(多播)
单播(Unicast):网络节点之间的通信通讯的模式是“一对一”的。此时信息的接收和传递仅仅在两个节点之间进行。比如。你在收发电子邮件、浏览网页时,必须与邮件server、Webserver建立连接,此时使用的就是单播传输数据方式。网络中的交换机和路由器对数据仅仅进行转发不进行复制。
假设10个客户机须要同样的数据,则server须要逐一传送。反复10次同样的工作。
但因为其能够针对每一个客户的及时响应。所以如今的网页浏览全部都是採用IP单播协议。网络中的路由器和交换机依据其目标地址选择传输路径,将IP单播数据传送到其指定的目的地。单播应用于TCP,而TCP是一个面向连接的协议,它意味着分别执行于两主机(由IP地址确定)内的两进程(由端口号确定)间存在一条连接。考虑包含多个主机的共享信道网络如以太网。每一个以太网帧包含源主机和目的主机的以太网地址(48 bit)。通常每一个以太网帧仅发往单个目的主机,目的地址指明单个接收接口,因而称为单播(unicast)。在这样的方式下。随意两个主机的通信不会干扰网内其他主机(可能引起争夺共享信道的情况除外)
单播的长处:
1)server及时响应客户机的请求
2)server针对每一个客户不同的请求发送不同的数据。easy实现个性化服务。
单播的缺点:
1)server针对每一个客户机发送数据流,在客户数量大、每一个客户机流量大的流媒体应用中server不堪重负。
2)大量佔用网络带宽
广播(Broadcast):主机之间“一对全部”的通讯模式(UDP),网络对当中每一台主机发出的信号都进行无条件复制并转发,全部主机都能够接收到全部信息(不管你是否须要),如客户机通过DHCP自己主动获得IP地址的过程就是通过广播来实现的。因为其不用路径选择,所以其网络成本能够非常低廉。有线电视网就是典型的广播型网络,我们的电视机实际上是接受到全部频道的信号,但仅仅将一个频道的信号还原成画面。在数据网络中也同意广播的存在,可是同单播和多播相比,广播差点儿占用了子网内网络的全部带宽,因此其被限制在二层交换机的局域网范围内。禁止广播数据穿过路由器。防止广播数据(广播风暴)影响大面积的主机。
集线器因为其工作原理决定了不可能过滤广播风暴,一般的交换机也没有这一功能,只是如今有的网络交换机(如全向的QS系列交换机)也有过滤广播风暴功能了,路由器本身就有隔离广播风暴的作用。 广播风暴不能全然杜绝,可是仅仅能在同一子网内传播。就好像喇叭的声音仅仅能在同一会场内传播一样,因此在由几百台甚至上千台电脑构成的大中型局域网中,一般进行子网划分,就像将一个大厅用墙壁隔离成很多小厅一样,以达到隔离广播风暴的目的。 在IP网络中。广播地址用IP地址“255.255.255.255”来表示。这个IP地址代表同一子网内全部的IP地址。
广播分为第2层广播和第3层广播。第2层广播也称硬件广播。用于在局域网内向全部的结点发送数据。通常不会穿过局域网的边界(路由器),除非它变成一个单播。
广播是一个二进制的全1或者十六进制全F的地址。 第3层广播用于在这个网络内向全部的结点发送数据。第3层广播也支持平面的老式广播。广播信息是指以某个广播域全部主机为目的的信息。这些被称为网络广播,它们是全部的主机位均为ON。
广播的长处:
1)网络设备简单,维护简单。布网成本低廉2)因为server不用向每一个客户机单独发送数据,所以server流量负载极低。
广播的缺点:
1)无法针对每一个客户的要求和时间及时提供个性化服务。2)网络同意server提供数据的带宽有限,client的最大带宽=服务总带宽。比如有线电视的client的线路支持100个频道(假设採用数字压缩技术,理论上能够提供500个频道),即使服务商有更大的財力配置很多其他的发送设备、改成光纤主干。也无法超过此极限。也就是说无法向众多客户提供很多其他样化、更加个性化的服务。
3)广播禁止同意在Internet宽带网上传输。泛洪,是交换机和网桥使用的一种数据流传递技术,交换机依据收到数据帧中的源MAC地址建立该地址同交换机端口的映射,并将其写 入MAC地址表(CAM表)中。交换机将数据帧中的目的MAC地址同已建立的MAC地址表进行比較。以决定由哪个端口进行转发。如数据帧中的目的MAC地址不在MAC地址表中。则向全部端口转发。泛洪操作广播的是普通数据帧而不是广播帧 (FF.FF.FF.FF.FF.FF).,广播是向同一子网内全部的端口(包含自己的那个端口)发送消息; 泛洪仅仅是在全部的端口中不包含发送消息的(自己的)那个端口发送消息.
MAC泛洪:生在OSI第二层。攻击者进入LAN内。将假冒源MAC地址和目的MAC地址将数据帧发送到以太网上导致交换机的内容可寻址存储器(CAM)满掉。然后交换机失去转发功能。导致攻击者能够像在共享式以太网上对某些帧进行嗅探,假设发生了mac地址泛洪攻击,那么你所处的局域网会出现网络缓慢或者断网现象,能够用wireshark等抓包软件抓包分析。能够发现大量的数据包。其mac地址均为随机伪造,且数据内容也为随机伪造。这样的攻击能够通过端口安全技术方式防御,比方端口和MAC地址绑定。
网络泛洪Smurf:发生在OSI第三层。就是假冒ICMP广播ping,假设路由器没有关闭定向广播,那攻击者就能够在某个网络内对其他网络发送定向广播 ping,那个网络中的主机越是多,造成的结果越是严重。因为每一个主机默认都会响应这个ping,导致链路流量过大而拒绝服务。所以属于增幅泛洪攻击,当然也能够对本 网络发送广播ping。
网络泛洪DDos:发生在OSI第三、四层。攻击侵入很多因特网上的系统。将DDos控制软件安装进去,然后这些系统再去感染其他系统,通过这些代理,攻击者将攻击指令发送给DDos控制软件,然后这个系统就去控制下面的代理系统去对某个IP地址发送大量假冒的网络流量,然后受攻击者的网络将被这些假的流量所占领就无法为他们的正经常使用户提供服务了。
TCP SYN泛洪发生在OSI第四层,这样的方式利用TCP协议的特性,就是三次握手。攻击者发送TCP SYN。SYN是TCP三次握手中的第一个数据包,而当server返回ACK后。改攻击者就不正确之进行再确认,那这个TCP连接就处于挂起状态。也就是所谓的半连接状态,server收不到再确认的话。还会反复发送ACK给攻击者。
这样更加会浪费server的资源。攻击者就对server发送非常大量的这样的TCP连接,因为每一个都没法完毕三次握手,所以在server上,这些TCP连接会因为挂起状态而消耗CPU和内存,最后server可能死机。就无法为正经常使用户提供服务了。
应用程序泛洪发生在OSI第七层,目的是消耗应用程序或系统资源。比較常见的应用程序泛洪就是垃圾邮件,但一般无法产生严重的结果。其他类型的应用程序泛洪可能是在server上持续执行高CPU消耗的程序或者用持续不断的认证请求对server进行泛洪攻击,意思就是当TCP连接完毕后,在server提示输入password的时候停止响应。
DHCP报文泛洪攻击是指:恶意用户利用工具伪造大量DHCP报文发送到server,一方面恶意耗尽了IP资源,使得合法用户无法获得IP资源;还有一方面,假设交换机上开启了DHCPSnooping功能。会将接收到的DHCP报文上送到CPU。因此大量的DHCP报文攻击设备会使DHCPserver高负荷执行。甚至会导致设备瘫痪。
ARP报文泛洪相似DHCP泛洪,同样是恶意用户发出大量的ARP报文,造成L3设备的ARP表项溢出,影响正经常使用户的转发。
冲突域(Collision Domain):一组与同一条物理介质相连的设备,当中不论什么两台设备同一时候訪问该介质都将导致冲突。冲突域中同一时间内仅仅有一台机器能够发送数据。第一层设备如集线器,与之连接的全部设备都属于同一个冲突域和同一个广播域。第二层设备如交换机和网桥,将网络划分成多个网段。每一个网段是一个独立的冲突域。可是相连的全部设备是一个广播域,交换机的每一个端口就是一个冲突域。
广播域(Broadcast Domain):网络中一组相互接收广播消息的设备。第三层设备如路由器。将网络划分为多个冲突域和广播域。
以太网使用载波侦听多路訪问/冲突检測(Carrier SenseMulti-Access/Collision Detectio
技术以降低冲突的发生。
即,二层广播帧覆盖的范围就是广播域;二层单播帧覆盖的范
围就是冲突域。
多播(Multicast):“多播”也能够称为“组播”, 主机之间一对一组的通讯模式(UDP),也就是增加了同一个组的主机能够接受到此组内的全部数据。网络中的交换机和路由器仅仅向有需求者复制并转发其所需数据。主机能够向路由器请求增加或退出某个组。网络中的路由器和交换机有选择的复制并传输数据,即仅仅将组内传输数据给那些增加组的主机(组播组)。这样既能一次将传输数据给多个有须要的主机,又能保证不影响其他不须要(未增加组)的主机的其他通讯。比如网上视频会议、网上视频点播特别适合採用多播方式。IP网络的多播一般通过多播IP地址来实现。多播IP地址就是D类IP地址,即224.0.0.0至239.255.255.255之间的IP地址。多播处于单播和广播之间,帧仅传送给属于多播组的多个主机。
组播组能够是永久的也能够是暂时的。组播组地址中,有一部分由官方分配的,称为永久组播组。永久组播组保持不变的是它的ip地址,组中的成员构成能够发生变化。永久组播组中成员的数量都能够是随意的,甚至能够为零。那些没有保留下来供永久组播组使用的ip组播地址。能够被暂时组播组利用。
224.0.0.0~224.0.0.255为预留的组播地址(永久组地址),地址224.0.0.0保留不做分配。其他地址供路由协议使用; 224.0.1.0~238.255.255.255为用户可用的组播地址(暂时组地址)。全网范围内有效;239.0.0.0~239.255.255.255为本地管理组播地址,仅在特定的本地范围内有效。
经常使用的预留组播地址列表例如以下:
224.0.0.0基准地址(保留)
224.0.0.1 全部主机和路由器地址,广播域内
224.0.0.2全部组播路由器的地址
224.0.0.3不分配
224.0.0.4dvmrp 路由器
224.0.0.5ospf 路由器
224.0.0.6ospf dr
224.0.0.7st 路由器
224.0.0.8st 主机
224.0.0.9rip-2 路由器
224.0.0.10Eigrp 路由器
224.0.0.11活动代理
224.0.0.12dhcp server/中继代理
224.0.0.13全部pim 路由器
224.0.0.14rsvp 封装
224.0.0.15全部cbt 路由器
224.0.0.16指定sbm
224.0.0.17全部sbms
224.0.0.18vrrp
224.0.0.40cisco路由器用于发现auto-rp
多播基本原理
Multicast 应用在一点对多点、多点对多点的网络传输中,能够大大的降低网络的负载。
因此,Multicast 广泛地应用在流媒体的传输、远程教学、视频/音频会议等网络应用方面。 Multicast 採用 D 类 IP 地址。即 224.0.0.0~239.255.255.255。当中 224.0.0.0~224.0.0.255 是保留地址,239.0.0.0~239.255.255.255 是私有地址。相似于 unicast 的私有地址。 Multicast的 IP 地址与 MAC地址的映射:MAC 地址有 48 位。前面 24 位规定为 01-00-5E。 接着一位为 0,后面 23 位是 IP 地址的后 23 位。
路由器间要通过组播协议(如 DVMRP、MOSPF、PIM)来建立组播树和转发组播数据 包。组播树有两类:源树和共享树。 多播时,路由器採用组管理协议 IGMP 来管理和维护主机參与组播。IGMP 协议 v1 中。 主机发送 report 包来增加组;路由器发送 query 包来查询主机(地址是 224.0.0.1),同一个 组的同一个子网的主机仅仅有一台主机成员响应。其他主机成员抑制响应。
一般路由器要发送 3 次 query 包,假设 3 次都没响应。才觉得组超时(约 3 分钟)。IGMPv2 中,主机能够发送 1 leave 信息给路由器(地址 224.0.0.2);路由器收到信息后,发送一个特别的 query 包,在 3 秒内没收到组成员响应。就觉得组超时。 因为组播的 MAC 不是详细某台主机的 MAC,依据交换机的工作原理,交换机会对组播数据包进行广播。因此,对某些不參加组播的主机而言。这些都是不必要的流。为了解决问题,cisco 公司开发了 CGMP 协议。该协议用于管理參与组播的主机。每当有主机增加或离开某个组时,路由器就会把该主机的多播 IP 地址(转换成组播 MAC 地址)、主机的 MAC 地址以及消息类型(增加或离开)以 CGMP 消息告知交换机。
交换机依据这些信息就 能够建立起组播转发表。
Cisco 的路由器仅仅支持 PIM 组播协议。PIM 是一种可利用多种单播路由表(如 EIGRP、 OSPF、BGP 和静态路由等)的组播路由协议,它依据这些路由表实现组播数据的转发。
尽 管它是组播路由协议,然而它实际上仅仅是使用单播路由表来完毕 RPF 检验功能,并没有重 新建立组播路由表。不像其他的路由协议。PIM 并不会在路由之间收发路由更新信息。
PIM分为Dense-mode(PIM-DM)与Sparse-mode(PIM-SM)两种。
密集模式的PIM(PIM-DM)使用“推”的方 式。把组播流向网络的各个地方转发。从而把流“推”给不同接收者。这样的方式适用于网络 中的各个子网都有接收者(即接收者密集)的情况。PIM-DM一開始向网络中的各处发组播流,路由器每隔3分钟检查一次自己是否还存在“下游”的邻居,假设没有(即它无需转发组播流)。就把这个流“剪”掉(即不再转发)。路由器会积累数据流所带有的源和组的信 息,使得“下游”的路由器能够建立它们的组播转发表。
PIM-DM仅仅支持源树,而无法使用 共享树。 密集模式工作过程:
邻居发现:使用hello数据包发现邻居并维护邻居关系,在多点訪问的网络中使用hello包选举DR,DR选举依据IP地址大少比較。大的成为DR。注意DR在PIM-SM模式下才有意义
建立SPT树:当某组播源S開始向组播组G发送数据时。首先依据单播路由表进行RPF检查,假设通过了RPF检查,则创建(S,G)表项。并同一时候产生(*,G)表项,然后将数据包向下游网络中的PIM-DM节点进行转发。
注意在PIM-DM模式中使用(S,G)表项进行数据转发
RPF检查:用来确保组播数据流能够沿组播分发树(路径)正确的传输。同一时候能够避免转发路径上环路的产生。
当路由器收到组播数据报文时,通过已有的单播路由信息推断此报文是否在最短返回源路径的接口上。
假设不是,则丢弃该报文。假设是。则转发报文到接口或者路由器。缺省情况下,假设存在多条到达源的等价路由。设备在进行RPF检查时,针对不同的情况会有不同的选路规则:
假设这几条等价路由都是来自同一张路由表项。比方单播路由表、组播静态路由表或者MBGP路由表中的一种,则选取下一跳地址最大的路由作为RPF路由。
假设这几条等价路由来自不同的路由表。首先会比較路由优先级,再比較掩码长度。
假设上述都同样。则设备会依据一定的函数计算选取出一条路由作为RPF路由。 不管上述何种情况。依据RPF检查规则,设备仅仅会选取一条路由作为RPF路由。
可是假设配置了组播负载分担之后。当存在多条等价的最优路由时,组播数据将不会依照RPF检查规则仅仅选一条路由作为RPF路由进行转发,而是在这多条路径上依照一定的策略进行分流转发。这样。在一定程度上优化了组播数据在网络上的传输质量。
剪枝:当没有接收者的叶节点的路由器向着组播组地址224.0.0.13发送prune消息时进行剪枝。有接收者的叶节点路由器保留SPT,保留接口为转发状态。被prune剪掉的接口处于prune状态,并保持三分钟。超出三分钟后又会变成转发状态。注意prune消息是不可靠的,不会收到回复。
当处于prune状态的路由器下游接入了接收者。此时接收者通过IGMP协议向最后一跳路由器发送report消息,最后一跳路由器立即向上一级邻居路由器发送单播的Graft消息,而且收到上一级邻居路由器的Graft ACK确认消息。这样一直发送到根。此时路由器的prune接口变为forward状态. 注意graft消息是可靠的机制。必须要收到Graft ACK。假设没有收到默认3s重发。
松散模式的PIM(PIM-SM)使用“拉”的方式,仅仅有存在接收者的网段才会接收到数据流(即接收者把流“拉”出来)。主要用于组成员分布相对分散、范围较广、大规模网络中。
松散模式默认全部主机不须要接收组播包。仅仅向明白须要组播包的主机转发。PIM-SM模型实现转发的核心任务是构造并维护一颗单向共享树,共享树选择PIM中某一个路由器作为公用根节点。即汇聚点RP(Rendesvous Point)。组播数据通过RP沿共享树向接受者转发。引入RP进行组播转发,降低数据报文和控制报文占用的网络带宽,降低路由器的处理开销。在接收的一方,链接信息接收者的路由器向该组播组相应的RP发送组增加信息,增加消息经过一个个路由器后到达根部(即汇聚点),所经过的路径变成了此共享树的RPT分支。发送端假设想要往某组播组发送数据包,首先由第一跳路由器向RP汇聚点注冊,注冊消息到达RP后触发源树建立。之后组播源把数据发向RP汇聚点,当数据到达RP汇聚点后,组播数据包被复制并沿着RPT树传给接受者。复制仅仅发生在分法树的分支处。这个过程能自己主动反复直到数据包终于到达接收者。
PIM-SM的工作过程:邻居发现,DR选举、RP发现、RPT共享树生成、组播源注冊、RPT向SPT切换。
邻居发现:通过各路由器之间发送hello包实现的
DR选举:借助hello消息能够为共享网络(如以太网)选举DR,DR作为本网段中的组播信息唯一转发者。不管是和组播源链接的网络。还是和接收者链接的网络,仅仅要网络为共享媒介则须要选举DR。
接收者一方的DR发送Join增加信息到RP,组播源一方的DR向RP发送Register注冊信息。
Hello消息携带DR优先级选项,拥有高优先级的被选为本网段的DR。假如不支持在Hello包中携带优先级。则拥有最大IP地址的路由器被选举为DR。当DR出现问题时。接受Hello消息将会超时,邻居路由器之间触发新的DR选举。
RP发现:RP是PIM-SM域中心的核心路由器。全网的信息转发都依靠它。
此时RP就是工作量最大,发负载最大的,为了缓解RP的压力。就须要自举机制来选举RP,此时须要配置自举路由器BSR(Bootstrap Router),BSR是PIM-SM网络的管理核心。负责收集网络中的Candidate-RP(C-RP)发来的Advertisment宣告信息,然后将为每一个组播组选择部分C-RP信息以组成RP-Set集(即组播组和RP的映射库),并公布到整个PIM-SM网络。从而网络内全部的路由器都知道RP和BSR位置。一个网络的内部仅仅能选举出一个BSR,但能够配置多个Candidate-BSR(C-BSR),这样一旦BSR发生问题,其余C-BSR能够自己主动选举出新的BSR。同样一个PIM-SM域内能够有多个C-RP。由BSR机制计算出每一个组播组相应的RP。
RPT生成:当接收者路由一端向RP发送jion增加信息所经过的每一个路由节点时,都会向转发表中增加(*,G)表项,这些沿途经过的路由器就形成了RP的共享树(RPT)的一个分支。当中(*,G)表示从随意源来的消息去往组播组G。RPT共享树以RP为根,接收者为叶子。当从组播源发往组播组G的报文流经RP时,报文就会沿着已经建立好的RPT共享树路径到达叶子路由器,进而到达接受者。当某个接受者退出组播组G时。接收者一方的DR会逆着RPT树,朝RP方向逐跳发送Prune剪枝消息。第一个上游路由器接收到该剪枝消息,在其出接口列表中删除链接此下游路由器的接口,并检查下游是否还存在组播组G成员,假设没有则继续向上游转发该剪枝消息。
组播源注冊:为了向RP通知组播源S的存在。当组播源S向组播组G发送的一个组播组报文时。与组播源S直接相连的路由器收到该报文后。就将该报文封装成Register注冊报文,并单播发送给相应的RP。当RP收到来自组播组的注冊消息后,一方面解除封装注冊消息并将组播消息沿着RPT树发到接收者。还有一方面朝组播源逐跳发送(S,G)增加消息。从而让RP和组播组S之间的全部路由器都生成(S。G)表项。这些沿途经过的路由就形成了SPT树的一个根,以RP为目的地。
组播源S发出的组播信息沿着已经建立好的SPT树到达RP。然后由RP将信息沿着RPT共享树进行转发。当RP收到沿着SPT树转发的组播流量后,向从与组播源的S直连路由器的单播发送注冊停止报文。组播源注冊过程结束。
RPT向SPT切换:PIM-SM通过指定一个利用带宽的SPT阈值能够实现将最后一跳路由器(即离接收者近的DR)从RPT切换为SPT。当最后一跳路由器发现从RP发往组播组G的组播报文速率超过了阈值时。就向单播路由器表中到组播源S的下一跳路由器发送(S,G)增加消息,增加消息经过一个个路由器后到达第一跳路由器(即离组播源近期的DR),沿途经过的全部路由器都拥有了(S,G)表项,从而建立SPT树分支。随后,最后一跳路由器向RP逐跳发送包含RP为的Prune剪枝消息。RP收到消息后向组播源反向转发Prune剪枝消息。
从而实现组播信息流从RPT切换到SPT。
切换到SPT后。组播源S直接发送信息到接收者。
组播和单播的差别: 为了让网络中的多个主机能够同一时候接受到同样的报文。假设採用单播的方式。那么源主机必须不停的产生多个同样的报文来进行发送。对于一些对时延非常敏感的数据,在源主机要产生多个同样的数据报文后,在产生第二个数据报文,这通常是无法容忍的。而且对于。一台主机来说,同一时候不停的产生一个报文来说也是一个非常大的负担。
假设採用组播的方式,源主机能够仅仅须要发送一个报文就能够到达每一个须要接受的主机上,这中间还要取决于路由器对组员和组关系的维护和选择。
组播和广播的差别:当有多台主机想要接收同样的报文。广播採用的方式是把报文传送到局域网内每一个主机上。不管这个主机是否对报文感兴趣。
这样做就会造成了带宽的浪费和主机的资源浪费。而组播有一套对组员和组之间关系维护的机制。能够明白的知道在某个子网中,是否有主机对这类组播报文感兴趣,假设没有就不会把报文进行转发。并会通知上游路由器不要再转发这类报文到下游路由器上。
组播的长处:
须要同样数据流的client增加同样的组共享一条数据流,节省了server的负载。具备广播所具备的长处。
因为组播协议是依据接受者的须要对数据流进行复制转发,所以服务端的服务总带宽不受客户接入端带宽的限制。IP协议同意有2亿6千多万个组播,所以其提供的服务能够非常丰富。
此协议和单播协议一样同意在Internet宽带网上传输。
组播的缺点:
与单播协议相比没有纠错机制。发生丢包错包后难以弥补,但能够通过一定的容错机制和QOS加以弥补。
现行网络尽管都支持组播的传输。但在客户认证、QOS等方面还须要完好,这些缺点在理论上都有成熟的解决方式。仅仅是须要逐步推广应用到现存网络当中。
实验一、组播中的IGMP