组播基础架构及IGMP的概念

Posted EternallEi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了组播基础架构及IGMP的概念相关的知识,希望对你有一定的参考价值。

组播multicast:在一个或跨越多个广播域,实现点对多点的通信需求,不存在强制性;比单播技术更加灵活、比广播技术更加高效;广泛应用在网络电视、在线直播、远程教育、视频会议等对带宽和数据交互实时性较高的信息服务。

单播unnicast:在一个或跨越多个广播域,实现点对点的通信需求。

广播broadcast:在同一个广播域内,实现点对多点的通信需求,存在强制性。

组播特点

1、 高效性:克服了广播发送数据的缺点,实现了点到多点之间高效的数据传输。

2、 节省资源:更好的带宽利用,只针对组播组成员发送且不存在强制性,可以节省了信源主机和非组播组成员不必要的CPU和内存消耗。

3、 时效性:发送源只需要发送一份数据,而目的地就可以同时接收到该数据。

4、 发送源主机和中间路由器都不必知道接收者的存在就可以直接发送。

5、 组播可以实现多对一、一对多、多对多的应用。

注:组播只能基于UDP封装且不能提供可靠传输机制;没有序列号,报文发送容易乱序,一般需要通过添加实时传输协议RTP来保证数据传输的序列性;组播在发送时可能会产生环路和重复包。

组播源:信息的发送者称为"组播源"或"信源"。

组播路由器:提供组播功能的路由器称为"组播路由器";组播路由器不仅提供组播路由功能,也提供组成员管理功能;同时也可以是一个或多个组播组的接收成员;同一组播组的成员可以广泛分布在网络中的任何地方,即"组播组"关系没有地域限制;

组播组成员:相同信息的接收者构成一个组播组,每个接收者都是"组播组成员"。

组播设计架构

L3组播:信源/组播应用程序--研发工程师

L2组播:组播路由器/组播动态路由选择协议--网络工程师

-IGP:PIM(协议无关组播)、DVMRP、MOSPF、CBT

注:PIM对IGP无要求,路由可达即可;而MOSPF基于单播OSPF基础上运行的。

-EGP:MSDP(组播源发现协议)、MP-BGP(BGP v4+)

注:MSDP可以实现跨越不同的AS发送和接收组播报文,结合MPBG一起使用;

L1组播:组播组成员/因特网组管理协议IGMP--网络工程师

注:通过交互IGMP报文,让最后一跳路由器知道自己身后是否存在组播组成员;不存在就不发送;存在就延伸树形结构并将组播发送给组播组成员。

组播报文封装:针对不同的应用进行不同的封装

组播地址:标识一组接收者,不能分配给某个网卡使用,没有网络位和主机位的说法,也没有网络地址和广播地址(扁平化地址/32);标准组织IANA将D类地址空间分配给IPv4组播使用,范围224.0.0.0 -- 239.255.255.255;

IPv4组播MAC地址:前24位地址位为01005E,第25位恒为0;后23位地址位是IP地址的后23位地址(32:1);

IPv6组播MAC地址:将组播地址的后32提取出来,然后在前边添加3333

因特网组管理协议IGMP:运行在最后一跳组播路由器和主机之间,用于建立、维护组播组成员关系;通过IGMP在路由器中记录的信息判断某个组播组是否在本地有组播组成员,能够实现两个功能:

1、主机通过发送IGMP报文通知路由器希望接收某个特定组播组的信息;

2、路由器通过IGMP报文周期性地查询局域网内的组播组成员是否处于活动状态,实现所连网段组播组成员关系的收集与维护。

IGMP

IGMP报文封装:

Ethernet2|IPv4|IGMP|FCS IP协议号为2

IGMPv1:

  IGMPv1(RFC 1112)中定义了基本的组成员查询和报告过程;支持ASM模型

1)版本:IGMP版本为1

2)类型:成员关系查询报文Query(0x11)和成员关系通告报文Report(0x12)

3)校验和:防止报文被篡改、冲突。

4)组地址:当用于成员关系通告时,组地址字段包含该组组播地址。

当用于成员关系查询时,本字段为0,并被主机忽略。

查询报文Query:由最后一跳路由器60s/次周期发送,目的地址为224.0.0.1,TTL值为1;路由器给主机发送Query报文会形成一个IGMP查询表,老化时间为180s,超过180s没有收到通告报文就会删除对应的IGMP表项。

通告报文Report:由PC主机发送,分为主动通告和针对查询报文的通告。

IGMP离组:PC会静悄悄的离组,不会通知路由器,最后一跳路由器在3个hello周期内没有收到Report报文会将该主机从IGMP查询列表中删除。

