|
]这段时间太忙了。 不好意思了.大家.下面写组播的东西..望大家共赏
<转发方式>
1.基于流(一定是快速转发,但第一个包是基于进程转发的)
2.基于数据包
3.基于源
4.基于源和目的
<处理机制>
1.进程转发(通过CPU处理)
2.快速转发(基于芯片,直接从某个端口扔出去)
Multicast is UDP based
<RTP>
<RTCP>
<Multicast>
·一个发送方同时将信息传输给一组接收方:
1.将公司信息发送给所有雇员
2.广播视频和音频,包括用于远程学习和交互式视频
3.从中央数据仓库将数据传输给多个部门
4.将股票报价传递给经纪人 (保证同时收到,不能一个先收到一个后收到)
·路由器不转发广播包,
如果目的是发往非本子网的其他主机,广播做不到。
应用流量:服务器-客户端
互动流量
一个人说给多个人听。
Unicast (A/B/C 类)
Broadcast (路由器不转发广播包)
ip Directed-Broadcast (默认disable)
show ip int e0
应用:不支持组播的设备。组播转换成广播
R2--R1--R3
R2:ping 13.1.1.255,正常R1给予回应。
在R1 S1口开启ip directed-broadcast
R1会将此广播包转发给R3
Multicast
Source -> Server
Destination -> Group
分散到其他广播域
多播路由器的2个基本功能:路由发现&包的前转。
最简单的包前转方法:向除了上游端口外的所有端口转发,称为“反向路径广播”。
RPB(Reverse Path Broadcast)
隐式加入:发送者发起的。(Dense密集模式-Push模式)
路由器收到多播流,用IGMP来判断它直连子网是否有组员,如果没有,就向上游路由器发Prune,
上游路由器就停止向这个Prune的路由器前转多播流量。
显式加入(Explicit):接收者发起的。
<Multicast Address>
224.0.0.0 - 239.255.255.255 保留给路由协议和其他网络维护功能。路由器不会把目标地址是这一范围的包前转。
保留的链路本地地址:224.0.0.0 - 224.0.0.255
保留给本地网段上的网络协议使用。路由器不转发目标地址为这段地址的数据包。
TTL=1 (FR Hub & Spoke 中。Spoke端不能建邻居)
全局范围地址: 224.0.1.0 - 238.255.255.255
公司可以使用这段地址在组织之间和通过Internet以组播方式传输数据。
指定源多播地址: 232.0.0.0 - 232.255.255.255
此段地址被保留给SSM使用。SSM是PIM的一种扩展。
GLOP地址: 233.0.0.0 - 233.255.255.255
这段地址和AS号对应。
例:AS62010的16进制表示为F23A,F2的十进制242,3A的十进制58,
所以子网233.242.58.0/24被全局保留,供AS62010使用。
有限范围地址: 239.0.0.0 - 239.255.255.255
使用这些地址的组播被限定在本地或组织内。公司、大学和其他组织使用有限范围地址来进行本地组播。
与Internet相连的边缘路由器不会将这段多播地址帧转发到外网。
R1(config)#access-list 100 deny ip any 224.0.0.0 15.255.255.255
224.0.0.1 子网中的所有主机和路由器
224.0.0.2 子网中的所有路由器(HSRP)
224.0.0.4 DVMRP路由器
224.0.0.13 PIM路由器
224.0.0.18 VRRP
224.0.1.1 NTP
224.0.1.39 RP-Announce
224.0.1.40 RP-Discovery
<IP和MAC的对应>
IP地址的最后23位被映射到MAC地址的最后23位
0000,0001 0000,0000 0101,1110 0000,0000 0000,0000 0000,1010
24位 0 23位
01 00 5E 00 00 0A
< RPF (Reverse Path Forwarding)>
收到数据包的方向也必须是本路由器用来转发数据包源地址的方向,否则扔掉数据包
upstream ( 前往信源的方向)
downstream ( 前往接收方的方向)
show ip mroute static 查看静态多播路由
"RPF check fails"-----先查多播路由表,再查单播路由表
RPF接口默认每5秒检测一次
<TTL>
接口的TTL阀值必须<=数据包的ttl值,接口才会转发
入向接口的TTL值大于或等于出向接口的TTL值时,才转发.
R1(config-if)#ip multicast boundary 1 不分in,out方向
R1(config)#access-list 1 permit 239.129.0.0 0.0.255.255
Show ip pim int s0 detail
Show ip igmp int s0 ?
Ip multicast ttl-threshold 2 设置TTL值,必须在接口下
< Tree >
·Shortest-Path / Source Distribution Tree
SPT(Shortest Path Tree)
(S,G) (192.168.1.1,224.1.1.1)
源树的优点:在信源和接收方之间创建一条最优的路径,可以最大限度的降低转发多播流的网络延迟。
同时也增加了开销,路由器要针对每个信源存储路径信息,在包含数千个信源的网络中,这种开销是庞大的。
一个源一棵树.适用于比较多接收者时使用.每3分钟修剪一次.推模型.一般运行在DENSE模式下.
·Shared Distribution Tree
RP(Rendezvous Point)
(*,G) (*,224.1.1.1)
共享树的优点:每台路由器存储的信息较少,降低内存消耗。
缺点:选择信源到接收方的路径不是最优的。所以要慎重考虑RP的位置。
拉模型.RP可以手工指定.receiver端向RP端发出register包.一般运行在SPARSE模式下.
<IGMP(Internet Group Management Protocol)>
·IGMP报文封装在IP包中,Protocol NO.=2 / TTL=1
IGMPv1(hold time :180second): 1.Query包 每60秒发一次 由路由器发向224.0.0.1 DIP:224.0.0.1 GROUP:0.0.0.0
2.Report包 主机回应Queries或主动发
DIP:224.1.1.1 GROUP: 224.1.1.1
IGMP没有离组消息,称之为静悄悄的离开,180S之后holdtime 到时,才从组中去掉
IGMP-V1没有查询者机制,要靠上层的PIM选出DR
IGMPv2: 1.Group-specific query DIP: 224.1.1.1 GROUP:224.1.1.1
2.Leaving a Group DIP: 224.0.0.2 GROUP:224.1.1.1
当有多个路由器在同一个网段时,要先比出查询者(比最小IP地址),查询者老化时间默认是120S
IGMPv3-----可选择接收某些源
R1-----------PC2
R1(config)#ip multicast-routing 开启多播路由协议
R1(config-if)#ip pim dense-mode
R1/R2#debug ip igmp
R2(config-if)#ip igmp join-group 224.1.1.1 使R2加入"224.1.1.1"的组
R1#show ip igmp groups [detail] 查看谁加入了哪个组
IGMP Connected Group Membership
Group Address Interface Uptime Expires Last Reporter
224.0.1.40 Ethernet0 00:03:10 00:02:58 10.1.1.1
224.1.1.1 Ethernet0 00:03:10 00:02:58 10.1.1.2
R1#show ip igmp interface ethernet 0
Ethernet0 is up, line protocol is up
Internet address is 10.1.1.1/24
IGMP is enabled on interface
Current IGMP host version is 2
Current IGMP router version is 2
IGMP query interval is 60 seconds
(#ip igmp query-interval 60)每60S发送Query。"query-interval"乘以2等于"querier-timeout"
IGMP querier timeout is 120 seconds
(#ip igmp querier-timeout 120) 非查询者在120S内没有收到查询者的包,自己充当这个角色。
IGMP max query response time is 10 seconds
(#ip igmp query-max-response-time 20) 查询包中的字段,告诉主机回应Report的最大响应时间.
Last member query count is 2
Last member query response interval is 1000 ms
Inbound IGMP access group is not set
IGMP activity: 5 joins, 4 leaves
Multicast routing is enabled on interface
Multicast TTL threshold is 0
Multicast designated router (DR) is 10.1.1.1 (this system)
IGMP querying router is 10.1.1.1 (this system)
网络中如果有多个路由器发Query,选举IP地址小的作为发送查询者。
Multicast groups joined by this system (number of users):
224.0.1.40(1)
Show ip mroute 查看多播路由表
<多播IP地址相对应的MAC地址>
<CGMP(Cisco Group Management Protocol)> 在路由器和交换机上都要配
for 2900
R3(config-if)#ip cgmp 在R3的某个接口起CGMP
SW3#show cgmp 2900交换机默认已起用CGMP,3550和2950不支持
Group Destination Address (GDA) 组MAC地址
Unicast Source Address (USA) 单播源地址
Debug ip cgmp
<IGMP Snooping> 只要配置交换机,业界标准
Show mac-address-table multicast 查看交换机多播MAC表
Sw1(config)#ip igmp snooping vlan 1 基于VLAN 1 起用IGMP的SNOOPING
SW1#show ip igmp snooping groups
<PIM(Protocol independent Multicast)>
PIM的在IP中的协议号是103
·PIM-DM ( Dense Mode )
·不管是何种单播路由协议,PIM都可以使用他们实现组播转发。
并使用现在有单播路由表实现RPF校验。
由于不必发送组播路由更新,所以PIM比其他组播协议开销降低了很多。
Flood&prune 每三分钟就要做一次
Hello:30S
Hold :30*3.5= 1分45秒
R1#debug ip packet detail
*Mar 1 00:15:44.207: IP: s=12.1.1.2 (Serial0), d=224.0.0.13, len 54, rcvd 0, proto=103
·MA网络PIM通过Hello包来选择DR,主要用于IGMPv1,DR将成为Querier。
DR选举方式:1.Priority大的(默认=1)R1(config-if)#ip pim dr-priority 3
2.IP地址大的
DR可抢占。只有以太口才选DR,串口不选DR。
如果运行的是IGMPv2,则DR的选举不一定会成为Querier。IGMPV2自已会选
DR的作用:1、充当IGMPV1的Querier
2、在Dense无用 3、sparse中 send&receive join®ister message
R1(config-if)#ip pim dr-priority 2 在接口下改优先级
R1#show ip pim neighbor
PIM Neighbor Table
Neighbor Interface Uptime/Expires Ver DR
Address Prio/Mode
10.1.1.2 Ethernet0 00:31:45/00:01:30 v2 3 / DR S
10.1.1.2的优先级为3,且为DR
R2#show ip igmp int e0
Multicast designated router (DR) is 10.1.1.2 (this system)
IGMP querying router is 10.1.1.2 (this system)
R3(config-if)#
*Mar 1 00:24:35.290: PIM(0): Send v2 Assert on Ethernet0/0 for 224.1.1.1, source 14.1.1.4, metric [120/1]
*Mar 1 00:24:35.290: PIM(0): Assert metric to source 14.1.1.4 is [120/1]
*Mar 1 00:24:35.290: PIM(0): We win, our metric [120/1]
*Mar 1 00:24:35.290: PIM(0): (14.1.1.4/32, 224.1.1.1) oif Ethernet0/0 in Forward state
R2#
*Mar 1 00:24:47.870: PIM(0): Received v2 Assert on Ethernet0/0 from 23.1.1.3
*Mar 1 00:24:47.870: PIM(0): Assert metric to source 14.1.1.4 is [120/1]
*Mar 1 00:24:47.870: PIM(0): We lose, our metric [120/1]
*Mar 1 00:24:47.870: PIM(0): (14.1.1.4/32, 224.1.1.1) oif Ethernet0/0 in Prune state
Graft
Graft-Ack
D:表示组播组是一个密集模式,仅在(*,G)出现.
C:有直接的组成员,会在(*,G)和(S,G)都出现.
L:表示自己就是组成员,会在(*,G)和(S,G)都出现.
P:输出接口为空/输出接口都处于Prune状态,结果Prune会从此(S,G)送至上游RPF邻居.会在(*,G)和(S,G)都出现.
T:信息经(S,G)转发,只要收到第一个(S,G)包,就设置该标志.因此,T始终都会出现,仅在(S,G)出现.
J:........................
(*, 224.1.1.1), 00:14:14/stopped, RP 0.0.0.0, flags: D
Incoming interface: Null, RPF nbr 0.0.0.0
Outgoing interface list:
Serial1, Forward/Dense, 00:13:54/00:00:00
(14.1.1.4, 224.1.1.1), 00:14:14/00:00:00, flags: T
Incoming interface: Ethernet0, RPF nbr 0.0.0.0
Outgoing interface list:
Serial1, Forward/Dense, 00:13:54/00:00:00
--------------------------------------------------------------------------
(*, 224.1.1.1), 00:14:16/00:02:58, RP 0.0.0.0, flags: D
Incoming interface: Null, RPF nbr 0.0.0.0
Outgoing interface list:
Serial1, Forward/Dense, 00:13:56/00:00:00
如果没有组播流,(*,G)等到(S,G)消失后,从3分钟倒计时.
*Mar 1 01:05:36.191: PIM(0): Received v2 Join/Prune on Serial0 from 12.1.1.2, to us
*Mar 1 01:05:36.195: PIM(0): Prune-list: (14.1.1.4/32, 224.1.1.1)
*Mar 1 01:05:36.199: PIM(0): Prune Serial0/224.1.1.1 from (14.1.1.4/32, 224.1.1.1)
*Mar 1 01:08:38.467: PIM(0): Received v2 Join/Prune on Serial0 from 12.1.1.2, to us
*Mar 1 01:08:38.471: PIM(0): Prune-list: (14.1.1.4/32, 224.1.1.1)
*Mar 1 01:08:38.475: PIM(0): Prune Serial0/224.1.1.1 from (14.1.1.4/32, 224.1.1.1)
3分钟周期发送Prune.
无论在什么时候,只要出现了(S,G),就会出现它的父项(*,G),但(*,G)不作转发选择。
·PIM-SM ( Sparse Mode )
指定RP的方式
Static 指定RP(一般用环回口),并通告进IGP
auto RP
BSR
DR的作用:
1、充当IGMPV1的Querier
2、在Dense无用
3、sparse中 send&receive join包®ister包 message
Register包由信源发向RP,查询本组中有无组员,它是一个单播包。如果本组中有组员,则RP向信源发出一个(S,G)JOIN包和register stop包(停止单播),则后续数据以多播包下发,并形成spt树,
IP PIM UDP RTP VOIDE
R3(config)#ip pim rp-address 2.2.2.2 在RP上也要打入这一命令,指明谁是RP
*Mar 1 01:51:22.647: PIM(0): Building Periodic Join/Prune message for 224.1.1.1
*Mar 1 01:51:22.651: PIM(0): Insert (*,224.1.1.1) join in nbr 13.1.1.1's queue
*Mar 1 01:51:22.655: PIM(0): Building Join/Prune packet for nbr 13.1.1.1
*Mar 1 01:51:22.659: PIM(0): Adding v2 (2.2.2.2/32, 224.1.1.1), WC-bit, RPT-bit, S-bit Join
*Mar 1 01:51:22.663: PIM(0): Send v2 join/prune to 13.1.1.1 (Serial1)
*Mar 1 01:52:21.823: PIM(0): Building Periodic Join/Prune message for 224.1.1.1
*Mar 1 01:52:21.827: PIM(0): Insert (*,224.1.1.1) join in nbr 13.1.1.1's queue
*Mar 1 01:52:21.831: PIM(0): Building Join/Prune packet for nbr 13.1.1.1
*Mar 1 01:52:21.835: PIM(0): Adding v2 (2.2.2.2/32, 224.1.1.1), WC-bit, RPT-bit, S-bit Join
*Mar 1 01:52:21.839: PIM(0): Send v2 join/prune to 13.1.1.1 (Serial1)
WC-bit :表示这个加入地址是一个RP地址,不是源
RPT-bit :表示这个消息顺着共享树传送RP
S-bit :标识是Sparse-mode
R2#show ip mroute
(*, 224.1.1.1), 00:00:17/00:03:13, RP 2.2.2.2, flags: S
Incoming interface: Null, RPF nbr 0.0.0.0 (自己是RP,所以是Null,0.0.0.0)
Outgoing interface list:
Serial0, Forward/Sparse, 00:00:17/00:03:13
R4 ping 224.1.1.1
R2 debug ip pim
*Mar 1 02:06:08.487: PIM(0): Check RP 1.1.1.1 into the (*, 224.1.1.1) entry
*Mar 1 02:06:08.495: PIM(0): Send v2 Register to 1.1.1.1 for 24.1.1.4, group 224.1.1.1
*Mar 1 02:06:08.579: PIM(0): Received v2 Join/Prune on Serial0 from 12.1.1.1, to us
*Mar 1 02:06:08.583: PIM(0): Join-list: (24.1.1.4/32, 224.1.1.1), S-bit set
*Mar 1 02:06:08.591: PIM(0): Add Serial0/12.1.1.1 to (24.1.1.4/32, 224.1.1.1), Forward state
<Auto RP> 必须运行在sparse-dense模式下
C-RP 候选RP
MA 映射代理,MA的多播地址:224.0.0.39
224.0.0.40 所有支持auto rp的路由器
c-rp/ma 的loopback一定要宣告进IGP
R1(config)#ip pim send-rp-announce loopback 0 scope 5
配置为候选RP,向224.0.1.39每60秒发送一个RP-Announce,且只能传5跳
R1(config-if)#ip pim send-rp-discovery loopback 0 scope 5 在MA上配,也规定了只能传5跳
R1(config)#int lo0
R1(config-if)#ip pim sparse-mode(要确保loopback口也运行PIM)
映射代理收听RP-Announce消息,并选择RP(IP地址大的优选),它在RP-Disconvery消息中向PIM域中的其他路由器通告RP的地址。
R3#show ip pim rp mapping (in-use )
组 播
Multicast是基于UDP的,它所传输的数据包是用UDP封装的。
RTP-实时传输协议real-time
RCTP-实时控制协议
先封装RTP,再封装UDP
20byte 8byte 12byte
IP UDP RTP Vlice payload
IGMP因特网组管理协议
多播地址:
224.0.0.1 所有主机和路由器
224.0.0.2 所有路由器
224.0.0.5
224.0.0.6
224.0.0.9
224.0.0.10
224.0.0.13 PIM用
Sparse-mode
pim sparse mode
Bi-directional 双向PIM
让源和RP之间也使用(*,G)共享树,在每一个链路上产一个DF,到RP的距离COST值最小的成为DF,
DF之间有四种消息来联系offer,winner,backoff,offer inf
SSM 在源已经固定的情况下使用
事先已知道源,可以允许last hop router 直接发送出一个(S,G)的join申请。和源之间建立联系,生成spt。不必形成共享树,直接形成一条最短路径树。
MSDP multicast source discovery protocol基于TCP
用于做域间路由的技术
一边一条命令
R1上:Ip msdp peer 2.2.2.2(对方) connect-source lo0 remote 2
R2上:Ip msdp peer 1.1.1.1(R1)connect-source lo0 remote 1
RP配置
static rp
auto rp
想成为RP的路由器发送announce给映射代理
send rp-announce to 224.0.1.39(映射代理)
send rp-discovery to 224.0.1.40(所有PIM路由器)
224.0.1.40 224.0.1.39
bsr rp (bootstrop router) 224.0.0.13
先决定出谁是active BSR路由器
Active BSR发出一个消息bsr message(bar ip address)到224.0.0.13
路由器收到bsr message信息
想成为RP的路由器单播给active bsr 说明自已相成为某个组的RP
Active bsr收到各个路由器想成为RP的消息后,不任决定,发出这些收集到的信息。To 224.0.0.13
anycast rp
last router从共享树切换到源树是每秒检查一次,从源树切换回源树是每分钟检查一次 |
|