天天看点

组播学习笔记

组播组(g):接收同一个组播地址的设备。

如何区分不同的组播组?根据组播地址来区分。

组播源(s):组播数据包的发送者

组播成员:所有加入某组播组的主机

组播路由器:运行组播协议的设备

组播服务模型

依据接收者接收流量是否针对源进行区分,可分为:
    ASM模型(组成员无法对组播源做出选择时,应该部署ASM服务模型)
    SSM模型(组成员可以对组播源做出选择时,可以部署SSM服务模型)           

ASM :只通过组播地址来唯一的区分不同的组播业务,即不同的组播业务需要分配不同的组播地址,会造成组播地址浪费,但对组成员的能力要求不高,容易部署和维护。接收者只需要事先知道自己要加入的组播地址即可。

SSM:通过组播地址和组播源的地址来唯一的区分不同的组播业务,那么可以实现组播地址重复利用。即同一个组播地址可以使用不同的组播源来提供不同的组播业务。组成员需要事先知道源和组的对应关系。

组播地址-IP地址:

224.0.0.0~224.0.0.255      永久组地址
224.0.1.0~231.255.255.255
233.0.0.0~238.255.255.255
---ASM组播地址,全网范围内有效
232.0.0.0~232.255.255.255   缺省为SSM组播地址,全网范围内有效
239.0.0.0~239.255.255.255   本地管理组地址,仅在本地管理域内有效
           

组播地址-MAC地址

TCP/IP模型 决定所有IP报文都必须封装成帧才能在链路上转发。

单播以太网数据帧:

SMAC:发送该数据帧的三层接口的MAC地址

DMAC:根据目的IP地址通过ARP解析而来

第8bit为1—组播MAC

01-00-5E-0{组播ip地址的后23bit}

组播协议:

IGMP
PIM
           

IGMP

一个网段内主机与组播路由器之间维护组成员关系的协议
版本:IGMPv1、IGMPv2、IGMPv3
           

IGMPv1基本原理

报文:
    普遍组查询(通用组查询报文)
    成员报告报文
报文格式:
    Version:IGMP的版本
    Type:报文类型,1为普遍组查询、2为成员报告
    Group address:组地址
           

1、通用组查询报文General Query

由路由器周期性发送,默认每隔60s发送一次,通过IP报文封装,SIP为路由器接口地址,DIP为224.0.0.1(链路上所有路由器和主机)。

通用组查询报文group address 为0.0.0.0,代表针对所有组播组发起组成员查询。

当组成员接收到通用组查询报文后,随机延时一个0~10s的时间后,发送成员报告报文,SIP为主机自身接口IP,DIP为该主机所属的组播组地址。Group address为该主机所属的组播组地址。

随机延迟时间为0~10s之间一个值,10s称为最大响应时间,实现组成员报告抑制机制,IGMPv1无法修改该时间值。

为什么要设计最大响应时间呢?避免同组的成员重复发送成员报告报文,减少路由器负担。由于组成员报告延迟时间不一致,谁先超时谁先报告。

路由器接收到成员报告之后,将创建(,G)表项,并将收到该成员报告的接口做该(,G)表项的下游接口,未来路由器收到发现该组的组播报文就向该下游接口复制一份,从而发给成员主机所在的网段。

IGMPv1没有设计离组机制,成员离开不会发送任何通知,静默离开,如果该组最后一个成员离开,路由器在130s内接收不到该组的报告报文,则认为该组不存在成员,将(*,G)表项的下游接口删除,停止向该组网段发送该组的组播报文。

IGMPv1没有查询者选举机制。

什么是IGMP查询者呢?当一个网段存在多台路由器时,负责向该网段发送普遍组查询的路由器。

IGMPv1需要PIM协议的DR选举机制来协助查询者的选举,因此启用IGMPv1的接口还需启用PIM协议。由PIM协议选举出该网段上的DR,由DR充当IGMPv1的查询器。

PIM DR的选举规则:

1.根据PIM协议中hello中携带的优先级选举DR,优先级越大,优先成为DR。优先级默认为1。 pim hello-option dr-priority 10

PIM DR具有抢夺性,DR失效后会重新选举DR,充当IGMPv1的查询器

2.优先级相同,则比较接口IP地址的大小,地址大的优先成为DR。

igmp timer query 10,修改IGMP普遍组查询报文的发送间隔。

IGMPv2

在IGMPv1的基础之上新增2种报文:

1.特定组查询报文

2.离组报文

在IGMPv1的基础之上新增3种机制:

1.离组机制

1)当主机要离开某个组时,会发送离组报文。SIP为自身网卡IP,DIP为224.0.0.2(代表链路上的路由器),Group address 为离组的组播地址。

