IGMP Snooping原理及应用

更新时间:2024-06-28 22:59:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

IGMP Snooping

原理及应用

目 录

第1章 IGMP ....................................................................................................................................... 1 1.1 多播组地址 .................................................................................................................................. 1 1.2 IP多播映射到以太网多播 ......................................................................................................... 2 1.3 IGMP协议 ................................................................................................................................... 2 1.3.1 IGMPv1 ................................................................................................................................ 3

1.3.1.1 IGMPv1查询响应过程 ................................................................................................................ 4 1.3.1.2 IGMPv1加入过程 ........................................................................................................................ 5 1.3.1.3 IGMPv1离开过程 ........................................................................................................................ 5

1.3.2 IGMPv2 ................................................................................................................................ 6

1.3.2.1 IGMPv2查询响应过程 ................................................................................................................ 7 1.3.2.2 IGMPv2离开过程 ........................................................................................................................ 7 1.3.3.3 查询选择过程 ............................................................................................................................... 8 1.3.3.4 小型拓扑图和包分析 ................................................................................................................... 8

1.3.4 IGMPv3 ................................................................................................................................ 9

1.3.4.1 成员关系查询报文 ..................................................................................................................... 10 1.3.4.2 成员关系报告报文 ..................................................................................................................... 10

1.4 多播转发和路由选择信息 ........................................................................................................ 12 第2章 IGMP SNOOPING ............................................................................................................... 13 2.1 IGMP SNOOPING协议 ................................................................................................................ 13 2.2 路由端口加入 ............................................................................................................................ 13 2.3 组成员端口加入 ........................................................................................................................ 14 2.4 组成员端口离开 ........................................................................................................................ 14 2.5 IGMP SNOOPING模拟实验 ........................................................................................................ 14

2.5.1 TL-SG3109 .................................................................................................................................... 15 2.5.2 DES-1228 ....................................................................................................................................... 17 2.5.3 2款交换机比较 ............................................................................................................................. 19

第3章 SNOOPING在视频多播的应用 .......................................................................................... 21 3.1 流媒体基础知识 ........................................................................................................................ 21 3.1.1 流媒体概念 ........................................................................................................................ 21 3.1.2 点播与广播 ........................................................................................................................ 21 3.1.3 单播与多播 ........................................................................................................................ 22 3.2 播视频服务器的搭建 ................................................................................................................ 22 3.2.1 Windows Media Services服务器的安装 .......................................................................... 22 3.2.2 建立多播组视频 ................................................................................................................ 24 3.3 SNOOPING视频多播应用实验 .................................................................................................. 28 3.3.1 同一网段视频点播和广播 ................................................................................................ 28 3.3.2 不同网段视频点播和广播 ................................................................................................ 30 第4章 IGMP SNOOPING测试 ...................................................................................................... 32 4.1 静态分组测试 ............................................................................................................................ 32 4.2 SNOOPING分组测试 .................................................................................................................. 32

2

4.3 SNOOPING时间参数测试 .......................................................................................................... 33 参考文献 ................................................................................................................................................ 35 附录 IGMP SNOOPING功能测试 .................................................................................................. 36

3

第1章 IGMP

随着宽带多媒体网络的不断发展,各种宽带网络应用层出不穷。IP TV、视频会议、数据和资料分发、网络音频应用、网络视频应用、多媒体远程教育等宽带应用都对现有宽带多媒体网络的承载能力提出了挑战。采用单播技术构建的传统网络,在带宽和网络服务质量方面已无法满足新兴宽带网络的要求,同时也带来网络延时、数据丢失等问题,通过引入IP多播技术,有助于解决此类问题。多播网络中,即使组播用户数量成倍增长,骨干网络中网络带宽也无需增加。因为成百上千的组播应用用户和一个组播应用用户所占用的骨干网带宽是相同的,从而最大限度地解决目前宽带应用对带宽和网络服务质量的要求。

多播亦称多点传送(Multicasting),是一种让数据从一个成员送出,然后复制给其他多个成员的技术。采用这种技术,可有效减轻网络通信的负担,避免资源的无谓浪费。最开始的时候,设计这一技术的目的是弥补广播(Broadcasting)通信的不足。假如过度使用广播技术,极易造成网络带宽的大幅占用,影响整个网络的通信效率。多播通信则不同。对一个网络内的工作站来说,只有在上面运行的进程表示自己“有兴趣”,多播数据才会复制给它们。

1.1 多播组地址

图1显示了D类IP地址的格式。

28位D类1110多播组ID

图1 D类IP地址格式

IP多播使用了数据报的目的地址来规定数据报必须通过多播进行交付,多播组地址包括1110的最高4bit和多播组号,范围从224.0.0.0到239.255.255.255。一些多播组地址被IANA确定为知名地址,如表1所示

表1 几个永久IP多播地址分配的例子

地址 224.0.0.0 224.0.0.1 224.0.0.2 224.0.0.3 224.0.0.9 224.0.0.10 224.0.0.19到224.0.0.255 224.0.1.0到238.255.255.255 239.0.0.0到239.255.255.255

含义 基地址(保留) 这个子网上的所有系统 这个子网上的所有路由器 未分配 RIP2路由器 IGRP路由器 其他链路本地地址 全球作用域的地址 作用域限制在一个机构内 1

IP对待多播地址的方式与对待单播地址不同。例如,多播地址只可作为目的地址。因此,多播地址从不会出现在数据报的源地址字段,也不会出现在源路由或记录路由选项中。而且,不会生成关于多播数据报的ICMP差错报文。因此,发往多播地址的ping命令是得不到回答的。

