IP组播是IP的扩展。IP组播在局域网或广域网上将IP数据包从一个发送者传送到一组接收者而不是一个接收者,并且依靠网络将数据包只传送给需要接收它的网络。
1.1
IP数据包传输类型
IPv4定义了3种IP数据包的传输:单播(unicast)、广播(broadcast)和组播(multicast).单播用于发送数据包到单个目的地,这种传输是最常见的IP传输,单播实际上是点对点的;广播是指发送数据包到同一广播域或子网内的所有设备。组播指的是在Internet网上对一组IP站点进行数据传送,这一组IP站点是动态形成的,每一个IP站点都可以动态地加入或者退出这个组.
运行TCP/IP协议集的有组播能力的节点可以接收组播消息。Internet标准委员会IETF在1992年建立了一个Internet上IP组播的主干,并命名为Mbone,用来进行IP组播的实验.
单播与组播的IP数据包的传输如图1.1和图1.2所示。
比较一下这两种数据的传输方式可以发现,当一台主机向多个用户发送信息时,单播对于每一个用户都要发送一份数据的拷贝,而组播总共只需发送一份数据的拷贝。这样,组播的使用就大大的节省了带宽,减轻了网络的负载,从而更加有效的利用了网络的带宽资源.
1.2 组播的地址
IP组播和单播的目的地址不同,IP组播的目的地址是组地址——D类地址.D类地址是从224.0.0.0到239.255.255.255之间的IP地址,其中224.0.0.0到224.0.0.255是被保留的地址,224.0.0.1表示子网中所有的组播组,
224.0.0.2表示子网中的所有路由器,224.0.0.5表示OSPF(Open
Shortest
Path
First)路由器,224.0.0.6表示OSPF指定路由器,224.0.0.12表示DHCP(Dynamic
Host
Configuration
Protocol)服务器.
D类地址是动态分配和恢复的瞬态地址.每一个组播组对应于动态分配的一个D类地址;当组播组结束组播时,相对应的D类地址将被回收,用于以后的组播.在D类地址的分配中,IETF建议遵循以下的原则:
全球范围:224.0.1.0~238.255.255.255;
有限范围:239.0.0.0~239.255.255.255;
本地站点范围:239.253.0.0~239.253.0.16;
本地机构范围:239.192.0.0~239.192.0.14.
1.3 IGMP协议及其应用
IGMP是组播中的一个非常重要的协议,它运行在IP站点和它所在的子网多点路由器之间,用来控制组播组成员的加入和退出.
1.3.1
IGMP协议
IGMP协议即因特网组管理协议,它位于IP层(图3.
1.1),用来帮助路由器识别组播组中的主机成员。
IGMP使用预留的组播组地址224.0.0.1与本地路由器通信。被称为所有主机组的组播组在局域网中寻址所有的主机。正是通过这一渠道,IP组播路由器知道是否有主机加入到这一特定局域网的一个组播组。路由器在局域网中向这一地址发送IGMP询问,主机通过告诉它们想要连到哪个组来响应。IGMPv1有两种类型的消息:汇报(Report)和询问(Query)。汇报消息由主机发往路由器,询问消息由路由器发往主机。(图3.1.2)
1.3.2
IGMP协议的应用
组播组的加入
每个具有组播能力的主机都保留有一个具有组播组成员身份的进程表。当一个进程想加入一个新的组播组,它就向主机发送请求信息。主机就把进程的名字和接收请求的组播组的名字加入这个进程表。需要注意的是,主机只有在确认这是要求获得该组播组成员身份的第一个请求时才向组播路由器发送一条IGMP信息。换句话说,一个主机对于一个特定组播组身份的请求信息只发送一次。这是一种由接收方来初始化的加入方法,在组播组的数据越来越多的时候,这种方法可以使新加入的组播组成员尽快找到离它很近的组播组的分支,从而加入组播组.
组播组成员身份的监视
组播路由器负责监视一个组播组中的所有成员,看他们是否想继续它们在组播组中的成员身份。组播路由器定时的发送询问信息到组播地址224.0.0.1.在这条信息中,组地址域设定为0.0.0.0.这意味着这种询问是面向一个主机所在所有组播组,而不是一个组播组。组播路由器希望从每一个组播组都获得一个应答
组播组成员身份的继续
具有组播能力的主机保留有一个想继续组播组成员身份的进程表。当一个主机接收到一个由组播路由器发出的询问信息,它就检查一下它所保留的进程表。对于每一个组播组,如果至少有一个进程想继续组播组成员身份,主机就必须向组播路由器发送一条报告信息。需要注意的是这种为了响应询问消息而发送的报告信息是为了确认对组播组成员身份的继续而不是为了作为新的成员加入组播组。而且为了使不同的组播组中的成员身份得以继续,对于不同的组播组就必须分别发送报告信息。
组播组成员的退出
在IGMPv1中,当每一个主机离开某一个组播组时,它不通知任何组播路由器就自然地离开,组播路由器定时(如120秒)向IP子网中的所有组播组询问,如果某一个组播组在IP子网中已经没有任何成员,则组播路由器在确认这一事件后,不再将该组播组的数据在子网中进行传送,同时通过路由信息的交换,将相应的组播路由器从特定的组播组分配树中删除.这种不通知任何人而悄悄离开的方法,使得组播路由器知道IP子网中已经没有任何成员的事件延时了一段时间,所以在IGMPv2中,当每一个主机要离开某一个组播组时,需要通知子网组播路由器,组播路由器立即向IP子网中的所有组播组询问,从而减少了系统处理停止组播的延时.离开组播组时主机要发送信息这一点是IGMP
Version
2和IGMP
Version
1的主要区别。
1.4 组播的路由
具有组播能力的网络由支持本地组播的局域网通过具有组播能力的路由器连接而成。IP组播路由的关键是为每一个组播组建立组播的分配树,当组播的分配树建立好时,每个组播路由器只要将该组的数据沿着分配树进行传播就可以了。
根据网络上组播组成员的分布情况,组播路由协议可分为两大类。
第一类是建立在组播组成员在网络上的分布比较密集并且带宽比较充足的基础上的。此种模式称为密集模式。密集模式组播路由协议包括距离向量组播路由协议(Distance
Vector
Multicast
Routing
Protocol,
DVMRP),组播开放最短路径优先协议(Multicast
Open
Shortest
Path
First,
MOSPF),密集模式独立组播协议(Protocol-independent
Multicast-Dense
Mode,
PIM-DM)。
第二类组播路由协议是建立在组播组成员的分布比较稀疏并且带宽并不是很充足的基础上的,比如说由Internet上不同区域的主机相连的组播网络或通过ISDN线连起来的主机网络。这种稀疏模式并不意味着组播组中的成员很少,它只是表明组播组中成员的分布比较稀疏。稀疏组播路由协议包括基准树协议(Core
Based
Trees,
CBT),稀疏模式独立组播协议(Protocol-independent
Multicast-Sparse
Mode,
PIM-SM)。
1.5组播骨干网
组播的规范是在1989年出版的,但是它的使用受到了限制。Internet上的路由器目前并不是都具有组播的能力。在这样一种情况下,研究者们为了在现有情况下开发和测试组播协议的应用,建立了组播骨干网(Multicast
Backbone,Mbone)。Mbone支持组播分组的路由选择而不打扰其它的因特网业务流。
Mbone是一种跨越几个大陆的,由志愿者合作完成的实验性的网络。它是一个相互连接的子网和路由器的集合,这些子网和路由器支持IP组播业务流的传送。作为因特网上的虚拟网络,Mbone通过隧道(Tunneling)来旁路因特网上无组播能力的路由器。
隧道把组播数据包封装在IP包(即单播数据包)中来通过哪些不支持组播路由的网络。如图5所示,MR3和MR4是支持IGMP协议的有组播能力的路由器,他们把组播数据包封装在单播数据包中来发送,同时它们还从收到的单播数据包中取出组播数据包。R1和R2是没有组播能力的路由器,它们像传送其它普通单播数据包那样来传送封装有组播数据包的单播数据包。
1.6交互式的IP组播
IP组播的最大的用处就是用来做Internet上的音频和视频的传输,比如向成百上千的使用者发送音频和视频数据流。可是传统的IP组播的有一个最大的缺点就是这些所有的使用者都是被动的接受者。换句话说,IP
组播并没有让这些使用者进行交互式主动参与的内置机制。利用H.323国际标准中对会议成员的管理技术,SAP(Session
Announcement
Protocol),SDP(Session
Description
Protocol),RTCP(Real-time
Transport
Control
Protocol)等协议,就可以使传统的IP组播技术具有交互功能。如图6所示
交互式IP组播技术应用范围很广,特别是Internet上多媒体的传输业务。比如视频会议,远程教育,Internet上的视频点播(VoD)等。
,