2)路由器收到离组报文后,会发送指定组查询报文,SIP 路由器接口地址,DIP 为主机离组的组地址,Group address为离组的组播地址。

3)指定组查询默认连续以1s为间隔,连续发2次,在“发送间隔发送次数”时间内,如果没有收到该组成员的报告,则认为该组不再存在成员,删除相应的(,G)表项,停止该组播流量转发。

离组报文有2种发送机制 :

(1)只要主机离组,就会发送离组报文。eNSP有离开按钮,会发离组报文。

(2)只有本轮查询的报告者离组时,由报告者发送离组报文,本轮的非报告者离组不发送离组报文,静默离开。

2.查询器选举机制

1)IGMPv2设计了自身的查询器选举机制,接口地址小的成为查询器,具有抢夺性。

2)非查询器会维护一个“其它查询器失效时间”默认为125s。

3)非查询器根据自身的“健壮系数 × IGMP普遍组查询报文发送间隔 + (1/2) × 最大查询响应时间”来计算“其它查询器失效时间”

3.最大响应时间控制机制

IGMPv2、IGMPv3适用的命令:

igmp max-response-time 5 修改通用组查询报文的最大响应时间;

igmp lastmember-queryinterval 3 修改特定组查询报文的最大响应时间,默认1s;

igmp robust-count 3 修改指定组查询报文发送次数IGMPv2、IGMPv3适用,即健壮系数。默认2s;

IGMPv3:

一、IGMPv3的报文类型:

1.通用组查询报文

2.指定组查询报文

3.特定源组查询报文

4.成员报告报文,没有离组报文

二、取消了成员报告抑制报文

报告中的include为空

二层组播转发的机制:

1)IGMP监听

2)CGMP,思科

3)静态组播表项

PIM协议

PIMv2 与协议无关的组播路由协议

网络使用静态、RIP、ISIS、MP-BGP都可以运行PIM协议。

DVMRP 距离矢量组播路由协议

MOSPF 组播OSPF协议

---但是对单播网络有要求,比如DVMRP要求IGP使用RIP,MOSPF要求IGP使用OSPF。“协议相关路由协议”

PIMv2有3种工作模式:

1、密集模式 DM

2、稀疏模式 SM

DM、SM用于支持ASM的组播网络

3、指定源组播模式 SSM

SSM用于支持SSM的组播模式

PIM的作用:

构建、维护组播路由转发表项

运行在路由器和路由器之间

第一跳路由器:和组播源相连的PIM路由器

最后一跳路由器:和组成员源相连的PIM路由器

叶子路由器:与用户主机相连的PIM路由器,连接的用户主机不一定为组成员

源树(SPT树):

组播在网络中传输经过的路由器和路径组成的树

特点:以组播源为根,到组成员的最短路径树

PIM路由表使用(S,G)描述SPT树。S代表组播源地址,G代表组播组的地址

(S,G)表项:

1)有且只有一个上游接口,也称为 RPF 接口(反向路径检测接口),用于接收该(S,G)的组播流量。

2)可以有一个或多个或没有下游接口,用于发送该(S,G)的组播流量。

3)下游接口不可能成为向上游接口。

共享树(RPT树):

以RP(汇聚点)为根一棵组播分发树

优点:只需要维护(*,G)表项,节省设备资源

(*,G)表项:

1)有且只有一个上游接口,也称为 RPF 接口(反向路径检测接口),用于接收该(*,G)的组播流量。

2)可以有一个或多个或没有下游接口,用于发送该(*,G)的组播流量。

对比:

(S,G)组播转发路径最优,需要维护所有已知的(S,G)表项,比较占用设备资源,流量路径比较多,不利于运维和故障定位以及排除。

(*,G)组播转发路由非最优,但无需维护所有的(S,G)表项,设备开销较小,组播流量路径明确,有控制点,方便故障定位和排错。

PIM-DM(密集模式)

“推(Push)”的模式转发组播报文

周期性的扩散和剪枝构建和维护单向无环的SPT树

适用于小型的组播网络

1.邻居发现

Hello消息

目的地址为224.0.0.13、源地址为接口的IP地址、TTL值为1

周期性时间:30s

失效时间:105s

PIM-DR作用:

1、用于充当IGMPv1的查询器

2、PIM-DM模式下,DR没有实际用途。

接口开启PIM,邻居关系就会建立起来。

2.扩散机制

将组播源发送的组播报文扩散到全网

沿途每台PIM-DM路由器创建(S,G)表项

DM模式扩散机制:

1)路由器接收到组播流量后,对接收该流量的接口进行RPF检测。

