lw-igmpv3协议在xorp平台上的分析与实现
浅析多播协议IGMP三个版本的区别
浅析多播协议IGMP三个版本的区别王浦衡【期刊名称】《《科技视界》》【年(卷),期】2019(000)034【总页数】2页(P207-208)【关键词】多播协议; IGMP; TCP/IP【作者】王浦衡【作者单位】湖南化工职业技术学院湖南株洲 412000【正文语种】中文【中图分类】TP212.9; TN929.51 多播协议IGMP 介绍IGMP 英文全称Internet Group Management Protocol,中文称多播协议或者组播协议,是TCP/IP 协议簇中负责联网设备节点多播成员管理的协议,用于管理各IP 主机以及和其连接的路由器共同搭建维护多播组成员关系。
截至目前,有V1/V2/V3 三个版本多播协议。
这三个版本的IGMP 都支持“任意信源多播”;V3 版本可以直接支持“指定信源多播”,而V1 和V2 两个版本则需要在IGMP 指定信源多播映射技术支持下才能支持“指定信源多播”。
2 多播工作原理图1 IGMP 查询原理图2.1 v1 版多播协议工作机制v1 版IGMP 协议通过查询报文和响应报文来实现对多播组成员的管理。
当一个多播网络中存在多个多播路由器时,因为所有的多播路由器都能从主机节点接收到IGMP 成员发送过来的关系报告报文,所以,只需要指定一个路由器能发送IGMP 查询报文就可以了,因此这个时候就需要有一个选举机制来选出其中某一个路由器作为IGMP 查询器。
如图1 所示,假设PC-B 与PC-C 想要接收到多播组信源为G1 的多播数据,而PC-A 想要收到多播组信源为G2 的多播数据,那么主机加入多播组以及IGMP 协议查询器路由器(RB)与主机构建成员组关系的基本过程应该是:1)网络中的主机首先将主动向查询路由器发送成员关系报告报文用来申明它要加入的多播组,而不是被动等待IGMP 协议查询路由器发来的IGMP 查询报文;2)IGMP 查询路由器以目的地址为224.0.0.1 周期性向本地网段内的所有路由器与主机发送IGMP 查询报文;3)本网段内主机和路由器收到查询报文之后,延时定时器先到时的主机或路由器会先以多播的方式向G1(查询器)发送IGMP 成员关系报文报告自己属于多播组G1。
实验五 利用WIRESHARK分析IGMP协议
协议分析实验报告年级:姓名:学号:实验日期: 2013-04-10实验名称:利用wireshark分析IGMP协议一、实验目的分析IGMP协议二、实验环境与因特网连接的计算机,操作系统为Windows,安装有Wireshark、IE等软件。
三、协议简介Internet组管理协议(IGMP)是因特网协议家族中的一个组播协议,用于IP主机向任一个直接相邻的路由器报告他们的组成员情况。
IGMP信息封装在IP报文中,其IP的协议号为2。
它用来在ip主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。
igmp不包括组播路由器之间的组成员关系信息的传播与维护,这部分工作由各组播路由协议完成。
所有参与组播的主机必须实现igmp。
报告报文字段说明:Type(8bit)0x22成员关系报告Reserved(8bit)和Reserved(16bit):都是表示保留字段,不过在IGMP中为了使它们都保持对应的长度,所以才有了长度上的区别,它在发送的时候是以0填充,在接收的时候是不作任何处理的。
校验和校验和是对整个IGMP消息以16位为一段进行取反求和。
为了计算校验和,校验和字段首先必须被置0。
当收到一个数据,在处理之前,必须先对校验和进行验证。
Number_of_Group_Records(M):该字段表示该报告报文中包含有几个组记录GroupRecord[i](i从1到M):一个主机可能需要点播多个组播地址的组播业务,每个记录包含了对应于其中一个组播地址的源地址列表等信息,它受到Number_of_Group_Records的大小的影响。
每一个组记录字段是一整块数据,其含有的信息是关于发送者在报告发送接口上的某一个多播组的成员关系。
每一个GroupReocrd的内部格式如下:字段说明:AuxDataLen:辅助数据长度含有在组记录中的辅助数据的实际长度,其单位是32bit字。
它有可能是0,这就表示辅助数据不存在。
IGMP协议
IGMP协议IGMP协议是一种基于IP协议的组播协议,它定义了用于在Internet上进行组播传输的支持协议。
IGMP协议允许主机加入和离开一个组播组,以便接收该组的组播数据。
IGMP协议的全称是Internet Group Management Protocol,它是一种通信协议,用于在Internet上进行组播传输。
组播传输是一种数据传输方式,在这种方式下,一组数据同时可以被多个地址接收。
组播传输在许多应用中都非常有用,比如视频会议和实时数据分发等。
IGMP协议是在不同计算机之间通信的IP网络中进行组播传输的重要协议之一。
在IP网络中,IGMP协议负责协调主机的组播群体,确保组播数据能够从数据源传递到所有指定接收者,同时保证网络资源被合理利用。
在本文中,我们将详细讨论IGMP协议的工作方式、协议数据单元、协议版本和应用领域等问题。
一、IGMP协议的工作方式在IP网络中,组播传输需要一个有效的组播群组来工作。
组播群组是由一个组播地址来定义的,这个地址分配给一个特定的IP多播地址。
IGMP协议可以帮助确定哪个主机位于一个组播群体的成员,以便组播数据包来源发送组播数据包并控制它们的传递路由。
如果没有IGMP协议的支持,组播路由可能会向协议类型为多路广播的所有接口转发数据,尽管这些接口上没有主机加入组播群体。
这将产生不必要的网络流量和负载,相应地消耗更多的网络资源。
此外,如果没有IGMP协议的支持,多个接口所在的网络上可能会出现群体成员的不一致状态。
由此可见IGMP协议对组播传输的工作非常重要。
在IGMP 协议的支持下,主机可以向网络上发送特殊的IGMP包,以通知路由设备它们希望加入或离开组播群体。
路由设备通过接收和处理这些IGMP包来维护组播群体和转发组播数据包。
IGMP 协议的工作方式为主机和路由设备间的通信建立了一套规范的协议内容。
二、IGMP协议的协议数据单元IGMP协议的协议数据单元(Protocol Data Unit,PDU)是IGMP报文,如图1所示。
linux igmp 分析
对于通用成员关系查询,需要将 Multicast ip address 设置为 0;对于特定组成员关系查询, 需要将 Multicast ip address 值设置为要查询的组播组地址。
其中 ip 头部中的目的地址为 224.0.0.1 或者要查询的组播组地址 b)成员关系报告
TYPE(0x16)
Max Resp Time
CheckSum
Multicast ip address
Max Resp Time:最大回复时间,此处设置为 0。 需要将 Multicast ip address 值设置为加入的组播组地址。 c)离开组消息
TYPE(0x17)
Max Resp Time
CheckSum
Multicast ip address
a)成员关系查询
TYPE(0x11)
Max Resp Time
CheckSum
Multicast ip address
Max Resp Time:最大回复时间,对于成员关系查询报文,需要设置该时间,组播组成员收 到成员关系查询后,会根据该值来确定回复时间。
有两种成员关系查询报文:通用成员关系查询与特定组成员关系查询。
Max Resp Time:最大回复时间,此处设置为 0。 需要将 Multicast ip address 值设置为离开的组播组地址。其中 ip 头中的目的地址设置为 224.0.0.2 或者要离开的组播组地址
查询器机制:共享网段上组播路由器的选举机制:同一网段上有多个路由器时,具有最新 ip 地址的组播路由器充当查询器。
/*组播组数据库转发表,该结构体将所有的组播组数据库转发项通过 hash 数组连接到一起
*/
struct net_bridge_mdb_htable
IGMP协议
IGMP协议本合同目录一览1. IGMP协议概述1.1 IGMP协议的作用1.2 IGMP协议的版本1.3 IGMP协议的报文类型2. IGMP协议的运行原理2.1 IGMP协议的运行流程2.2 IGMP协议的查询过程2.3 IGMP协议的报告过程3. IGMP协议的配置与参数3.1 IGMP协议的配置文件3.2 IGMP协议的参数设置3.3 IGMP协议的参数优化4. IGMP协议的调试与维护4.1 IGMP协议的调试工具4.2 IGMP协议的故障排查4.3 IGMP协议的维护策略5. IGMP协议的安全性与稳定性5.1 IGMP协议的安全机制5.2 IGMP协议的稳定性保障5.3 IGMP协议的故障应对措施6. IGMP协议的兼容性与扩展性6.2 IGMP协议的扩展功能6.3 IGMP协议的升级策略7. IGMP协议在网络中的应用场景7.1 IGMP协议在组播中的应用7.2 IGMP协议在VPN中的应用7.3 IGMP协议在流媒体中的应用8. IGMP协议的实施与监管8.1 IGMP协议的实施规范8.2 IGMP协议的监管要求8.3 IGMP协议的违规处理9. IGMP协议的培训与技术支持9.1 IGMP协议的培训内容9.2 IGMP协议的技术支持范围9.3 IGMP协议的培训与支持期限10. IGMP协议的知识产权与保密10.1 IGMP协议的知识产权归属10.2 IGMP协议的保密条款10.3 IGMP协议的保密期限11. IGMP协议的违约责任与争议解决11.1 IGMP协议的违约行为11.2 IGMP协议的违约责任11.3 IGMP协议的争议解决方式12. IGMP协议的签订与生效12.2 IGMP协议的签订程序12.3 IGMP协议的生效条件13. IGMP协议的变更与解除13.1 IGMP协议的变更条件13.2 IGMP协议的解除条件13.3 IGMP协议的变更与解除程序14. IGMP协议的终止与后续事宜14.1 IGMP协议的终止条件14.2 IGMP协议的终止程序14.3 IGMP协议终止后的后续事宜第一部分:合同如下:1. IGMP协议概述1.1 IGMP协议的作用IGMP(Internet Group Management Protocol,互联网组管理协议)是一种由互联网协议族(IP)定义的协议,主要用于在IP网络中,组播路由器与主机之间进行组播组成员关系的维护和管理。
LW-IGMPv3(轻量级互联网组管理协议)的研究与实现
LW-IGMPv3(轻量级互联网组管理协议)的研究与实现随着互联网的迅速普及,网络技术已经渗透到人们的工作、生活、娱乐等各个角落。
IP组播技术以其高效的网络带宽利用率日益赢得人们的青睐。
组管理协议IGMPv3是IP组播体系结构的重要组成部分,但是协议的逻辑结构过于复杂,不利于实际应用。
针对此问题,华为公司提出了“LW-IGMPv3/MLDv2草案”,对IGMPv3协议进行简化。
论文对草案中提出的LW-IGMPv3协议进行了研究与分析,并在XORP开源路由器平台上实现了该协议,在此基础上,对协议进行全面的测试及分析。
论文首先介绍课题的研究背景,对目前互联网IP组播技术的研究现状进行概要的介绍,通过对组播体系结构的分析,阐明了互联网组管理协议IGMP在组播体系结构中的重要性。
然后对IGMP协议的发展和各个版本IGMP协议进行简要介绍和对比,并重点分析了IGMPv3协议。
论文接下来在深入分析了华为公司提出的LW-IGMPv3/MLDv2草案的基础上,阐明了LW-IGMPv3协议的改进依据,然后对LW-IGMP协议和IGMPv3协议在消息种类,协议流程,组播路由协议接口,协议兼容性等方面进行对比,并对LW-IGMPv3的简化程度进行了分析。
在此基础上,论文详细介绍了LW-IGMPv3协议在XORP路由器平台的设计及实现过程。
然后对LW-IGMPv3协议进行了全面的测试,包括功能性,兼容性及性能测试。
测试结果表明,LW-IGMPv3协议能够正确并有效的支持组播业务,并表现出对低版本IGMP协议的良好兼容性,在一定情况下能够显著提高IGMP协议及组播路由协议性能,对优化路由器在IP组播大规模应用中的性能具有重要意义。
论文最后总结了作者在研究生期间的主要工作并对系统的不足和下一步的改进方向做了一些阐述。
IGMP-v3协议交流文档
+-
-+
.
.
.
.
.
.
| Source Addres +-
-+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
.
Auxiliary Data
.
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
IP 为0Xc0),并且在IP头中携带 Router Alert O
2113]的方式发送。
? IGMP消息(黄色代表本文描述的):
Type Number (hex) 0x11
Message Name Membership Query
0x12 Version 1 Membersh 0x16 Version 2 Membersh 0x17 Version 2 Leave Gro
IPMulticastListen( socket, interface, multicast-address, filter-mode,
IGMP协议与实现
IGMP协议与实现IGMP(Internet Group Management Protocol)是一种在多播网络中使用的网络层协议,主要用于IPv4网络中支持多播的接口设备及主机之间的通信。
IGMP协议主要用于在主机和路由器之间传递多播组成员关系信息,以便能够及时和有效地进行多播数据的传送。
本文将从IGMP协议的设计目标、工作原理、实现方式和应用等方面进行详细介绍。
一、IGMP协议的设计目标:1.支持主机从组播组中加入和离开的动态管理功能;2.保证组播组成员关系的一致性;3.能够高效地处理组播数据包;4.能够即时地对主机的组播组成员关系变化进行通知;5.能够与其他关键的网络层协议(如IP协议、路由选择协议等)进行有效地集成。
二、IGMP协议的工作原理:1.主机发现组播组:主机可以通过发送IGMP报文给路由器来加入一个组播组。
路由器会在收到这个报文后记录下主机的IP地址和组播组的IP地址,形成一个组播组成员的列表。
2.组播组成员的列表更新:当主机加入或离开一个组播组时,路由器会根据IGMP报文的内容来更新组播组成员的列表。
3.组播组成员关系的一致性:路由器会周期性地向组播组中的成员发送嗅探报文来验证成员的有效性,以保持组播组成员关系的一致性。
4.组播数据的转发:当路由器收到一个组播数据包时,它会根据组播组成员的列表来判断需要将这个数据包发送给哪些成员。
三、IGMP协议的实现方式:1.基于硬件的实现:在一些高性能的路由器和交换机中,IGMP协议的功能可以由硬件来完成。
这样可以提高路由器和交换机的处理速度和转发能力。
2.基于软件的实现:在一些低成本的设备中,IGMP协议的功能可以由软件来完成。
这样可以降低设备的成本,并提高设备的灵活性和可扩展性。
四、IGMP协议的应用:1. IPTV(Internet Protocol Television):IGMP协议可以在IPTV 网络中用于传输多播视频数据,使得用户能够高质量地观看视频节目。
IGMPv3协议原理及实现
IGMP v2 离开报文
离开报文目的地址为:224.0.0.2或者组播组地址, 类型:0x17
IGMP v2查询报文
注意:查询报文目的地址为:224.0.0.1, 类型:0x11
IGMPv3协议
IGMPv3: IGMPv3 在兼容和继承IGMPv1 和IGMPv2 的基础上,
进一步增强了主机的控制能力,并增强了查询和报告报文的功能。 (1)查询和报告功能增强,兼容低版本的普通组和特定组查询; 增加了对特定源组查询的支持; 批量报告:报文目的地址为:224.0.0.22,可以携带一个或多个 组记录; (2)主机空间能力增强,支持源过滤功能(INCLUDE/EXCLUDE);
用户2能够收到源为3,4的组播数据流;
组播组收到不同类型报文状态跃迁表
IGMPv3协议在FP8680上实现
FP8680采用线卡和主控两层控制机制实现IGMPv3协议;
(1)线卡记录由每个PON口发送的Report报文信息中所携 带的INCLDUE和ilter-Mode, 和源地址列表 (基于该线卡下所有用户发送的Report报文信息生成)。
IGMPv1协议介绍
IGMP: Internet 组管理协议,用于主机与路由器之间交互信息的
一种协议。共包括v1, v2, v3三种版本,当前比较常用的为 IGMPv2协 议。
Linux下IGMP以及多播路由分析
Linux下IGMP以及多播路由分析(转载)最近在做多播这块,顺带研究了一下Linux Kernel对IGMPv3以及多播路由的支持.先简单介绍IGMPv3,一个网络协议总的说来无非多是"一问,一答",当然也有主动的去"报告",IGMPv3也不例外.1.看过IGMPv2以及v1的人会奇怪为什么要v3,v3能带来些什么?1>.IGMPv2/v1是典型的接受任意源多播(Any-Source Multicast)[ASM],即它只是关注多播组,而不关注是谁发送的,这样会有一些问题,比如说,假如一个局域网存在一个多播视频服务器,其它Host在上面点播视频;假如出现一个伪装者,也向这个多播组发送干扰数据,但Host无法辨别,这样可能引起视频的接受断断续续,影响服务的提供,显然这不是很理想;而IGMPv3的提出,就是为了解决这个问题,它提出了源特定多播(Source-Specific Multicast)[SSM],不仅关注多播组,也关注发送多播组的源.2>.包的类型IGMPv3主要有两种包:Type Number (hex) Message Name----------------- ------------0x11 Membership Query0x22 Version 3 Membership Report基于兼容的原因,还有IGMPv2/v1的几种包:0x12 Version 1 Membership Report [RFC-1112] 0x16 Version 2 Membership Report [RFC-2236] 0x17 Version 2 Leave Group [RFC-2236] 关于协议部分更详尽的细节,参考RFC3376(IGMPv3),RFC2236(IGMPv2),RFC1112(IGMPv1)2.Linux Kernel的IGMPv3以及多播路由的实现仔细看了这部分的代码,主要的文件比较少,分别为:igmp.c 内核实现的对IGMP的实现,可以兼容v2/c.ipmr.c 看文件名自然就可以猜测是多播路由的实现.其中,值得参考的文档是Sprint Labs的两份文档,一份是实现架构,一份是测试计划,不过从我读Code来看,这两份文档只具备参考意义,因为kernel的实现并不是按照其实现架构文档来实现的,看igmp.c/ipmr.c的文件注释可以知道多播部分的实现是其它人来实现的,并不遵循该设计文档(也许该实验室是准备实现的,但最终由于某些其它原因由其它人来实现,并且没有采取其设计文档),不过设计思想值得参考,实际的实现比那份设计文档要简洁一些.下面看看一些具体的数据结构,由于部分成员我也没看懂做什么用处,如果你知道,请告诉我:)net_device{}--------| |<------------------|~~~~~~~~| in_device{} ||--------| --------- || ip_ptr |--->| dev |----|--------| |---------|<------------------| | |~~~~~~~~~| ip_mc_list{} ||~~~~~~~~| |---------| --------- |-------- | mc_list |--->|interface|----|---------| |---------||~~~~~~~~~| |multiaddr|--------- |---------||~~~~~~~~~|---------通过上图可以看到3个结构之间的部分关系,我简单说说这三个结构:net_device:针对每个网络设备的一个抽象,比如你用ifconfig看到的eth0,就对应了一个该结构实例.in_device:针对IPv4的网络部分的描诉,因为Linux支持不仅仅是TCP/IP协议族,还用ATM等等,其底层设备是不同的,而对与网络设备的通用部分,用net_device{}描述,而针对不同协议私有部分,则使用不同结构,支持IPv4的设备,就使用该结构.ip_mc_list:描述的自然是IP设备的多播相关信息,我只花出了一个multiaddr,举例说来,我们说"eth0加入了多播组224.0.0.1",multiaddr就记录了该设备加入的一个多播组:224.0.0.1因此,结合上图,可以基本知道一个网络设备,如何记录它加入的多播组.下面来看igmp的处理流程:--------|ip_rcv()|[IP层的总入口]--------|V------------------|ip_local_deliver()|[本地分发,即目的地为本地]------------------|V----------|igmp_rcv()|[分发到IGMP的处理入口] ----------|V------------------------| [处理查询] |[处理报告]V V------------------ -------------------|igmp_heard_query()| |igmp_heard_report()|------------------ -------------------[开始计时器]| ++++++++++++++ |[停止计时器]----> +ip_mc_list{}+<----++++++++++++++|V------------------|igmp_send_report()|------------------在上面的文档里简要介绍了kernel对IGMP包的处理,其实下面才是重点,kernel 怎么处理多播包呢?即多播包怎么路由呢?这又涉及到UNIX常用的一个哲学"数据路径要分离于控制路径(最常见的说法是策略与机制,上面的说法是我自己理解后表述的,因为我老把这两者弄反,呵呵:))",这实际上是两个分离的问题:1).多播包在内核中怎么样被处理?2).该使用什么方法在应用程序中向内核添加路由?说道这里,我再次强调一下,注意区分在网路中的常见角色"Host"和"Router",时刻记得它们本质的区别是重要的:),它们最重要的区别在于是否能够转发包.好了,我们来依次解决上面的两个问题:我们不去考虑MAC层对多播的处理,只是理解就可以了,记得网络设备在MAC层可以实现一个不完全的过滤就可以了,相关知识,参考<TCP/IP详解>卷一,下面我们从IP层开始考虑(认为网卡支持多播,不过现在不支持多播的网卡很少了,呵呵)1>.多播包在kernel的处理流程自然,还是从ip_rcv()起步:),呵呵.##################################################################### ######--------|ip_rcv()|[IP层的总入口]--------|[单播的路由查找入口] V--------------------- ----------------|ip_route_input_slow()|<--|ip_route_input()|[路由查找总入口]--------------------- ----------------|[本地分发] V------------------- -------------------|ip_local_deliver() |<--|ip_route_input_mc()|[多播路由查找入口] ------------------- -------------------|V ***------------- *K*[在MFC中查找] |ip_mr_input()|[多播路由查找入口] *E*++++++++++++++++++ ------------- *R*+Multicast Forwar+------------->| *N*+ding Cache +<-------------V *E*++++++++++++++++++ --------------- *L*^ | |ip_mr_forward()|[根据找到的多播路由转发] ***| | --------------- || | V===================================================================== ======| V ^------------------- ||iset/getsocketopt()|[在应用层添加/删除多播路由] ***------------------- *A**P**P****##################################################################### ####上面是一个简要的流程,下面来稍微具体的谈谈:首先还是以关键的数据结构为开始:(给我看你的流程图而藏起你的表,我将仍然是莫名其妙。
igmpproxy模块原理及实现
Igmp query Igmp report
2.2 组播地址
组播的地址是特定的,D 类地址用于组播。D 类 IP 地址就是组播 IP 地址,即 224.0.0.0 至 239.255.255.255 之间的 IP 地址,并被划分为局部连接组播地址、预留组播地址和管理 权限组播地址 3 类: (1)局部组播地址:在 224.0.0.0~224.0.0.255 之间,这是为路由协议和其他用途保留的
组播 IP 地址到 MAC 地址的映射
默认情况下,主机只接收目的是自己本机地址以及广播地址的报文或数据帧: IP 地址:目的地址是自己的 IP 地址,或 255.255.255.255(三层广播) MAC 地址:目的地址是自己的 MAC 地址,或 ff-ff-ff-ff-ff-ff(二层广播) 主机开启组播接收程序时,会向 TCP/IP 协议注册了一个组播 IP 地址,所以当收到目的 IP 地址是这个组播组的地址时,主机就会接收。 同时它又向工作在数据链路层的网卡也注册了一个二层 MAC 地址,这样的话,当主机接 收到一个组播报文的时候,就可以直接现在网卡上判断是否是自己需要的组播报文。 由于 IP 地址里的 5 个比特不做映射,因此会出现 32 个 IP 组播地址映射为一个 MAC 地 址。例如: 224.0.0.1、225.0.0.1、226.0.0.1 等最后映射的 MAC 地址都为 01-00-5e-00-00-01, 所以当加入上面三个组播 IP 地址的主机,在收到组播 MAC 为 01-00-5e-00-00-01 时,还无 法在数据链路层判断是否需要该组播数据,还需要继续送到 IP 层来判断。
如果一台组播路由器在 3 次查询的时间间隔里没有收到一个特定子网的 Membership Report 消息,那么这个路由器将宣布这个子网中没有组员,不再向这个子网发送组播数据
IGMPv3协议原理及实现
1
提纲
组播基本概念
IGMP协议介绍 IGMPv3协议原理 IGMPv3协议在FP8680上实现
组播
组播方式实现点到多点传输,只有一个发送者和对该组 播地址感兴趣的多个接收者。
组播基本概念
组播组:使用一个IP 组播地址标识。任何用户主机(或 其他接收设备)加入一个组播组,就成为了该组成员,可 以识别并接收以该IP组播地址为目的地址的IP 报文。
(2)主控组播组表增加过滤模式Filter-Mode, 和源地址列表 (基于所有线卡下用户发送的Report报文信息生成)。 (3)下发三元组(组播组地址,组播源地址和端口)到交 换驱动,基于组播源和组播组地址进行转发;
IGMPv3协议在FP8680上实现
IGMPv3协议的主要功能是基于源地址进行过滤。
再次调用交换接口GenHwSwitchIpmcAdd下发三元组(组播组地址、源 地址,0)下发到交换驱动,将EXCLUDE中的指定源地址的组播数据 流丢弃;
自由通信·创造未来
Thank you!
含义
报告当前状态,说明当前组的模式是INCLUDE模式,收到查询报文时 触发,源地址列表中包含了该组的源地址S。
TO_IN(G,S)
ALLOW(G,S) BLOCK(G,S) IS_EX(G,S)
改变组播组过滤模式为INCLUDE,源地址列表中包含了新的源地址S 。TO_IN(G,{})表示离开G的所有源,相当于IGMPv2的离开报文。
用户2能够收到源为3,4的组播数据流;
组播组收到不同类型报文状态跃迁表
IGMPv3协议在FP8680上实现
FP8680采用线卡和主控两层控制机制实现IGMPv3协议;
(1)线卡记录由每个PON口发送的Report报文信息中所携 带的INCLDUE和EXCLUDE源列表信息;
IGMP V3
备忘录状态略摘要本文档说明了因特网组管理协议的第3版,IGMPv3。
IGMP协议被IPv4系统用于向邻接的多播路由器报告它们的组成员关系。
第3版的IGMP增加了对“源过滤”的支持,即系统能够报告它只对接收到的发往某一特定多播组的数据报中,某些来自特定源地址的数据感兴趣,或者是只对除了某些特定源地址之外的数据感兴趣。
这个信息能够被多播路由协议用于避免把某些来自特定源地址的多播数据报发往对它不感兴趣的网络。
1、简介IGMP协议被IPv4系统(主机或路由器)用于向邻接的多播路由器报告它们的组成员关系。
需要注意的是IP 多播路由器本身也可能是一个或多个多播组的成员。
在这种情况下,它会既执行协议的“多播路由器部分”(为它的多播路由协议收集成员信息),又执行协议的“组成员部分”(把自己的成员关系通知自己,其它主机,还有邻接的多播路由器)。
IGMP协议还用于其它的IP多播管理功能,这通过使用组成员报告之外的其它的消息类型来实现。
这份文档只描述组成员关系报告功能和消息。
这份文档说明IGMP第3版。
第1版在RFC1112中说明,是第1个被广泛使用的版本,也是第1个成为因特网标准的版本。
第2版在RFC2236中说明,增加了对“低离开延迟”的支持,即多播路由器获知相连的网络中的某一个组中已经没有组成员所花费的时间大大减少。
而第3版增加了对“源过滤”的支持,即系统有能力报告对发往某个特定多播地址的数据报,只希望接收某些特定源的,以支持特定源多播[SSM],或者只希望接收除了某些特定源的。
第3版被设计为能够跟第1版,第2版互操作的。
多播侦听者发现(MLD)是IPv6系统采用的一种相似的方法,MLD第1版实现了IGMP第2版的功能,MLD 第2版实现了IGMP第3版的功能。
2、用于IP多播接收的服务接口在一个IP系统内,有一个(至少概念上有)服务接口,被上层协议或者应用程序用于打开或者关闭IP层对发往某一特定IP多播地址的数据报的接收。
IGMP协议
1.IGMP协议的定义和作用IGMP(Internet Group Management Protocol)是一种用于管理组播(Multicast)组的协议。
它在组播网络中起到了重要的作用,允许主机和路由器协调地工作,以便实现有效的组播数据传输。
1.1IGMP协议的背景组播是一种网络通信方式,它允许将数据从一个发送者传输到多个接收者,而不是点对点的单播方式。
组播在诸如视频流、音频广播、实时数据传输等场景中具有广泛的应用。
1.2IGMP协议的作用IGMP协议的主要作用是使网络中的主机能够加入和离开特定的组播组,以便接收或停止接收该组播组的数据。
它提供了一种机制,使得主机可以向所连接的路由器表明它对特定组播组的兴趣,从而使路由器能够有效地转发组播数据。
1.3IGMP协议的工作原理IGMP协议通过主机发送IGMP报文来进行通信。
主机可以向所连接的路由器发送IGMP 报文,以表明它希望加入特定的组播组或离开该组播组。
路由器根据接收到的IGMP报文来维护组播组成员的列表,并相应地转发组播数据。
1.4IGMP协议的版本IGMP协议有不同的版本,包括IGMPv1、IGMPv2和IGMPv3。
每个版本都有不同的功能和改进,以适应不同的组播需求和网络环境。
1.5IGMP协议的应用场景IGMP协议广泛应用于各种组播网络环境,包括视频流传输、音频广播、多人游戏等。
它能够提供高效的组播数据传输,减少网络流量和资源消耗。
1.6IGMP协议的安全性和常见问题IGMP协议在安全性方面存在一些挑战,如组播数据的安全性和合法性验证。
此外,常见问题包括组播数据的丢失、延迟和冲突等,需要采取相应的解决方法来优化组播网络的性能。
以上是对IGMP协议的定义、作用和相关内容的概述,它是实现组播通信的重要协议之一,对于构建高效的组播网络具有重要意义。
2.IGMP协议的基本原理和工作流程IGMP(Internet Group Management Protocol)是一种用于管理组播(Multicast)组的协议。
Windows2000下IGMPV3协议实现方法
关 键 词 :I GMP V1 ; I GMP V2 ; I GMP V3 ; 任 意 源组 播 ; 指 定 源 组 播 中 图分 类 号 : TP 3 9 3 . 0 4 文 献标 识 码 :A
I GM P V3 Pr o t o c o 1 Re a l i z a t i o n Me t h o d i n Wi n d o ws 2 0 0 0
系统下 实 现 I GMP V3协议 的方 法 。
个终 端 主机都 可 以发 送 数 据 给 一个 主机 组 , 即使 它 可 能不 是 那个组 的成员 。 特定 源组 播 ( S S M) 是 中定 义 的组播 服务 模 型 。组 播 源可 以发送 一 个 I P报 文 给 S S M 目的 地址 G, 接 收 者 可 以加 入 通 道 ( S , G) 来 接 收 该 报 文 。S S M 提 供 给 主机应 用程 序一 个 “ 通道” 抽象 , 每 个 通 道 拥 有 一 个 源 和多个 接 收者 。
滤” 的支持 , 即系统 能够报告 它只对接 收 到的发 往 某一特 定 多播 组 的数 据报 中, 某 些 来 自特 定 源地址 的数 据 感兴趣 , 但 Wi n d o ws 2 0 0 0并不 支持 I GMP V 3 。文中对 I GMP的几个版本进行分析 , 给 出了 Wi n d o ws 2 0 0 0下 实现 I G MP V 3协议 的解
通 缱 电潦 技 术
2 0 1 3年 3月 2 5日第 3 0卷第 2 期
Te l e c o m Po we r Te c h n o l o g y Ma r .2 5 ,2 ( ) 1 3,Vo 1 .3 ( ) No .2
文 章编号: 1 0 0 9 — 3 6 6 4 ( 2 0 1 3 ) 0 2 — 0 0 5 6 — 0 3
IGMPv1-v2-v3的原理报文形式_New.docx
IGMPv1-v2-v3的原理报文形式目录1 IGMP 协议 (3)1.1 IGMPv1协议 (3)1.1.1 IGMPv1的工作原理1.1.2 IGMPv1报文格式1.1.3 IGMPv1工作过程1.2 IGMPv2协议 (7)1.2.1 IGMPv2的工作原理1.2.2 IGMPv2的报文格式1.2.3 IGMPv2工作过程1.3 IGMPv3协议 (11)1.3.1 IGMPv3的工作原理1.3.2 IGMPv3的报文格式1.3.3 IGMPv3的主要改进2 MLD协议 (16)2.1 MLDv1协议 (16)2.1.1 MLDv1的工作原理 (16)2.1.2 MLDv1报文格式 (16)2.1.3 MLDv1工作流程 (18)2.2 MLDv2协议 (19)2.2.1 工作原理 (19)2.2.2 MLDv2报文格式 (20)2.2.3 MLDv2工作过程 (28)1 IGMP 协议IGMP用来动态的将各个主机注册到特定局域网中的一个组播组中。
主机向本地的组播路由器发送IGMP消息来表明自己所属的组播组。
在IGMP协议中,路由器侦听IGMP消息并周期的发出查询,以发现某个子网上哪些组是活动的,哪些是不活动的。
IGMP消息在IP数据报内发送,用IP协议号2来标识。
同时,将IP存活时间(TTL)字段值设定为1,因此IGMP信息处于本地范围本子网内传送并且不会被路由器转发。
1989年,IGMP版本1(RFClll2)第一次详细定义了IGMP规范。
后来施乐公司对最早的IGMP版本1进行了大幅更新,产生了IGMP版本2(RFC2236)。
到目前为止IGMP版本3规范己经称为IETF正式标准(RFC3376),通用的是IGMPv2。
IGMPvl实现简单,但是有离开延迟过大和选择查询路由器需要依赖组播路由协议的缺点,IGMPv2对此进行了改进。
IGMPv3协议的主要目的是支持源特定组播,并进一步对IGMPv2进行完善。
IGMP V3协议研究与实现
IGMP V3协议研究与实现
李卫平;党琦;白大明
【期刊名称】《飞行器测控学报》
【年(卷),期】2012(031)003
【摘要】针对IPV4下Windows 2000系统不支持指定源组播模型的问题,通过对3个版本IGMP(互联网组管理协议)的分析研究,采用原始套接字截获IGMP V3查询包,模拟生成组成员关系上报电文的方法,达到了欺骗交换机/路由器、维持其组成员关系的目的,解决了Windows 2000终端设备无法实现指定源组播通信的难题.仿真测试以及实际应用表明,这种方法完全可以应用于不支持IGMP V3协议的其他系统.
【总页数】4页(P66-69)
【作者】李卫平;党琦;白大明
【作者单位】西北工业大学航天学院,西安,710069;西安卫星铡控中心,西
安,710043;西安卫星铡控中心,西安,710043;西安卫星铡控中心,西安,710043【正文语种】中文
【中图分类】V556;TN919
【相关文献】
1.嵌入式Linux上的IGMP Proxy研究与实现 [J], 刘杰;刘海鑫
2.Windows 2000下IGMP V3协议实现方法 [J], 李光明
3.IGMP Snooping在VPLS中的研究与实现 [J], 朱晓艺;吴军平
4.IGMP协议一致性测试研究与实现 [J], 王鹏;王乐春;朱培栋
5.浅析多播协议IGMP三个版本的区别 [J], 王浦衡
因版权原因,仅展示原文概要,查看原文内容请购买。
IGMP V1 V2 V3 定义和区别
IGMP V1 V2 V3 定义和区别前两天遇到了一个IGMP的问题,应用在IGMP的一些概念.那就让我们完整的看一下这个组播协议把,以下是我学习过程重总结的一些东西, 先来认识一下IGMP这个协议吧,它的全称是Internet Group Management Protocol,它和unicast和multicast的区别是它是发往一组计算机(属于它这个组播组的所有计算机),IGMP主要用于在线的视频和在线游戏,像IPTV就是一种比较广泛的应用.现在IGMP有3个版本V1(RFC1112),V2(RFC2236),V3(RFC3376),IGMP v1支持host membership query 和host membership reportreport message是由IGMP host发给IGMP router来报告它加入的组播组.query message是由IGMP router发给IGMP client来查询IGMP host所加入的组播组.这样做之后,IGMP路由器就记录了它所在网段主机加入的所有组播地址.下面看这个例子之后可能大家就比较清楚了,在IGMP router的LAN端有2台PC,hostA,hostB,hostC,hostA加入了224.100.1.1,hostB加入了224.100.1.2,hostC没有加入任何的组播.当IGMP router想要查询lan端的组播地址是,它以组播地址224.0.0.1 发到它的lan端,224.0.0.1代表子网中所有支持多播的设备的多播地址, 这个时候如果pc和IGMP router之间用hub或者layer2的交换机(没有enable IGMP snooping),那么包括hostC的3台主机都会收到,只不过hostC不会回应,hostA和hostB会发送报告信息给router,内容分别为224.100.1.1和224.100.1.2.如果hostA想要加入一个新的组播地址224.100.1.3,它会发个report信息给想要加入的组播地址,router收到后加入IGMP table.IGMPv2,包括membership query,membership report, Leave Group message .membership query 包括general query,group-specific query.general query和IGMP V1一样,发224.0.0.1来查询在网络中有哪些组播组.group-specific query,用来查询是否在网络中存在特定的组播组.membership report,这个和V1一样,加入一个新的GROUP也一样.Leave Group message是由这个组的最后一个成员发给224.0.0.2(网络中的所有组播路由器),内容为这个组播地址,IGMP router收到后,会发送一个group-specific query来查询是否网络中的这个组播地址已经不存在了,如果没有回应,就把这个组从IGMP table 中删除.IGMP V3,Membership Report其中Membership Query分为三种:General Query,用于查询接口下所有多播成员信息;Group-Specific Query,用于查询接口下指定组的成员信息;Group-and-Source-Specific Query,该类型为IGMPv3中新增加的,用于查询接口下是否有成员需要接收指定源列表中的源所发出的特定组的多播流。
IGMP及抓包分析
I G M P及抓包分析(总12页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--IGMPIGMP 是Internet Group Management Protocol(互联网组管理协议)的简称。
它是TCP/IP 协议族中负责IP 组播成员管理的协议,用来在IP 主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。
到目前为止,IGMP 有三个版本:1、IGMPv1(由RFC 1112 定义)2、IGMPv2(由RFC 2236 定义)3、IGMPv3(由RFC 3376定义)一、IGMPv1报文格式1、版本:版本字段包含IGMP版本标识,因此设置为1。
2、类型:成员关系查询(0x11)成员关系报告(0x12)3、校验和4、组地址:当一个成员关系报告正被发送时,组地址字段包含组播地址。
当用于成员关系查询时,本字段为0,并被主机忽略。
组成员加入过程当一个主机希望接收一个组播组的数据,则发送成员加入报告给组播组。
IGMPv1 join包如下:查询与响应过程路由器RTA(IGMP查询器)周期性地(默认60秒)向子网内所有主机(代表子网内所有主机)发送成员关系查询信息。
所有主机收到IGMPv1成员关系查询信息,一主机首先向组播组发送IGMPv1成员关系报告。
组的其他成员监听到报告后抑制自己的成员关系报告发送。
抑制机制当主机收到IGMP成员关系查询时,对它已经加入的每个组播组启动一个倒计数报告计时器。
各个报告计时器初始值为从0到最大响应之间一个随机数,默认值是10秒。
计时器到时的主机则主动发送成员关系报告,目的地为该主机所属的组地址。
其它主机收到该成员关系报告,则抑制成员关系报告的发送,并删除计时器。
组成员离开过程主机“默不作声”地离开组(不发送报告了)。
路由器发送成员关系查询信息。
路由器没有收到该组的IGMP报告,则再发送成员关系信息(3次查询周期过后)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
LW-IGMPv3协议在XORP平台上的分析与实现1刘吉雯北京邮电大学网络与交换国家重点实验室,北京 (100876)E-mail:serenemarch@摘要:互联网组管理协议是IP组播框架中极为重要的组成部分,目前网络中广泛采用的IGMPv3协议引入的源过滤的机制虽然可以很好地支持源特定组播模型,但同时却增加了路由器实现的复杂性。
针对此问题,华为公司提出一种名为LW-IGMPv3的IGMP路由器端协议简化方案,通过删减排除模式、简化消息处理流程等一系列改进,旨在提高IGMP协议和组播路由协议在IP组播大规模应用中的性能表现。
本文详细阐述了此简化方案的改进依据、原理和特性,并通过在开源路由器平台XORP上实现LW-IGMPv3协议,对此简化方案的可行性进行分析。
关键词:IP组播,互联网组管理协议,XORP,LW-IGMPv31.引言随着IPTV,视频会议,多媒体远程教学,远程医疗等应用的开展,组播技术的优势和重要性逐渐显现出来。
采用单播技术构建的传统网络已经无法满足新兴宽带网络应用在带宽和网络服务质量方面的要求,随之而来的是网络延时、数据丢失等等问题。
此时通过引入IP组播技术,有助于解决以上问题IGMP协议是IP组播体系架构的一个重要组成部分,在IGMP的最新版本IGMP版本3(IGMPv3) [1]中,协议的逻辑结构过于复杂,不利于实际应用,且原协议中的一些状态在目前的一般组播应用中并没有相应的场景。
通过对IP组播体系结构的研究,我们在华为公司的“轻量级互联网组管理协议草案”的基础上,提出一种轻量级互联网组管理协议(LW-IGMPv3),通过简化协议逻辑架构,从而减轻路由器的负担,提高路由器效率,为组播路由协议提供更好的接入服务。
为了协议实现简便,文中特引入开源路由器平台XORP,XORP全称为可扩展的开放性路由平台(eXtensible Open Router Platform)。
XORP得到了Intel,美国国家科学资金,微软,Vyatta等机构和公司的支持。
XORP运行在Linux或者FreeBSD操作系统平台上(最近版本支持windows2003),它为当前大多数的路由协议提供了支持,比如BGP,OSPF,RIP等。
XORP作为一个低成本的路由器平台,它没有特别高的配置要求,作为一个软件路由器平台可以运行在普通的个人计算机或服务器,能达到100Mb/s的网络路由要求。
XORP采用一种新颖的进程间通信架构,通过不同的模块分别处理各种协议,这使得我们仅需修改IGMP协议模块就可快速实现新的协议机制。
本文第2节将详细描述轻量级组管理协议的简化方案,第3节介绍LW-IGMPv3在XORP 平台上的实现,第4节对LW-IGMPv3的协议兼容性进行分析,第5节总结全文。
2.轻量级互联网组管理协议(LW-IGMPv3)2.1互联网组管理协议(IGMP)协议IGMP协议运行于主机和与之直接相连的组播路由器之间,它提供了主机和组播路由器之间维护组成员关系的机制。
IGMP协议实现的功能分为组播路由器部分和主机部分。
如果主机想加入某个组播组,首先主动子网内的查询路由器发送组播组成员关系报道报文,该报1本课题得到华为公司项目基金的资助。
文中包含了组播组的地址;在接收到路由器的查询报文后,如果想继续接收某些组播组的数据包,便发送报道报文响应组播路由器的查询。
组播路由器部分的主要功能是周期性在所连接的物理网络上发送查询,以获得组成员关系列表,并对组成员关系列表进行维护。
如果同一网段上存在多个组播路由器,只需要一个路由器定期发送查询便可,这时会产生查询者选举,IP地址低的路由器获胜。
其他路由器监听担当查询者角色的路由器的状态,一旦发现该路由器失效,便进行新一轮的查询者选举。
目前IGMP共有三个版本:IGMPv1[2], IGMPv2[3], IGMPv3。
高版本提供向上兼容的功能。
IGMPv1己经不再使用,仅被高版本的协议提供了对它的兼容。
目前的组播设备中广泛使用的是IGMPv2。
最新标准IGMPv3是为了支持SSM业务模型[4]而提出,目前支持的系统还比较有限,但随着SSM的发展,可以预见IGMPv3将迅速取代IGMPv2协议。
尽管IGMPv3引入的滤过滤机制提高了组播接收者对特定组播源的挑选能力,却大大的增加了路由器的处理复杂性。
目前,IETF的Mboned工作组对IGMPv3的讨论和修改仍在进行中,许多研究者已经提交了IETF草案,建议修改、简化IGMPv3协议。
本文正是在华为公司提出的“轻量级互联网组管理协议草案”的基础上,对IGMPv3路由器端协议做出的简化,并对改进后的协议进行实现和分析。
2.2 轻量级互联网组管理协议的提出依据随着组播业务的展开,人们逐渐发现在实际应用中,几乎没有采用排除模式的应用场景。
因为用户通常会指明希望接收特定的组播源地址,而不会特意的排除某些组播源地址。
即使子网中的某个用户希望排除某个组播源的数据,但如果子网内同时却有其他用户希望接收这些组播源的数据时,路由器仍需要将这些数据发往该子网,因此排除模式在很多情况下是很难发挥其设想的效果的2.3 轻量级互联网组管理协议描述2.3.1 对IGMPv3的保留部分LW-IGMPv3协议仍采用查询-响应模式,其中查询路由器的选举、定期发送查询报文以及查询和报告报文的格式都没有变化。
图 1 IGMPv3中的查询器状态转移图Fig 1 The querier state of IGMPv3图 2 IGMPv3中的非查询器状态转移图Fig 2 The non-querier state of IGMPv32.3.2 对IGMPv3状态的简化LW-IGMPv3删去了原IGMPv3中的Exclude过滤模式,只保留ASM(即原IGMPv3协议中的Exclude(*,G))和Include两种状态,同时路由器端协议在每个支持组播的接口上维护的组播接收状态表信息中也删去了过滤模式字段,而修改为以组定时器区分协议状态,组定时器用于区分ASM状态和Include状态,组定时器大于0表示组播组处于ASM状态;组定时器等于0则表示组播组处于Include状态;当组定时器超时,如果该组播组记录的源列表不为空,则该组播组记录切换至Include状态,否则将该组播组记录删除。
源定时器则用来保证该组播源的有效性。
LW-IGMPv3路由器端协议不需要为每个组播组都维护它的过滤模式信息,这有利于减小协议开销,简化消息处理流程,避免了IGMPv3在过滤模式切换时的工作量。
此外,在IGMPv3中,当组播组处于EXCLUDE状态时,路由器需要为同一个组播组维护两种源列表,即包含列表和排除列表,包含列表中记录网络中仍存在接收者的源信息,排除列表则真正表示网络中希望排除的组播源。
两种源列表还会根据一定规则相互转换。
组播地址组定时器源列表{(源地址,源定时器)}232.7.7.7 110 {(A.100),(D,150)}图 3 LW-IGMPv3组播接收状态信息表Fig 3 An example reception state of LW-IGMPv32.3.3 对消息处理流程的简化在原IGMPv3协议中,当路由器收到主机端发来的报告消息时,需要根据组播组当前所处的过滤模式决定消息处理流程。
在改进后的协议中,由于删除了Exclude过滤模式,且ASM 和Include两种状态只需要通过组定时器进行区分,这使得大部分的报告消息在ASM和Include状态下具有相同的处理流程,只需要根据消息类型,对源列表,源定时器,组定时器作相应修改,或发送组和源特定查询消息,只有TO_IN类型的报告消息需要根据组播组当前状态(组定时器是否大于0)判断是否需要发送组特定查询消息,大大简化了路由器的处理流程。
(见表1)表1 LW-IGMPv3端协议消息处理规则表Tab.1 Operation rules of LW-IGMPv3旧的源列表报告消息类型新的源列表相关操作A IS_IN(B) A+B 设置B的源定时器A IS_EX(B) A 设置组定时器A ALLOW(B) A+B 设置B的源定时器A BLOCK(B) A 发送组和源特定查询消息Q(G,A*B)A TO_IN(B) A+B 发送组和源特定查询消息Q(G,A-B),如果组定时器值大于0,则发送组特定查询消息Q(G)A TO_EX(B) A 设置组定时器3.LW-IGMPv3在XORP平台上的实现3.1 XORP平台架构图4 XORP框架Fig 4 The architecture of XORP在XORP框架中(图4),FEA(抽象数据转发引擎)完成对IP数据包的转发,FEA可以用软件和硬件这两种方式替代,方便以后升级到硬件路由器。
而各种单播,组播路由协议则在不同的组件中实现,单播模块主要包括RIP,BGP4,ospf,IS-IS等,组播协议则支持PIM-SM,IGMP/MLD。
策略配置模块为用户提供了路由器配置功能,通过读取配置文件和命令行输入(CLI),用户可以在运行中启动和关闭模块,或添加新模块。
LW-MLDv2协议组件作为一个独立的组件,同样有其内部结构。
如图3所示,LW-MLDv2协议组件主要有配置和监控模块,以及网络接口管理模块组成。
一个LW-MLDv2协议组件运行在一台路由器上,路由器上组件间交互通过XRL中间件。
以面向对象的设计方法,LW-MLDv2协议组件分为配置和监控模块、网络接口模块、组管理模块、源管理模块,每一个模块为一个对象,映射为代码实现中的一个类。
LW-MLDv2协议组件管理着路由器上网络接口,为每一个网络接口生成一个接口对象和生成一个管理和配置对象。
当一个组播组A加入时,网络接口管理对象为A生成一个组管理对象,如果报告为源特定组播方式,则A的组管理对象为每一个特定源生成一个源管理对象。
各个管理对象负责管理协议中对应部分的管理逻辑,使得软件结构清晰,简化了程序实现,同时有利于协议的修改和代码的改进。
从图5中可以看到,软件的模块可以划分为五个部分:对外接口,监控和配置模块,网络接口管理模块,组管理模块,源管理模块。
其中除了对外接口外,其余部分均为功能实现的模块。
图5 LW-MLDv2内部架构图Fig 5 The inner architecture of LW-IGMPv3 module3.2 LW-IGMPv3协议在XORP平台上的实现图6 LW-IGMPv3类关系图Fig 6 Class Diagram of LW-IGMPv3由于XORP 基于严格的组件化架构,组件化的特性使我们能够通过用LW-IGMPv3模块替换原来IGMPv3组件,从而在XORP 平台上实现LW-IGMPv3协议。