组播协议温故及案例分析

 

组播协议温故及案例分析


Hello大家好,我是阿斗,最近有一个项目中遇到了组播故障,今天关于这个故障做一个案例分析。

 

组播介绍

  组播技术实现了网络中点到多点的高效数据传送,它能够有效地节约网络带宽、降低网络负载,所以在IPTV、实时数据传送和多媒体会议等诸多方面都有广泛的应用。

 

组播的产生

  传统的IP通信有两种方式:单播(Unicast),即数据从一台源IP主机传输到一台目的IP主机;广播(Broadcast),即数据从一台源IP主机向本网段中所有其它的IP主机发送。

  如果要将数据从一台主机发送给多个主机而非所有主机,则要么采用广播方式,要么由源主机分别向网络中的多台目标主机以单播方式发送多份数据

组播协议温故及案例分析

组播协议温故及案例分析

采用单播方式实现时,传输信息量与需要该信息的用户量成正比,因此当需要该信息的用户数量较大时,信息源Source需要将多份内容相同的信息发送给不同的用户Host,这对信息源Source以及从Source到CE带宽都将造成巨大的压力。由此可以看出,该传输方式不利于信息的批量发送。

   采用广播方式实现时,不需要信息的Uninterested User也将收到该信息,这样不仅信息的安全性得不到保障,而且会造成P到CE的信息泛滥。由此可见,该传输方式不利于与特定对象进行数据交互,并且还浪费了大量的带宽。

   基于以上两点,组播应运而生,组播(multicast)可以很好的解决点对多点的数据传输,源Source只发送一份数据,所有接收者都可接收到同样的数据拷贝,并且只有需要该数据的主机(目标主机)可以接收该数据,网络中其它主机不能收到该数据。在数据传输的同时,组播能够保障信息的安全性且只占用有限的网络带宽。

组播协议温故及案例分析

组播优势

    相比单播,由于被传递的信息在距信息源尽可能远的网络节点才开始被复制和分发,所以用户的增加不会导致信息源负载的加重以及网络资源消耗的显著增加。

 相比广播,由于被传递的信息只会发送给需要该信息的接收者,所以不会造成网络资源的浪费,并能提高信息传输的安全性。另外,广播只能在同一网段中进行,而组播可以实现跨网段的传输。

 

组播基本概念名词

组播组:

IP组播地址进行标识的接收者集合,主机通过加入某组播组,从而可以接收发往该组播组的组播数据。 

组播源:

   信息的发送者称为“组播源”,一个组播源可以同时向多个组播组发送信息,多个组播源也可以同时向一个组播组发送信息。组播源通常不需要加入组播组。 

组播组成员:

   所有加入某组播组的主机便成为该组播组的成员,组播组中的成员是动态的,主机可以在任何时刻加入或离开组播组。组播组成员可以广泛地分布在网络中的任何地方。

组播路由器:

   支持三层组播功能的路由器或三层交换机,组播路由器不仅能够提供组播路由功能,也能够在与用户连接的末梢网段上提供组播组成员的管理功能。组播路由器本身也可能是组播组的成员。

组播模型

 

根据接收者对组播源处理方式的不同,组播模型分为以下两类:

ASM(Any-Source Multicast)任意源组播模型

   在ASM模型中,任意一个发送者都可以作为组播源向某组播组地址发送信息,众多接收者通过加入由该组播组地址标识的组播组以获得发往该组播组的组播信息。接收者无法预先知道组播源的位置,但可以在任意时间加入或离开该组播组。

SSM(Source-Specific Multicast)指定信源组播模型

   有些情况下,用户只对某些组播源发送的组播信息感兴趣,而不愿接收其它源发送的信息,SSM模型就为用户提供了这样一种能够在客户端指定组播源的传输服务。SSM模型中的接收者已经通过其它手段预先知道了组播源的具体位置,可以直接在接收者与其指定的组播源之间建立专用的组播转发路径。

IPv4组播地址

   在基于IPv4的网络中,为了让组播源和组播组成员进行通信,需要提供网络层组播地址,即IPv4组播地址。任何用户主机(或其他接收设备)加入此范围内的某组播组,就成为了该组成员,可以识别并接收以该组播地址为目的地址的IP报文。网络中的组成员可能广泛分布在网络中的任何地方,用户主机可以在任何时刻加入或者离开组播组。IPv4组播地址使用D类地址,其范围是:224.0.0.0~239.255.255.255。

IPV4组播地址范围含义

D类地址范围

含义

224.0.0.0~224.0.0.255

本地链路的保留组地址。IANA为路由协议预留的组播地址(也称为永久组地址),用于标识一组特定的网络设备,不用于组播转发。

224.0.1.0~231.255.255.255

233.0.0.0~238.255.255.255

ASM组播地址,全网范围内有效。

232.0.0.0~232.255.255.255

缺省情况下的SSM组播地址,全网范围内有效。

239.0.0.0~239.255.255.255

管理范围组地址。缺省的BSR管理域组地址范围,仅在BSR管理域内有效,属于私有地址。在不同的BSR管理域内使用相同的地址不会冲突。

