多址广播使用最广泛的是IP multicast,它标准IP网络层协议的扩展,由Steve Deering定义的Host Extensions for IP Multicasting(RFC 1112)奠定基础。IP Multicasting的定义为:到一个“主机组”的IP数据报的传送,主机组是由零个或多个用同一IP目的地址标识的主机集合。Multicast数据报被传递到其目的主机组的所有成员,并且同常规单点传送的IP数据报一样可靠。主机组的成员是动态的,也就是说,主机可以在任何时间加入或离开主机组。主机组中成员在位置上和数量上都没有限制,一个主机可以同时是一个以上主机组的成员。
// join a Multicast group and send the group salutations
...
String msg = "Hello";
InetAddress group = InetAddress.getByName("228.5.6.7");
MulticastSocket s = new MulticastSocket(6789);
s.joinGroup(group);
DatagramPacket hi = new DatagramPacket(msg.getBytes(), msg.length(),
group, 6789);
s.send(hi);
// get their responses!
byte[] buf = new byte[1000];
DatagramPacket recv = new DatagramPacket(buf, buf.length);
s.receive(recv);
...
// OK, I'm done talking - leave the group...
s.leaveGroup(group);
IP组播技术
近年来,随着Internet的迅速普及和爆炸性发展,在Internet上产生了许多新的应用,其中不少是高带宽的多媒体应用,譬如网络视频会议、网络音频/视频广播、股市行情发布、多媒体远程教育、大规模协同计算等。这就带来了带宽的急剧消耗和网络拥挤问题。为了缓解网络瓶颈,人们提出各种方案,其中一种是采用IP Multicast(组播、多播或多路广播)技术,它是一种能最大限度利用现有带宽的技术。比较而言,IP组播技术有其独特的优越性,在组播网络中,即使用户数量成倍增长,主干带宽不需要随之增加。
一、IP组播发展简史
20世纪80年代中期,斯坦福大学实施了第一次多目的通话,博士生S. E. Deering发表Host group: A multicast extension to the Internet Protocol (RFC0966) 和Host extensions for IP Multicasting (RFC0988) 两篇论文。提出了IP组播的可能性。
1988年,D. Waltzman, C. Portridge, S. E. Deering发表题为《距离向量组播路由协议》的文章(RFC1075),它是组播路由协议的首次实践;
1991年12月,S. E. Deering发表了他的博士论文《数据报互连网络中的组播路由》(RFC1112)。它奠定了组播网络体系结构和路由协议的基础。该文也成为Internet组管理协议(IGMP)的原型;
1994年3月,形成了OSPF协议的扩展协议MOSPF(RFC1584);
1995年,Cisco公司开始销售支持组播的路由器和交换机
1997年11月,组管理协议IGMPv2得到IETF的批准,成为标准(RFC2336);
1998年6月,评估可靠组播传输协议RMTP的IETF标准出台(RFC2357);
1998年7月,在制定IPv6地址体系标准时,确定IPv6组播地址分配方案(RFC2373),这为组播技术在下一代Internet上的应用做出了必要的准备;
2000年底2001年初,人们着手制定各种组播MIB库,这标志组播技术正向可管理、可控制方向发展。
二、组播网络的体系结构
组播网络体系结构包括:组播的基本工作原理、实现组播的条件、组播的地址分配方案及与MAC地址映射、Internet组管理协议。
1、组播的工作原理
组播是一种允许一个或多个发送者(组播源)发送单一的数据包到多个接收者(一次的,同时的)的网络技术。组播源把数据包发送到特定组播组,而只有属于该组播组的地址才能接收到数据包。简单地说,
主机通过使用INTERNET组管理协议加入野火所个组中,并且可以动态离开组,即成员关系常有变化,路由器跟踪这种关系并试图形成一条到达组播成员的无回路路径。组播路有些已用于得到正在使用的组播组的路径上那些路由器,以及到达这些组播组的最佳路径信息。一旦报文到达目标LAN,该报文就有可能泛洪或转发到主机。三种传输方式比较如下:
单播(Unicast)传输:在发送者和每一接收者之间需要单独的数据信道。如果一台主机同时给很少量的接收者传输数据,一般没有什么问题。但如果有大量主机希望获得数据包的同一份拷贝时却很难实现。这将导致发送者负担沉重、延迟长、网络拥塞。为保证一定的服务质量需增加硬件和带宽。
组播(Multicast)传输:它提高了数据传送效率。减少了主干网出现拥塞的可能性。组播组中的主机可以是在同一个物理网络,也可以来自不同的物理网络。
广播(Broadcast)传输:是指在IP子网内广播数据包,所有在子网内部的主机都将收到这些数据包。广播意味着网络向子网主机都投递一份数据包,不论这些主机是否乐于接收该数据包。广播的使用范围非常小,只在本地子网内有效,因为路由器会隔离广播通信。广播传输增加非接收者的开销。
2、实现IP组播的前提条件
实现IP组播传输,组播源和接收者以及两者之间的下层网络都必须支持组播。即主机的TCP/IP实现支持发送和接收IP组播;主机的网络接口支持组播;有一套用于加入、离开、查询的组管理协议,即IGMP(v1,v2);有一套IP地址分配策略,并能将第三层IP组播地址映射到第二层MAC地址;支持IP组播的应用软件;所有介于组播源和接收者之间的路由器、交换机均需支持组播;Cisco的路由器不仅支持DVMRP、PIM路由协议、IGMP组管理协议,而且支持Cisco专有Cisco组管理协议CGMP,对于不支持IP组播传输的中间路由器采用IP隧道(Tunneling)技术作为过渡方案。