ip 组 播 基 础

63
1 1 IP 组 组 组 组 组组

Upload: akio

Post on 18-Mar-2016

87 views

Category:

Documents


7 download

DESCRIPTION

内容. IP 组 播 基 础. 1. Geekometer. 内容. 为什么组播? 组播编址 主机-路由器通告: IGMP 组播分发树 组播转发 组播路由协议. 单播 vs 组播. 单播. 服务器. 路由器. 组播. 服务器. 路由器. 组播的优势. 提高 效率 : 控制网络流量,减轻服务器和 CPU 负荷 优化 性能 : 减少冗余流量 分布式应用 : 使多节点应用成为可能. 例如: 收听电台广播流 所有的客户端都接收相同的 8 Kbps 电台广播. 组播. 单播. 0.8. 0.6. 流量. 0.4. Mbps. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: IP  组 播 基 础

11

IP 组 播 基 础内容

Page 2: IP  组 播 基 础

2

内容

• 为什么组播为什么组播 ??• 组播编址• 主机 - 路由器通告 : IGMP • 组播分发树• 组播转发• 组播路由协议

Geekometer

Page 3: IP  组 播 基 础

3

服务器路由器

单播

服务器路由器

组播

单播 vs 组播

Page 4: IP  组 播 基 础

4

例如 : 收听电台广播流所有的客户端都接收相同的 8 Kbps 电台广播

• 提高提高效率效率 : 控制网络流量,减轻服务器和 CPU 负荷• 优化优化性能性能 : 减少冗余流量• 分布式应用分布式应用 : 使多节点应用成为可能

00.20.40.60.8

流量Mbps

1 20 40 60 80 100客户端数量

组播单播

组播的优势

Page 5: IP  组 播 基 础

5

组播的劣势

• 尽力投递尽力投递 :报文丢失是不可避免的。因此组播应用程序不能依赖组播网络进行可靠性保证,必须针对组播网络的这个特点进行特别设计。“可靠组播”目前仍然处于研究阶段。

• 没有拥塞避免机制没有拥塞避免机制 : 缺少 TCP 窗口机制和慢启动机制,组播可能会出现拥塞。如果可能的话,组播应用程序应该尝试检测并避免拥塞。• 报文重复报文重复 : 某些组播协议的特殊机制(如 Assert 机制和 SPT 切换机制)可能会造成偶尔的数据包的重复。组播应用程序应该容忍这种现象。• 报文失序报文失序 : 同样组播协议有的时候会造成报文到达的次序错乱,组播应用程序必须自己采用某种手段进行纠正(比如缓冲池机制等)。

组播是基于 UDP 的 !!!

Page 6: IP  组 播 基 础

6

适合于组播的应用• 多媒体

– 流媒体– 培训、联合作业场合的通信– 视频 / 音频会议

• 数据仓库• 金融应用(股票)• 任何的“单到多”数据发布应用

Page 7: IP  组 播 基 础

7

内容• 为什么组播 ?• 组播编址组播编址• 主机 - 路由器通告 : IGMP • 组播分发树• 组播转发• 组播路由协议

Page 8: IP  组 播 基 础

8

一个组播组就是一个 IP 地址,不表示具体的主机,而是表示一系列系统的集合,主机加入某个组播组 即 声明自己接收某个 IP 地址的报文。• IP 组播组地址

– 224.0.0.0–239.255.255.255– “D” 类地址空间

• 第一个字节的高四位 = “1110”

• 保留的本地组播组地址– 224.0.0.0–224.0.0.255– 发送报文时 TTL = 1– 例如 :

• 224.0.0.1 子网的所有系统• 224.0.0.2 子网的所有路由器• 224.0.0.4 DVMRP 路由器• 224.0.0.5 OSPF 路由器• 224.0.0.13 PIMv2 路由器

组播编址

Page 9: IP  组 播 基 础

9

• 管理范围地址( Administratively Scoped Addresses )– 239.0.0.0–239.255.255.255– 私有地址空间

• 类似于 RFC1918 的单播地址• 不能用于 Internet 全局传输• 用于有限范围内的组播传输

组播编址

Page 10: IP  组 播 基 础

10

32 Bits28 Bits