IPv4组播MAC地址

   以太网传输IPv4单播报文的时候,目的MAC地址使用的是接收者的MAC地址。但是在传输组播数据包时,其目的地不再是一个具体的接收者,而是一个成员不确定的组,所以要使用IPv4组播MAC地址,即IPv4组播地址映射到链路层中的地址。

   IANA规定,IPv4组播MAC地址的高24bit为0x01005e,第25bit为0,低23bit为IPv4组播地址的低23bit,映射关系如图所示。例如某组播组的IPv4组播地址为224.0.1.1,则该组播组的IPv4组播MAC地址为01-00-5e-00-01-01。

IPv4组播地址与IPv4组播MAC地址的映射关系

组播协议温故及案例分析   由于IPv4组播地址的前4bit是1110,代表组播标识,但是后28bit中只有23bit被映射到MAC地址,这样IP地址中就有5bit信息丢失,直接的结果是出现了32个IPv4组播地址映射到同一MAC地址上,当按MAC地址转发时,如果发生地址冲突,请将配置修改成按IP地址转发组播数据。例如组播IP地址为224.0.1.1、224.128.1.1、225.0.1.1、239.128.1.1等组播组的组播MAC地址都为01-00-5e-00-01-01。

IPv4组播协议

PIM(Protocol Independent Multicast)协议无关组播

   PIM作为一种IPv4网络中的组播路由协议,主要用于将网络中的组播数据流发送到有组播数据请求的组成员所连接的路由器上,从而实现组播数据流的路由查找与转发。PIM协议包括适合网络规模较大、组成员相对比较分散的PIM-SM(Protocol Independent Multicast Sparse Mode)协议无关组播-稀疏模式和适合网络规模较小、组播组成员相对比较集中的PIM-DM(Protocol Independent Multicast Dense Mode)协议无关组播-密集模式。

在PIM-DM模式下不需要区分ASM模型和SSM模型。

在PIM-SM模式下根据数据和协议报文中的组播地址区分ASM模型和SSM模型

如果在SSM组播地址范围内,则构建PIM-SM在SSM中的实现模式。PIM-SSM不但效率高,而且简化了组播地址分配流程,特别适用于对于特定组只有一个特定源的情况。

如果在ASM组播地址范围内,则按照PIM-SM在ASM中的实现流程进行处理。

 

IGMP(Internet Group Management Protocol)组播组管理协议

 IGMP是负责IPv4组播成员管理的协议,运行在组播网络中的最后一段,即组播网络中三层网络设备与用户主机相连的网段内。IGMP协议在主机端实现组播组成员加入与离开,在上游的三层设备中实现组成员关系的维护与管理,同时支持与上层组播路由协议的信息交互。

到目前为止,IGMP有三个版本:IGMPv1版本、IGMPv2版本和IGMPv3版本。

所有IGMP版本都支持ASM模型。IGMPv3可以直接应用于SSM模型,而IGMPv1和IGMPv2则需要SSM Mapping技术的支持。

MSDP(Multicast Source Discovery Protocol)组播源发现协议

   MSDP是为了解决多个PIM-SM域之间的互连的一种域间组播协议,用来发现其它PIM-SM域内的组播源信息,将远端域内的活动信源信息传递给本地域内的接受者,从而实现组播报文的跨域转发。

MBGP(Multicast Border Gateway Protocol)组播边界网关协议

MBGP是MP-BGP(Multi-Protocol BGP,多协议BGP)在组播上的应用协议,实现组播源与组播接收者跨AS域进行组播转发。

 

IGMP Snooping

   IGMP Snooping功能可以使作为二层设备的路由器通过侦听上游的三层设备和主机之间发送的IGMP三层报文来建立组播数据报文的二层转发表,管理和控制组播数据报文的转发,进而有效的抑制组播数据在二层网络中扩散。

   与IGMP对应,IGMP Snooping就是IGMP协议在作为二层设备的路由器中的延伸协议,可以通过配置IGMP Snooping的版本使路由器可以处理不同IGMP版本的报文。

 

IGMP Snooping Proxy

   IGMP Snooping Proxy功能可以使路由器代替上游设备发送IGMP查询消息和接收下游设备发送的IGMP加入和离开消息,这样能够有效的节约上游设备和本设备之间的带宽。

IGMP Snooping分为三个版本,V1,V2,V3我们通常使用V2版本,V2兼容V1,V3用于SSM模型中

 

IGMPV1

   当一个组成员不在需要组流量后,会默默的断开连接,而不会给路由器发送任何信息,这就有了一个弊端,也就是,如果网络中最后一台主机离线,路由器并没有办法知道主机下线,所以路由器会继续转发组播流量,直到180秒后,才切断组播流量的转发,在IGMPv2中,增加了离组消息

   在这样的一个多路访问的网络中,R1和R2将比较IP地址,IP地址较大的那个选为DR,查询与转发的工作都由R2来完成,这样也就加大了网络的负担,很不均衡,所以在IGMPv2中,增加了查询者的选举

 

