组播(网络的通讯模式)

2023-11-06 19阅读

组播

网络的通讯模式

组播(Multicast)是一种通讯模式,在发送者和每一接收者之间实现点对多点网络连接。如果一台发送者同时给多个的接收者传输相同的数据,也只需复制一份的相同数据包。组播提高了数据传送效率,减少了骨干网络出现拥塞的可能性。组播路由器定时的发送询问信息到组播地址224.0.0.1.在这条信息中,组地址域设定为0.0.0.0.这意味着这种询问是面向一个主机所在所有组播组,而不是一个组播组。组播协议分为主机-路由器之间的组成员关系协议和路由器-路由器之间的组播路由协议。

中文名 组播
外文名 Multicast
含义 在发送和接收者实现点对多点连接
优点 提高了数据传送效率
所属类别 计算机 网络 通信
别称 多播

释义

多播(原文:multicast,台湾常译作多点传输、多点广播或群播,中国大陆常译作组播)是指把信息同时传递给一组目的地址。它使用策略是最高效的,因为在消息在每条网络链路上只需传递一次,而且只有在链路分叉的时,消息才会被复制。与多播相比,常规的点到单点的传递被称作单播。当以单播的形式把消息传递给多个接收方时,必须向每个接收者都发送一份数据副本。由此产生的多余副本将导致发送方效率低下,且缺乏可扩展性。不过,许多流行的协议——例如XMPP——用限制接收者数量的方法弥补了这一不足。

相关技术

IP

公共互联网中的一些团体经常会用到IP组播(Mbone就是一个例子),此外IP组播还被用于Internet2等私有IP网络中的一些特殊应用。链路本地组播是指将IP组播包发往处于同一物理的或虚拟的数据链路层的若干主机组。由于这种组播不需要复杂的路由,因此其应用要广泛得多。在IPv6中,它被用于地址解析,而在零配置网络中,它取代了低效的广播协议,完成服务发现、名字解析和地址冲突解析的功能。

IP组播会议的第一次大规模演示是在1992年3月的第23届IETF大会上,当时它被用于向全世界的研究人员和感兴趣的观察员们广播一些会议。之后,IETF的一些会议就被有选择地继续在MBONE和一些私有组播网络上多播。

IP组播是一种通过使用一个组播地址将数据在同一时间以高效的方式发往处于TCP/IP网络上的多个接收者的协议。此外,它还常用来与RTP等音视频协议相结合。

组播安全性是一个重要的问题。标准的、实用的通信安全解决方案一般采用的是对称加密。但是将其应用于IP组播流量可能会使任何一个接收方都拥有冒充发送方的能力。这显然是令人无法接受的。IETF的MSEC工作组正在开发用以解决这一问题的安全协议,这些协议大多都是在IPsec协议集的体系框架内开发的。

IPsec不能被用于组播方案,这是因为IPsec安全关联是被绑定到两个而非多个主机的。IETF提出了一个新的协议——TESLA,就组播安全性而言,这个协议是灵活且令人信服的。

三种的传递方式

密集组播

稀疏组播

源特定组播

现在的组播算法往往具备结合前两种模式的能力。

技术体系结构

组播协议分为主机-路由器之间的组成员关系协议和路由器-路由器之间的组播路由协议。组成员关系协议包括IGMP(互连网组管理协议)。组播路由协议分为域内组播路由协议及域间组播路由协议。域内组播路由协议包括PIM-SM、PIM-DM、DVMRP等协议,域间组播路由协议包括MBGP、MSDP等协议。同时为了有效抑制组播数据在链路层的扩散,引入了IGMP Snooping、CGMP等二层组播协议。对组播的技术历史作出了巨大的贡献!

IGMP建立并且维护路由器直联网段的组成员关系信息。域内组播路由协议根据IGMP维护的这些组播组成员关系信息,运用一定的组播路由算法构造组播分发树进行组播数据包转发。域间组播路由协议在各自治域间发布具有组播能力的路由信息以及组播源信息,以使组播数据在域间进行转发。