如果RPF检测成功,则创建(S,G)表项,RPF检测成功的接收成为上游接口,检测失败丢弃该组播流量。

RPF检测机制:根据组播的源地址查找单播路由表,如果接收组播流量的接口是去往组播源地址的单播路由出口,则RPF检测通过,接收该组播流量,并创建(S,G)表项。

如果去往组播源存在多条等价出口,则下一跳地址大的出口,作为RPF接口。RPF接口上的PIM邻居称为RPF邻居。

RPF检测举例:

2)从上游接口接收到的(S,G)流量,从除了RPF接口之外的存在PIM邻居的接口以及存在直连组成员进行扩散。

3.剪枝机制

1)当路由器发现自身不存在任何下游接口时,将发起剪枝机制,向RPF接口上发送剪枝报文,目的地址为224.0.0.13,即该接口上的所有PIM邻居。

上游路由器收到剪枝报文后,如果剪枝报文中携带的RPF邻居地址是自身接口IP,则将自身接收剪枝报文的接口从(S,G)下游接口中删除

①如果剪枝后,下游接口不为空,剪枝结束;

②如果剪枝后,下游接口为空,继续向(S,G)表项RPF的接口发送剪枝报文,向上游继续剪枝。

出现等价出口,三个出接口,谁的地址大,谁就是我的RPF邻居

PIM DM--SPT树的形成

1)经过扩散-剪枝过程,形成组播源与接收者之间SPT树

2)扩散-剪枝周期进行,210s重复一次

DM模式周期性扩散的意义:

1)向全网路由器表明组播源是活跃的。

2)能够维护(S,G)表项不被老化。

4.嫁接(graft)

作用:剪枝的路径上如果存在新组成员的加入,快速获得组播流量

路由器根据组地址查找对应的(S,G)表项;

1)如果没有对应的(S,G)表项则无法完成嫁接。

2)如果有对应的(S,G)表项,那么根据组播源地址查RPF接口,朝RPF接口的RPF邻居发送单播嫁接报文,SIP地址为自身路由器的接口地址,DIP为RPF邻居的地址。

上游RPF邻居接收到嫁接报文,将接收该报文的接口接入到自身(S,G)表项的下游接口中,并单播回复嫁接确认报文。如果这个被嫁接的接口是(S,G)表项唯一的下游接口,则继续向上游发起嫁接;如果这个被嫁接的接口不是(S,G)表项唯一的下游接口,则嫁接结束。

总结:即以前剪枝到哪,就嫁接到哪

5.状态刷新机制

是PIM-DM默认的优化机制,避免了周期性扩散-剪枝行为的发送,导致组播流量占用网络带宽,节省网络资源。

1)第一跳路由器会周期性的发送PIM的状态刷新报文,目的地址为224.0.0.13,即发给所有的PIM邻居,该报文还携带(S,G)的信息。

2)下游路由器收到状态刷新报文后,会重置(S,G)表项的老化时间以及重置剪枝接口的剪枝超时定时器。当组播源不再向网络发送组播流量时,第一跳路由器停止状态刷新报文的发送,全网(S,G)表项超时后被删除。

周期性时间:60s

配置在第一跳路由器连接组播源的接口,默认开启

6.断言机制(assert)

接收到重复的组播流量:

断言:保证只有一个PIM路由器向该网段转发组播报文,实现无重复组播流量

断言报文发给该网段上的所有PIM路由器,即224.0.0.13。

断言报文中携带:1)路由器到达组播源路由的协议优先级;

2)路由器到达组播源路由的开销值
              3)路由器自身在该网段的接口地址           

断言选举机制:1)协议优先级优的成为断言的winner

2)优先级相同,比较开销值小的成为断言的winner
            3)开销值相同,接口地址大的成为断言的winner           

断言的优胜者负责在该网段扩散组播流量,失败者将失败的接口从(S,G)表项删除。

断言的优胜者被下游路由器认为是自己的RPF邻居,比下游路由器自身判断RPF邻居的机制优先。

断言的失败者会在该网段发送剪枝报文,企图将断言优胜者也剪枝掉,断言优胜者如果在3s内收到join报文,则否决剪枝报文,如果3s后没有收到join报文,也将接口从(S,G)表项中删除。剪枝否决机制。

PIM-SM(稀疏模式)

使用“拉”的模式转发组播报文---按需

适用于大型组播网络

以RP为根构建RPT

1.邻居发现和DR竞选

1)邻居发现和PIM-DM一致
2)广播网络中必须进行DR选举
           

PIM-SM的DR分为两种:

1)源端DR:负责发送reg注册报文或者reg-stop报文,构建SPT树。

2)成员端DR:负责发送join报文构建RPT树。

RPT树的创建:

以RP为根,成员端DR发送join报文构建

PIM-SM模式:

PIM网络的路由器

(S,G)一定要事先知道S的地址,以及存在S的路由

(*,G)一定要事先知道RP的地址,以及存在RP的路由

(,G)表项是由收到成员报告报文或者收到(,G)的join报文而被创建的。

(*,G)表项的上行接口是根据RP的地址进行RPF检测得到的。

(,G)表项的下游接口是存在直连组成员或者收到正确的(,G) join报文而被创建出来的。

(,G)表项的下游接口收到(,G)的剪枝报文或者最后组成员leave报文而被删除。当(,G)表项下游接口为NULL时,朝RP的RPF接口发送(,G)剪枝报文。

PIM-SM—RP发现

发现方式:

1)静态RP

2)动态RP

RP的特点:

1.同一个时刻一个组只能有一个RP

2.不同的组可以有相同的RP

一、静态RP

静态RP需要在每台路由器上配置

static-rp 1.1.1.1 ,将1.1.1.1设置为所有组的RP

static-rp 2.2.2.2 2000,将2.2.2.2设置为acl 2000组地址范围的RP

1)如果某个组地址同时满足多条ACL,则掩码长度大的优先,即越精确越优先

3)默认情况下,动态RP优先使用。Preferred:设置静态RP优先。

二、动态RP协议

BSR 自举协议,开放标准的协议。

BSR的工作机制:

1)首先管理员需要手动配置C-BSR路由器,可以是一台或者多台。

2)在所有C-BSR中选举出BSR路由器。

3)如果BSR路由器失效,在其他的C-BSR中重新选举新的BSR路由器。

4)如果只有一台C-BSR,则它成为BSR

选举过程:

1、C-BSR 初始认为自身就是BSR,在所有存在PIM邻居的接口上周期性发送Bootstrap报文,源地址为物理机接口IP,目的地址为224.0.0.13,TTL=1。

2、携带C-BSR的地址、C-BSR的优先级,逐跳在泛洪到整个PIM网络。

选举规则:

1)比较C-BSR的优先级,值越大优先成为BSR

2)优先级相同,C-BSR地址大的成为BSR。

3、竞选失败的C-BSR将不会周期性发送Bootstrap报文,即此刻网络中只有BSR周期性发送Bootstrap报文。周期性时间60s。

4、C-BSR维护一个BSR失效计时器,默认在130s超时,如果没有收到Bootstrap报文,则认为BSR失效,重新进行BSR的选举。

为了防止Bootstrap的泛洪环路,引入BSR RPF检测机制,路由器收到Bootstrap报文,根据BSR的地址进行RPF检测。

只有同时满足以下2个条件时才接收Bootstrap报文,并向其他接口继续泛洪:

1、收到Bootstrap报文的接口为去往BSR的出口。

2、收到的Bootstrap报文的源地址为RPF邻居的地址。

pim

c-bsr loopback0

RP的选举机制:

1、首先管理员需要手动配置C-RP路由器,可以是一台或者多台,C-BSR也可以是C-RP

2、C-RP向BSR的地址发送单播的advertisement报文,源地址为C-RP的竞选地址,目的地址为BSR的地址。

3、Advertisement报文中携带RP的竞选参数,包括C-RP地址、C-RP的优先级、服务的地址组范围

RP选举机制:

1)服务组范围掩码长的优先

2)C-RP优先级值小的优先,默认为0。

3)根据bootstrap报文设置的hash掩码长度计算hash,值大的优先。

4)C-RP地址大的优先。

PIM-SM的SPT切换

1、SPT切换由最后一跳路由器发起

2、当最后一跳路由器接收到从RPT树的组播流量后,可以通过组播流量得知组播源的地址,则默认发起SPT切换,希望构建一棵源到最后一跳路由器的SPT树,实现路由优化。

SPT切换的流程:

1、最后一跳路由器根据组播源的地址进行RPF检测,并向指向组播源的RPF接口上RPF邻居发送(S,G)的join报文,逐跳构建SPT树。

2、当去往组播源地址和去往RP的地址的RPF接口不一致时,路由器沿着去往组播源RPF发送(S,G) (S)join,沿着去往RP的RPF接口发送(S,G) (SR)prune。

沿着RP方向上的路由器将自身(S,G)表项的下游口剪枝掉,实现SPT切换,通过SPT树接收组播流量。

配置命令:

spt-switch-threshold 1000 //检测到组播流量速率达到1000kb时进行SPT切换,阈值默认为0,即收到组播流量就进行切换。阈值为infiity(无限大)时不进行切换(关闭SPT切换)。

上一篇: LAN技术
下一篇: IGMP版本比较