25 Bits 23 Bits48 Bits

01-00-5e-7f-00-01

1110

5 BitsLost

组播编址IP 组播 MAC 地址映射 (FDDI 和以太网 )

239.255.0.1

Page 11: IP  组 播 基 础

11

224.1.1.1224.129.1.1225.1.1.1225.129.1.1 . . .238.1.1.1238.129.1.1239.1.1.1239.129.1.1

0x0100.5E01.0101

相同的组播 MAC 地址(FDDI 和以太网 )

32 - IP 组播地址

Multicast Addressing

注意存在 32 IP -> 1 MAC 地址重叠IP 组播 MAC 地址映射 (FDDI 和以太网 )

Page 12: IP  组 播 基 础

12

内容• 为什么组播 ?• 组播编址• 主机主机 -- 路由器通告路由器通告 : : IGMPIGMP • 组播分发树• 组播转发• 组播路由协议

Page 13: IP  组 播 基 础

13

• 路由器向直连的所有主机询问组播组成员关系• RFC 1112 -- IGMP版本 1

Windows 95支持• RFC 2236 -- IGMP版本 2

Windows98后的版本及大多数 UNIX 系统• IGMP版本 3 目前仍然是一个草案( draft )

draft-ietf-idmr-igmp-v3-03.txt

• 主机如何告诉路由器组播组成员关系-- 通过 IGMP 协议: Internet 组管理协议 :

主机 - 路由器通告 : IGMP

Page 14: IP  组 播 基 础

14

H3

• Host sends IGMP Report to join group

H3224.1.1.1

报告H1 H2

加入一个组主机 - 路由器通告 : IGMP

Page 15: IP  组 播 基 础

15

• 路由器周期性地向 224.0.0.1 发送查询

查询

• 主机发送单个组的报告

224.1.1.1

报告

• 组的其他成员监听到报告后抑制报告发送

224.1.1.1

抑制X224.1.1.1

抑制XH1 H2 H3

维护这个组主机 - 路由器通告 : IGMP

Page 16: IP  组 播 基 础

16

• 主机“默不作声”地离开组(不发报告了)

H1 H3H3 #1#1

• 路由器发送 3 个普遍组查询 ( 间隔 60秒 )

普遍组查询#2#2

• 路由器没有收到这个组的 IGMP 报告• 组播组超时(离开) (最大可能延迟 ~= 3 分钟 )

H2

离开组播组 (IGMPv1)

主机 - 路由器通告 : IGMP

Page 17: IP  组 播 基 础

17

• 主机向 224.0.02 发送离开组消息(包含离开的组)

H1 H3H3

离开组报告224.0.0.2

224.1.1.1

#1#1

• 路由器向这个组( 224.1.1.1 )发送特定组查询

特定组查询224.1.1.1

#2#2

• 3秒钟内没有收到该组的报告• 组 224.1.1.1超时(离开)

H2

离开组播组 (IGMPv2)

主机 - 路由器通告 : IGMP

Page 18: IP  组 播 基 础

18

•draft-ietf-idmr-igmp-v3-??.txt•其应用仍然在测试阶段

– 允许主机指定接收某些网络发送的某些组播组,相比以前的版本,增加了主机的控制能力,不仅可以指定组播组,还能指定组播的源。

IGMPv3

Page 19: IP  组 播 基 础

19

内容• 为什么组播 ?• 组播编址• 主机 - 路由器通告 : IGMP • 组播分发树组播分发树• 组播转发• 组播路由协议

Page 20: IP  组 播 基 础

20

最短路径树(基于源的分发树)

接收者 R1

B

E

A D F

源 S1

组播路由项(S, G), iif, oiflist•S 源地址•G 组地址•iif 入接口•oiifs 出接口列表

C

接收者 R2

源 S2

组播分发树

Page 21: IP  组 播 基 础

21

接收者 R1

B

E

A D F

源 S1

C

接收者 R2

源 S2

组播分发树最短路径树(基于源的分发树)

组播路由项(S, G), iif, oiflist•S 源地址•G 组地址•iif 入接口•oiifs 出接口列表

Page 22: IP  组 播 基 础

22

组播分发树共享分发树