地址

组播IP地址用于标识一个IP组播组。IANA(internet assigned number authority)把D类地址空间分配给IP组播,其范围是从224.0.0.0到239.255.255.255。如下图所示(二进制表示),IP组播地址前四位均为1110八位组⑴ 八位组⑵ 八位组⑶ 八位组⑷1110

XXXX XXXXXXXX XXXXXXXX XXXXXXXX组播组可以是永久的也可以是临时的。组播组地址中,有一部分由官方分配的,称为永久组播组。永久组播组保持不变的是它的ip地址,组中的成员构成可以发生变化。永久组播组中成员的数量都可以是任意的,甚至可以为零。那些没有保留下来供永久组播组使用的ip组播地址,可以被临时组播组利用。

224.0.0.0~224.0.0.255为预留的组播地址(永久组地址),地址224.0.0.0保留不做分配,其它地址供路由协议使用。

224.0.1.0~238.255.255.255为用户可用的组播地址(临时组地址),全网范围内有效。

239.0.0.0~239.255.255.255为本地管理组播地址,仅在特定的本地范围内有效。常用的预留组播地址列表如下:

224.0.0.0 基准地址(保留)

224.0.0.1 所有主机的地址

224.0.0.2 所有组播路由器的地址

224.0.0.3 不分配

224.0.0.4 dvmrp(Distance Vector Multicast Routing Protocol,距离矢量组播路由协议)路由器

224.0.0.5 ospf(Open Shortest Path First,开放最短路径优先)路由器

224.0.0.6 ospf dr(Designated Router,指定路由器)

224.0.0.7 st (Shared Tree,共享树)路由器

224.0.0.8 st 主机

224.0.0.9 rip-2 路由器

224.0.0.10 Eigrp(Enhanced Interior Gateway Routing Protocol,增强网关内部路由线路协议)路由器 224.0.0.11 活动代理

224.0.0.12 dhcp 服务器/中继代理

224.0.0.13 所有pim (Protocol Independent Multicast,协议无关组播)路由器

224.0.0.14 rsvp (Resource Reservation Protocol,资源预留协议)封装

224.0.0.15 所有cbt 路由器

224.0.0.16 指定sbm(Subnetwork Bandwidth Management,子网带宽管理)

224.0.0.17 所有sbms

224.0.0.18 vrrp(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)

239.255.255.255 SSDP协议使用

MAC地址

组播MAC地址的高24bit为0x01005e,第25bit为0,即高25bit为固定值。MAC地址的低23bit为组播IP地址的低23bit。由于 IP 组播地址的前4bit 是1110,代表组播标识,而后28bit 中只有23bit 被映射到MAC 地址,这样IP 地址中就有5bit 信息丢失,导致的结果是出现了32 个IP 组播地址映射到同一MAC 地址上。

在网络中的应用

在组播方式中,信息的发送者称为“组播源”,信息接收者称为该信息的“组播组”,支持组播信息传输的所有路由器称为“组播路由器”。加入同一组播组的接收者成员可以广泛分布在网络中的任何地方,即“组播组”没有地域限制。需要注意的是,组播源不一定属于组播组,它向组播组发送数据,自己不一定是接收者。多个组播源可以同时向一个组播组发送报文。

假设只有 Host B、Host D 和Host E 需要信息,采用组播方式时,可以让这些主机加入同一个组播组(Multicast group),组播源向该组播组只需发送一份信息,并由网络中各路由器根据该组播组中各成员的分布情况对该信息进行复制和转发,最后该信息会准确地发送给Host B、Host D 和Host E。

组成员关系协议(IGMP)

IGMP协议运行于主机和与主机直接相连的组播路由器之间,主机通过此协议告诉本地路由器希望加入并接受某个特定组播组的信息,同时路由器通过此协议周期性地查询局域网内某个已知组的成员是否处于活动状态(即该网段是否仍有属于某个组播组的成员),实现所连网络组成员关系的收集与维护。

