前言
随着计算机网络的发展和个人计算机的普及,人们能够方便的在网络上畅游,进行网络通信或者获取自己所需的信息资源。此外,人们也越来越依赖于网络计算。大多数企业都建立了先进的网络,连接各个雇员和他们的计算机、工作站。有时,我们工作中的重要的信息只能通过网络得到,这些信息可能在企业的专用网络上,也可能在因特网上。
IP多播技术的相关基本概念
多播(Multicast,也称为组播)是一种实现一对多通信的技术,与传统单播一对一通信相比,多播可以极大地节省网络资源
在因特网上进行的多播,称为IP多播
多播的基础概念是组。一个多播组(multicast group)就是一组希望接收特定数据流的接收者。这个组没有物理或者地理的边界:组内的主机可以位于互联网或者专用网络的任何地方。多播组中的每1个节点被称为多播组成员。
举例
- 采用单播方式:共有60个主机要接收来自视频服务器的同一个视频节目,则视频服务器需要发送60个该视频节目,这些视频节目通过各路由器的转发,最终到达各主机。
- 采用多播方式:可将这60个主机看做是同一个多播组的成员,视频服务器只要向该多播组发送1个视频节目即可;由于路由器R1支持IP多播,R1在转发视频节目时需要将该视频节目复制成两个副本,分别向路由器R2、R3转发一个副本,当该视频节目到达目的局域网时,由于局域网具有硬件多播功能,因此不需要复制,在局域网上的该多播组成员都能收到该视频。
当多播组的成员数量很大时,采用多播方式可以显著地减少网络中各种资源的消耗
IP多播地址和多播组
在IPV4中,D类地址被作为多播地址,多播地址只能用作目的地址,而不能用作源地址。
224.0.0.1 所有主机的地址
224.0.0.2 所有组播路由器的地址
用每一个D类地址来标识一个多播组,使用同一个IP多播地址接收IP多播数据报的所有主机就构成了一个多播组
- 每个多播组的成员时可以随时变动的,一台主机可以随时加入或离开多播组
- 多播组成员的数量和所在的地理位置也不受显示,一台主机可以属于几个多播组
非多播组成员也可以向多播组发送IP多播数据报
IPV4多播地址又可以分为:预留的多播地址(永久多播地址)、全球范围可用的多播地址以及本地管理的多播地址
IP多播可以分为两种:
- 只在本局域网上进行的硬件多播
- 在因特网上进行的多播
在局域网上进行硬件多播
由于MAC地址(也称硬件地址)有多播MAC地址这种类型,因此只要把IPV4多播地址映射成多播MAC地址,即可将IP多播数据报封装在局域网的MAC帧中,而MAC帧首部的目的MAC地址字段的值,就设置为由IPV4多播地址映射成的多播MAC地址。这样,可以很方便地利用硬件多播来实现局域网内的IP多播。
当给某个多播组的成员配置其所属组的IP多播地址时,系统就会根据映射规则从该IP多播地址生成相应的局域网多播MAC地址。
因特网号码指派管理局IANA,将自己从IEEE注册管理机构申请到的以太网MAC地址块中从01-00-5E-00-00-00到01-00-5E-7F-FF-FF的多播MAC地址,用于映射IPV4多播地址。
- 这些多播MAC地址做起前25比特都是相同的,剩余23比特可以任意变化,因此共有2的23次方个(左边第1个字节的最低为比特取值为1,表示该MAC地址是多播MAC地址)
IP多播地址和多播MAC地址映射关系
为了映射一个IP多播地址到MAC层的多播地址,IP多播地址的底23位可以直接映射为MAC层多播地址的底23位。因为IP多播地址的前4位是固定的,另外还有比邻的5位不需要映射到MAC层多播地址
举例
只需将多播MAC地址坐起前25比特固定不变,将IP多播地址的低23比特映射到或者说作为MAC多播地址的低23位,这样就可以得出IP多播地址相应的多播MAC地址
如果不同的IP多播地址之间的不同指出仅出现在不能映射的那5个比特,则这些IP多播地址会映射出同一个多播MAC地址,因此收到IP多播数据报的主机还要在网际层利用软件进行过滤,把不是主机要接收的IP多播数据报丢弃。
在因特网上进行IP多播
要在因特网上进行IP多播,就必须要考虑数据报经过多个多播路由器进行转发的问题
- 多播路由器必须根据IP多播数据报首部中的IP多播地址,将其转发到该多播组成员的局域网
在因特网上进行IP多播需要两种协议
- 网际组管理协议IGMP
- 多播路由选择协议
路由器如何知道各接口所在的局域网是否有某个多播组的成员?
需要使用TCP/IP体系结构网际层中的网际组管理协议IGMP
网际组管理协议IGMP
网际组管理协议(IGMP)是TCP/IP体系结构网际层中的协议,其作用是让连接在本地局域网上的多播路由器知道本地局域网上是否有主机(实际上是主机中的某个进程)加入或退出了某个多播组
IGMP只在本网络有效,使用IGMP并不能知道多播组所包含的成员数量,也不能知道多播组的成员都分布在哪些网络中
仅使用IGMP并不能在因特网上进行IP多播。连接在局域网上的多播路由器还必须和因特网上的其它多播路由器协同工作,以便把IP多播数据报用最小的代价传送给所有的多播组成员,这就需要使用多播路由选择协议。
IGMP有三种报文类型
- 成员报告报文
- 成员查询报文
- 离开组报文
IGMP报文被封装在IP数据报中传送
网际组管理协议IGMP的基本工作原理
- 加入多播组的情况
- 监视多播组成员变化的情况
最后返回各个主机或路由器,进行解析 - 退出多播组情况
当主机要退出某个多播组时,可主动发送一个离开组报文而不必等待多播路由器的查询。这样可使多播路由器能够更快地发现某个组有成员离开
之后多播路由器发送IGMP成员查询报文
多播路由选择协议
多播路由选择协议的主要任务是:在多播路由器之间为每个多播组建立一个多播转发树
- 多播转发树连接多播源和所有拥有该多播组成员的路由器
- IP多播数据报只要沿着多播转发树进行洪泛,就能被传送所有拥有该多播组成员的多播路由器
- 之后,在多播路由器所直连的局域网内,多播路由器通过硬件多播,将IP多播数据报发送给该多播组的所有成员
即使某个主机不是任何多播组的成员,它也可以向任何多播组发送多播数据报
目前有两种方式来构建多播转发树:
- 基于源树(Source-Bass Tree)多播路由选择
- 组共享树(Group-Shared Tree)多播路由选择
基于源树的多播路由选择选择最典型算法是反向路径多播(RPM)算法
RPM算法包含以下两个步骤
- 利用反向路径广播算法建立一个广播转发树
- 利用剪枝算法,剪除广播转发树中的下游非成员路由器,获得一个多播转发树
建立广播转发树,可以使用洪泛法
利用反向路径广播RPB算法生成的广播转发树,不会存在环路,因此可以避免广播分组在环路中兜圈
组共享树多播路由选择采用基于核心的分布式生成树算法来建立共享树
该方法在每个多播组中指定一个核心(core)路由器,以该路由器为根,建立一棵连接多播组的所有成员路由器的生成树,作为多播转发树