接收者 R1

B

E

A D F

C

接收者 R2

(RP) PIM汇聚点共享树

(RP)

组播路由项(*, G), iif, oiflist•* 任何源地址•G 组地址•iif 入接口•oiifs 出接口列表

Page 23: IP  组 播 基 础

23

组播分发树共享分发树

接收者 R1

B

E

A F

源 S1

C

接收者 R2

源 S2

(RP) PIM汇聚点共享树源树

D (RP)

组播路由项(*, G), iif, oiflist•* 任何源地址•G 组地址•iif 入接口•oiifs 出接口列表

Page 24: IP  组 播 基 础

24

组播分发树

• 源树(最短路径树)占用内存较多 O(S x G) ,但路径最优,延迟最小

• 共享树占用内存较少 O(G) ,路径不是最优的,引入额外的延迟

不同分发树的不同分发树的特征特征

Page 25: IP  组 播 基 础

25

内容• 为什么组播 ?• 组播编址• 主机 - 路由器通告 : IGMP • 组播分发树• 组播转发组播转发• 组播路由协议

Page 26: IP  组 播 基 础

26

组播转发

• 组播路由和单播路由是相反的– 单播路由关心数据报文要到哪里去。– 组播路由关心数据报文从哪里来。

• 组播路由使用 “反向路径转发”机制(RPF, Reverse Path Forwarding)

Page 27: IP  组 播 基 础

27

组播转发

• 何谓何谓 RPF?RPF?路由器收到组播数据报文后,只有确认这个数据报文是从自己到源的出接口上到来的,才进行转发,否则丢弃报文。

• RPFRPF 检查检查• 在单播路由表中查找到组播报文源地址的路由• 如果该路由的出接口就是报文的入接口, RPF 成功• 否则 RPF 失败

反向路径转发 (RPF)

Page 28: IP  组 播 基 础

28

组播转发

源151.10.3.21

举例 : RPFRPF 检查检查

组播报文RPFRPF 检查失败检查失败 报文从错误接口到来报文从错误接口到来 !!

Page 29: IP  组 播 基 础

29

组播转发

RPF 检查失败 ! 单 播 路 由 表单 播 路 由 表网络网络 接口 接口151.10.0.0/16151.10.0.0/16 S1S1198.14.32.0/24198.14.32.0/24 S0S0204.1.16.0/24204.1.16.0/24 E0E0

看得更仔细点 : RPFRPF 检查失败检查失败

报文从错误接口到达E0

S1

S0

S2

S1S1

源 151.10.3.21发出的组播数据报文

X丢弃数据报文!

Page 30: IP  组 播 基 础

30

组播转发看得更仔细点 : RPFRPF 检查成功检查成功

RPF 检查成功 ! 单 播 路 由 表单 播 路 由 表网络网络 接口 接口151.10.0.0/16151.10.0.0/16 S1S1198.14.32.0/24198.14.32.0/24 S0S0204.1.16.0/24204.1.16.0/24 E0E0

E0S1

S0

S2

源 151.10.3.21发出的组播数据报文

数据报文从正确的接口到达 !S1S1

向所有出接口 ( 即分发树的下游 ) 转发

Page 31: IP  组 播 基 础

31

内容• 为什么组播 ?• 组播编址• 主机 - 路由器通告 : IGMP • 组播分发树• 组播转发• 组播路由协议组播路由协议

Page 32: IP  组 播 基 础

32

组播路由 vs 单播路由

组播路由不是单播路由!是完完全全的新东西,不象 OSPF ,也不象RIP ,不象你熟悉的任何东西。不过,不要害怕啊,一会儿就懂了。

Page 33: IP  组 播 基 础

33

组播路由协议的类型

•密集模式( Dense-mode )• 使用“推”( Push )模型(先给你,可以不要)• 组播数据整网络的泛滥( Flood )• 下游不想接收的话则剪枝( Prune )• 泛滥、剪枝、泛滥、剪枝…周而复始 ( 通常 3 分钟折腾一次 )

•稀疏模式( Sparse-mode )• 使用 “拉”( Pull )模型(你要了,才给你)• 组播数据只发送到有需要的地方• 有显式的加入( Join )过程

