组播基础架构及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的抑制机制、增加了指定源组查询报文;取消了离组报文,需要结合第三方协议配合离组。

猜你喜欢

转载自blog.csdn.net/m0_59795797/article/details/129868548