第七章因特网组管理协议(IGMP)2§7-1引言IP通信可用到两种类型的通信中:单播和多播。单播是在一个发送器和一个接收器之间的通信。它是一对一的通信。多播是一个发送器将同样的报文同时发送给大量的接收器。是一对多的通信。IP编址方法支持多播。以1110开始的32位地址是多播地址。多播地址只能用作目的地址。多播地址也叫做groupid。3硬件广播许多硬件技术都包含同步(或接近同步)向多个目的站发送分组的机制。广播交付意味着网络向每个目的站交付一个分组的副本,其实现方式并不一样•类似以太网的总线技术•由交换机和点到点连接构成的网络中。广播地址(BroadcastAddress),在大多数硬件技术中采用保留地址中的特殊地址。广播的主要缺点是对资源的消耗,除了使用网络带宽外,还消耗所有计算机上的计算资源。所以,TCP/IP使用单播选路和类似ARP的地址绑定机制来消除广播交付。4组播的硬件起源组播(multicasting)是一种多点交付,允许每个系统选择是否参与组播。地址机制保留有较大数目的组播地址,参加组播的站点选择一个特定的组播地址用于通信。配置好网络接口硬件后,现在站点将可以识别和接收:–单播、广播、和多播分组。5从概念层次看,单播和广播都可以看作组播的特殊形式。但是,尽管组播具有明显的一般性,也不能替代传输的常规形式。因为实现转发和交付的底层硬件有根本的差别:–单播和广播根据网络拓扑结构进行转发。–组播必须转发给所有网络段。6以太网组播以太网提供了硬件组播的最好的实例:以太网地址用G/L位(高位八位组的地位比特)区别常规单播地址(置0)和组播地址(置1)。点分十六进制表示为:–01.00.00.00.00.00以太网接口板初始化后,可接收单播和广播地址。使用设备驱动程序软件后进行重新配置后,可以识别一个或多个组播地址。7IP组播IP组播(IPmulticasting)是对硬件组播的互联网抽象。IP组播允许到一系列计算机子集的传输,这些子集被允许跨越互联网上任意物理网络,在IP术语中,称为组播群(multicastinggroup)。IP组播具有下列一般特性:–群组地址(D类地址,由Internet管理机构分配,永久、临时)–群组数(228实际受选路表大小,而非编制约束)–动态组播成员(任意加入和退出群组,加入任意多个群组)–硬件的使用(若底层不支持硬件组播,则用广播或单播来交付)–网络间转发(因群组跨越网络,需要组播路由器)–交付机制(与IP数据报交付使用相同的尽最大努力交付机制)–成员和传输(任意主机可向任意群组发送,群组只确定接收)8概念性组成部分一般的目的互联网组播系统需要三个概念性组成部分:1.组播编址方法2.有效的通知和交付机制3.有效的网络间转发工具9IP组播地址永久地址:又称为熟知的(well-known),用于Internet上的主要服务以及基础结构维护(例如,组播选路协议)临时地址:又称为瞬变的(transientmulticastgroup),需要时创建,群组成员为0时丢弃。考虑两个相互冲突的目标:–允许分配地址时的本地自治,同时定义具有全局含义的地址IP组播使用数据报目的地址来规定数据报为组播交付,采用D类地址:•1110+群组标识•224.0.0.0~239.255.255.25510两个重要的通常用于控制协议,而非数据传交付的永久组播地址:224.0.0.1永久分配给全系统群组(allsystemgroup)224.0.0.2永久分配给全路由器群组(allroutersgroup)11组播地址机制IP组播地址不能用作源地址,不能出现在源路由或记录路由选项中。不会生成关于组播数据报的ICMP差错报文。如发往组播地址的Ping得不到回答。组播使用TTL字段限制数据传播。12IP组播映射到以太网组播IP组播标准并没覆盖所有类型的网络硬件,但能映射到以太网组播地址上。–将IP组播地址的低23位放到特殊的以太网组播地址01.00.5E.00.00.0016的低23比特上。这种映射并不唯一,因为IP组播地址有28个有效比特用来表示组播群组,可能有多个群组同时映射到一个以太网组播地址。所以主机可能接收到目的不是本机的某些组播数据报,因此IP软件必须检查所有到达的数据报的地址。13主机和组播交付IP组播可用在单个物理网络上,也可在互联网上。在单个物理网络上,主机直接把数据报放在一帧中并使用接收方在监听的组播地址,发送给目的主机。在互联网上,组播路由器负责在网络间转发组播数据报。主机把组播数据报转发给组播路由器,使用本地网络硬件的组播能力,而非单播、广播时所用选路技术。组播路由器监听所有IP组播,根据需要转发。所以,本地组播和非本地组播的主要区别在于组播路由器,而不在主机。14组播作用域组播群组的作用域(scope)指群组成员的范围。–如果群组成员全部在同一物理网络内,认为作用域限制在一个网络内。类似,若在同一机构内,认为作用域限制在一个机构内。除了群组作用域,每个组播数据报也有一个作用域,定义为某数据报传播通过的网络集合。数据报的作用域称为它的范围(range)。15IP使用两种技术限制组播作用域:–TTL字段控制范围–管理辖区(administrativescoping)如限制同一网络内主机和路由器通信的控制报文在本网络内,可设置TTL=1;同一主机内的两进程使用IP组播进行处理器间的通信,可设置TTL=0;路由器厂商配置本地网点的路由器以限制TTL15的数据报。管理辖区,用于控制辖区,地址空间包括用于某网点的或用于某机构的本地群组的部分。–239.192.0.0~239.251.255.255作用域限制在一个机构内–239.252.0.0~239.255.255.255作用域限制在一个网点内16把主机软件扩展为可处理组播参与IP组播的主机可具有以下所示三种级别中的一种:–级别含义–0主机不能发送也不能接收IP组播–1主机能发送但不能接收IP组播–2主机能发送和接收IP组播改进为能发送:使主机IP软件允许应用程序指定组播地址为目的地址,网络接口软件能把组播地址映射为相应的硬件组播地址(若硬件不支持组播,就使用广播技术)17改进为能接收:–IP软件必须有一个API,允许应用程序声明加入或退出某个组播群组。–如果有多个应用程序加入同一群组,则IP软件必须为每个应用程序传送一份收到的发往该群组的数据报。–如果所有应用程序退出该群组,主机必须记住不再参与该群组工作。–主机必须运行一个协议(IGMP),把自己的群组成员状态通知给本地组播路由器。18Internet群组管理协议IGMP的工作分为两个阶段:1.当主机加入一个新的组播群组时,发送一个IGMP报文给群组的组播地址,宣布其成员。本地组播路由器接收到这个报文后,向互联网上其它组播路由器传播找个群组成员信息,以建立必要的路由。2.为适应动态的成员,本地组播路由器周期性的轮询本地网络上的主机,以便确定现在各个群组中有哪些主机。如经过若干次轮询后,某个群组中始终没有成员,组播路由器则认为该群组中不再有本网络中的主机,于是停止向其它组播路由器通告该群组的成员信息。19IGMP的实现1.主机与组播路由器之间的所有通信都使用IP组播。–携带ICMP报文的数据报在传输过程中尽量利用硬件的组播能力。在支持硬件组播的网络上,不参与IP组播的主机就不会收到ICMP报文。2.当轮询确定群组成员时,组播路由器不会为每个群组发送单独报文,而是发送单个查询请求得到关于所有群组的信息。默认的轮询间隔是125秒。3.如果多个组播路由器连接在同一网络,它们会迅速而有效的选择一个路由器轮询主机成员。204.主机不会同时响应路由器的ICMP查询,每个查询包含一个N值,指定了最大响应时间(默认值是10秒)。当查询到达时,主机选择一个0至N之间的随机时延,在这个时延之后发送响应报文。–实际上如果某个主机时多个群组的成员,就会为每个群组选择不同的随机响应时延,这样,主机对路由起的响应就会在10秒内随机分布。5.每台主机监听群组中其它主机的响应,并抑止那些不必要的通信量。–因为发送到全系统地址的查询到达每个群组成员,每个主机随机响应。实际上,只有最小时延的那台主机用群组的组播地址响应,其它成员收到副本,取消定时器并抑止传输。–组播路由器不需要保留群组的确切记录,只需要知道网络中是否有一台主机是群组的成员。21群组成员状态的转换ICMP必须记住主机所属的每个组播群组的状态。主机保留一个记录群组成员信息的表。每当一个应用程序加入一个新的群组,ICMP软件就为之分配一项并填入关于该群组的信息。在这些信息中,维护着一个群组参照计数器(groupreferencecounter),其初始值为1。–每当新应用程序加入群组,就把相应项的计数器加1。反之,如果一个应用程序退出一个群组,则减1。–当计数器为1时,主机通知组播路由器它将退出该群组。22§7-2IGMPIGMPInternetGroupManagementProtocol(因特网组管理协议)设计IGMP是为了帮助多播路由器识别在局域网上的一些主机,而这些主机是一个多播组的成员。IGMP和IP协议配合使用。23IGMP报文IGMP报文的类型ICMP有两种类型的报文:报告和查询。报告报文是从主机发送到路由器。查询报文是从路由器发送到主机。ReportQuery24IGMP报文格式版本(1)类型未使用检验和在报告中的组地址,在查询中是全08bits8bits16bits类型:查询(1)报告(2)25IGMP报文格式中各字段说明:版本:4比特字段。定义了协议的版本,现在是版本1。类型:4比特字段。定义了报文的类型。1是查询报文,2是报告报文。检验和:16比特字段。组地址:定义了在报告报文中的组地址,在查询报文中这个字段填入0。26组播转发和选路信息前面描述的IGMP和组播编址方法指定了主机怎样和本地路由器交互,如何通过单个网络传送组播数据报,但没有指定路由器怎样交换群组成员信息,或者怎样确保每个数据报的副本能够到达所有群组成员。现在没有同一的标准协议来传播组播选路信息。组播选路比较复杂和困难,它与常规选路在基本方法上是不同的。在下图简单的网络拓扑结构中,存在与常规选路的差异。27网络3R网络1网络2ABCDEFG281.对动态选路的需求–在单播选路中,只有当拓扑结构改变或设备出故障时才会发生路由改变,而组播路由则不同,应用程序加入或者退出一个组播群组就会发生组播路由的改变。•例如,网络2有一个主机加入组播群组“×”,则路由器R要把网络2包括进去。然而开始时,到“×”的组播不会传播到网络2中去。2.目的选路的不足之处–组播转发需要路由器检查多个目的地址。•例如,在上图中路由器R到任一群组的转发有三种动作。3.任意发送方–组播数据报可以从非组播群组成员的计算机上发起,并且可以路由通过没有任何组播成员的网络。29基本组播选路组播路由器使用多个目的地址转发数据报,因此产生一个问题,“决定如何转发数据报时,组播路由器到底使用什么信息呢?”组播路由器必须依靠数据报的源地址。反向路径转发RPF(ReversePathForwarding),使用数据报的源地址来避免数据报反复通过一个环路。–组播路由器有一个常规选路表,其中有到每个目的站的最短路径–当数据报到达时,路由器提取出源地址–在本地选路表中查找出I,I是对应源地址的接口–如果数据报是通过接口I到达的,路由器就给其它接口转发一份副本,否则就丢弃30优点:RPF基本方法能够保证组播群组中的每个成员都能接收组播数据报。缺点:RPF浪费了没有群组成员的网络的带宽。为了避免传输不需要的组播数据报,引进了RPF的修改版本,称为截尾反向路径转发TRPF(TruncatedReversePathForwarding)或截尾反向路径广播TRPB(Truncate