Page 34: IP  组 播 基 础

34

组播路由协议一览•目前,主要有 4 个组播路由协议 :

– DVMRPv3 (草案 )– DVMRPv1 (RFC 1075)已经废止。

– MOSPF (RFC 1584)– PIM-DM (Internet草案 )– PIM-SM V2 (RFC 2362) –其他 (CBT, OCBT, QOSMIC, SM, 等等 )

Page 35: IP  组 播 基 础

35

DVMRP简介距离矢量组播路由协议( Distance Vector Multicast Routing Protocol ),一个较为古老,具有实验性质的协议,现已经不常使用,鲜有厂家设备支持。•密集模式协议

– 基于距离矢量•类似于 RIP•最大 32跳

– DVMRP 依赖自己找回来的单播路由 : •进行 RPF 检查•创建“截断广播树” (TBT, 一种组播分发树型结构 )

– 使用特殊的“毒性逆转”机制– 使用泛滥和剪枝机制

•组播数据开始时延 TBT 向下泛滥•当下游不需要该数据时对 TBT枝杈进行剪枝•剪枝每过一定时间超时,重新延枝杈进行泛滥

Page 36: IP  组 播 基 础

36

DVMRP评价• 广泛用于 MBONE (古老的组播实验网络,很少有人在里面玩儿了 )

– 慢收敛—类似 RIP– 路由器中组播路由状态信息庞杂,到处都是 (S,G)– 不支持共享树– 最大不能超过 32跳– 不适合于大规模的网络(泛滥剪枝机制、可伸缩性差)

Page 37: IP  组 播 基 础

37

MOSPF (RFC 1584)

• 对 OSPF 单播路由协议的扩展– OSPF: 路由器使用链路状态通告来获取整个网络的可用链路信息– MOSPF: 在 OSPF链路状态通告中包含组播信息,以此构建组播分发树 (每个路由器都维护整个网络的最新拓扑信息 )

• 组成员关系 LSA (链路状态通告)向 OSPF 路由域整网泛滥,这样 MOSPF 路由器就可以计算出接口列表• 使用狄杰克斯特拉算法( Dijkstra algorithm )来计算最短路径树

– 为每个 (SNet, G) 对都需要单独的计算

Page 38: IP  组 播 基 础

38

MOSPF评价•与单播路由协议相关,仅在 OSPF 网络内运行• 可伸缩性不好

– 每个组播 (SNet, G) 对都需要使用 Dijkstra算法进行计算!– 不支持共享树

• 不适合于…– 通用的组播网络,其中发送者可能会非常的多

• 如 IP/TV—(每个 IP/TV 客户端都是一个组播源 )

•支持厂家较少,市场鲜有使用

Page 39: IP  组 播 基 础

39

PIM-DM

• 协议无关组播( Protocol Independent Multicast )– 支持所有的单播路由协议 : 静态路由、 RIP 、 IGRP 、 IS-

IS 、 BGP 、 OSPF ,总之了,单播路由是什么都没关系。• 使用逆向路径转发( RPF )机制

– 先向网络泛滥 (Flood) ,然后根据组播组成员关系进行剪枝 (Prune)

– 使用 Assert 机制来剪枝冗余数据流• 适合于 ...

– 小规模的网络

PIMPIM 可是可是好东西啊!好东西啊!

Page 40: IP  组 播 基 础

40

PIM-DM 泛滥与剪枝

组播源

初始泛滥

接收者

组播数据报文网络中的网络中的每个每个路由器路由器都创建都创建 (S, G)!

Page 41: IP  组 播 基 础

41

PIM-DM 泛滥与剪枝

组播源

剪枝不需要的数据流

接收者

组播数据报文 剪枝消息

Page 42: IP  组 播 基 础

42

PIM-DM 泛滥与剪枝剪枝之后,看 ...

组播源

接收者

组播数据报文泛滥和剪枝过程每泛滥和剪枝过程每 33 分钟分钟重复一次重复一次 !!!!!!

网络中的网络中的每个每个路由器路由器中仍然保留中仍然保留 (S, G)!

Page 43: IP  组 播 基 础

43

PIM-DM Assert 机制

E0

