组播学习笔记-阿里云开发者社区

开发者社区> 宛如清北111> 正文

组播学习笔记

简介: R&S
+关注继续查看

组播组(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)的组播流量。
3)下游接口不可能成为向上游接口。

对比:
(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切换)。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
怎么设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程
6836 0
阿里云服务器ECS远程登录用户名密码查询方法
阿里云服务器ECS远程连接登录输入用户名和密码,阿里云没有默认密码,如果购买时没设置需要先重置实例密码,Windows用户名是administrator,Linux账号是root,阿小云来详细说下阿里云服务器远程登录连接用户名和密码查询方法
2782 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4397 0
使用OpenApi弹性释放和设置云服务器ECS释放
云服务器ECS的一个重要特性就是按需创建资源。您可以在业务高峰期按需弹性的自定义规则进行资源创建,在完成业务计算的时候释放资源。本篇将提供几个Tips帮助您更加容易和自动化的完成云服务器的释放和弹性设置。
7735 0
windows server 2008阿里云ECS服务器安全设置
最近我们Sinesafe安全公司在为客户使用阿里云ecs服务器做安全的过程中,发现服务器基础安全性都没有做。为了为站长们提供更加有效的安全基础解决方案,我们Sinesafe将对阿里云服务器win2008 系统进行基础安全部署实战过程! 比较重要的几部分 1.
5409 0
阿里云服务器安全组设置内网互通的方法
虽然0.0.0.0/0使用非常方便,但是发现很多同学使用它来做内网互通,这是有安全风险的,实例有可能会在经典网络被内网IP访问到。下面介绍一下四种安全的内网互联设置方法。 购买前请先:领取阿里云幸运券,有很多优惠,可到下文中领取。
9407 0
腾讯云服务器 设置ngxin + fastdfs +tomcat 开机自启动
在tomcat中新建一个可以启动的 .sh 脚本文件 /usr/local/tomcat7/bin/ export JAVA_HOME=/usr/local/java/jdk7 export PATH=$JAVA_HOME/bin/:$PATH export CLASSPATH=.
2121 0
9
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载