1.2 IP多播映射到以太网多播

IANA拥有一个以太网地址块,即高位24 bit为00:00:5e(十六进制表示),这意味着该地址块所拥有的地址范围从00:00:5e:00:00:00到00:00:5e:ff:ff:ff。IANA将其中的一半分配为多播地址。为了指明一个多播地址,任何一个以太网地址的首字节必须是01,这意味着与IP多播相对应的以太网地址范围从01:00:5e:00:00:00到01:00:5e:ff:ff:ff。

要把IP多播地址映射为相应的以太网多播地址,只需将IP多播地址的低位23bit放到以太网多播地址01:00:5e:00:00:00的低位23bit上,如图2所示

多播组地址中的这5bit未用作形成以太网地址D类IP地址1 1 1 0多播组地址中的低位23位复制到对应的以太网地址中0 0 0 0 0 0 0 10 0 0 0 0 0 0 00 1 0 1 1 1 1 0048位以太网地址

图2 D类IP地址到以太网多播地址的映射

由于多播组号中的最高5bit在映射中被忽略,因此每个以太网多播地址对应的多播组是不唯一的。32个不同的多播组号被映射为一个以太网地址。例如,多播地址224.128.64.32和224.0.64.32都映射为01:00:5e:00:40:20。

1.3 IGMP协议

主机和路由器如何进行多播通信?一个物理网络上的所有系统如何知道当前主机所在的多播组?多播路由器如何知道多播数据报应该向哪些接口转发?为解决上面的问题,我们首先介绍Internet组管理协议。

IP数据报IP首部20字节IGMP报文8字节

图3 IGMP报文封装在IP数据报中

正如ICMP一样,IGMP也被当作IP层的一部分。IGMP报文通过IP数据报进行传输,

2

如图3所示。

IGMP报文通过IP首部中协议字段值为2来指明。

Internet组管理协议(IGMP)是基于LAN的信令协议,用来管理组成员的关系。每个LAN都有一台指定的多播路由器,它负责定期查询所有主机,以刷新组成员关系,并吸收新的成员。对于路由器的查询,属于组的端节点产生应答报告,其中包含所在的组或要加入的组。查询和应答消息的TTL值都是1,以便将交换范围限制在本地子网。

多播主机利用IGMP通知路由器,路由器所在子网的一台计算机想加入一个特定的多播组。IGMP是IP多播方案的基础。要想使它正常工作,两个多播节点之间的所有路由器都必须提供对IGMP的支持。例如,假定机器A和B加入了多播组224.1.2.3,两者间总共存在着三个路由器。此时,三个路由器都必须具有IGMP能力,以保障通信的成功进行。若某个路由器不具备IGMP能力(即不支持IGMP),那么收到多播数据后,会将它草草地丢弃了事。若一个应用加入了多播组,一条IGMP“加入”命令便会发给子网上那个特殊的“所有路由器”地址(224.0.0.2)。该命令用于通知所有路由器,有客户机对一个特定的多播地址产生了兴趣,即它们想加入那个多播组。以后,假如路由器收到了发给那个多播地址的数据,便会将其转发给所有多播客户机。

此外,若一个端点加入多播组,便会同时指定一个“生存时间”(TTL)参数。通过该参数,我们便知道对于在端点机器上运行的多播应用程序来说,为了收发数据,中途需要经历多少个路由器。例如,假定我们编写了一个IP多播应用,令其加入组1,同时TTL值设为2。此时,一个加入命令会传给本地子网上的“所有路由器”组。子网内的路由器会根据这一命令,判断出自己以后应将多播数据转发到那个地址。随后,路由器会将TTL值减1,再将一条加入命令传给与自己相邻的各个网络。那些网络上的路由器会如法炮制,最后又将TTL值减去1。就我们的例子来说,此时的TTL 值已经变成了0,所以“加入”命令不会再继续传递下去(不再传给相邻的网络)。从中可以看出,TTL实际限制了多播数据能够蔓延得多“远”。若一个路由器拥有由工作站注册的一个或多个多播组,便会向“所有主机”组(224.0.0.1)定时发送一条“组查询”消息,查询当初通过一条加入命令通知它的每个多播地址。假如网络上的客户机仍在使用那个多播地址,便会用另一条IGMP消息做出响应,让路由器放心,以便继续转发与那个地址对应的数据。否则的话,路由器便会停止为那个地址转发任何数据。

有时可能产生错误:客户机可能在放弃了多播组1成员资格后,马上便加入了组2。但另一方面,除非路由器执行了一次组查询,但没有接收到响应,否则会将发给多播组1和2的数据都转发到网上。假如这两个组的传输数据总量大于网络本身允许的带宽,为此,可考虑换用IGMP协议的第2版。允许客户机向路由器发送一条“离开”消息,明确告诉它停止转发指定多播地址的数据。当然,针对每个特定的地址,路由器都维持着一个参考性的客户机计数。因此,除非子网上的所有客户机都脱离了一个特定的地址,否则发给那个地址的数据仍会继续“蔓延”下去。IGMP共有三个版本,随着版本的升级,协议功能不断扩展。

1.3.1 IGMPv1

图4显示了长度为8字节的IGMPv1报文格式。

3

0IGMP版本/434IGMP类型/478未用/81516检验和/1631组地址/32

图4 IGMPv1报文的字段格式