IGMP有三个版本,IGMPv1由RFC1112定义,目前通用的是IGMPv2,由RFC2236定义。IGMPv3目前仍然是一个草案。IGMPv1中定义了基本的组成员查询和报告过程,IGMPv2在此基础上添加了组成员快速离开的机制,IGMPv3中增加的主要功能是成员可以指定接收或指定不接收某些组播源的报文。这里着重介绍IGMPv2协议的功能。

IGMPv2通过查询器选举机制为所连网段选举唯一的查询器。查询器周期性的发送普遍组查询消息进行成员关系查询;主机发送报告消息来应答查询。当要加入组播组时,主机不必等待查询消息,主动发送报告消息。当要离开组播组时,主机发送离开组消息;收到离开组消息后,查询器发送特定组查询消息来确定是否所有组成员都已离开。

通过上述IGMP机制,在组播路由器里建立起一张表,其中包含路由器的各个端口以及在端口所对应的子网上都有哪些组的成员。当路由器接收到某个组G的数据报文后,只向那些有G的成员的端口上转发数据报文。至于数据报文在路由器之间如何转发则由路由协议决定,IGMP协议并不负责。

网络二层相关协议

网络二层组播相关协议包括IGMP Snooping,IGMP Proxy和CGMP协议。

IGMP Snooping的实现机理是:交换机通过侦听主机发向路由器的IGMP成员报告消息的方式,形成组成员和交换机接口的对应关系;交换机根据该对应关系将收到组播数据包只转给具有组成员的接口。

IGMP Proxy与IGMP Snooping实现功能相同但机理相异:IGMP snooping只是通过侦听IGMP的消息来获取有关信息,而IGMP Proxy则拦截了终端用户的IGMP请求并进行相关处理后,再将它转发给上层路由器。

CGMP(Cisco Group Management Protocol)是Cisco基于客户机/服务器模型开发的私有协议,在CGMP的支持下,组播路由器能够根据接收到的IGMP数据包通知交换机哪些主机何时加入和脱离组播组,交换机利用由这些信息所构建的转发表来确定将组播数据包向哪些接口转发。GMRP是主机到以太网交换机的标准协议,它使组播用户可以在第二层交换机上对组播成员进行注册。

路由协议PIM-SM

众多的组播路由协议中,目前应用最多的协议是 PIM-SM稀疏模式协议无关组播。

在PIM-SM域中,运行PIM-SM协议的路由器周期性的发送Hello消息,用以发现邻接的PIM路由器,并且负责在多路访问网络中进行指定路由器(DR)的选举。这里,DR负责为其直连组成员朝着组播分发树根节点的方向发送"加入/剪枝"消息,或是将直连组播源的数据发向组播分发树。

编址

A类 0.0.0.0 - 127.255.255.255

B类 128.0.0.0 - 191.255.255.255

C类 192.0.0.0 - 223.255.255.255

D类 224.0.0.0 - 239.255.255.255

A,B,C类ip包转发基于目的ip地址。D类(组播地址)包转发基于源地址。

地址的分类

保留——224.0.0.0 - 224.0.0.255

用户组播地址——224.0.1.0 - 238.255.255.255

本地管理组——239.0.0.0 - 239.255.255.255 (用于私人组播领域,类似私有IP地址)

RPF:

a multicast packet received on an interface will be accepted if received on the interface that would be used to send a unicast ip packet back to the source;this is called reverse path forwarding(RPF).

逆向路径转发:

设备在接口上收到组播报文后,如果去往组播源的单播路由也是从该接口学到的,则转发组播数据,否则丢弃。

有没有以太网专用的MAC组播地址?

以下列出一些以太网专用的组播地址:

Ethernet multicast address Type Field Usage

01-00-0C-CC-CC-CC 0x0802 CDP (Cisco Discovery Protocol),VTP (VLAN Trunking)

01-00-0C-CC-CC-CD 0x0802 Cisco Shared Spanning Tree Protocol Address

01-80-C2-00-00-00 0x0802 Spanning Tree Protocol (for bridges) IEEE 802.1D