IGMPv2

查询者选举机制

   在一段多路访问的网络中,所有路由器在初始情况下都认为自己是查询者,并向网络中的所有主机发送IGMP组查询

   本地网络中的其他路由器收到该查询报文后,将自己的接口地址与数据包中的源地址进行比较,比较之后,IP地址最小的成为查询者,其他路由器成为非查询者

   所有非查询者都会有一个计时器,在定时器所规定的范围内没有收到查询者发出的查询包,则认为查询者失效,并开始重新选举查询者,相反,如果收到查询者发出的查询报文,则重置计时器

离开组机制

   当一台主机要离开这个组时,会向224.0.0.2(全体路由器)发送离开组(Leave Group)报文

路由器收到该报文后,会向主机离开的那个组发送一个特定组查询报文,会发送2个,每个包最大响应时间为1s,成员收到该报文之后,必须在1秒内做出回应

  如果在最大响应时间内收到了该组播组成员发送的Report报文,查询者将会继续维持该组与组成员的关系,如果没有收到Report消息,则不再维护这个组播组与成员的关系

 

IGMPv3

IGMP过滤增强

   IGMPv3兼容v1,v2,更进一步的提升了主机控制能力,增强了查询和报告报文的功能主机控制能力的增强

   IGMPv3增加了针对组播源的过滤模式(Include/Exclude),使主机加入某个组时,可以明确的要求接收或拒绝来自某个特定组播源的组播信息

   如果要求只接收来自组播源S1、S2的组播信息,则可以在报文中标记Include Souces(S1、S2……)

如果要求拒绝接收来自组播源S1、S2的组播信息,则气报告报文中可以标记Exclude Sources(S1、S2……)

 

查询和报告报文功能的增强 

   IGMPv3 不仅支持IGMPv1的普遍组查询和IGMPv2 的特定组查询,而且还增加了对特定源组查询的支持:

普遍组查询报文中,既不携带组地址,也不携带源地址

特定组查询报文中,携带组地址,但不携带源地址

特定源组查询报文中,既携带组地址,还携带一个或多个源地址

 

组播基本概念介绍到这里,内容较多回头忘了也可以翻翻在重新读一遍

    下面说下某客户组网网络,首先说下故障现象,改网络中存在大量监控主机,用于监控各个业务,监控主机通过组播来接受键盘和鼠标流量,在某一时间内突然鼠标和键盘无法使用,监控画面卡死状态,重启后能正常使用,过一会依然会处于卡死状态。网络图如下:

组播协议温故及案例分析

 

 

    可以看到网络中同时存不同方向的组播源,组播源推送键盘和鼠标的流量,推送到接入换机下的PC端,PC为客户端用于接受组播流量,画面卡死状态均处于PC端。

    首先在接入交换机上查看配置以及端口流量,发现端口流量input方向流量持续增长,开始怀疑是环路造成,整个网络中为二层网络,二层环路会有logbuff日志弹出,本次没有,在交换机上没有看到任何日志弹窗。

    无奈情况下使用wireshark来抓包看下,在接入交换机上做了端口镜像,镜像到上行口的流量,抓取后看,发现很多可疑之处,很多其它客户端主机的加入组播组的流量也被推送过来,这明明是不需要接受的流量为什么也被推送过来。

    基于此点在次检查配置,发现vlan下有一条命令开启了查询器功能,igmp-snooping querier enable 此命令是华为设备用来使能查询器功能,查询器用于在三层网络边缘路由器配置查询功能,负责发送IGMP查询报文,使三层组播设备能够在网络层建立并维护组播转发表项,从而在网络层正常转发组播数据,但是,如果存在下列情况。

上游设备的IGMP报文因为某些原因不能到达该设备;

上游设备的组播转发表项不需要动态学习而是静态配置。

此时,网络中无法实现上游设备的IGMP查询器功能。

 为了解决这个问题,可以在二层设备上使能查询器功能,使二层设备能够在数据链路层建立并维护组播转发表项,从而在数据链路层正常转发组播数据。同时用户也可以根据网络需要,调整查询器的参数。

本网络中为二层网络,上游设备核心交换机已配置查询功能,会通过组播地址查询所有该组成员加入情况,然而接入层也配置了查询功能,这就相当于网络中存在两个查询器,同时去查询该网络中所有组成员加入情况,根据周期性的发送IGMP的查询默认间隔为60S一次,超时会等待130S去除这条连接,这使得在本来就不足的带宽情况下,又把流量复制了一份在全网组播出去,因此流量不断增大,导致监控主机正常的交互信息阻断,出现卡死状态。通过去掉vlan下igmp-snooping querier enable后 流量逐渐降了下来,卡死状态就此消失。

  本想把故障复现下贴出来,但是ensp做组播推送流量的时候关联vlc一点击启动推送视频,ensp就直接卡死了,因此只能口述下这个现象了。好了今天就写到这吧。

 

 

组播协议温故及案例分析

 

组播协议温故及案例分析

微信扫一扫
关注该公众号