IGMP类型为1说明是由多播路由器发出的查询报文,为2说明是主机发出的报告报文。检验和计算和ICMP协议相同。

组地址为D类IP地址。在查询报文中组地址设置为0,在报告报文中组地址为要参加的组地址。

1.3.1.1 IGMPv1查询响应过程

192.168.1.1192.168.1.2224.1.1.1H1退出报告224.0.0.2H2成员报告224.1.1.1特定组查询 224.1.1.1192.168.1.3224.1.1.1H3R1R2

图5 IGMPv1查询响应过程

路由器R1(IGMPv1查询器)周期性地,向所有的主机多播组组播地址(224.0.0.1),即向当前子网上的所有主机发送IGMPv1成员关系查询。只要主机支持多播并想要收到查询,就必须接收上述查询信息。

所有满足接收IGMPv1查询消息的主机都要收到IGMPv1成员关系查询,并且某一主机(H2)首先通过向多播分组224.1.1.1发送IGMPv1成员关系报告做出反应。报告通知子网中的路由器至少有一主机对多播组224.1.1.1信息感兴趣。但是对于某一查询,当前子网中对于每个组只能有一个成员响应成员报告。这样可以节约子网带宽及主机处理时间。这一过程称为响应抑制。报告抑制机理有助于减少当前子网的消息流数量以及降低路由器的处理负担。

在本地子网上的主机H3也收到IGMPv1成员关系查询,并且通过向多播组224.2.2.2发送IGMPv1成员关系报告做出反应。报告通知路由器在子网中至少有一个主机对多播组224.2.2.2的多播信息感兴趣。

作为查询响应交换的结果,路由器R1现在知道在局部子网中有接收站点需要多播组224.1.1.1和224.2.2.2就会根据使用的组播路由协议建立起相应的转发状态。

4

1.3.1.2 IGMPv1加入过程

成员加入一个多播组不用等待路由器发出下一次成员关系查询报文时再响应加入,可以主动发动成员报告表示加入,特别是当主机是第一次加入子网的组播组时,这样在组内没有其他组成员的情况下缩短了成员加入多播组的延迟。因此,当主机想加入多播组的时候,它要立即向想要加入的多播组发送一个或多个未经同意的成员关系报告。

224.2.2.2H1H2报告H3R1

图6 IGMP加入过程

图6显示了主动的加入过程。这里,主机H3想要收到多播组224.2.2.2的信息流。它并不等待来自路由器A的下一次成员关系查询,而是立即向组224.2.2.2发送未经同意的IGMPv1成员关系报告,以便通知路由器它想要加入的组。

1.3.1.3 IGMPv1离开过程

在IGMPv1中没有为主机定义特殊的离开机制。IGMPv1主机可以在任何时候离开多播组而不用给路由器发任何离开组通知。当主机不再需要从特定组收到多播信息流时,主机仅仅停止处理多播组信息,并且停止对组IGMP成员关系报告的IGMP查询做出反应。 如果子网内还有同一多播组的多个成员,那么主机这样离开多播组不会出现什么问题,因为子网中还需要继续接收多播信息流。但如果离开多播组的是子网内的最后一个成员,那么路由器在一段时间内仍会继续转发这个无用的多播组的信息到这个网段,虽然这时这一网段内已不存在该组成员。

终止多播信息的发送取决于IGMPv1查询路由器,只要在经过几个查询间隔后没有得到响应即可导致多播组超时而不再向该网段上发送组播信息。但是这样做缺乏效率,特别是当多播组个数太多并且这些组的传输负担很重时。

因此,IGMPv1路由器知道在子网中不再有任何活动的多播组的接收站点的唯一方法是弄清楚何时路由器停止得到主机发送的成员关系报告。因此IGMPv1路由器需要对子网中的每个多播组维护一个计时器。当路由器接收到子网中的主机发送来的成员关系报告时,该多播组的计时器就复位。当与某个多播组相关的计时器超时后,就说明在本网段上已经没有活动的该组多播组接收者,则停止继续向该网段上转发该多播组信息。对于IGMPv1路由器来说,超时时间间隔一般是查询时间间隔的3倍。

5

1.3.2 IGMPv2

IGMPv2大多数变化的主要目的不但包括解决在最初的协议规范中存在的二义性问题,而且还要解决离开和加入多播组存在的延时问题,图7为IGMPv2格式报文。

IGMPv2新特征:

查询选择过程:IGMPv2的路由器提供选择查询路由器的能力,而不用依赖多播路由协议来进行。

最大响应时间字段:查询信息的新字段,允许查询路由器指定最大查询响应时间。 特定组查询消息:IGMPv2中加上了特定组查询以允许路由器只查询某一个特定组而不是所有组的成员执行查询操作。这是为找出某组中是否还留有成员的优化办法,不要求所有组发出响应报告。特定组查询和普遍查询的区别就在于普遍查询多播到所有主机组地址(224.0.0.1)而特定组查询只组播到特定组的多播地址。

离开组消息:IGMPv2中还加上了一种离开组消息,以允许主机告诉路由器它们要离开多播组。

0IGMP报文类型/878最大响应时间/81516检验和/1631组地址/32

图7 IGMPv2报文的字段格式

表2给出了IGMPv2报文类型字段,IGMPv1成员关系查询消息包括4bit版本字段中的一个0x1和4bit类型字段中的一个0x1。它们合并在一起形成0x11的8bit值,这和作为成员关系查询的IGMPv2类型代码完全一样。为使IGMPv2类型代码与第一版的一致,就是用来在IGMPv1和IGMPv2之间提供兼容性。这使IGMPv2主机和路由器在网络有其他IGMPv1

