IGMP
IGMP 是Internet Group Management Protocol〔互联网组管理协议〕的简称。它是TCP/IP 协议族中负责IP 组播成员管理的协议,用来在IP 主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。
到目前为止,IGMP 有三个版本:
1、IGMPv1〔由RFC 1112 定义〕
2、IGMPv2〔由RFC 2236 定义〕
3、IGMPv3〔由RFC 3376定义〕
一、IGMPv1
1.1报文格式
1、版本:
版本字段包含IGMP版本标识,因此设置为1。
2、类型:
成员关系查询 〔0*11〕
成员关系报告 〔0*12〕
3、校验和
4、组地址:
当一个成员关系报告正被发送时,组地址字段包含组播地址。
当用于成员关系查询时,本字段为0,并被主机忽略。
1.2组成员参加过程
当一个主机希望接收一个组播组的数据,则发送成员参加报告给组播组。
IGMPv1 join包如下:
1.3查询与响应过程
路由器RTA〔IGMP查询器〕周期性地〔默认60秒〕向子网所有主机〔224.0.0.1代表子网所有主机〕发送成员关系查询信息。
所有主机收到IGMPv1成员关系查询信息,一主机首先向组播组发送IGMPv1成员关系报告。
组的其他成员监听到报告后抑制自己的成员关系报揭露送。
1.4 抑制机制
当主机收到IGMP成员关系查询时,对它已经参加的每个组播组启动一个倒计数报告计时器。各个报告计时器初始值为从0到最大响应之间一个随机数,默认值是10秒。
计时器到时的主机则主动发送成员关系报告,目的地为该主机所属的组地址。
其它主机收到该成员关系报告,则抑制成员关系报告的发送,并删除计时器。
1.5 组成员离开过程
主机“默不作声〞地离开组〔不发送报告了〕。
路由器发送成员关系查询信息。
路由器没有收到该组的IGMP报告,则再发送成员关系信息〔3次查询周期过后〕。
组播组超时,剪枝。
二、IGMPv2
2.1报文格式
1、类型
成员关系查询〔0*11〕
常规查询:用于确定哪些组播组是有活泼的,即该组是否还有成员在使用,常规查询地址由全零表示;
特定组查询:用于查询*具体组播组是否还有组成员。
版本2成员关系报告〔0*16〕
版本1成员关系报告〔0*12〕
离开组消息〔0*17〕
2、最大响应时间
以0.1秒为单位,默认值是100,即10秒。
3、校验和
4、组地址
在成员查询消息中,发送一个普遍查询报文时组地址域应设为0,当发送一个对特定组的查询报文时,则应设置组的地址。
在成员报告或离开组的消息中,组的地址域保存了要报告或要离开的地址。
2.2 组成员参加过程
当一个主机参加了一个组播组,则应该立即发送一个或多个版本2的成员关系报告给组播组。
IGMPv2的join包如下:
2.3 查询与响应过程
与IGMPv1一样,都存在抑制机制。
增加了最大响应时间来指定延时值来规定所有主机的查询响应延时的上限,此外最大响应时间在IGMP查询器上配置,只应用在成员关系查询信息。
2.4 查询器选择过程
路由器启动,主动发出到所有组播系统组〔224.0.0.1〕的IGMPv2常规查询信息。
收到常规查询信息的路由器,会把此信息的源IP地址和接收口的IP地址作比较,拥有最低IP地址的路由器被选举为IGMP查询路由器。
非查询路由器启动一个查询计时器,周期检查IGMP查询路由器的状态。
2.5 组成员离开过程
主机向224.0.0.2发送离开组消息〔报文中含有要离开的组地址224.1.1.1〕。
路由器向这个组〔224.1.1.1〕发送特定组查询。
1秒钟没有收到该组的报告,发送第二个特定组查询。
二个查询信息后未收到主机响应,组224.1.1.1超时,离开组。
IGMPv2的Leave如下:
三、IGMPv3
在IGMPv1/v2的根底上,IGMPV3提供了额外的源过滤多播功能。在IGMPv1/v2中,主机只根据组地址来决定参加*个组并从任何一个源接收发给该组地址的组播流。而使用IGMPv3的主机通告该主机所希望参加的 多播组,同时还通告该主机所希望接收的多播源的地址。主机可以通过一个包括列表或一个排除列表来指明希望从哪些源能接收多播流。同时IGMPv3带来的另外一个好处是节省带宽,防止不需要的、非法的组播数据流占用网络带宽,这尤其在
多个多播源共用一个多播地址的网络环境中表现明显。
IGMPv3的过程同v2类似。IGMPv3能够向下兼容IGMPv1和IGMPv2。
IGMPv3查询和报告报文增强了功能:
(1)携带源地址的查询报文
IGMPv3 不仅支持IGMPv1 的普遍组查询和IGMPv2 的特定组查询,而且还增加了对特定源组查询的支持:
普遍组查询报文中,既不携带组地址,也不携带源地址;
特定组查询报文中,携带组地址,但不携带源地址;
特定源组查询报文中,既携带组地址,还携带一个或多个源地址。
(2)包含多组记录的报告报文
IGMPv3 报告报文的目的地址为224.0.0.22,可以携带一个或多个组记录。在每个组记录中,
包含有组播组地址和组播源地址列表。组记录可以分为多种类型,如下:
IS_IN:表示组播组与组播源列表之间的过滤模式为INCLUDE,即只接收从指定组播源列表发往该组播组的组播数据。
IS_E*:表示组播组与组播源列表之间的过滤模式为E*CLUDE,即只接收从指定组播源列表之外的组播源发往该组播组的组播数据。
TO_IN:表示组播组与组播源列表之间的过滤模式由E*CLUDE 转变为INCLUDE。
TO_E*:表示组播组与组播源列表之间的过滤模式由INCLUDE 转变为E*CLUDE。
ALLOW:表示在现有状态的根底上,还希望从*些组播源接收组播数据。如果当前的对应关系为INCLUDE,则向现有组播源列表中添加这些组播源;如果当前的对应关系为E*CLUDE,则从现有组播源列表中删除这些组播源。
BLOCK:表示在现有状态的根底上,不再希望从*些组播源接收组播数据。如果当前的对应关系为INCLUDE,则从现有组播源列表中删除这些组播源;如果当前的对应关系为E*CLUDE,则向现有组播源列表中添加这些组播源。
IGMPv3的join包如下:
IGMPv3的leave包如下:
IGMPv3的query包如下:
IGMP三个版本的比较:
四、组播IP地址:
∙组播地址围
∙保存组播地址
∙本地管理组地址
∙用户组播地址
∙组播MAC地址:
以太网: 01-00-5e-**-**-**
∙常用的保存组播地址
永久组地址 | 含义 |
224.0.0.1 | 所有系统,包括主机与路由器 |
224.0.0.2 | 所有组播路由器 |
224.0.0.3 | 未分配 |
224.0.0.4 | DVMRP〔Distance Vector Multicast Routing Protocol ,距离矢量组播路由协议〕路由器 |
224.0.0.5 | OSPF〔Open Shortest Path First ,开放最短路径优先〕路由器 |
224.0.0.6 | OSPF 指定路由器/备用指定路由器 |
224.0.0.7 | ST〔Shared Tree ,共享树〕路由器 |
224.0.0.8 | ST 主机 |
224.0.0.9 | RIP-2〔Routing Information Protocol version 2 tcp ip协议分析及应用,路由信息协议版本2〕路由器 |
224.0.0.11 | 移动代理 |
224.0.0.12 | DHCP〔Dynamic Host Configuration Protocol ,动态主机配置协议〕效劳器/中继代理 |
224.0.0.13 | 所有PIM〔Protocol Independent Multicast ,协议无关组播〕路由器 |
224.0.0.14 | RSVP〔Resource Reservation Protocol ,资源预留协议〕封装 |
224.0.0.15 | 所有CBT〔Core-Based Tree ,有核树〕路由器 |
224.0.0.16 | 指定SBM〔Subnetwork Bandwidth Management ,子网带宽管理〕 |
224.0.0.17 | 所有SBM |
224.0.0.18 | VRRP〔Virtual Router Redundancy Protocol ,虚拟路由器冗余协议〕 |
五、IGMP SNOOPING
IGMP Snooping运行在链路层,是运行在二层以太网交换机上的组播约束机制,用于管理和控制组播数据转发。
当二层以太网交换机收到主机和路由器之间传递的IGMP报文时,IGMP Snooping分析IGMP报文所带的信息。当监听到主机发出的IGMP主机报告报文时,交换机就将该主机参加到相应的组播MAC地址表中。当监听到主机发出的IGMP离开报文时,交换机就将删除与该主机对应的组播MAC地址表中。
通过不断地监听IGMP报文,交换机就可以在二层建立和维护组播MAC地址表 ,交换机就可以根据组播MAC地址表转发从路由器下发的组播报文。没有运行IGMP Snooping时,组播报文将在二层播送。
yig
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论