进入路由器的组播数据报文(RPF 检查都成功 )

E0

S0

路由器从其“出接口列表” (oiflist)中的某个接口收到数据 !!!–只有其中一个路由器应该继续发送数据,以避免重复11

S0

11

22 路由器发送 “ PIM Assert”消息

Assert<distance, metric>

Assert<distance, metric>

2222

– 计算 distance 和 metric值– 谁到源的路由最优谁获胜– 如果 distance 和 metric 相等, IP 地址大的获胜– 输的就停止转发 (剪枝接口 )

Page 44: IP  组 播 基 础

44

PIM-DM 评价• 对于小型网络来说非常有效• 优势 :

– 易于配置 --总共只有两条命令– 实现机制简单(泛滥剪枝)

•潜在问题 ...– 泛滥剪枝过程不够高效– 复杂的 Assert 机制– 控制和数据平面混合

•导致网络内部的所有路由器上都有 (S, G)•可能会导致非确定性的拓扑行为

– 不支持共享树

Page 45: IP  组 播 基 础

45

PIM-SM (RFC 2362)

•支持共享树和源树– 假设没有主机需要接收组播数据,除非它们明确地发出了请求(你不说我怎么知道你要呢?你要要你就说嘛,你说要我会给你的,…

.!@#$#$… :-) )• 使用“汇聚点” (RP, Rendezvous Point)

– 发送者和接收者在 RP 处进行汇聚• 发送者的第一跳路由器把发送者注册到 RP上(报个到,挂个号)• 接收者的 DR (直连网络上的负责人)为接收者加入到共享树 ( 树根在

RP)

• 适合于…– 大规模的企业网络– 是任何网络的优选方案,不管其规模和成员密集程度。(蛮夸张的哦 :-) ,不过现如今 PIM-SM倒真是横扫一切)

这个 RP很重要哦!

Page 46: IP  组 播 基 础

46

PIM-SM 共享树加入

接收者

RP

(*, G) 加入 共享树

(*, G) 仅在共享树沿途建立

Page 47: IP  组 播 基 础

47

PIM-SM 发送者注册

接收者

RP

(S, G) 加入

组播源

共享树 (S, G) 注册 ( 单播 )

源树

(S, G)仅在源树沿途建立 数据流

Page 48: IP  组 播 基 础

48

PIM-SM 发送者注册

接收者

RP组播源

共享树源树 RP 向第一跳路由器发送注册停止( Register-Stop )消息,停止注册过程

(S, G) 注册停止 ( 单播 )

数据流

(S, G) 注册 ( 单播 )

数据流从组播源通过源树到达 RP

Page 49: IP  组 播 基 础

49

PIM-SM 发送者注册

接收者

RP组播源

共享树源树

数据流 源数据流延源树( SPT )流向 RP从 RP开始,数据流延共享树( RPT )流向接收者

Page 50: IP  组 播 基 础

50

PIM-SM SPT 切换

接收者

RP

(S, G) Join

组播源

Source TreeShared Tree

Last-hop router joins the Source Tree.

Additional (S, G) State is created along new part of the Source Tree.

Traffic Flow

Page 51: IP  组 播 基 础

51

PIM-SM SPT 切换

接收者

RP组播源

Source TreeShared Tree

(S, G)RP-bit Prune

Traffic begins flowing down the new branch of the Source Tree.Additional (S, G) State is created along along the Shared Tree to prune off (S, G) traffic.

Traffic Flow

Page 52: IP  组 播 基 础

52

PIM-SM SPT 切换

接收者

RP组播源

Source TreeShared Tree

(S, G) Traffic flow is now pruned off of the Shared Tree and is flowing to the Receiver via the Source Tree.

Traffic Flow

Page 53: IP  组 播 基 础

53

PIM-SM SPT 切换

接收者

RP组播源

Source TreeShared Tree

(S, G) traffic flow is no longer needed by the RP so it Prunes the flow of (S, G) traffic.

Traffic Flow

(S, G) Prune

Page 54: IP  组 播 基 础

54

PIM-SM SPT 切换

接收者

RP组播源

Source TreeShared Tree

(S, G) Traffic flow is now only flowing to the Receiver via a single branch of the Source Tree.