表2 IGMPv2的类型字段 类型 成员关系报告 退出报告 值 0x16或00010110 0x17或00010111 IGMP报文查询(一般或特殊) 0x11或00010001 查询成员报告退出报告一般的特殊的 图8 IGMPv2的报文类型

主机和路由器时能够识别IGMPv1消息。图8给出了IGMPv2报文类型的框图。

6

1.3.2.1 IGMPv2查询响应过程

IGMPv2的成员关系查询和成员关系报告信息与IGMPv1信息几乎完全相同,只有两个例外。第一个差别在于IGMPv2查询信息分为两类:普遍查询,与旧的IGMPv1查询执行同样的功能;特定组查询-直接对单个组查询,而且它的目的是为了查询某一个组而不是所有组。在特定组查询里,组地址字段包含正在查询的特定组。收到消息的IGMPv2主机用同样的方法做出响应,正如它们对常规查询所用的方式。第二个差别是IGMPv1成员关系报告(类型代码=0x12)和IGMPv2成员关系报告(类型代码=0x16)有不同的IGMP类型码。但是IGMPv2的查询响应过程和IGMPv1一样。

1.3.2.2 IGMPv2离开过程

IGMPv2规定,当主机离开多播组时,它们将发送IGMPv2定义的一种新的离开组信息类型。当某个主机离开组播组时,如果它是响应组成员关系报告查询的最后一个主机,它就要向所有路由器的组播组(224.0.0.2)发送离开组信息。增加的离开组和特定组的IGMPv2信息,与最大响应时间字段配合,使得IGMPv2把离开延迟减少到仅仅几秒钟。这是对IGMPv1的重要改进。当IGMP版本2路由器收到一个离开报文时,路由器就对于该组发出一个特定组查询,以判断是否仍有其它主机希望接收这个组播组的信息。

192.168.1.1192.168.1.2224.1.1.1H1退出报告224.0.0.2H2成员报告224.1.1.1特定组查询 224.1.1.1192.168.1.3224.1.1.1H3R1R2

图9 IGMPv2主机离开过程

图9中多播组224.1.1.1有几个组成员,当前某个主机要离开该组,具体过程如下: 主机向所有多播组路由器(224.0.0.2)发送IGMPv2离开组信息以便通知子网中的所有路由器它正在离开组。

IGMP查询路由器(假定R1),收到来自主机的离开组信息。然后路由器发送一个特定组(224.1.1.1)查询以确定当前子网中,该组是否还有主机为接收者。

如果还有主机是组224.1.1.1的成员,那么其中一个主机收到该特定组查询,便对IGMPv2成员关系报告查询做出响应,以便通知子网中的路由器组成员仍然存在;如果在子网中没有一个组224.1.1.1的成员了,那么就没有主机对该特定组查询做出响应,路由器R1停止转发该多播组信息到该子网上。

7

1.3.3.3 查询选择过程

IGMPv2使用普遍查询信息的IP地址来选择IGMP查询路由器。在IGMPv2中,多访问网络上的每个路由器都初始假定自己是查询器并发出查询,它们都向所有主机组播组(224.0.0.1)发送源IP地址字段为自身的接口地址的IGMPv2普遍查询信息。每个路由器都将接收到从其它IGMPv2路由器发出的查询,如果一个IGMPv2路由器收到其他路由器发送的普遍查询信息,它就把此信息的源IP地址和它自己的接口地址作比较。具有最低IP地址的IGMPv2路由器将成为查询路由器。

所有非查询路由器启动一个查询计时器,无论何时只要收到来自当选的查询路由器的普遍查询信息,计时器就被复位。默认的计时器持续时间是查询间隔的2倍。如果查询计时器超时,就认为当选的查询路由器已经发生错误,比如重启,不再是查询路由器,则重新初始化查询过程。

1.3.3.4 小型拓扑图和包分析

下面以一个具体的小型拓扑结构来分析IGMPv2的数据报,图10是一个简单的组播拓扑图。

R222.99.99.111222.99.99.168222.99.99.114流媒体服务器H1H2H3

图10 组播拓扑图

如上图所示,H3为流媒体服务器,主机H1、H2通过多播路由器R连接到H3,H1、H2可以随时观看H3的视频,路由器R只是发查询包,下面给出这一过程Ethereal所抓到的包。

图11 IGMPv2查询、报告、离开包

如上图所示,包1为路由器发出的目的地址为224.0.0.1的查询包(224.0.0.1代表这个子网上的所有系统),H1、H2和H3响应了这个查询,H1没有点播任何服务,向默认的多播地址239.255.255.250发送一个关系报告,H2点播了视频服务,向点播的那个视频所在的

8

多播地址239.192.13.66发送一个关系报告,视频服务器H3向默认的多播地址239.255.255.254发送一个关系报告。如果H1也加入了视频点播,发送一个目的地址为239.192.13.66的关系报告,如包5所示。H2停止了视频点播,向目的地址224.0.0.2(这个子网上的所有路由器)发送一份离开报告,如包10所示。

下面给出这3种包的包结构。

图12 IGMPv2查询报文

图13 IGMPv2成员关系报告报文

图14 IGMPv2离开报文

注意:图12所示的是一个一般查询报文,因为多播组地址为0.0.0.0。一般查询报文和离开报文封装在IP头的目的地址和IGMP的目的地址是不同的。

