IGMP学习总结
- 格式:doc
- 大小:28.50 KB
- 文档页数:3
南昌大学实验报告学生姓名:吴长福学号:8000114105 专业班级:卓越141班实验类型:□验证□综合√设计□创新实验日期:2016.12.01 实验成绩:实验六IGMP协议和RIP协议【实验目的】1.掌握IGMP协议的报文格式2.掌握IGMP协议的工作原理3.理解多播组地址到以太网地址的映射4.掌握路由协议的分类,理解静态路由和动态路由5.掌握动态路由协议RIP的报文格式,工作原理及工作过程6.掌握RIP计时器的作用7.理解RIP的稳定性【实验学时】建议4学时1、IGMP协议【实验环境配置】采用网络结构说明:主机A、C、D的默认网关是172.16.1.1;主机E、F的默认网关是172.16.0.1。
【实验原理】一、IGMP报文格式二、IP多播报文从一台计算机发送到一组特定的计算机上,叫做多播。
例如,实时信息的交付(如新闻、股市行情等),软件更新,交互会议等。
在因特网上进行多播就叫做IP多播。
IP 多播具有以下的一些特点:多播使用组地址IANA把D类地址空间分配用于IP组播地址。
所以,IP组播值的范围是:224.0.0.0—239.255.255.255。
为了更合理的利用有限的组播地址,IANA进一步对它进行了划分。
如下图所示:三、IGMP使用规则多播路由器使用IGMP报文来记录与该路由器相连网络中组成员的变化情况。
使用规则如下:1) 当第一个进程加入一个组时,主机就发送一个IGMP报告。
如果一个主机的多个进程加入同一组,只发送一个IGMP报告。
这个报告被发送到进程加入组所在的同一接口上。
2) 进程离开一个组时,主机不发送IGMP报告即便是组中的最后一个进程离开。
主机知道在确定的组中已不再有组成员后,在随后收到的IGMP查询中就不再发送报告报文。
3) 多播路由器定时发送IGMP查询了解是否有任何主机包含有属于多播组的进程。
多播路由器必须向每个接口发送一个IGMP查询。
因为路由器希望主机对它加入的每个多播组均发回一个报告,因此IGMP查询报文中的组地址被设置为0。
5. 组播模型分类根据接收者对组播源处理方式的不同,组播模型分为以下三类:∙ASM 模型:Any-Source Multicast,任意信源组播在ASM 模型中,任意一个发送者都可以作为组播源向某组播组地址发送信息。
众多接收者通过加入由该组播组地址标识的组播组以获得发往该组播组的组播信息。
在ASM 模型中,接收者无法预先知道组播源的位置,但可以在任意时间加入或离开该组播组。
∙ SFM 模型:Source-Filtered Multicast,信源过滤组播该模型继承了ASM 模型,从发送者角度来看,两者的组播组成员关系完全相同。
SFM 模型在功能上对ASM 模型进行了扩展。
在SFM 模型中,上层软件对收到的组播报文的源地址进行检查,允许或禁止来自某些组播源的报文通过。
因此,接收者只能收到来自部分组播源的组播数据。
从接收者的角度来看,只有部分组播源是有效的,组播源被经过了筛选。
∙SSM 模型:Source-Specific Multicast,指定信源组播在现实生活中,用户可能只对某些组播源发送的组播信息感兴趣,而不愿接收其它源发送的信息。
该模型为用户提供了一种能够在客户端指定组播源的传输服务。
SSM 模型与ASM 模型的根本区别在于:SSM 模型中的接收者已经通过其它手段预先知道了组播源的具体位置。
SSM 模型使用与ASM/SFM 模型不同的组播地址范围,直接在接收者与其指定的组播源之间建立专用的组播转发路径。
6. IP组播▪对于IP 组播,需要关注下列问题:∙组播源将组播信息传输到哪里?即组播寻址机制;∙网络中有哪些接收者?即主机注册;∙这些接收者需要从哪个组播源接收信息?即组播源发现;∙组播信息如何传输?即组播路由。
▪IP 组播属于端到端的服务,组播机制包括以下四个部分:∙寻址机制:借助组播地址,实现信息从组播源发送到一组接收者;∙主机注册:允许接收者主机动态加入和离开某组播组,实现对组播成员的管理;∙组播路由:构建组播报文分发树(即组播数据在网络中的树型转发路径),并通过该分发树将报文从组播源传输到接收者;∙组播应用:组播源与接收者必须安装支持视频会议等组播应用的软件,TCP/IP 协议栈必须支持组播信息的发送和接收。
1.IGMP 拓扑2.RO(RTA)的配置sh ip int brInterface IP-Address OK? Method Status Protocol FastEthernet0/0 10.1.1.1 YES manual up up FastEthernet1/0 192.168.1.2 YES manual up up Loopback0 1.1.1.1 YES manual up upA#conf tEnter configuration commands, one per line. End with CNTL/Z.A(config)#ip multiA(config)#ip multicast-routing//在RTA/B/C这3台路由器上均启动IP组播路由2.1 IP PIM DENSE-MODE 的配置//在RTA/B/C这3台路由器上的FA0/0、FA1/0接口均启动IP PIM组播路由协议PIM,//模式为DENSE-MODE.A(config)#int fa 0/0A(config-if)#ip pim ?bidir-neighbor-filter PIM bidir capable peering filterbsr-border Border of PIM domaindense-mode Enable PIM dense-mode operationdr-priority PIM router DR prioritynbma-mode Use Non-Broadcast Multi-Access (NBMA) mode oninterfaceneighbor-filter PIM peering filterquery-interval PIM router query intervalsparse-dense-mode Enable PIM sparse-dense-mode operationsparse-mode Enable PIM sparse-mode operationstate-refresh PIM DM State-Refresh configurationversion PIM versionA(config-if)#ip pim dense-modeA(config-if)#int*Mar 1 00:26:32.223: %PIM-5-DRCHG: DR change from neighbor 0.0.0.0 to 10.1.1.1 on interface FastEthernet0/0faA(config)#int fa1/0A(config-if)#ip pim dense-modeA(config-if)#*Mar 1 00:27:08.231: %PIM-5-DRCHG: DR change from neighbor 0.0.0.0 to 192.168.1.2 on interface FastEthernet1/0*Mar 1 00:27:39.571: %PIM-5-NBRCHG: neighbor 10.1.1.2 UP on interface FastEthernet0/0 //RTA 的FA0/0接口发现PIM邻居RTB UP*Mar 1 00:27:39.691: %PIM-5-DRCHG: DR change from neighbor 10.1.1.1 to 10.1.1.2 on interface FastEthernet0/0*Mar 1 00:28:22.123: %PIM-5-NBRCHG: neighbor 192.168.1.1 UP on interface FastEthernet1/0//RTA 的FA1/0接口发现PIM邻居RTC UPA(config-if)#endA#sh ip mrouteIP Multicast Routing TableFlags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,L - Local, P - Pruned, R - RP-bit set, F - Register flag,T - SPT-bit set, J - Join SPT, M - MSDP created entry,X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,U - URD, I - Received Source Specific Host Report,Z - Multicast Tunnel, z - MDT-data group sender,Y - Joined MDT-data group, y - Sending to MDT-data groupOutgoing interface flags: H - Hardware switched, A - Assert winnerTimers: Uptime/ExpiresInterface state: Interface, Next-Hop or VCD, State/Mode(*, 224.0.1.40), 00:04:52/00:02:42, RP 0.0.0.0, flags: DCLIncoming interface: Null, RPF nbr 0.0.0.0Outgoing interface list:FastEthernet1/0, Forward/Dense, 00:03:00/00:00:00FastEthernet0/0, Forward/Dense, 00:04:52/00:00:00A#conf tEnter configuration commands, one per line. End with CNTL/Z.A(config)#int lo0A(config-if)#ip igmp join-group 224.1.1.1 //将LO0接口加入组播组224.1.1.1,模拟一//HOST加入组播组224.1.1.1A(config-if)#^ZA#*Mar 1 00:33:27.707: %SYS-5-CONFIG_I: Configured from console by consoleA#sh ip mroute 224.1.1.1IP Multicast Routing TableFlags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,L - Local, P - Pruned, R - RP-bit set, F - Register flag,T - SPT-bit set, J - Join SPT, M - MSDP created entry,X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,U - URD, I - Received Source Specific Host Report,Z - Multicast Tunnel, z - MDT-data group sender,Y - Joined MDT-data group, y - Sending to MDT-data groupOutgoing interface flags: H - Hardware switched, A - Assert winnerTimers: Uptime/ExpiresInterface state: Interface, Next-Hop or VCD, State/Mode(*, 224.1.1.1), 00:02:33/stopped, RP 0.0.0.0, flags: DLIncoming interface: Null, RPF nbr 0.0.0.0Outgoing interface list:FastEthernet1/0, Forward/Dense, 00:02:33/00:00:00FastEthernet0/0, Forward/Dense, 00:02:33/00:00:00(172.16.1.2, 224.1.1.1), 00:02:33/00:00:27, flags: LIncoming interface: FastEthernet1/0, RPF nbr 192.168.1.1Outgoing interface list:FastEthernet0/0, Forward/Dense, 00:02:33/00:00:00(192.168.1.1, 224.1.1.1), 00:02:33/00:00:34, flags: LTIncoming interface: FastEthernet1/0, RPF nbr 0.0.0.0Outgoing interface list:FastEthernet0/0, Forward/Dense, 00:02:33/00:00:00A#sh ip mroute summaryIP Multicast Routing TableFlags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,L - Local, P - Pruned, R - RP-bit set, F - Register flag,T - SPT-bit set, J - Join SPT, M - MSDP created entry,X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,U - URD, I - Received Source Specific Host Report,Z - Multicast Tunnel, z - MDT-data group sender,Y - Joined MDT-data group, y - Sending to MDT-data groupOutgoing interface flags: H - Hardware switched, A - Assert winnerTimers: Uptime/ExpiresInterface state: Interface, Next-Hop or VCD, State/Mode(*, 224.1.1.1), 00:03:26/00:02:41, RP 0.0.0.0, OIF count: 2, flags: DL(*, 224.0.1.40), 00:11:20/00:02:10, RP 0.0.0.0, OIF count: 2, flags: DCLA#sh ip mroute summary countIP Multicast Statistics2 routes using 1600 bytes of memory2 groups, 0.00 average sources per groupForwarding Counts: Pkt Count/Pkts(neg(-) = Drops) per second/Avg Pkt Size/Kilobits per second Other counts: Total/RPF failed/Other drops(OIF-null, rate-limit etc)Group: 224.1.1.1, Source count: 0, Packets forwarded: 0, Packets received: 0Group: 224.0.1.40, Source count: 0, Packets forwarded: 0, Packets received: 0A#sh ip mroute activeActive IP Multicast Sources - sending >= 4 kbpsa negative (-) Rate counts pps being fast-droppedA#conf tEnter configuration commands, one per line. End with CNTL/Z.2.2 IP PIM SPARSE-MODE 的配置//同样的,在RTA/B/C这3台路由器上的FA0/0、FA1/0接口均启动IP PIM组播路由协议、,//模式改为SPARSE-MODEA(config)# int fa 0/0A(config-if)#ip pim sparse-modeA(config-if)#int fa 1/0A(config-if)#ip pim sparse-modeA(config-if)#exitA(config)#ip pim ?accept-register Registers accept filteraccept-rp RP accept filterautorp Configure AutoRP global operationsbidir-enable Enable Bidir-PIMbsr-candidate Candidate bootstrap router (candidate BSR)dm-fallback Fallback group mode is Denselog-neighbor-changes Log PIM neighbor up/down and DR changesregister-rate-limit Rate limit for PIM data registersregister-source Source address for PIM Registerrp-address PIM RP-address (Rendezvous Point)rp-announce-filter Auto-RP announce message filterrp-candidate To be a PIMv2 RP candidatesend-rp-announce Auto-RP send RP announcementsend-rp-discovery Auto-RP send RP discovery message (as RP-mapping agent)spt-threshold Source-tree switching thresholdssm Configure Source Specific Multicaststate-refresh PIM DM State-Refresh configurationv1-rp-reachability Send PIMv1 RP-reachability packetvrf Select VPN Routing/Forwarding instance注意:SPARSE-MODE下,可使用人工指定RP或自动RP发现方式2.2.1 人工指定SPARSE-MODE的RP地址A(config)#ip pim rp-addrA(config)#ip pim rp-address 2.2.2.2 //此时,RTB上会产生“INV ALID RP”的报错信息,具体报错信息内容见RTB的配置章节。
了解IGMP协议组播协议在网络通信中的应用在网络通信中,IGMP(Internet Group Management Protocol)协议是一种用于组播通信的协议。
组播是一种将数据包同时传输给一组特定主机的通信方式,可以有效地减少网络流量和带宽的消耗。
IGMP协议主要用于在IPv4网络中支持组播通信,并且在实现多媒体和视频流传输、网络游戏和实时数据同步等方面广泛应用。
IGMP协议的基本原理是,通过将主机加入到特定的组播组中,并且通过定期发送IGMP报文来维持和管理这些组,使得主机能够接收到组播流。
IGMP报文有三种类型,分别是成员查询报文(Membership Query)、成员报告报文(Membership Report)和成员离开报文(Leave Group)。
在网络通信中的应用中,IGMP协议在以下几个方面起着重要作用:1. 组播流传输:IGMP协议允许主机加入到特定的组播组中,以接收到组播流。
这在多媒体和视频流传输方面非常有用,因为可以将流媒体的数据同时传输给一组特定的接收者,而不需要为每个接收者单独发送数据包。
这样可以有效地减少网络流量和带宽的消耗。
2. 网络游戏:在网络游戏中,IGMP协议可以用于实现多人游戏的实时数据同步。
通过将玩家加入到一个组播组中,可以将游戏数据同时传输给所有的玩家,以保持游戏的同步性。
这对于需要实时数据传输和互动的游戏非常重要。
3. 实时应用:IGMP协议还可以在其他实时应用中使用,例如视频会议和IP电话。
通过将参与会议或通话的主机加入到一个组播组中,可以实现实时的音视频传输,并且所有参与者都能够同时接收到会议或通话的内容。
总结起来,IGMP协议在网络通信中的应用非常广泛,尤其在多媒体传输、网络游戏和实时数据同步等方面起着重要的作用。
它通过允许主机加入和管理组播组,实现了有效的组播通信,从而减少了网络流量和带宽的消耗,提高了网络传输的效率。
对于那些需要同时传输给多个接收者的数据,IGMP协议是一种非常有用的通信协议。
IGMP技术总结1. IGMP 简介IGMP 是Internet Group Management Protocol(互联网组管理协议)的简称。
它是TCP/IP 协议族中负责IP 组播成员管理的协议,用来在IP 主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。
IGMP 的版本到目前为止,IGMP 有三个版本:∙IGMPv1(由RFC 1112 定义)∙IGMPv2(由RFC 2236 定义)∙IGMPv3(由RFC 3376 定义)所有版本的IGMP 都支持ASM(Any-Source Multicast,任意信源组播)模型;IGMPv3 可以直接应用于SSM(Source-Specific Multicast,指定信源组播)模型,而IGMPv1 和IGMPv2 则需要在IGMP SSM Mapping 技术的支持下才能应用于SSM 模型。
2. IGMPv1 工作机制IGMPv1 主要基于查询和响应机制来完成对组播组成员的管理。
当一个网段内有多台组播路由器时,由于它们都能从主机那里收到IGMP 成员关系报告报文(Membership Report Message),因此只需要其中一台路由器发送IGMP 查询报文(Query Message)就足够了。
这就需要有一个查询器(Querier)的选举机制来确定由哪台路由器作为IGMP查询器。
对于IGMPv1 来说,由组播路由协议(如PIM)选举出唯一的组播信息转发者DR(Designated Router,指定路由器)作为IGMP 查询器。
IGMP 查询相应示意图如上图所示,假设Host B与Host C想要收到发往组播组G1 的组播数据,而Host A想要收到发往组播组G2 的组播数据,那么主机加入组播组以及IGMP查询器(Router B)维护组播组成员关系的基本过程如下:(1)主机会主动向其要加入的组播组发送IGMP 成员关系报告报文以声明加入,而不必等待IGMP查询器发来的IGMP 查询报文;(2)IGMP 查询器周期性地以组播方式向本地网段内的所有主机与路由器发送IGMP 查询报文(目的地址为224.0.0.1);(3)在收到该查询报文后,关注G1 的Host B 与Host C 其中之一(这取决于谁的延迟定时器先超时)——譬如Host B 会首先以组播方式向G1 发送IGMP 成员关系报告报文,以宣告其属于G1。
IGMP协议原理60个知识点
1.IGMP(Internet Group Management Protocol)作为因特
网组管理协议,是TCP/IP协议族中负责IP组播成员管理的协议,它用来在IP主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。
该协议在接收者主机和组播路由器之间运行,定义了主机与路由器之间建立和维护组播成员关系的机制。
2.IGMP协议是IP组播在末端网络上使用的主机对路由器的
信令机制,分为两个功能部分:主机侧和路由器侧。
3.IGMP工作机制如下所述:
a)接收者主机向所在的共享网络报告组成员关系。
b)处于同一网段的所有使能了IGMP功能的组播路由器选
举出一台作为查询器(查询器在不同的版本中有不同
的选举机制),查询器周期性地向该共享网段发送组成
员查询消息。
c)接收者主机接收到该查询消息后进行响应以报告组成
员关系。
d)网段中的组播路由器依据接收到的响应来刷新组成员
的存在信息。
如果超时无响应,组播路由器就认为网
段中没有该组播组的成员,从而取消相应的组播数据
转发。
4.所有参与组播传输的接收者主机必须应用IGMP协议。
主
机可以在任意时间、任意位置、成员总数不受限制地加入。
组播与IGMP个人学习心得乱的很。
高手进来更正为什么需要组播,组播用在什么方面,如何实现组播,如何管理组播因为在一些群组会议,群组游戏,网络教学,软件分发也是组播的利用之一等群组方面的需求时,单播广播会使网络通信量大大增加。
此时我门需要组播,组播与广播的根本区别在于,组播可以按特定区域来广播,而且只要发一次,下面自己散播,但广播也只要发对各网段发1次,却会造成浪费,注意游戏是点对点的连接,公告是广播,但要发很多次,如果是QQ就只要发一次,因为它是发给所有QQ号码的而不是基于地址如果是组播就只要发一次,游戏里也有组播,比如小组信息,或工会信息。
也有单播比如私聊。
制定一个特定的组,让有需要的加进来。
这做发不是基于名字的,而是基于地址的。
游戏还没有这样的基于地址的组播呢,都是点到点的连接PC---服务器,服务器发一次实际是在应用层所做的广播,并不是真的网络广播。
所以游戏服务器一般都是很强的,CPU。
要不支持不了这么多的点到点连接,广播是面对终端,而组播是面对网络。
这区别大了。
目标地址是FFFFFF的MAC地址那就是广播,目标地质是01开头那就是组播,目前没有游戏是这样坐的,游戏都是点对点的。
发个公告只是一个应用层所谓的广播而已。
组播应用最广泛的就是会议和网络教学,减少了服务器和网络负担提高高质量的服务。
组播在遇到分叉的时候会把数据分支一分出来。
但在链路上跑的其实只有一份,单播的话就要与服务器建立多个连接,那太浪费资源了组播解决了一点发多点收,多点发多点收的效率问题,它增加了效率,减少了CPU负担,但他没有流量控制与差错。
它是基于UDP的所以不一定可靠组播协议分为主机---路由器之间的组成员关系协议和路由器----路由器之间的组播路由协议。
成员关系协议就是IGMP,而组播路由协议分为域内域间。
域内主要使用的是PIM-DM PIM-SM DVMRP针对域间组播路由有两类解决方案:短期方案和长期方案。
短期方案包括三个协议MBGP/MSDP/PIM-SM:MBGP(组播边缘网关协议),用于在自治域间交换组播路由信息;MSDP(组播信源发现协议),用于在ISP之间交换组播信源信息;为了防止组播在链路层继续扩散制定了IGMP协议注意它是一个2层的组播管理协议,IGMP建立并且维护路由器直联网段的组成员关系信息。
竭诚为您提供优质文档/双击可除igmp协议,作用篇一:internet组管理协议(igmp)《网络协议》实验报告实验名称:internet组管理协议(igmp)组别机器号:第六组主机e班级:网络13-3班学号:1320xx0306姓名:黄腾飞指导教师:陈虹成绩:12345篇二:igmp及抓包分析igmpigmp是internetgroupmanagementprotocol(互联网组管理协议)的简称。
它是tcp/ip协议族中负责ip组播成员管理的协议,用来在ip主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。
到目前为止,igmp有三个版本:1、igmpv1(由RFc1112定义)2、igmpv2(由RFc2236定义)3、igmpv3(由RFc3376定义)一、igmpv11.1报文格式1、版本:版本字段包含igmp版本标识,因此设置为1。
2、类型:成员关系查询(0x11)成员关系报告(0x12)3、校验和4、组地址:当一个成员关系报告正被发送时,组地址字段包含组播地址。
当用于成员关系查询时,本字段为0,并被主机忽略。
1.2组成员加入过程当一个主机希望接收一个组播组的数据,则发送成员加入报告给组播组。
igmpv1join包如下:1.3查询与响应过程路由器Rta(igmp查询器)周期性地(默认60秒)向子网内所有主机(224.0.0.1代表子网内所有主机)发送成员关系查询信息。
所有主机收到igmpv1成员关系查询信息,一主机首先向组播组发送igmpv1成员关系报告。
组的其他成员监听到报告后抑制自己的成员关系报告发送。
1.4抑制机制当主机收到igmp成员关系查询时,对它已经加入的每个组播组启动一个倒计数报告计时器。
各个报告计时器初始值为从0到最大响应之间一个随机数,默认值是10秒。
计时器到时的主机则主动发送成员关系报告,目的地为该主机所属的组地址。
其它主机收到该成员关系报告,则抑制成员关系报告的发送,并删除计时器。
igmp协议作用IGMP(Internet Group Management Protocol)是一种用于管理多播组成员资格的协议,它的作用是使主机能够加入或离开一个多播组。
在理解IGMP协议的作用之前,我们先来了解一下多播组的概念和多播传输的特点。
多播组是一组共享相同多播地址的主机的集合,这些主机可以接收来自同一源的多播数据流。
多播传输是一种一对多的通信方式,它允许一个发送者同时向多个接收者发送数据,而不是像单播传输那样需要为每个接收者建立一个独立的连接。
多播传输可以有效地节省网络带宽和主机资源,因此在视频直播、在线会议等应用中得到了广泛的应用。
IGMP协议的作用主要体现在以下几个方面:1. 加入多播组,当主机希望接收某个多播组的数据时,它会向网络中的路由器发送一个IGMP报文,请求加入该多播组。
路由器收到这个报文后,就会知道有主机希望接收该多播组的数据,然后将该信息记录在路由表中,以便后续的数据传输。
2. 离开多播组,当主机不再希望接收某个多播组的数据时,它会向网络中的路由器发送一个IGMP报文,请求离开该多播组。
路由器收到这个报文后,就会更新路由表,将该主机从多播组成员列表中删除。
3. 维护多播组成员列表,路由器通过定期发送IGMP查询报文来维护多播组成员列表,查询报文会被发送到网络中的所有主机。
当主机收到查询报文后,如果它仍然希望接收某个多播组的数据,就会向路由器发送IGMP报文进行确认;如果不再希望接收某个多播组的数据,就会向路由器发送IGMP报文进行通知。
通过这种方式,路由器可以及时更新多播组成员列表,确保数据只被发送到有需要的主机。
4. 支持多播路由,IGMP协议与路由协议(如PIM协议)结合使用,可以支持多播路由的建立和维护。
路由器根据收到的IGMP报文更新路由表,以便正确地转发多播数据流。
同时,路由器还可以根据多播组成员列表来优化数据的传输路径,提高网络的传输效率。
总的来说,IGMP协议的作用主要是管理多播组成员资格,使网络能够有效地支持多播传输。
掌握IGMP协议组播通信的控制协议与配置指南IGMP(Internet Group Management Protocol)是一种用于IPv4组播通信的控制协议,它提供了组播组成员的注册和查询机制,使得主机可以加入或离开特定的组播组,并能够接收或发送组播流。
IGMP协议在网络中的应用非常广泛,特别是在多媒体流传输、视频会议等应用场景中,扮演着重要的角色。
本文将介绍IGMP协议的基本原理与工作方式,并提供IGMP配置的指南,帮助读者深入理解IGMP协议,并正确配置组播通信。
一、IGMP协议的基本原理IGMP协议是主机与组播路由器之间进行通信的协议,它通过一系列的控制消息来实现组播组成员的注册与查询。
下面是IGMP协议的基本原理:1. 主机加入组播组:当一个主机想要加入一个组播组时,它首先向附近的组播路由器发送一个IGMP成员报告消息,表示自己要加入该组播组。
路由器接收到这个消息后,会记录下该主机是该组播组的成员。
2. 组播路由器查询成员:路由器会定期向附近的主机发送IGMP查询消息,询问该主机是否还是该组播组的成员。
主机收到查询消息后,需要回复一个IGMP成员报告消息,如果主机仍然是该组播组的成员。
3. 主机离开组播组:当一个主机不再希望接收某个组播组的数据时,它向附近的组播路由器发送一个IGMP成员离开消息,路由器收到该消息后会将该主机从组播组成员列表中删除。
二、IGMP配置的指南在配置IGMP协议之前,需要注意以下几点:1. 确保网络中至少有一个组播路由器,用于转发组播流量。
2. 主机和组播路由器之间需要处于同一广播域(Broadcast Domain),通常是通过交换机(Switch)来实现。
3. 主机的操作系统需支持IGMP协议。
下面是IGMP配置的指南:1. 配置组播路由器:组播路由器需要配置相应的接口来进行组播路由转发。
具体操作可以参考各个厂家提供的文档和指南。
2. 配置主机:主机需要配置自己所需的组播组地址。
IGMP Snooping技术总结IGMP Snooping简介IGMP Snooping是Internet Group Management Protocol Snooping(互联网组管理协议窥探)的简称,它是运行在二层设备(路由器与主机之间的交换机)上的组播约束机制,用于管理和控制组播组。
IGMP Snooping原理运行IGMP Snooping的二层设备(交换机)通过对收到的IGMP报文进行分析,为端口和MAC组播地址建立起映射关系,并根据这样的映射关系转发组播数据。
如图 1所示,当二层设备没有运行IGMP Snooping时,组播数据在二层被广播;当二层设备运行了IGMP Snooping 后,已知组播组的组播数据不会在二层被广播,而在二层被组播给指定的接收者。
图1 二层设备运行IGMP Snooping前后的对比传统以太网交换机处理组播数据包时只是简单地在每个端口上进行广播,这种方式使得组播包洪泛到并不支持组播的网络,这样的网络比较多的时候则会造成带宽极大的浪费。
而运行在交换机上的IGMP Snooping 协议则能够很好地解决这一问题,同时它也不需要主机和组播路由器支持额外的协议。
IGMP Snooping 协议监视网络上的IGMP 消息,为每一个组播MAC地址建立一个VLAN。
该VLAN端口所连接的网络中至少含有一个主机组成员或者含有组播路由器。
这些端口即为组播数据包应该转发的端口组,它们在一起组成组播VLAN 的端口集。
协议将维护这个端口集。
这样,当转发组播数据包时,组播数据包只在它所在的组播VLAN 端口上转发而不会广播到不需要组播的端口,节省了带宽。
同时,该以太网交换机在保持对组播路由器透明的前提下,完成IGMP 代理的功能,过滤掉不必要的IGMP 消息,防止了“IGMP 报告风暴”。
IGMP Snooping通过二层组播将信息只转发给有需要的接收者,可以带来以下好处:●减少了二层网络中的广播报文,节约了网络带宽;●增强了组播信息的安全性;●为实现对每台主机的单独计费带来了方便。
I G M P使用详解IGMP一、Internet 组管理协议IGMP 是Internet 组管理协议(Internet Group Management Protocol)的缩写。
IGMP 在TCP/IP 协议中的位置:应用层协议(FTP,HTTP,SMTP)TCP UDP ICMP IGMPIPARP RARPMACPHY在了解IGMP 协议的之前,我们首先看看以太网对报文的处理方法。
我们知道,目前使用的以太网(ethernet)有一个特点,当一个报文在一条线路上传输时,该线路上的所有主机都能够接收到这个报文。
只是当报文到达MAC 层时,主机会检测这个报文是不是发送给自己的,如果不是该报文就会被丢弃。
常用的抓包软件ethereal, sniffer 都可以捕获当前物理线路上的所有报文,不管该报文的目的地址是不是自己。
以太网中有一种特殊的报文广播包其目的mac 地址全为0xff,所有的主机都必须接收。
说到IGMP 不能不提“组播”的概念。
假如现在一个主机想将一个数据包发给网络上的若干主机,有什么方法可以做到呢?一个方法是采用广播包发送,这样网络上的所有主机都能够接收到,另一种方式是将数据包复制若干份分别发给目的主机。
这两个方法都存在问题:方法一,广播的方法导致网络上所有的主机都能接收到,占用了网络上其他主机的资源。
方法二,由于所有目的主机接收的报文都是相同的,采用单播方式显然效率很低。
为了解决上面所述的问题,人们提出了“组播”的概念,控制一个报文发送给对该报文感兴趣的主机,IGMP 就是组播管理协议。
我们来看一个简单的组播应用场景PC,如何处理呢?首先STB 要发起一个连接请求,也就是IGMP report 报文,加入到电视直播的组播组中。
同样当STB 要断开连接的时候就发送一个IGMP leave 报文。
Router 也需要知道当前有哪些STB 加入了组播组,防止有的STB 异常掉线了,却依然占用系统资源。
IGMPIGMP 是Internet Group Management Protocol(互联网组管理协议)的简称。
它是TCP/IP 协议族中负责IP 组播成员管理的协议,用来在IP 主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。
到目前为止,IGMP 有三个版本:1、IGMPv1(由RFC 1112 定义)2、IGMPv2(由RFC 2236 定义)3、IGMPv3(由RFC 3376定义)一、IGMPv11.1报文格式1、版本:版本字段包含IGMP版本标识,因此设置为1。
2、类型:成员关系查询(0x11)成员关系报告(0x12)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次查询周期过后)。
组播组超时,剪枝。
二、IGMPv22.1报文格式1、类型成员关系查询(0x11)常规查询:用于确定哪些组播组是有活跃的,即该组是否还有成员在使用,常规查询地址由全零表示;特定组查询:用于查询某具体组播组是否还有组成员。
IGMP学习心得:
有关IGMP的RFC文档,本人看过后,感觉实在是太枯燥泛味了,深受其“害”,为此,我对其作了一个简单的总结,如有错误之处及时指出。
在IGMP协议中定义了各种烦琐的定时器,以下我罗列出了一些比较重要的定时器。
有助于我们理解IGMP协议具体的实现过程。
查询间隔(query-interval)
查询间隔是指查询者发送普通查询(general query)之间的时间间隔。
查询报告间隔(max query response time)
就是周期性普通查询数据报中的最大响应时间,缺省值是100(10秒)。
当一台主机收到一个普通查询,它为收到查询的那个接口所在的组设置延迟定时器。
每个定时器都被设置成不同的随机值(降低并发的概率),该随机值采用主机所能达到的最高时间精度,值的范围是(0,max query response time)
组成员关系间隔
组成员关系间隔是指一台多播路由器在确定某一个网络内的某一个组内没有成员之前,必须要经过的时长。
其它查询者存在间隔(querier timeout)
通常情况下,每一个物理网络只有一个查询者。
所有的多播路由器在启动的时候,在它的每一个相连的网络中都是查询者。
如果一个多播路由器接收到另一台多播由器的一个查询消息,并且它的IP地址要比自己小,那它在该网络中要马上变成一个非查询者,因为一个子网内只允许存在一个查询者。
其它查询者存在间隔是指一台路由器在确定网络内没有其它作为查询者的路由器存在之前,必须要经过的时长。
启动查询间隔
启动查询间隔是指在查询者启动的时候,发送普通查询之间的间隔。
因为在多播路由器启动的时候,为了快速并可靠地确定组成员信息,路由器应当间隔较小的发送多个普通查询。
它的缺省值是1/4的查询间隔。
最后一个成员查询间隔(Last member query response time)
最后一个成员查询间隔是指为响应离开组消息而发送的指定组查询(group specific query)中的最大响应时间,同时它也是指定组查询间的时间间隔。
缺省值是10(1秒)。
主动报告间隔
主动报告间隔是指主机作为某一个组的成员的最初的报告之间的时间间隔,缺省值是10秒。
以上定时器中,query-interval,max query response time,querier timeout以及Last member query response time,在博达交换机中用show ip igmp interface vlan ID可以查看,也可以手动修改。
协议简述
IGMPV1是最早的因特网组播管理协议,实现了简单的组加入,组维持功能。
通过发送普通查询报文和响应报文来维持组成员和多播路由器的关系。
主机离开自己所在的组时不向查询者发送任何报文。
IGMPV2(RFC2236)
IGMPV2在IGMPV1的基础上增加了对组离开报文(leave报文)支持,并且兼容IGMPV1。
当一台主机主动加入到一个组,它立即主动向同一子网内的多播路由器发送一个V2版本的组成员报告。
为了防止最初的组成员报告可能会丢失或被破坏,主机会在较短的时间间隔内将该报告重复一到三次(deb ip igmp-host可以看到其过程,用交换机作为主机时每发送一个report,会复制一份发给它自已)。
多播路由器在系统运行时,每隔一断时间(query-interval)会向邻接接口发送一个普通查询报文(general query,组地址为224.0.0.1),当一台主机收到一个普通查询报文,若自己存在某一个组中,它就会发送一个响应报文,其目的地址是自己所在的组的地址,如果主机在发送响应报文之前收到了其它主机发的且目的地址是自己组地址的响应报文,为了减少网络中的流量,它会抑制使自己不在发送响应报文,因为多播路由器只关心组是否存在,并不在乎组内有多少成员,也不在乎这些成员分布在哪里。
当一台主机离开一个组时,它主动向多播路由器发送一个离开组消息(组地址为224.0.0.2)。
当多播路由器收到一个离开组消息时,它会在短时间内每隔一定的时间(最后一个成员查询间隔)发送一个指定组查询(specific query)报文。
这些指定组查询的最大响应时间被设置为(最后一个成员查询间隔)。
如果最后一个查询超时了,还是没有收到报告,多播路由器就假定这个组已经没有本地成员了。
如果该组内的其它成员收到该组的指定组查询报文,它会向多播路由器(查询者)发送响应(report)报文,告诉查询者,这个组内还有成员在,请不要删除。
IGMPV3(RFC3376)
IGMP的V3版本相对于V2版本来说,增加了对源过滤的支持,同时兼容V1,V2版本。
即主机有能力向查询者报告只接收某些特定源发送过来的组播数据(include模式),或者是只接收除某些特定源之外的组播源发送过来的数据(exclude模式)
IGMPV3中的源过滤有两种模式,即INCLUDE和EXCLUDE模式,在include模式下,只有来自源过滤列表(source-list)列出的那些IP源地址的并发往指定多播地址的数据报才会被接收。
在exclude模式下,只有来自除了源过滤列表列出的那些IP源地址之外的源地址,并发往指定多播地址的数据才会被接收。
若用博达交换机模拟主机简单地加入一个组,不配置源过滤列表,则向子网内的多播由器发送TO_EX NULL报文,即表示工作在EXCLUDE模式,源过滤列表为空。
若离开一个组则发送TO_IN NULL报文。
(注:V3版报告在发送时,目的地址是224.0.0.22)当然,我们也可以配置带有源过滤列表的组加入命令。
如:ip igmp join-group 225.0.0.8 include 1.0.0.8。
查询的变体
查询消息有三种类型的变体(V3的查询报文中包含有关源地址消息的字段):
1、“普通查询”(general query):由多播路由器发出,用于获知邻接接口(即查询所传输的网络中所相连的接口)的完整的多播接收状态。
在一个普通查询中,组地址字段和源数量(N)字段都为0。
2、“指定组查询”(group specific query):由一台多播路由器发出,用于获知邻接接口中跟某一个IP地址相关的多播接收状态。
在指定组查询中,“组地址”字段含有需要查询的那个组地址,源数量(N)字段为0。
3、“指定组和源查询”(grp-src specific query):由一台多播路由器发出,用于获知邻接
接口是否需要接收来自指定的这些源的,发往指定组的多播数据报。
在一个指定组和源的查询中,组地址字段含有要查询的多播地址,源地址字段含有相关的源地址。