Traffic Flow

Page 55: IP  组 播 基 础

55

PIM-SM

QuidwayQuidway 系列设备中(系列设备中( VRPVRP ),),缺省情况下缺省情况下,,连接接收者的路由器在探测到组播源之后(即接收到第一个数据报文),便立即加入最短路径树(源树),即从 RPT 向SPT 切换

PIM-SMPIM-SM 常被忽略的事实常被忽略的事实

Page 56: IP  组 播 基 础

56

PIM-SM BSR 机制BSR 是标准的 RP 选举与维护机制,所有支持 PIM-SM 的设备都会支持 BSR 机制。

BSR 是 PIM-SM 网络里的管理核心。

Page 57: IP  组 播 基 础

57

BSR概要• BSR 即“ BootStrap Router” ,自举路由器

– 负责在 PIM-SM 网络启动后,收集网络内的 RP 信息,为每个组选举出 RP ,然后将 RP 集(即组 -RP 映射数据库)发布到整个 PIM-SM 网络。

• 一个网络内部只有一个 BSR– 可以配置多个候选 BSR (C-BSR)

• 一旦某个 BSR Down 掉,可以切换到另外一个– 候选 RP ( C-RP )将声明发送到 BSR

• C-RP 通告通过单播发送• BSR 在 RP 集存储所有的 C-RP 通告

– BSR 周期性地向所有路由器发送 BSR 消息• BSR 消息包含整个 RP-set 和 BSR 地址• 消息一跳一跳地自 BSR 向整个网络泛滥( flood )

– 所有的路由器使用收到的 RP 集来确定 RP• 所有路由器都使用相同的 RP 选择算法,选择的 RP 也是一致的

Page 58: IP  组 播 基 础

58

BSR 基础•候选 RP

– 通过全局命令配置– ip pim rp-candidate interface-name [group-list acl]

– C-RP消息单播至 BSR• 从 BSR消息中获得 BSR 地址• C-RP 通告周期发送 ( 缺省 60秒 )

– C-RP 通告消息包括 :• 服务组范围 ( 缺省 = 224.0.0.0/4)• C-RP 地址• Holdtime = 3 x <rp-announce-interval>

Page 59: IP  组 播 基 础

59

BSR 基础•BSR

– 接收 C-RP 通告消息• 接收并存储所有 C-RP消息

– 生成 BSR消息• 向 All-PIM-Routers (224.0.0.13) 组以组播方式发送

– ( TTL = 1)• 向所有接口发送,一跳一跳地传播开去。• 每 60秒钟或者发现有 RP 信息变化时发送

– BSR消息包括 :• BSR 的“组 -RP” 映射• 激活 BSR 地址

Page 60: IP  组 播 基 础

60

BSR 基础•C-BSR

– 通过全局命令配置 ip pim bsr-candidate interface-name [hash-mask-length] [priority]–interface-name

» 确定 IP 地址– hash-mask-length

» RP选择 hash算法中的掩码长度– priority

» C-BSR 优先级 ( 缺省 = 0)

– C-BSR 优先级高的成为 BSR– 优先级相同的话地址高的优先

Page 61: IP  组 播 基 础

61

BSR 基础•所有的 PIMv2 路由器

– 接收 BSR消息• 存储“组 -RP” 映射• 确定 BSR 地址

– 使用 Hash算法计算 RP• 所有路由器使用相同算法,结果一致• 实现 RP 负载分担(不同组映射到不同 RP )

Page 62: IP  组 播 基 础

62

PIM-SM 网络

C-RP C-RP

D

E

F

G

A

BSR 基础

BSR消息

BSR消息BSR消息B

SR消息

C-RP 通告( 单播 )

C-RP 通告( 单播)

BSR消息一跳一跳向外扩散

B C

BSR

Page 63: IP  组 播 基 础

63

PIM-SM评价• 对于稀疏和密集应用都很高效• 优势 :

– 数据流仅延“加入”的分支向下发送– 可以根据流量等条件动态地切换到源树– 与具体的单播路由协议无关,愿谁谁– 域间组播路由的基础

•和 MBGP 、 MSDP共同结合使用可以完成跨域的组播