1.3.4 IGMPv3

IGMPv3增加Group Source Report(组源节点报告)和Group Source Leave(组源节点离开)消息,使得端节点能够选择仅仅收听来自组中特定源节点的组播信息。

9

1.3.4.1 成员关系查询报文

IGMPv3定义了两种报文类型:成员关系查询报文和成员关系报告报文。图10为成员关系查询报文,表3为几个不同的IGMP的类型列表。

0类型8RESP CODE16检验和31群组地址RESSQRVQQIC源地址1源地址2? ? 源地址N源地址数

图15 IGMP成员关系查询报文的格式

表3 IGMPv3报文类型 类型 0x11 0x22 0x12 0x16 0x17

当路由器探寻群组成员时,标记为RESP CODE的字段指定了群组成员在计算延时所用的最大间隔。IGMP允许路由器在每个查询报文中设置一个最大值,是为了让管理员能够控制IGMP通信量。群组地址字段或者用于指定特定的群组,或者包含0来代表一个通用查询。S字段指示路由器是否要抑制当一个更新到达时计数器应当执行的正常更新动作,这个比特对主机不起作用。QRV字段允许IGMP在损耗较大的网络上多次发送同一个分组,从而控制了其健壮性。QQIC字段指明了查询报文的查询间隔(Querier’s Query Interval),即成员关系查询之间的间隔时间。

IGMP报文的最后一部分由0或多个源组成。源地址数字段指定了随后的表项数目。每个源地址包含一个32位IP地址。在通用查询和特定群组查询报文中,源的数目为0.对于特定群组和源的查询,报文中包含了一个或多个源,路由器用这样的报文查询多播群组和任何指定源的组合的接受状态。

版本 3 3 1 2 2 含义 成员关系查询 成员关系报告 成员关系报告 成员关系报告 退出群组 1.3.4.2 成员关系报告报文

图11为IGMPv3成员关系报告报文。

10

0类型8保留保留16检验和群组记录数(K)群组记录1群组记录2? ? 群组记录K31

图16 IGMP成员关系报告报文的格式

图12为每个群组记录的格式

0记录类型8零16源地址数多播地址源地址1源地址2? ? 源地址N31

图17 群组记录格式

记录类型字段允许发送方指定记录中的源列表对应的是包含过滤器、排除过滤器还是对上一个报告的更改(例如,还需要包含或排除一个源)。多播地址字段指定了该群组记录所指的多播地址,源地址数字段指定了群组记录中包含的源地址数目。

版本3中没有为主机提供能够主动退出一个群组的显示报文,或监听某个群组的所有通信的显示报文。事实上,为退出一个群组,主机会发送一个成员关系报告报文,它定义了一个具有空IP源地址列表的包含过滤器。而为了监听所有的源,主机会发送一个定义了具有空IP源地址列表的排除过滤器的成员关系报告报文。

192.168.1.1224.1.1.1192.168.1.2224.1.1.1R1R2R3加入192.168.1.1,224.1.1.1离开192.168.1.2,224.1.1.1224.1.1.1H1

图18 接受特定源的组信息

11

主机H1已经加入组224.1.1.1,但只希望收到从源192.168.1.1的传输。使用IGMPv3的机制,主机H1可以通过指定路由器R3,它只对信源192.168.1.1发至组224.1.1.1的组播传输感兴趣。因此路由器R3即可只对主机H1所感兴趣的源192.168.1.1所发送的组播信息进行转发,而对不感兴趣的源192.168.1.2进行抑制。

1.4 多播转发和路由选择信息

为什么多播路由选择如此困难呢?为什么不把传统的路由选择方法扩展成处理多播呢?答案是,多播路由选择和常规路由选择在基本方法上是不同的,因为多播转发与常规转发不同。为了展示其差别,可考虑在图14所示的结构上实现多播转发。

网络1224.1.1.1224.1.1.1H2网络3224.1.1.1RH3H4H5224.2.2.2224.2.2.2网络2H1H6224.2.2.2H7

图19 多播转发

即使对于图14所示的简单拓扑结构,多播转发也和单播转发不同。例如,该图显示了2个多播群组:H1、H2、H3组成的224.1.1.1群组和H4、H5、H6组成的224.2.2.2群组。为了避免不必要的浪费带宽,路由器根本不应该让发往224.1.1.1的分组通过网络2,但是主机可以在任何是否参加任何群组。

如果主机H5和H6各自给224.2.2.2发送一个数据报,路由器R将接受并转发这些数据报。因为2个数据报发往同一个群组,目的地址是相同的,但正确的转发动作不同:R把H5的数据报发往网络2,而把H6的数据报发送到网络1。当R接收到主机H1发往224.2.2.2的数据报时,采取了第3种动作:转发2个副本,一个给网络1,另一个给网络2。 IP允许任意主机(不一定是群组的成员)向群组发送数据报。在图中,虽然主机H7不是任何群组的成员,并且H7所在的网络没有224.1.1.1群组的成员,但是H7可以给224.1.1.1群组发送数据报。更重要的是,该数据报在通过互联网时,很可能穿过其他没有群组成员的网络。

通过上面的简单介绍可以总结出多播路由转发的特点: 一个应用程序加入或退出多播群组就会造成多播路由的变化。 多播转发时路由器要检查的不只是目的地址。

多播数据报可以从非多播群组成员的计算机发起,并且可能转发经过没有任何群组成员的网络。

12

表5 DES-1228时间参数表