IGMP report supress优化机制:一台PC收到了路由器发送的Query报文,不能立马去做Report确认,PC开启一个随机计时器,范围为1-10s,取值为整数,在计时器过期后,其中的一台PC会发送目的地址为该组组播地址的Report报文,最后一跳路由器和组内其他成员收到这个Report报文后就会抑制报告发送。

当一个域内有多台最后一跳路由器时,需要选举出一台路由器作为IGMP查询者在IGMPv1中就需要由组播动态路由选择协议(如PIM)选举出唯一的指定路由器DR作为IGMP查询者。

 

IGMPv2:

  IGMPv2(RFC 2236)在IGMPv1的基础上添加了指定组查询、组成员快速离开的机制和最大响应时间等机制;只支持ASM模型

类型:

1)成员关系查询(0x11)

(1)常规查询:用于确定组播组有哪些成员,常规查询地址由全零表示;

(2)指定组查询:用于查询特定的组播组是否还有组成员。

2)版本2成员关系通告报文(0x16)

3)版本1成员关系通告报文(0x12)

4)离组报文Leave Group message(0x17)

5)最大响应时间:最大响应时间为10s,响应时间间隔为0.1s

6)校验和:防止报文被篡改、冲突。

7)组地址:在查询消息中,发送一个常规查询报文时组地址域设为0;发送一个特定组查询报文时,则用该组的组播组地址;发送成员报告或离开组的报文时,组地址保留了要报告或要离开的组播组地址。

查询者选举:当有多个最后一跳路由器时,路由器会互相发送Query报文进行查询者选举(224.0.0.1),比较路由器的接口地址,地址小的路由器会被选举为查询者,查询者周期性60s/次发送Query报文,邻居路由器超过120s没有收到Query报文,接口地址第二小的路由器成为查询者(和PIM选举的DR无关)

离组过程:主机在关闭组播应用的时候会通过224.0.0.2给路由器发送离组报文Leave Group message,路由器收到离组报文后会立即发送Group-specific query(目的地址为离组报文发送的组播组地址)并将最大响应时间修改为2s(思科只发送一次),路由器在2s内收到主机的Report报文,会保留组播查询表项。

路由器在2S内没有收到Report报文就会立即删除对应的IGMP表项。

Router#show ip igmp group(查看igmp表项)

Router#show ip igmp int e0/0查询路由器接口igmp配置

IGMPv3

  IGMPv3(RFC 3376)中增加的主要功能是成员可以指定接收或拒绝来自某些组播源的报文,实现了对SSM模型的支持。

1)保留(Resv):发送的时候以0填充,接收的时候不做处理,被忽略。

2)标志位S(禁止路由器处理):当被设置成1时,表示任何接收路由器禁止更新它们在收到查询时要更新的那些定时器。但它不禁止查询者选举或者普通的在路由器上执行的(当路由器作为一个组成员的时候)主机端的查询处理。

3)查询者的健壮变量(QRV):如果不为0,QRV中包含中一个被查询者使用的[健壮变量]的值,如果查询者的健壮变量的值超过7,即QRV字段的最大值,那么QRV被设成0。路由器取最近收到的查询中的QRV值作为它们自己的健壮性变量的值,除非最近收到的QRV是0,在这种情况下,接收者使用缺省的健壮性变量值,或者是一个静态配置的值。

4)查询者的查询间隔代码(QQIC):指定查询者使用的查询间隔。

5)源数量Number_of_Source:表明该查询中存在多少个源地址,在普通查询或指定组查询中这个值是0,在指定多个源的查询中,这个值为非0值。

6)源地址Sourceaddress:n个IP单播地址的数组,n就是源数量字段的值。

在IGMPV3中它有了以下的改进功能:

1、增加了组播组成员的控制能力;IGMP V3不仅可以指定要加入哪个组播组,还能明确要求从哪个指定组播源接受信息,这也是指定源组播功能。

2、响应消息包含多组记录:IGMP V3响应消息包含的组地址为224.0.0.22,可以携带1个或多个组记录,可以包含组播组地址、数目不等的源地址信息。

3、取消了Report的抑制机制、增加了指定源组查询报文;取消了离组报文,需要结合第三方协议配合离组。

 

IGMP协议

一、IGMP的定义

IGMP是Internet Group Management Ptotocol的简称,被称为互联网组管理协议,是TCP/IP协议族中负责IPV4组播成员管理的协议。

二、IGMP的作用

  • 作用1
    IGMP用来在接收者主机和直接相邻的组播路由器之间建立和维护组播组成员的关系。

  • 作用2
    IGMP通过在接收者主机和组播路由器之间交互IGMP报文实现组成员管理功能,IGMP报文封装在IP报文中。

