分类: LINUX
2018-07-16 10:39:25
在交换机中有三种通信方式:单播(unicast)、广播(broadcast)、组播(multicast)
单播解决了点对点通信的需求;
广播是点对多点的通信,其存在两个缺点:
1)只能在同一网段内实现广播;
2)不能指定目的主机,所有网段内的主机都将收到广播报文,存在带宽浪费。
组播也是点对多点的通信,完全克服了广播的两个缺点,广泛应用在网络电视、在线直播、远程教育、视频会议等对带宽和数据交互实时性较高的信息服务。
组播源(source):信息的发送者,不是组播组成员。
组播组:接收者的集合,使用一个组播IP地址来标示。
(*, G):表示共享树(共享的意思是多个源共享一棵树),或由任意组播源发往组播组G的组播报文,“*”表示任意组播源,G表示特定组播组G。
(S, G)表示“组播源组”,通常表示最短路径树,或有组播源S发往组播组G的组播报文。
ASM(any source multicast)模型:任意源组播模型,任意一个发送者都可以作为组播源向某组播组地址发送信息。
SSM(source specific multicast)模型:通过在客户端指定组播源,而不接收其它源发送的信息。
L2组播:组播报文在L2层传输,称为“二层组播”,相应的组播协议称为“二层组播协议”,包括IGMPSnooping/MLD Snooping
L3组播:组播报文在L3层传输,称为“三层组播”,相应的组播协议称为“三层组播协议”,包括IGMP/MLD、PIM等。
组播IP地址:标准组织将D类地址空间分配给IPv4组播使用,范围224.0.0.0~239.255.255.255
IPv4组播地址范围和含义
地址范围 |
意义 |
参考 |
224.0.0.0~224.0.0.255 |
永久组地址,供路由协议、拓扑查找、协议维护使用 |
224.0.0.0 保留,不使用 224.0.0.1 所有系统,包括主机、路由器 224.0.0.2 所有组播路由器 224.0.0.5 OSPF路由器 224.0.0.13 所有PIM路由器 |
224.0.1.0~238.255.255.255 |
用户组地址,全网有效 |
232.0.0.0/8 SSM组地址 |
239.0.0.0~239.255.255.255 |
本地管理组地址,仅在本地域内有效,实现IP组播在不同私网的地址复用 |
可以用192.168.0.0类比,用在私网的组播地址 |
组播MAC地址:组播报文的目的地是一组不确定的成员,因此使用特殊的组播MAC地址。
IPv4组播MAC地址的高24位为0x01005E,第25位为0,低23位为组播IP地址的低23位。IP和MAC的映射关系:
注意:
一个组播组可以有多个组播源,一个组播源也可以向多个组播组传输信息。比如CCTV是一个组播组,CCTV-1、CCTV-5就是不同的组播源
为了减少带宽资源的消耗,组播源发送的报文,在距离组播源尽可能远的网络节点才开始被复制和分发。
组播各协议适用范围
组播路由协议运行在三层组播设备之间,用于建立和维护组播路由,并正确、高效地转发组播数据包。组播路由建立了从一个数据源端到多个接收端的无环(loop-free)数据传输路径,即组播分发树。
PIM协议无关组播(ProtocolIndependent Multicast):与单播路由协议无关,但事实上还是依靠单播路由建立组播路由。PIM使用RPF (reverse path forwarding,逆向路径转发)实现对组播报文的转发。当组播报文到达本地设备时,首先对其进行RPF检查:若RPF检查通过,则创建相应的组播路由表项,从而进行组播报文的转发;若RPF检查失败,则丢弃该报文。
根据实现机制的不同,PIM分为以下两种模式:
PIM-DM(ProtocolIndependent Multicast-Dense Mode,协议无关组播—密集模式)
PIM-SM(ProtocolIndependent Multicast-Sparse Mode,协议无关组播—稀疏模式)
组播路由表项的四要点:“组播源”、“组播组”、“到组播源的接口”、“出接口列表”
1) 将组播数据flooding到网络的所有节点
2) 对没有组播数据转发的分支进行“剪枝”(prune),只保留包含接收者的分支
3) 周期性重复“扩散-剪枝”
4) 当被剪枝的分支上出现组播组成员时,为了减少该节点恢复成转发状态的时间,适用“嫁接”(graft)恢复对组播数据的转发
PIM-DM属于密集模式,适用于规模较小、组成员密集的局域网内。
1)PIM-SM假设所有主机都不需要接收组播报文。
2)设定根节点RP(Rendezvous Point)路由器,所有组播数据通过RP转发
3)连接接收者的路由器向组播组对应的RP发送加入报文,该报文逐条发送到RP,所经过的路径就是组播转发路径
4)组播源向RP注册,发送组播数据,RP沿着组播转发路径(RPT)转发报文。
PIM-SM属于稀疏模式,适用于范围广、组播成员分散的大型网络中,比如Internet。
组播路由协议依赖于已有的单播路由信息来创建组播路由表项。在创建组播路由表项时,使用RPF检查机制,以确保组播数据能够沿着正确的路径传输,避免环路。
执行RPF的依据是单播路由、MBGP路由、组播静态路由
l 单播路由表中提供了到达各个目的网段的最短路径
l MBGP路由表直接提供了组播路由信息
l 组播静态路由表中列出了用户通过手工静态配置的RPF路由信息。
执行过程:
1) 以SIP为目的地址查找单播路由表,对应表项的出接口RPF接口,下一跳是RPF邻居。从RPF邻居发出且由RPF接口收到的组播报文的路径是从source到本地的最短路径。
2) 以SIP为目的地址查找MBGP路由表,对应表项中的出接口为RPF接口,下一跳为RPF邻居
3) 以SIP未目的地址查找组播静态路由表,对应表项明确了RPF接口和RPF邻居。
4) 按最长匹配算法,从以上路由条目中选举出最佳路由,如果掩码一样,则按组播静态路由、MBGP路由、单播路由的优先级选择
IGMP(internetgroup management protocol, 因特网组管理协议)协议运行于主机和主机相连的组播路由器之间,用于管理多播组成员。实现两个功能:
1) 主机通过IGMP通知路由器希望接收某个特定组播组的信息;
2) 路由器通过IGMP周期性地查询局域网内的组播组成员是否处于活动状态,实现所连网段组成员关系的收集与维护。
通过IGMP,在路由器中记录的信息是某个组播组是否在本地有组成员,而不是组播组与主机之间的对应关系。
目前IGMP有以下三个版本:
1)IGMPv1(RFC 1112)中定义了基本的组成员查询和报告过程;
2)IGMPv2(RFC 2236)在IGMPv1的基础上添加了组成员快速离开的机制等;
3)IGMPv3(RFC 3376)中增加的主要功能是成员可以指定接收或拒绝来自某些组播源的报文,以实现对SSM模型的支持。
1)查询器周期性地发送普遍组查询消息进行成员关系查询,主机通过发送报告消息来响应查询
2)当主机要加入组播组时,不必等待查询消息,而是主动发送报告消息
3)当主机要离开组播组时,也会主动发送离开组消息,查询器收到离开组消息后,会发送特定组查询消息来确定该组的所有组成员是否都已离开。
通过上述机制,在路由器里建立起一张表,其中记录了路由器各接口所对应子网上都有哪些组的成员。当路由器收到发往组G的组播数据后,只向那些有G的成员的接口转发该数据。至于组播数据在路由器之间如何转发则由组播路由协议决定,而不是IGMP的功能。
IGMP是针对IP层设计的,只能记录路由器上的三层接口与IP组播地址的对应关系。在经过二层交换机时,由于没有组播成员和对应端口的映射关系,组播报文需要进行广播,浪费大量的系统资源。IGMP Snooping就是为了解决这个问题,减少在链路层的流量。
主机发往IGMP查询器的报告消息经过交换机时,交换机对这个消息进行监听并记录下来,为端口和组播MAC地址建立起映射关系;当交换机收到组播数据时,根据这样的映射关系,只向连有组成员的端口转发组播数据。
IGMPsnooping实质是运行在二层设备上的进程,它没有协议报文,通过监视IGMP的报文来构建二层组播转发表。