参数名称 Host Timeout 参数含义 侦听组播表的老化时间,超过这个设置的时间,侦听组播表被删除,所有的客户机都会收到服务器组播的UDP数据包。 路由器端口老化时间,在设置的时间内如果交换机没有收到相应路由端口发送的查询报文,侦听组播表中会删除路由端口。 指组播组中客户机发送离开报文后多长时间后不再接受UDP数据包(组播组至少还有一个成员)或者组播侦听表删除此端口 健壮性参数,表示子网中期望的包丢失数,IGMP允许包丢失的数为:参数值-1,此参数值不能设为1和0,默认值为2 查询间隔,表示查询路由器通用查询的时间间隔,默认值为125秒 最大响应时间,和查询是对应的,值必须小于查询时间间隔,默认为10秒 Router Timeout Leave Time Robustness Variable Query Interval Max Response Time 最后一个成员查询间隔,如果交换机的一个端口收到组成员离开报文,交换机CPULast Member Query Interval 向此端口发送一个查询报文,如果在设置的时间间隔内没有收到成员关系报告,交换机就删除此端口所在的多播组。

图30 有路由端口的侦听组播表

图31 路由端口老化后的侦听组播表

交换机7口连接的主机模拟路由器发送IGMPv2查询报文,交换机侦听到此端口的报文并认为7端口为路由端口,如图30所示。倘若时间设置为60s,在60s内交换机没有收到查询报文,就会删除侦听组播表中的路由端口,如图31所示。

如果启用了交换机的Snooping功能,在主机H3上每隔一段时间用LinkPackets软件发

18

135DES-1228启动了IGMP Snooping功能流媒体服务器H1H2H3

图32 简单侦听拓扑图

IGMPv2的查询包,那么交换机就把5端口认为是路由器端口,每个表中都有5端口存在,拓扑结构如图32所示。

如主机H1加入了一个视频多播组239.192.13.66,多播入口表如图33所示。H2也加入了多播组后的表如图34所示。主机H1、H2分别加入不同的多播组后的表如图35所示。

图33 H1加入后的多播表

图34 主机H1、H2加入同一个多播组后的表

图35 主机H1、H2加入不同的多播组

2.5.3 2款交换机比较

? SG-3109和DES-1228在IGMP Snooping方面的比较如表6所示。

表6 交换机简单比较 项目 时间参数的设置 侦听表建立的反应时间 侦听表界面的友好性 是否可静态分组 是否有附加功能选项 SG-3109 快 一般 是 有 DES-1228 慢 好 否 无 3个,每个参数的值可任意设定 7个,参数都有一个设置范围

19

从上表可以看出2者各有自己的风格和优点。SG-3109只有3个参数,但是时间的值可以任意设置,DES-1228的时间参数较多,在实际网络环境中可根据网络的带宽和吞吐量进行相应的多方面的设置;SG-3109建立表的反应很快,可读性较差, DES-1228多播侦听表建立的反应时间较慢,但是表的界面的可读性很好; SG-3109可人工的进行多播分组,还有对端口的禁止等附加功能。

20

第3章 Snooping在视频多播的应用

随着Internet和Intranet应用日益丰富,视频点播也逐渐应用于宽带网和局域网。人们已不再满足于浏览文字和图片,越来越多的人更喜欢在网上看电影、听音乐。而视频点播和音频点播功能的实现,则必须依靠流媒体服务技术。下面我们在这里主要讨论Snooping功能在Windows 2003 Server多播视频服务器的实际应用。

3.1 流媒体基础知识 3.1.1 流媒体概念

流式传输时,声音、影像或动画等多媒体信息由流媒体服务器向用户计算机连续、实时传送,它首先在使用者端的电脑上创建一个缓冲区,于播放前预先下载一段资料作为缓冲,用户不必等到整个文件全部下载完毕,而只需经过几秒或十数秒的启动延时即可进行观看。当多媒体信息在客户机上播放时,文件的剩余部分将在后台从服务器内继续下载。如果网络连接速度小于播放的多媒体信息需要的速度时,播放程序就会取用先前建立的一小段缓冲区内的资料,避免播放的中断,使得播放品质得以维持。

在流媒体传输中,标准的协议就是RTP(Real time Transport Protocol,实时传输协议)、RTCP(Real-time Transport Control Protocol,实时传输控制协议)、RTSP(Real Time Streaming Protocol,实时流媒体协议)和RSVP(Resource Reserve Protocol, 资源预订协议)。

3.1.2 点播与广播

点播是客户端与服务器之间的主动的连接,在点播连接中,用户通过选择内容项目来初始化客户端连接,一个客户端从服务器接收一个媒体流(这个连接是唯一的,其它用户不能占用),并且能够对媒体进行开始、停止、后退、快进或暂停等操作,客户端拥有流的控制权。这种方式由于每个客户端各自连接服务器,服务器需要给每个用户建立连接,对服务器资源和网络带宽的需求都比较大。

广播指的是用户被动接收流。在广播过程中,客户端接收流,但不能控制流,用户不能暂停、快进或后退该流,广播使用的数据发送手段有单播与广播。使用单播发送时,服务器需要将数据包复制多个拷贝,以多个点对点的方式分别发送到需要它的那些用户,而使用广播方式发送,数据包的单独一个拷贝将发送给网络上的所有用户,而不管用户是否需要,上述两种传输方式会非常浪费网络带宽和服务器资源,因此产生了组播(多播)技术。 多播吸收了上述两种发送方式的长处,克服了上述两种发送方式的弱点,将数据包的单独一个拷贝发送给需要的那些客户,多播不会复制数据包的多个拷贝传输到网络上,也不会将数据包发送给不需要它的那些客户,保证了网络上多媒体应用占用网络的最小带宽。但多播不仅需要服务器端支持,更需要有多播路由器乃至整个网络结构的支持。