组成员身份的监视

组播路由器负责监视一个组播组中的所有成员,看他们是否想继续它们在组播组中的成员身份。组播路由器定时的发送询问信息到组播地址224.0.0.1.在这条信息中,组地址域设定为0.0.0.0.这意味着这种询问是面向一个主机所在所有组播组,而不是一个组播组。组播路由器希望从每一个组播组都获得一个应答

组成员身份的继续

具有组播能力的主机保留有一个想继续组播组成员身份的进程表。当一个主机接收到一个由组播路由器发出的询问信息,它就检查一下它所保留的进程表。对于每一个组播组,如果至少有一个进程想继续组播组成员身份,主机就必须向组播路由器发送一条报告信息。需要注意的是这种为了响应询问消息而发送的报告信息是为了确认对组播组成员身份的继续而不是为了作为新的成员加入组播组。而且为了使不同的组播组中的成员身份得以继续,对于不同的组播组就必须分别发送报告信息。

组成员的退出

在IGMPv1中,当每一个主机离开某一个组播组时,它不通知任何组播路由器就自然地离开,组播路由器定时(如120秒)向IP子网中的所有组播组询问,如果某一个组播组在IP子网中已经没有任何成员,则组播路由器在确认这一事件后,不再将该组播组的数据在子网中进行传送。

通过路由信息的交换,将相应的组播路由器从特定的组播组分配树中删除.这种不通知任何人而悄悄离开的方法,使得组播路由器知道IP子网中已经没有任何成员的事件延时了一段时间,所以在IGMPv2中,当每一个主机要离开某一个组播组时,需要通知子网组播路由器,组播路由器立即向IP子网中的所有组播组询问,从而减少了系统处理停止组播的延时.离开组播组时主机要发送信息这一点是IGMP Version 2和IGMP Version 1的主要区别。

路由

具有组播能力的网络由支持本地组播的局域网通过具有组播能力的路由器连接而成。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)。

骨干网

组播的规范是在1989年出版的,但是它的使用受到了限制。Internet上的路由器目前并不是都具有组播的能力。在这样一种情况下,研究者们为了在现有情况下开发和测试组播协议的应用,建立了组播骨干网(Multicast Backbone,Mbone)。Mbone支持组播分组的路由选择而不打扰其它的因特网业务流。

Mbone是一种跨越几个大陆的,由志愿者合作完成的实验性的网络。它是一个相互连接的子网和路由器的集合,这些子网和路由器支持IP组播业务流的传送。作为因特网上的虚拟网络,Mbone通过隧道(Tunneling)来旁路因特网上无组播能力的路由器。

隧道把组播数据包封装在IP包(即单播数据包)中来通过哪些不支持组播路由的网络。如图5所示,MR3和MR4是支持IGMP协议的有组播能力的路由器,他们把组播数据包封装在单播数据包中来发送,同时它们还从收到的单播数据包中取出组播数据包。R1和R2是没有组播能力的路由器,它们像传送其它普通单播数据包那样来传送封装有组播数据包的单播数据包。

交互式

IP组播的最大的用处就是用来做Internet上的音频和视频的传输,比如向成百上千的使用者发送音频和视频数据流。可是传统的IP组播的有一个最大的缺点就是这些所有的使用者都是被动的接受者。换句话说,IP 组播并没有让这些使用者进行交互式主动参与的内置机制。利用H.323国际标准中对会议成员的管理技术,SAP(Session Announcement Protocol),SDP(Session Description Protocol),RTCP(Real-time Transport Control Protocol)等协议,就可以使传统的IP组播技术具有交互功能。交互式IP组播技术应用范围很广,特别是Internet上多媒体的传输业务。比如视频会议,远程教育,Internet上的视频点播(VoD)等。

应用

组播应用大致可以分为三类: 点对多点应用,多点对多点应用和多点对点应用。

点对多点的应用

点对多点应用是指一个发送者,多个接收者的应用形式,这是最常见的组播应用形式。

典型的应用包括:

媒体广播:如演讲、演示、会议等按日程进行的事件。其传统媒体分发手段通常采用电视和广播。这一类应用通常需要一个或多个恒定速率的数据流,当采用多个数据流(如语音和视频)时,往往它们之间需要同步,并且相互之间有不同的优先级。它们往往要求较高的带宽、较小的延时抖动,但是对绝对延时的要求不是很高。

媒体推送:如新闻标题、天气变化、运动比分等一些非商业关键性的动态变化的信息。它们要求的带宽较低、对延时也没有什么要求。

信息缓存: 如网站信息、执行代码和其他基于文件的分布式复制或缓存更新。它们对带宽的要求一般,对延时的要求也一般。

事件通知:如网络时间、组播会话日程、随机数字、密钥、配置更新、有效范围的网络警报或其他有用信息。它们对带宽的需求有所不同,但是一般都比较低,对延时的要求也一般。

状态监视:如股票价格、传感设备、安全系统、生产信息或其他实时信息。这类带宽要求根据采样周期和精度有所不同,可能会有恒定速率带宽或突发带宽要求,通常对带宽和延时的要求一般。

多点对多点的应用

多点对多点应用是指多个发送者和多个接收者的应用形式。通常,每个接收者可以接收多个发送者发送的数据,同时,每个发送者可以把数据发送给多个接收者。

典型应用包括:

多点会议: 通常音/视频和白板应用构成多点会议应用。在多点会议中,不同的数据流拥有不同的优先级。传统的多点会议采用专门的多点控制单元来协调和分配它们,采用组播可以直接由任何一个发送者向所有接收者发送,多点控制单元用来控制当前发言权。这类应用对带宽和延时要求都比较高。

资源同步:如日程、目录、信息等分布数据库的同步。它们对带宽和延时的要求一般。

并行处理: 如分布式并行处理。它对带宽和延时的要求都比较高。

协同处理:如共享文档的编辑。它对带宽和延时的要求一般。

远程学习: 这实际上是媒体广播应用加上对上行数据流(允许学生向老师提问)的支持。它对带宽和延时的要求一般。

讨论组:类似于基于文本的多点会议,还可以提供一些模拟的表达。

分布式交互模拟(DIS):它对带宽和时延的要求较高。

多人游戏: 多人游戏是一种带讨论组能力的简单分布式交互模拟。它对带宽和时延的要求都比较高。

Jam Session:这是一种音频编码共享应用。它对带宽和时延的要求都比较高。

多点对点的应用

多点对点应用是指多个发送者,一个接收者的应用形式。通常是双向请求响应应用,任何一端(多点或点)都有可能发起请求。典型应用包括:

资源查找:如服务定位,它要求的带宽较低,对时延的要求一般。

数据收集:它是点对多点应用中状态监视应用的反向过程。它可能由多个传感设备把数据发回给一个数据收集主机。带宽要求根据采样周期和精度有所不同,可能会有恒定速率带宽或突发带宽要求,通常这类应用对带宽和延时的要求一般。

网络竟拍:拍卖者拍卖产品,而多个竟拍者把标价发回给拍卖者。

信息询问: 询问者发送一个询问,所有被询问者返回应答。通常这对带宽的要求较低,对延时不太敏感。

Juke Box:如支持准点播(Near-On-Demand)的音视频倒放。通常接收者采用“带外的”协议机制(如HTTP、RTSP、SMTP,也可以采用组播方式)发送倒放请求给一个调度队列。它对带宽的要求较高,对延时的要求一般。

英译

词典解释

名词n.

1.【电脑】多重播送以下结果来自互联网网络释义

multicast

1.多路广播,多播,组播

词博英语社区(IT专业英语词典-M)

multicast多路广播,多播,组播

⒉多点传送

【推荐】CISCO CCNA词汇表- 电...

multicast多点传送

Multicast

⒈多点广播

Vocabulary 关于学习(英语)关...

Multicast多点广播

参考资料

1.单播与组播、广播及任播有什么区别·电子发烧友

目录[+]