三、IGMP的版本

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

  • IGMPv1 :主机可以加入组播组。没有离开信息(leave messages)。路由器使用基于超时的机制去发现其成员不关注的组。

  • IGMPv2 :该协议包含了离开信息,允许迅速向路由协议报告组成员终止情况,这对高带宽组播组或易变型组播组成员而言是非常重要的。

  • IGMPv3 :与以上两种协议相比,该协议的主要改动为:允许主机指定它要接收通信流量的主机对象。来自网络中其它主机的流量是被隔离的。 IGMPv3 也支持主机阻止那些来自于非要求的主机发送的网络数据包。

    所有版本的IGMP 都支持ASM(Any-Source Multicast,任意信源组播)模型;IGMPv3 可以直接应用于SSM(Source-Specific Multicast,指定信源组播)模型,而IGMPv1 和IGMPv2 则需要在IGMP SSM Mapping 技术的支持下才能应用于SSM 模型。

四、组播模型的分类

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

  • ASM 模型:Any-Source Multicast,任意信源组播

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

  • SFM 模型:Source-Filtered Multicast,信源过滤组播

    该模型继承了ASM 模型,从发送者角度来看,两者的组播组成员关系完全相同。SFM 模型在功能上对ASM 模型进行了扩展。在SFM 模型中,上层软件对收到的组播报文的源地址进行检查,允许或禁止来自某些组播源的报文通过。因此,接收者只能收到来自部分组播源的组播数据。从接收者的角度来看,只有部分组播源是有效的,组播源被经过了筛选。

  • SSM 模型:Source-Specific Multicast,指定信源组播

    在现实生活中,用户可能只对某些组播源发送的组播信息感兴趣,而不愿接收其它源发送的信息。该模型为用户提供了一种能够在客户端指定组播源的传输服务。

    SSM 模型与ASM 模型的根本区别在于:SSM 模型中的接收者已经通过其它手段预先知道了组播源的具体位置。SSM 模型使用与ASM/SFM 模型不同的组播地址范围,直接在接收者与其指定的组播源之间建立专用的组播转发路径。

五、组播协议

通常,我们把工作在网络层的IP 组播称为“三层组播”,相应的组播协议称为“三层组播协议”,包括IGMP、PIM、MSDP、MBGP等。

把工作在数据链路层的IP 组播称为“二层组播”,相应的组播协议称为“二层组播协议”,包括IGMP Snooping、组播VLAN 等。

  • 三层组播协议

    三层组播协议包括组播组管理协议和组播路由协议两种类型,它们在网络中的应用位置如下图。

    (1) 组播组管理协议
    在主机和与其直接相连的三层组播设备之间通常采用组播组的管理协议IGMP(Internet Group Management Protocol,互联网组管理协议),该协议规定了主机与三层组播设备之间建立和维护组播组成员关系的机制。

    (2) 组播路由协议
    组播路由协议运行在三层组播设备之间,用于建立和维护组播路由,并正确、高效地转发组播数据包。

    组播路由建立了从一个数据源端到多个接收端的无环(loop-free)数据传输路径,即组播分发树。

  • 二层组播协议

    二层组播协议包括IGMP Snooping和组播VLAN等,它们在网络中的应用位置如下图。

    (1) IGMP Snooping
    IGMP Snooping(Internet Group Management Protocol Snooping,互联网组管理协议窥探)是运行在二层设备上的组播约束机制,通过窥探和分析主机与三层组播设备之间交互的IGMP 报文来管理和控制组播组,从而可以有效抑制组播数据在二层网络中的扩散。

    (2) 组播VLAN
    在二层网络设备上进行跨VLAN组播复制。

    在交换机上部署了组播VLAN功能后,上游路由器不必在每个用户VLAN(VLAN2和VLAN3)内都复制一份组播流,而是数据流在组播VLAN(VLAN4)内复制一份后发送给二层设备。这样就避免了组播流在上游设备的重复复制,不仅节省了网络带宽,又减轻了上游路由器的负担。

六、IGMP应用场景

IGMP最常见的应用是IPTV:

  • 视频源端发送UDP组播数据流,客户端通过加入组播接收数据流播放节目

  • Client 发送IGMP Join Group封包加入组播才能接收到数据

  • Client不想要接收此组播数据时,发送一个IGMP Leave Group封包离开组播

以上是关于组播基础架构及IGMP的概念的主要内容,如果未能解决你的问题,请参考以下文章

IGMP协议原理

计算机网络 王道考研2021 第四章:网络层 -- IP组播单/广/多播IGMP协议与组播路由选择协议

第7章 网络层协议_IGMP协议

组播和广播的概念,IGMP的用途

网络层-第六节:IP组播

IGMP基本知识