21

3.1.3 单播与多播

点播与广播是一组概念,它们是客户端媒体交互的手段;单播和多播又是另外一组概念,它们是流媒体数据在服务器端和网络上的传输方式。

单播发送时,需要在客户端与媒体服务器之间需要建立一个单独的数据通道,从一台服务器送出的每个数据包只能传送给一个客户机,每个用户必须分别对媒体服务器发送单独的查询,而服务器必须向每个用户发送所申请的数据包拷贝。单播可以用在点播和广播上。 多播发送时,服务器将一组客户请求的流媒体数据发送到支持组播技术的路由器上,然后由路由器一次将数据包根据路由表复制到多个通道上,再向用户发送。这时候,媒体服务器只需要发送一个信息包,所有发出请求的客户端都共享同一信息包,并且信息可以发送到任意地址的客户机,没有请求的客户机不会收到信息包。

表7给出了几种方式的比较。

表7 3种视频方式的比较

视频播放方式 单播 广播 多播 点播

多建立TCP连接的视频传输都能由客户机控制其开始与停止,但是单播还能由服务器控制;只有点播的视频能实现播放的快进、快退和拖放;多播的视频一旦开始播放,UDP数据包以广播的方式进行传输,除非交换机启用了IGMP Snooping功能。

UDP连接 TCP连接 服务器 客户机 否 是 连接方式 TCP连接 视频开始与停止控制方 是否可快进、快退、拖放 服务器、客户机 否 3.2 播视频服务器的搭建

3.2.1 Windows Media Services服务器的安装

Windows Media Services虽然是Windows Server 2003系统的组件之一,但是在默认情况下并不会自动安装,而是需要用户来手动添加。Windows Media Services可以在“控制面板”中,采用传统的“添加/删除程序”方式来添加安装。

打开控制面板,选择添加/删除Windows组件,如图36所示。

22

图36

选择Windows Media Services选项,如图37所示。

图37

图38

点击下一步,这时会弹出插入磁盘,因为实验室电脑安装系统时都是GHOST还原,没

图39

有用光盘进行安装,点击确定后选定磁盘备份中的制定文件夹,如图38、39所示。

23

继续点击下一步只到完成,这样,一个流媒体服务器就搭建好了。

3.2.2 建立多播组视频

Windows Media Services 可使用播放列表文件通过发布点向用户传输内容序列(例如,数字媒体文件、编码器 URL 和其他内容服务器位置)。发布点是向用户分发内容的途径。内容可通过创建将客户端重定向到发布点的公告文件来发布,也可通过分发指向发布点的 URL 来发布。客户端通过连接到发布点访问来自服务器的内容流。Windows Media Services 包括两种类型的发布点:点播和广播。

服务器上的发布点列在控制台树中。通过在该列表中单击某个发布点,您可以在细节窗格中修改或查看它的设置。通过在控制台树中单击“发布点”,您可以在细节窗格中查看现有发布点的列表。您还可以执行基本任务,如添加、配置和删除发布点。

下面介绍如何通过添加发布点来实现多播视频服务。

打开Windows Media Services,右键单击发布点来打开向导,如图40所示。

图40

点击下一步只到出现图41所示的页面。

图41

这里给发布点命名为racecar,点击下一步,选择播放列表后,发布点类型选择广播发布点,如图42所示。

24

图42

点击下一步,选择多播,在新建播放列表中选择要播放的视频文件,本例中选择了2个视频文件,如图43所示。

图43

在下一步中选择循环播放,就完成了发布点的添加。但是现在还不能播放,发布点的视频文件必须公告后才能播放,如图44所示。

图44

点击下一步,在流格式中选择和播放文件格式相同的文件,最好选择先前在发布点添加

25

的视频文件,如图45所示。

图45

图46

一般访问多播视频文件是通过Web网页形式访问的,在URL中键入正确的服务器IP地址,如图45所示,点击下一步就完成了发布点的公告,这样就成功地创建了一个多播视频组,如图47所示。

26

图47 多播服务器界面

图47展示了正在播放的视频,这是前面建立的多播视频,由下面的播放按钮可以看出视频播放的开始和停止是由服务器端控制的,如果2端都可以控制就会产生矛盾。

图48 多播组地址

图48中红色方框中显示的是建立的多播组地址。

27

3.3 Snooping视频多播应用实验 3.3.1 同一网段视频点播和广播

建立一个或一组视频文件的发布点时,有广播和点播2种方式。下面介绍服务器和客户机在同一网段时通信情况,拓扑结构如图49所示。

1357启动了IGMP Snooping功能的交换机流媒体服务器H1H2H3H4发IGMPv2查询报文

图49 同一网段网络拓扑结构图

如上图所示,H1、H2、H3和H4的IP地址分别为222.99.99.100、.99.110、.99.120和.99.130。H1为流媒体服务器,可支持多播和点播视频服务,H4模拟多播路由器,每隔一段时间发送IGMPv2查询报文,H2、H3加入了多播视频组239.192.59.249。

在客户机IE地址栏中输入http://222.99.99.100/movie,就可以打开我为服务器播放文件建立的链接网页,如图50所示。

