新闻  |   论坛  |   博客  |   在线研讨会
通过IGMP协议提高IP多媒体流传输效率
yanqin | 2009-04-17 11:35:16    阅读:1771   发布文章

利用IP实现多媒体流传输将是未来互联网的一个重要应用,而提高基于IP传输的可靠性、提供更丰富的内容和提高服务质量是该应用取得成功的关键。IGMP多播方案能有效利用带宽,利用该方案设计工程师可构建符合这三个要求的宽带设备。本文详细介绍了IGMP协议特点和实现方法。

随着单一的数据业务收入增长放缓,运营商必须推出各种新业务。通过已有的宽带网络提供视频传输服务,从而使已有的宽带网络获得较高的投资回报。然而,网络运营商和多业务运营商(MSO)将面临如何在基于因特网协议(IP)的网络中进行视频传输的困难。尽管IP为数据网络带来了许多好处,但在进行视频传输时面临很多挑战,至少对于要求高服务质量(QoS)的视频流传输而言,性能不稳定的IP网络并非一个友好的环境。幸运的是,设计工程师可以通过多播数据流来解决IP数据流的传输问题。多播数据流采用因特网组群管理协议(IGMP),本文将详细讲述IGMP多播如何在宽带网络中有效地传输视频流。

IGMP协议

IGMP是通过充分利用IP堆栈来实现的。网络堆栈由不同的层构成,每一层只和相邻的上、下层通信。IGMP使用第2层和第3层,使用方式与通常的单播或广播流略微不同。

在网络上传输的数据流由数据包组成,每个数据包头均带有该数据包的起始地址和目的地址信息。单播数据流(如文件传输)的起始地址十分明显,该地址就是IP地址,位于第3层或IP数据包头中,而起始媒体访问控制(MAC)地址则位于第2层或数据链路层上。

广播数据包的格式与单播数据包的格式一样,但在广播数据包中,目的地址是一个广播地址。因此,对于网络地址为192.168.34.0的IP网络来说,它的目的地址是192.168.34.255。

多播数据流也必须遵循与单播和广播数据流相同的基本格式,它们之间的差别在于其目的地址的不同。IGMP多播数据流具有一个D类目的地址,范围为224.0.0.0到239.255.255.255。该目的地址并不对应于网络中某台具体的电脑或主机,而是与网络中距离最近的第3层设备相匹配,通常为网络中的一个路由器。

当多播数据包到达路由器时,路由器必须决定是继续传输该数据包还是停止传输。必须注意的是,作为该数据包目的地址的D类IP地址并非某一台实际的主机,而是一个组,它们必须先与离它最近的路由器连接,然后再告知数据流传输主机。如果是首次到达的数据包,路由器便会开始“构建组”。如果其它主机没有要求路由器从该组接收数据,那么这些数据包将被丢弃。

发送D类地址作为请求

多播数据流请求也使用D类地址。如果一台主机希望寻找某个多播组,它会向保留地址224.0.0.2发送一个“加入”信息。通过该保留地址,此信息实际上发送给了“子网上所有的路由器”。当主机要求加入某个特殊组时,这条路径上的路由器便会将该请求向外发送出去。最后,当找到该组时,数据流会顺着相同路径传回给提出请求的主机。

当主机接收完毕,决定不再需要该数据流时,它也向某个特殊的多播地址发送信息,然后该数据流便会停止发送。在实际操作中,在由各个路由器和其它第3层设备组成的不同树结构中将会“删除”这台接收完毕的主机,数据流也不再发送给它。

IGMP的作用

IGMP协议很有用,基于该协议,主机要求加入一个组的请求不必到达离数据流传输主机最近的路由器。如果一台主机申请加入数据流传输路由中的某个多播组,那么离数据流传输路由器最近的路由器便会将这些数据包进行复制,然后从这一请求多播的端口大量地向下传输给提出申请的主机。因此尽管每台提出请求的主机都可以接收到数据流,但由于这些请求并没有传输到源服务器,而数据流也只在需要多播的路由器上进行复制而不是在源服务器上复制,因此可以节省整个网络的带宽。

如果某一系统只能进行单播而不能进行多播,那么每个请求都必须返回到源服务器,然后单独从源服务器获得所需的数据流。尽管在某种意义上来说这样比较方便,例如主机可在从开始到结束的整个过程中的任一时候按自己的需要加入,但这种方法效率较低,而且并不节省网络资源。

IGMP多播的实现

在IP多播中,每台请求接收的PC都可以获得所需的数据流,而网络本身则管理这些PC和客户组。为了实现IGMP多播,网络必须知道数据流在何处及何时进行复制。

使用IGMP多播时,发送器(源服务器)将数据流和附加信息发送到离它最近,或在同一子网中的路由器。接收到信息后,路由器创建一个符合D类IP地址定义的组目的地址(GDA)。

路由器随后查看是否有客户机需要该多播组。如果没有,路由器便丢弃那些从发送器传来的数据包,不再继续发送(见图1)。

但是,如果有客户机希望接收这些数据流,即使这一客户机位于远程网络中,路由器将执行下列步骤:

1. 首先,接收器将一个专用多播IP地址发送到其子网中的所有路由器,并申明它希望加入一个多播组;

2. 如果子网中的路由器找到了该多播组,它开始将数据包发送给提出请求的接收器。相反,如果路由器没有找到IGMP组,它便向外发送信息并开始找寻这个组;

3. 通过与其它路由器通信,最初发送请求的路由器便可找寻到这个多播组。路由器之间的通信基于各种IGMP使用的“路由”协议,如多播开放最短路径优先(MOSPF)和距离向量多播路由协议(DVMRP)。

4. 当多播组找到后,该路径上的路由器便作为“源”路由器,发送或复制该数据流。

IGMP方案的最大好处在于节省了带宽。如图2所示,网络A中的远程接收器从紧接源路由器后的第一个路由器接收一个数据流。支持IGMP第2版的源路由器仅在需要复制的地方(本例中是在源路由器后的第一个路由器)将这一数据流进行复制,而不是在源路由器进行复制,因此节省了带宽。

目前使用的IGMP版本为第2版。IGMP第1版和第2版之间的主要差别在于如何从多播组中去除客户机。第1版中规定,即使接收器不再需要某个数据流,路由器仍继续向该接收器发送数据流,并持续几分钟。在IGMP第1版中,当客户机希望停止接收数据流时,它无法告知路由器。第2版则规定,接收器可发送信息告知路由器,如果没有其它接收器出现便可停止发送数据包。因此,与第1版相比,第2版能节省更多的带宽。

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客