组播学习笔记
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
组播学习笔记
一、基础知识
1、组播的概念:
使用组播的好处:
一个源可以利用组播向多个目标发送数据(如:IGP的无类路由协议使用的组播)
使用组播可以节省带宽和设备的cost
…………
组播的缺点:
组播是基于UDP发送的。
(数据层面)
2、RTP(real-time transport protocol):实时传输协议,因为组播是基于UDP的,其传输是无序的,
为了解决接受数据时有序的,就需要对数据的实时传输。
3、由于是基于UDP的所以他的传输和UDP一样都是尽力的传输。
没有拥塞避免机制。
因为是无序传输,
需要利用RTP来解决。
在冗余拓扑中,可能让接受者收到多个一样的报文,可以通过PIM来解决。
4、组播应用的类型,
a、1对多
b、多对多(视频会议)
c、多对1
5、组播的专用名词。
First-hop:第一跳路由器 Last-hop:最后一跳路由器
IGMP:典型的个人PC和路由器之间沟通的协议。
6、
P
I
M
:
协
议
无
关
的
组
播
,
即
和
运
行
的IGP没有关系。
7、ip地址的分类回顾:A类:0~127 B类:128~191 C类:192~223 D类:224~239
其中D类是组播地址,不能被配置在设备的接口上。
在A类地址中127是被保留的特色地址,也就是我们常用的本地环回地址。
8、组播地址不能被当做源地址,只能被当做目标地址。
9、组播地址的细分:
A、保留的本地链路地址:224.0.0.0~224.0.0.255
B、公网组播地址:224.0.1.0~238.255.255.255
保留的公网组播地址
SSM(source specific multicast)指定源的组播(在CCSP中会涉及)这种协议时PIM的高级协议(232.0.0.0~232.255.255.255)
GLOP地址(233.0.0.0~233.255.255.255)就是申请一个BGP的AS号会送一段组播地址,这段地址就是GLOP地址。
这个地址是可以根据AS号来算出来的,如下所示:
如果AS:64521,那么所得组播地址是??
1、将64521转化成十六进制的数FC09
2、将FC09从中间断开得到FC 09
3、将FC和09 分别转化成两个十进制的数得到252 9
4、分别将这两个数字放在GLOP地址的第二位和第三位。
就得到基于本AS的地址
:232.252.9.0/24
C、私有的组播地址:239.0.0.0~239.255.255.255
10、典型的私有地址的使用:
224.0.0.1——发向所有的主机和路由器
224.0.0.2——发向所有的路由器
224.0.0.5——OSPF向所有路由器发送路由信息使用的组播地址。
224.0.0.6——OSPF中MA网络,发向DR使用的组播地址
224.0.0.9——RIPv2
224.0.0.10——EIGRP
224.0.0.13——PIM发送hello包的组播地址
二、IGMP协议
1、IGMP的定义:( internet group management protocol) internet组管理协议,本协议有三个
版本V1、V2、V3、这里我们重点学
习V2。
IGMP是封装在IP包里面的,
这里IGMP的IP协议号是2。
IGMPv1的数据包模型:
2、IGMPv1:他有两种报文;
(1)、查询包,由最后一跳路由器发送,查询有哪些组员(每60秒发一次,发送的组播地址是:224.0.0.2)查询报文的目标地址和组地址
D:224.0.0.2 group:0.0.0.0
(2)、report包,由主机发送,说明加入了某个组。
他的目标地址和组地址分别是:D:224.1.1.1 G:224.1.1.1 如左所示:其目标和组地址都一样,这是因为通过路由器向
下发送查询报文,主机收到该报文后,会向路由器发送report报文来回复,而发送的report
的报文由本地主机运行的应用程序而决定加入什么样的组,故而确定了组地址。
而用本地的
组地址作为发送report包的目的地址。
则是有两方面的优点:使用组地址作为report报文
的目标地址,可以将报文发给网关路由器和加入同一个组的PC,这时,所有的PC都会以这
个地址来发report报文,而相同的报文会被抑制掉,从而只发一个相同的report报文给网
关路由器。
(3)离组消息:在180S内发送三次查询包,如果一直没有收到该组的report回复报文,则意味这该组自动解散。
最后一跳路由器清除该组相关表项。
(缺点是在180s内还在转发组播消
息)
3、IGMPv2:版本2相对于版本1的常规查询和report新增了2中报文。
其解决了版本1在180s内仍
然转发组播消息的问题。
IGMPv2的四种报文
1、常规查询,和版本1一样;
2、report报文和版本1一样。
3、group-specific query 指定组的查询。
4、leave group massage 离组消息。
在最后一跳路由器冗余的情况下会出现查询者的选举,既在这样的一个网络下会出现querier的选举,其选择的原则是选取IP
地址小的设备作为查询者。
由
于发送查询的时候使用的目
标地址是224.0.0.1(路由器
和PC都接收)所以在查询的
过程中就会选出来查询者。
(在版本 1 中也存在这样的
选路,而在版本1 中则使用的
是PIM来选择DR选出的DR就充当了查询者)当查询者down了之后,非查询者在120S之内没有收到查询者的查询,那么非查询者就会充当查询者。
4、IGMPv2的报文格式:(右图)
5、离组报文,其发送离组消息的
目标地址是:224.0.0.1.
group 地址是:就是原有的
group地址
6、当查询者收到了这个PC的离
组报文后,路由器就会发送一
个指定组的查询报文。
发送指
定组的查询报文后,路由器会
等待2s,如果没有收到这个
组的report报文,那么路由
器就会删除这个组的所有表
项。
到目前为止,离组完成。
如果PC收到指定查询,那么
PC就会马上发送一个report的报文。
7、在路由器上面启用组播路由协议:全局下#ip mlticast-routing
在接口下运行PIM协议:# ip pim sparse-mode
查看谁是查询者以及相关信息:show ip igmp interface
Debug ip igmp 可以详细的看看离组的过程。
查看组员信息:show ip igmp groups.在查看的同时,思科路由器会自动加入一个组:224.0.1.40
三、二层的组播地址
1、mac地址:mac地址是一个48位。
其前24位是需要申请的,简称是OUI .后24位是厂家自己任
意指定的。
2、理论上组播地址有2的28次方个组播地址。
因为前四位是固定的。
3、在一个需要运行组播的网络中,当数据进行封装的时候,在IP报文前面会封装以太网包头,在
分装以太网包头的时候,需要有源和目标mac地址。
当然,封装的时候源mac地址就是该报文出去的以太网口的mac地址,那么目标mac地址就需要和运行的组播地址进行换算了,其换算的方法是:首先,这个目标mac地址的前25为是确定的,既:01-00-5e-0(0是固定的)后面的23为是自己分配的。
其次,将本组的组播地址转换成二进制,取后23位直接放在前面的25位后面,这就得到了我们需要的目的mac地址。
那么着就意味着我们有32个组播地址对应了一个组播数据包的目标mac地址。
就有可能有32个组播地址映射到了一个mac地址。
4、当一个交换机接受到一个组播地址或者广播地址的数据包时,就会向所有属于同一个vlan的接
口泛红这个数据,但是在在实际工程中为了减少不必要的组播泛红到其他的链路上去,这时就有了IGMP snooping 协议和思科私有的cisco group management protocol (CGMP)协议。
5、IGMP snooping:他是一个业界标准,其只需要在交换机上面做就可以解决问题。
原理:默认的一台交换机只可以将包拆到mac地址就可以转发了,但是IGMP snooping之后就可以将包拆到三层的iip地址。
当PC加入一个组之后会发送report 报文,而且目标ip地址和组ip地址是一样的,如果这个交换机启用的IGMP snooping 功能,他就会把这个报文截获下来,这时,就会将截获来的报文的组地址和接口就会有一个映射表。
当交换机接受来的组播报文,就只会向有映射的接口发送。
而不会向所有本vlan的接口发送。
全局下:#iip igmp snooping vlan 1 针对vlan1 开启snooping 。
不加vlan的话就是针对所有的vlan都开启snooping。
查看交换机上IGMP snooping 表项:#show ip igmp snooping group
6、CGMP:需要交换机和路由器的一个协同工作。
(思科私有的)
原理: PC向路由器发送report报文,当交换机和路由器都启用了CGMP功能后,report报文会直接透传交换机发送给路由器。
而路由器会截获report报文的目标mac地址和源mac地址作为GDA (group destination address 组的目标地址)和USA(unicast source address单播的源mac 地址)封装成CGMP报文,再将CGMP报文发送给交换机,交换机就有了这个表项。
既一个PC 的mac地址和一个组播mac地址的映射表项。
当交换机收到一个224.1.1.1 的组播数据,数据转发时的目标mac地址就变成GDA了,交换机收到这个数据包之后就会向和GDP mac地址映射表项的USA mac地址的接口区转发。
开启交换机cgmp 全局#cgmp;开启路由器cgmp 接口下#ip cgmp(运行多播协议和PIM)
四、组播路由协议——PIM(协议无关的组播协议)
单播路由协议和组播路由协议的区别:单播路由是决定数据时从哪(走哪)出去的一种协议;
而组播路由协议则是决定数据时从哪个接口进来的一种协议(既防止接受重复报文;既路由器接收一个组播报文只可能有一个接口)
1、RPF(reverse path forwarding )反向路径转发,把路由器的包的进入接口称之为RPF接口,一
个路由器只有一个RPF接口。
2、RPF校验:如右图所示:当路由器接收到一个源地址为
151.10.3.21的组播数据的时,路由器会做RPF校验,这
时,路由器会找自己的单播路由表,来查找源151.10.3.21
的路由,在右图所示的例子中,查找的结果是从s1口出
去的,而组播数据时从s0口进来的,这是RPF校验失败。
3、当最后一跳路由后面有负载均衡的链路时,这时候选举
RPF接口的办法是,在RPF校验的时候:1、优选与到
达源地址路由条目的最短路由管理距离(多个路由协议)
的接口;2、如果以上是一样的,那就选择最小metric
的哪条链路的接口;3、如果若果metric值一样,那就选
择较大的IP地址的那个接口作为RPF接口。
4、当我们需要基于组来做组播的负载分担的时候,可以写
一条组播的静态路由来干扰个别流量的的走向。
全局下#ip mroute 1.1.1.1 255.255.255.255 +入接口(其中1.1.1.1 255.255.255.255是发送组播数据的源地址。
入接口就是本地路由器上的组播数据进入的接口)组播的静态路由的AD是0
5、组播中的两棵树
A、source –rooted:源树(SPT)
原理:当一个网络中有多个组播数据源的时候,每个源会在这个网络中生成一棵树,这时就会在本地产生一个表项(组播路由表)他会标识出这个组播数据流量是从哪个接口进
来的,要从哪个接口出去。
运SPT的缺点是:占用路由器的cost。
优点是:源到达接
受者是最优的。
B、shared trees:共享树(RPT)
原理:当有多个组播数据源的时候,在网络中指定一个RP路由器,这时,所有的组播数据流量都发向RP设备,然后,网络中以RP为源树,来形成一棵树,这个模型是一个分段模
型,在RP以前还是源树,在RP以后就是共享树了。
6、PIM的两种模式。
1、sparse mode:稀疏模式
2、dense mode:密集模式;(有组播流量才能够形成树形结构)所谓的密集模式就是接受者非常
多。
使用的模式是push模式,使用的树是spt树,其运行原理:当源路由器有组播数据流量向下发的时候,第一跳路由器会将流量发向所有的最后一跳路由器,一旦组播流量泛洪完成后,每台设备上就会产生一个表项(S,G),如果有的最后一跳设备上面没有接受者,那么就会发送一个pruning 包,当源树的根收到pruning包之后就会修剪掉没有接受者的设备的组播表项。
到了这个时候,组播流量就只向有接受者的最后一跳设备发送,在这个过程完成后,每三分钟会泛洪一次组播流量,也会在进行一次修剪。
如此,循环这个过程。
(如果,网络在接受者比较多,那么这种模式就比较好。
)
3、PIM的工作原理:当两台设备的接口都运行PIM的sparse或者dense模式,就开始建立邻
居,发hello包,发送的组播地址:224.0.0.13,30s发送一次,hold时间是105s ,(在IGMPv1中选举查询者就是在这个过程中进行的,选举规则是:先比接口优先级,再比接口的IP地址较高)
4、当邻居建立成功后,可以使用命令#show ip pim neighbor 查看。
这时会看到这个表有三个状态属性,如下图所示:
Dense mode 的配置:
首先,在设备上面需要配置的设备上面启IGP路由,为了防止RPF校验失败;
其次,开启设备的组播路由功能,全局下#ip multicast-routing
最后,在所有转发组播流量的接口下配置PIM模式#ip pim dense-mode
(在ping组播地址的时候,要是没有回包,很有可能是接受者的最后一跳路由器没有回去的
路由)
5、在PIM中修改接口的优先级#ip pim dr-priority+优先级
6、查看组播路由表:#show ip mroute,在查看组播路由器的路由表的时候后面的flags位的字
母分别表示:D---表示运行的是dense模式;S——表示运行的是sparse模式;T——表示SPT
位置位了,表示组播数据已经从形成好的源树开始转发。
7、组播中的通用规则:
A、当组播运行的时候,其路由表中产生一个(S,G)就会自动产生一个(*,G);但是在dense
模式下(*,G)不做组播数据转发
8、sparse 模式:稀疏模式,其使用了pull模式来转发组播流量,其用到了SPT树和RPT树。
这种模式只要有了接受者就会形成树形结构。
原理:(右图为例)在运行sparse模式之前,在
网络中选取一个RP,当接受者加入一个组之后,
连接接受者的的最后一跳设备会向RP发出一个
(*,G)的join包,此时,RP到达最后一跳路由
器,这棵树(RPT)就形成了,——让RP知道有
接受者。
在这个过程中从RP路由器到最后一跳路
由器都会形成一个(*,G)的表项;当第一跳路
由器接收到组播流量的时候,会向RP用单播发送
一个register报文(S,G),register报文里面
IP包头之后封装的是PIM信息,——目的是查看
RP上面有无该组的组员。
这时,有两种情况,如
果有的话,那么就直接把这个register包解封装,就按照正常的组播流量向下走;然后,RP
会向第一跳路由器发送一个join信息(S,G),——因为所有的组播流量都封装在一个单播数
据包中,最终需要通过组播路由表来转发,当第一跳路由器收到后——形成spt树。
组播流量
就会通过spt发个RP,再通过RPT发给接收者。
这时,第一跳路由器仍在向RP发送单播register
报文,为了抑制这种现象,RP就会向第一跳路由器就会以单播的形式向第一跳路由器发送一
个(S,G)register stop报文,来禁止第一跳路由器单播发送register(S,G)报文。
如
果在第一跳路由器发送register报文的时候,RP路由器上没有接收者的信息,那么RP就会
直接向第一跳路由器发送register stop 报文,将组播流量在第一跳设备上面丢掉。
9、在运行sparse模式的时候,设备会自动运行switchover,当最后一跳路由器在从RP接收到组
播流量的时候,最后一跳路由器就会向源发送一个(S,G)join的报文,这时就自己切换到最短路
径了,切换的筏值是看组播的速率0kbps,当组播流量的速率大于0kbps就会向SPT转换。
(默认切换)要使得不切换需要在最后一跳路由器上面配置:#ip pim spt-threshold infinity
配置:和dense 模式的配置一样,只不过命令行不一样;RP的配置:
1、静态配置(一般使用环回口,要通告进IGP)在设备的全局下配置:#ip pim rp-address
+RP设备的地址(在组播运行的所有的设备上面都要配置)
2、动态RP,auto-RP(cisco私有){ C-RP –候选RP:可以有多个设备来申请成为RP;
MA映射代理:决定这些候选RP谁来当RP}原理:当运行了C-RP的设备会周期性的向224.0.1.39发送消息,而这个消息只有MA能识别,选择IP地址最大的来做RP,选好RP之后,MA设备会向224.0.1..40发送谁是RP。
(注:在一个网络中要有多个C-RP和MA备份)
1、先将模式调整为:sparse-dense mode
2、C-RP和MA所指的环回口要通告进入IGP
配置:在借口下:#ip pim sparse-dense mode(修改模式)
#ip pim send-rp-announce loopback 0 scope 8(配置C-Rp)
# ip pim send-rp-discovery loopback 0 scope 8(配置MA)(现在运
用的环回口要运行PIM,因为这个环回口要发送组播流量)查看选举结果:#show ip pim rp mapping
(动态选出来的RP优于静态的RP)
10、DR在sparse模式下的作用是负载发送join包和register消息。
A、如果运行的是IGMPv1,DR充当了查询者的作用
B、DR在dense模式中没有作用。
C、DR在sparse模式下的作用是负责发送join包和register消息;当在源端出现MA网络,那
么选举出来的DR,就向RP发送register报文,当在最后一跳路由器出现冗余,那么选举出的DR就向RP发送join报文。