图50 服务器网站视频链接

服务器H1的多播视频组racecar已经启动,当在H2、H3上IE页面中点击赛车时,H2

28

和H3就加入了多播视频组,Ethereal抓包结果如图45所示。当H4发出查询包时,加入组播组的H3回复2个成员关系报告,H1也向默认多播组回复一个报告。一段时间后H2也加入了多播组,如第9个包所示。当路由器再次发出查询包后,多播组中只有一台客户机H3回复成员关系报告包,如包13所示。

图51 同一网段多播组抓包

交换机侦听组播表如图52所示。

图52 同一网段组播表

当在H2、H3和H4上IE页面中点击滑雪时,各个客户机就分别和服务器建立了TCP连接,Ethereal抓包结果如图53所示。

图53 点播时TCP连接的3次握手抓包

29

图54 点播服务器页面

在服务器的视频点播页面中显示有多少个客户机正在点播此视频,如图54所示,从图下面的播放按钮可以看出,点播页面中没有开始、停止按钮,这也说明了播放是由客户机控制的。

3.3.2 不同网段视频点播和广播

客户机和服务器位于不同的网段时,拓扑结构如图55所示。

222.99.99.100H1WAN TL-WR541GLAN1LAN3LAN2H2192.168.1.100H3192.168.1.110H4192.168.1.120

图55 不同网段拓扑

服务器H1连接路由的WAN口,IP地址为222.99.99.100,而客户机分别连接LAN口,地址网段为192.168.1.0。为了使服务器和客户机能正常通信,H1的网关设为222.99.99.10,H2、H3和H4的网关设为192.168.1.1,打开路由器的界面,在网络参数的WAN选项中,WAN口设为静态IP,地址设为222.99.99.10。路由为我司的TL-WR541G,不支持多播。

30

H1已经启动了多播视频,在客户机上点击赛车时并不能观看到视频,各个客户机试图和服务器建立TCP连接,而多播数据包是封装在UDP中进行传输的,路由器并不转发多播数据包,图56显示了其过程。

图56 不同网段多播连接

不同网段建立连接时都是建立TCP连接,虽然路由器不支持多播,但是点击滑雪时仍然可以观看到视频。

在实际应用中,多播视频一般是跨越局域网的,所以要实现多播视频的观看,路由器一定要支持多播,并且尽可能地应用支持IGMP Snooping的交换机。

如果换为支持IGMP的路由器如我司的TD-W8920G,因为是ADSL路由器,没有WAN口,所以在构造不同网段时要用到局端,拓扑结构如图57所示。

192.168.3.1PPPoE服务器流媒体服务器ADSL局端ADSL口TD-W8920GLAN1LAN2H1192.168.1.100H2192.168.1.110

图57 ADSL路由+局端拓扑

实验中,客户机的IP地址为192.168.1.0网段,服务器IP地址为192.168.3.1,在TD-W8920设置页面中通过PPPoE拨号获得的WAN口IP地址为10.0.0.15,表示拨号已经成功。 2台客户机的网关地址为192.168.1.1,在2台客户机上分别输入ping 10.0.0.15 -t和ping 192.168.3.1 -t,ICMP回显正常,但是客户机点击视频多播时,在服务器上抓包显示点击视频的客户机加入了多播组,但是客户机的视频不能正常播放,即不能收到多播数据流的UDP包。在客户机上点播视频,播放正常。

初步判断是路由器不能实现IGMP功能,因为建立TCP连接的视频点播可以正常播放,即路由器的ADSL口把数据解析出UDP数据包后没有向LAN口转发,结论即TD-W8920的IGMP功能有问题。

31

第4章 IGMP Snooping测试

交换机的IGMP Snooping功能是指交换机能够侦听进入端口的IGMP数据报,记录并根据进入端口IGMP信息建立或删除组播成员关系端口,本章功能测试的设置主要针对我司TL-SG3109网管型交换机。

4.1 静态分组测试

测试拓扑如图58所示(拓扑可根据实际灵活改变),DUT为待测设备,这里以TL-SG3109为例,S为多播视频服务器,C1、C2和C3为验证客户机,S、DUT、C1、C2和C3都设为同一网段。

1端口2端口3端口4端口? ? DUT8端口SC1C2C3 图58 测试拓扑图

测试DUT的静态分组时,点击组播组表中的创建,如把2、3端口设为组播地址为239.192.59.249的静态分组,看提交后的页面是否如图24所示。S端口发多播数据,在C1、C2上应该能收到多播数据包,而在C3上不能收到。当把分组中的一个端口如2端口禁止时,C1应该不能收到多播数据包,而C2接受正常,测试表格如表8所示。

设计思想:静态分组测试主要验证交换机的此功能是否正常,应尽可能考虑到所有端口,如第一次把2、3、4设为一个分组,第二次把5、6.、7、8设为一个分组,第三次把2、3、7、8设为一个分组等。分组有很多种情况,测试的组数应根据交换机的端口数来决定,如TL-SG3109为8个RJ-45端口,这里只选择了3个分组。

表8 静态分组测试

分组 组内端口能否收到多播数据包 组外端口能否收到多播数据包 组内端口禁止后能否收到多播数据包 4.2 Snooping分组测试

测试DUT的Snooping功能时,首先要启用交换机的Snooping功能,如前面所述的3项设置的启用。拓扑结构中没有连接多播路由器,所以在服务器S上用LinkPackets软件模

32

本文来源:https://www.bwwdw.com/article/org3.html

Top