组播的优点: 需要相同数据流的客户端加入相同的组共享一条数据流,节省了服务器的负载。具备广播所具备的优点。 由于组播协议是根据接受者的需要对数据流进行复制转发,所以服务端的服务总带宽不受客户接入端带宽的限制。IP协议允许有2亿6千多万个(268435456)组播,所以其提供的服务可以非常丰富。 此协议和单播协议一样允许在Internet宽带网上传输。
组播的缺点: 1.与单播协议相比没有纠错机制,发生丢包错包后难以弥补,但可以通过一定的容错机制和QOS加以弥补。 2.现行网络虽然都支撑组播的传输,但在客户认证、QOS等方面还需要完善,这些缺点在理论上都有成熟的解决方案,只是需要逐步推广应用到现存网络当中。
单播(Unicast)传输:在发送者和每一接收者之间实现点对点网络连接。 如果一台发送者同时给多个的接收者传输相同的数据,也必须相应的复制多份的相同数据包。如果有大量主机希翼获得数据包的同一份拷贝时, 将导致发送者负担沉重、延迟长、网络拥塞;为保证一定的服务质量需增加硬件和带宽。 组播(Multicast)传输:在发送者和每一接收者之间实现点对多点网络连接。 如果一台发送者同时给多个的接收者传输相同的数据,也只需复制一份的相同数据包。它提高了数据传送效率。减少了骨干网络出现拥塞的可能性。 广播(Broadcast)传输:是指在IP子网内广播数据包,所有在子网内部的主机都将收到这些数据包。 广播意味着网络向子网每一个主机都投递一份数据包,不论这些主机是否乐于接收该数据包。所以广播的使用范围非常小, 只在本地子网内有效,通过路由器和交换机网络设备控制广播传输。 组播技术1、 IP组播技术体系结构
组播协议分为主机-路由器之间的组成员关系协议和路由器-路由器之间的组播路由协议。组成员关系协议包括IGMP(互连网组管理协议)。组播路由协议分为域内组播路由协议及域间组播路由协议。域内组播路由协议包括PIM-SM、PIM-DM、DVMRP等协议,域间组播路由协议包括MBGP、MSDP等协议。同时为了有效抑制组播数据在链路层的扩散,引入了IGMP Snooping、CGMP等二层组播协议。
IGMP建立并且维护路由器直联网段的组成员关系信息。域内组播路由协议根据IGMP维护的这些组播组成员关系信息,运用一定的组播路由算法构造组播分发树进行组播数据包转发。域间组播路由协议在各自治域间发布具有组播能力的路由信息以及组播源信息,以使组播数据在域间进行转发。 2、 组播IP地址
组播IP地址用于标识一个IP组播组。IANA把D类地址空间分配给IP组播,其范围是从224.0.0.0到239.255.255.255。如下图所示(二进制表示),IP组播地址前四位均为1110。
八位组(1) 八位组(2) 八位组(3) 八位组(4)
1110XXXX XXXXXXXX XXXXXXXX XXXXXXXX 3、 组成员关系协议 (IGMP)
IGMP协议运行于主机和与主机直接相连的组播路由器之间,主机通过此协议告诉本地路由器希翼加入并接受某个特定组播组的信息,同时路由器通过此协议周期性地查询局域网内某个已知组的成员是否处于活动状态(即该网段是否仍有属于某个组播组的成员),实现所连网络组成员关系的收集与维护。
IGMP有三个版本,IGMPv1由RFC1112定义,目前通用的是IGMPv2,由RFC2236定义。IGMPv3目前仍然是一个草案。IGMPv1中定义了基本的组成员查询和报告过程,IGMPv2在此基础上添加了组成员快速离开的机制,IGMPv3中增加的主要功能是成员可以指定接收或指定不接收某些组播源的报文。这里着重先容IGMPv2协议的功能。
IGMPv2通过查询器选举机制为所连网段选举唯一的查询器。查询器周期性的发送普遍组查询消息进行成员关系查询;主机发送报告消息来应答查询。当要加入组播组时,主机不必等待查询消息,主动发送报告消息。当要离开组播组时,主机发送离开组消息;收到离开组消息后,查询器发送特定组查询消息来确定是否所有组成员都已离开。
通过上述IGMP机制,在组播路由器里建立起一张表,其中包含路由器的各个端口以及在端口所对应的子网上都有哪些组的成员。当路由器接收到某个组G的数据报文后,只向那些有G的成员的端口上转发数据报文。至于数据报文在路由器之间如何转发则由路由协议决定,IGMP协议并不负责。 4、 网络二层组播相关协议
网络二层组播相关协议包括IGMP Snooping ,IGMP Proxy和CGMP协议。
IGMP Snooping的实现机理是:交换机通过侦听主机发向路由器的IGMP 成员报告消息的方式,形成组成员和交换机接口的对应关系;交换机根据该对应关系将收到组播数据包只转给具有组成员的接口。
IGMP Proxy与IGMP Snooping实现功能相同但机理相异:IGMP snooping只是通过侦听IGMP的消息来获取有关信息,而IGMP Proxy则拦截了终端用户的IGMP请求并进行相关处理后,再将它转发给上层路由器。
CGMP(Cisco Group Management Protocol)是Cisco基于客户机/服务器模型开发的私有协议,在CGMP的支撑下,组播路由器能够根据接收到的IGMP数据包通知交换机哪些主机何时加入和脱离组播组,交换机利用由这些信息所构建的转发表来确定将组播数据包向哪些接口转发。GMRP是主机到以太网交换机的标准协议,它使组播用户可以在第二层交换机上对组播成员进行注册。 5、 组播路由协议 (PIM-SM)
众多的组播路由协议中,目前应用最多的协议是 PIM-SM稀疏模式协议无关组播。
在PIM-SM域中,运行PIM-SM协议的路由器周期性的发送Hello消息,用以发现邻接的PIM路由器,并且负责在多路访问网络中进行指定路由器(DR)的选举。这里,DR负责为其直连组成员朝着组播分发树根节点的方向发送"加入/剪枝"消息,或是将直连组播源的数据发向组播分发树。
什么是组播 - Liuqz - liuqz926 的博客 PIM-SM显式的加入机制 PIM-SM通过建立组播分发树来进行组播数据包的转发。组播分发树分为两种:以组G的RP为根的共享树(Shared Tree)和以组播源为根的最短路径树(Shortest Path Tree)。 PIM-SM通过显式的加入/剪枝机制来完成组播分发树的建立与维护。如上图所示: 当DR收到一个发自接收端的加入(Join),它就会向着组G的RP方向逐跳组播发出一个(*,G)加入信息用以加入共享树; 源主机向组发送组播数据时,源的数据被封装在注册消息内,并由其DR 单播至RP,RP再将源的解封装数据包沿着共享树转发到各个组成员; RP朝着源方向向第一跳路由器发送(S,G)加入信息,用以加入此源的最短路径树,这样源的数据包将沿着其最短路径树不加封装地发送到RP; 当第一个组播数据沿此树到达时,RP向源的DR发送注册-停止消息,以使DR停止注册封装过程。此后,这个源的组播数据不再注册封装,而是先沿着源的最短路径树发送到RP,再由RP 将其沿着共享树转发到各个组成员。 当不再需要组播数据时,DR向着组G的RP逐跳组播剪枝消息用以剪枝共享树。
PIM-SM中还涉及到其根节点RP的选择机制。PIM-SM域内配置了一个或多个候选自举路由器(Candidate-BSR)。应用一定的规则从中选出自举路由器(BSR)。PIM-SM域中还配置了候选 RP路由器(Candidate-RP),这些候选 RP将包含了它们地址及可以服务的组播组等信息的包单播至自举路由器。BSR 定期生成包括一系列候选 RP以及相应的组地址的"自举"消息。"自举"消息在整个域中逐跳发送。路由器接收并保存这些"自举"消息。若 DR 从直连主机收到了某组的成员关系报告后,如果它没有这个组的路由项,DR 将使用一个hash算法将组地址映射至一个可以为该组服务的候选 RP。然后 DR 将朝RP方向逐跳组播"加入/剪枝"消息。若 DR从直连主机收到组播数据包,如果它没有这个组的路由项,DR 将使用hash算法将组地址映射至一个可以为该组服务的候选 RP。然后 DR将组播数据封装在注册消息中单播到RP。 IP组播地址组播协议的地址在IP协议中属于D类地址。
D类地址是从224.0.0.0到239.255.255.255之间的IP地址其中224.0.0.0到224.0.0.255是被保留的地址。 组播协议的地址范围类似于一般的单播地址,被划分为两个大的地址范围, 239.0.0.0—239.255.255.255是私有地址,供各个内部网在内部使用,这个地址的组播不能上公网,类似于单播协议使用的192.168.X.X和10.X.X.X。 224.0.1.0—238.255.255.255是公用的组播地址,可以用于Internet上。 下面是一些常见的有特殊用途的IP组播地址 224.0.0.0 - Base address 224.0.0.1 - 网段中所有支撑多播的主机 224.0.0.2 - 网段中所有支撑多播的路由器 224.0.0.4 - 网段中所有的DVMRP路由器 224.0.0.5 - 所有的OSPF路由器 224.0.0.6 - 所有的OSPF指派路由器 224.0.0.7 - 所有的ST路由器 224.0.0.8 - 所有的ST主机 224.0.0.9 - 所有RIPv2路由器 224.0.0.10 - 网段中所有支的路由器 224.0.0.11 - Mobile-Agents 224.0.0.12 - DHCP server / relay agent服务专用地址 224.0.0.13 - 所有的PIM路由器 224.0.0.22 - 所有的IGMP路由器 224.0.0.251 - 所有的支撑组播的DNS服务器 224.0.0.9 RIPv2支撑组播更新。 224.0.0.22 IGMPv2使用此地址,这个协议的本意是减少广播,让组员以组播形式通信。 224.0.0.5 224.0.0.6这两个是ospf协议使用的组播地址。 在broadcast network不论是DR,BDR,DRother,大家发送hello packet的时候目标地址都是AllSPFRouter(224.0.0.5);DRother向DR,BDR发送DD,LSA request或者LSA UPdate时目标地址是AllDRouter(224.0.0.6);DR,BDR向DRother发送DD,LSA Request或者LSA Update时目标地址是AllSPFRouter(224.0.0.5);retransmit的LSA都是unicast,LSA ACK要看是explicit ack(unicast)还是implicit ack(multicast 224.0.0.6); 组播IP地址与以太网二层MAC地址的映射: IP组播地址用于标识一个IP组播组。IANA把D类地址空间分配给IP组播,范围从224.0.0.0到239.255.255.255,IP组播地址前四位均为1110。 从224.0.0.0至224.0.0.255被IANA保留为网络协议使用。例如:244.0.0.1 全主机组244.0.0.2 全多播路由器组244.0.0.3全DVMRP路由器组244.0.0.5 全OSPF路由器组。在这一范围的多播包不会被转发出本地网络,也不会考虑多播包的TTL值。 地址从239.0.0.0至239.255.255.255作为管理范围地址,保留为私有内部域使用。 如下图所示,以太网和FDDI的MAC地址01:00:5E:00:00:00到01:00:5E:7F:FF:FF用于将三层IP组播地址映射为二层地址,即IP组播地址中的低23位放入IEEE MAC地址的低23位。IP组播地址有28位地址空间,但只有23位被映射到IEEE MAC地址,这样会有32个IP组播地址映射到同一MAC地址上。
|