上周的技术贴主要为大家介绍了组播的基础架构以及IGMP的概念,相信大家也是意犹未尽,那么今天小老虎就为大家介绍IGMP Snooping工作机制以及组播动态路由选择协议文末含有三八女神节活动的报名链接哦,赶快参与吧,200元现金等你拿哦!

1

互联网组管理协议嗅探IGMP Snooping

运行在二层设备上的组播约束机制,用于管理和控制组播组成员;运行IGMP Snooping的二层设备就有能力识别所有的IGMP报文,通过对收到的IGMP报文进行分析,为端口和组播IP地址建立起映射关系表项,并根据这样的映射关系精确转发组播数据到达指定组播组成员;

注:思科交换机默认开启IGMP Snooping。

版本:CGMP(初始版本)、IGMP Snooping、IGMP Snooping Proxy(代理)

1)路由器端口(Router Port):

交换机上朝向三层组播设备(DR或IGMP查询者)一侧的端口,如Switch A和Switch B各自的Ethernet1/1端口;交换机将本设备上的所有路由器都记录在路由器端口列表中。

2)成员端口(Member Port):

又称组播组成员端口,交换机上朝向组播组成员一侧的端口,如Switch A的Ethernet1/2和Ethernet1/3端口和Switch B的Ethernet1/2端口;交换机将所有成员端口都记录在IGMP Snooping转发表中。

2

IGMP Snooping工作机制

1、 普遍组查询

IGMP查询者定期向本地网段内的所有主机与路由器(224.0.0.1)发送IGMP普遍组查询报文,以查询该网段有哪些组播组的成员;

2. 报告成员关系

如果主机要加入某个组播组,它会主动向IGMP查询者发送IGMP成员关系通告报文以声明加入该组播组或Report回复查询报文;在收到IGMP成员关系通告报文时,交换机将其通过VLAN内的所有路由器端口转发出去,从该报文中解析出主机要加入的组播组IP地址,并对该报文的接收端口做如下处理:

1)如果不存在该组播组所对应的转发表项,则创建转发表项,将该端口作为动态成员端口添加到出端口列表中,并启动其老化定时器;

2)如果已存在该组播组所对应的转发表项,但其出端口列表中不包含该端口,则将该端口作为动态成员端口添加到出端口列表中,并启动其老化定时器;

3)如果已存在该组播组所对应的转发表项,且其出端口列表中已包含该动态成员端口,则重置其老化定时器。

交换机不会将IGMP成员关系报告报文通过非路由器端口转发出去,因为根据主机上的IGMP成员关系报告抑制机制,如果非路由器端口下还有该组播组的成员主机,则这些主机在收到该报告报文后便抑制了自身的报告,从而使交换机无法获知这些端口下还有该组播组的成员主机。

3. 离开组播组

运行IGMPv1的主机离开组播组时,当其对应的动态成员端口的老化定时器超时后,交换机就会将该端口对应的转发表项从转发表中删除。

运行IGMPv2或IGMPv3的主机离开组播组时,会通过发送IGMP离开组报文,以通知组播路由器自己离开了某个组播组;

当交换机从某动态成员端口收到IGMP离组报文时,首先判断要离开的组播组所对应的转发表项是否存在以及该组播组所对应转发表项的出端口列表中是否包含该接收端口:

-如果不存在该组播组对应的转发表项或该组播组对应转发表项的出端口列表中不包含该端口,交换机不会向任何端口转发该报文,而将其直接丢弃;

-如果存在该组播组对应的转发表项且该组播组对应转发表项的出端口列表中包含该端口,交换机会将该报文通过VLAN内的所有路由器端口转发出去。同时由于不知道该接收端口下是否还有该组播组的其它成员,所以交换机不会立刻把该端口从该组播组所对应转发表项的出端口列表中删除,而是重置其老化定时器。

当IGMP查询者收到IGMP离开组报文后,从中解析出主机要离开的组播组的地址,并通过接收端口向该组播组发送IGMP特定组查询报文。

交换机在收到IGMP特定组查询报文后,将其通过VLAN内的所有路由器端口和该组播组的所有成员端口转发出去。

对于IGMP离开组报文的接收端口(假定为动态成员端口),交换机在其老化时间内如果从该端口收到了主机响应该特定组查询的IGMP成员关系报告报文,则表示该端口下还有该组播组的成员,于是重置其老化定时器;

如果没有从该端口收到主机响应特定组查询的IGMP成员关系报告报文,则表示该端口下已没有该组播组的成员,则在其老化时间超时后,将其从该组播组所对应转发表项的出端口列表中删除。

3

组播动态路由选择协议

让路由器拥有转发组播流量的功能;运行在三层组播设备之间,用于建立和维护组播"路由"并正确、高效地转发组播数据包;组播"路由"建立了从一个信源到多个接收者之间的无环数据传输路径,即组播分发树。

组播"路由"只有在数据流量出现的时候才会存在,在组播流量出现后的180s就会消失;组播"路由"为路由器记录的树形结构信息,包含信源的IP地址、组播流量的组播组地址、流量的入接口(incoming-interface)、流量的出接口信息列表(outgoing-interface-list)。

-IGP:PIM(协议无关组播)、DVMRP、MOSPF、CBT

-EGP:MSDP(组播源发现协议)、MPBGP(BGP v4+)

4

协议无关组播PIM

与单播路由协议无关,但事实上还是依靠单播路由来建立组播PIM邻居;当组播报文到达本地设备时,首先对其进行RPF校验;若RPF校验通过,则创建相应的组播"路由"表项,从而进行组播报文的转发;若RPF检查失败,则丢弃该报文。

反向路径转发RPF(Reverse Path Forwarding):组播路由协议依赖于已有的单播路由信息来创建组播"路由"表项,在创建组播"路由"表项时,使用RPF校验机制,以确保组播数据能够沿着正确的路径传输,避免环路和重复包;路由器收到组播流量,先判断路由器去往信源的单播路由对应的出接口是否是接收组播流量的入接口,如果是,则转发组播流量;如果不是,则丢弃;路由器对于一个信源,RPF接口有且只有一个;

如果路由器去往信源有多条链路,怎么进行RPF接口选择?

1. 如果出接口不一样,则PK出接口地址,接口地址大的选举为RPF接口;

2. 如果出接口一样,下一跳地址不一样,则比较下一跳IP地址大小,下一跳地址大的选举为RPF接口。

3.写组播静态转发信息:ip mroute+信源ip地址/掩码+RPF接口+去往信源的上一跳地址(根据网络类型选择是否需要+去往信源的上一跳地址)。

4.启用MP-BGP路由协议,IPv4 multicast中运行MP-BGP的接口成为RPF接口

如果在路由器上同时运行以上三种方法,在进行组播路径选择的时候首先遵循最长匹配原则,其次比较管理距离(组播静态优于MP-BGP优于单播路由)。

报文封装:Ethernet2|IPv4|PIM|FCS IP协议号103

版本:当前使用版本2

类型:Hello/0 加入/剪枝/3 Assert/5 嫁接/6 嫁接回应/7 状态刷新/9

Hello发送时间为30s,hold 时间为3.5倍hello时间;

Hello发送使用的组播组地址224.0.0.13;路由器之间首先通过发送hello建立PIM邻居;

在MA网络中,需要进行DR选举:先比较接口优先级,取值范围为0-42亿,0表示优先级最低,默认值为1;优先级高的选举为DR;如果优先级一样比较接口地址,大的选举为DR;DR支持抢占,没有BDR;DR在Sparse模式下非常重要。

5

根据实现机制的不同,PIM分为两种模式

1、PIM-DM(Dense Mode密集模式)/推模型,简称最短路径树SPT,也称源树;

由于对路由器消耗大,一般适用于规模较小、组成员密集的局域网内。

1)假设所有主机都需要接收组播报文,将组播数据泛洪到网络的所有节点。

2)对没有组播数据转发的分支进行修剪,只保留有接收者的分支。

3)周期性重复"扩散-修剪"。

4)当被修剪的分支上出现组播组成员时,为了减少该节点恢复成转发状态的时间,适用"嫁接"机制恢复对组播数据的转发。

▶第一跳路由器收到组播流量,首先校验RPF接口,只要RPF接口没有问题,就会把组播流量转发给所有PIM邻居以及所有接收IGMP Report的组播组成员;所有路由器都会形成一个(S,G)组播组表项和一个(*,G)组播组表项。

(S, G)表示"组播源组",通常表示最短路径树或有信源S发往组播组G的组播报文,其中S(source)为信源IP地址,G(group)为组播组地址。

(*, G)表示由任意组播源发往组播组G的组播报文,"*"表示任意组播源,G(group)表示特定组播组地址。

▶组播流量泛洪后3分钟后才会开始修剪,对于没有连接组播组成员或没有下游其他邻居的路由器,会给上游邻居回向发送Prune修剪报文,路由器收到Prune报文不会立即停止发送组播,只有在路由器连接所有邻居的接口都收到Prune报文才会停止发送组播流量;但是不会删除对应的(S,G)组播组表项;每隔3分钟还有再泛洪一次保证新的接入者能够加入。

▶嫁接(Graft)报文为使新加入的组播组成员不需要等待3min就可以正常接收到组播流量;当处在修剪状态的路由器下连接的设备突然出现组播组员,默认3分钟后才会收到组播流量;为加快网络收敛速度,如果路由器有组播接收者想要的对应的组播表项(S,G),该路由器会向上游路由器发送Graft报文,上游路由器收到Graft报文会立即将修剪状态超时并向上游邻居发送Graft报文,组播组流量就可以立马泼了下来。

▶通过断言机制Assert防止重复报文,做负载均衡的路由器通过既能发送又能接收组播流量的接口发送断言报文(断言报文包含:去往信源路由的管理距离、去往信源单播路由的度量值和接口IP地址),通过比较断言报文中的参数("管理距离>度量值>IP地址,管理距离/度量值是越小越好,IP地址是越大越好)选举出Winner,由Assert winner发送组播流量,其他接口不允许转发组播流量。

2、PIM-SM(Sparse Mode稀疏模式)/拉模型;对应两棵树,从信源和RP之间的叫SPT,从RP到接收者之间的叫RPT共享树;比较节省路由器的硬件资源,适用于范围广、组播成员分散的大型网络中;

1)假设所有主机都不需要接收组播报文,先确定下游是否存在接收者。

2)设定汇集点RP(Rendezvous Point)路由器,所有组播数据通过RP转发。

3)最后一跳路由器向RP发送Join报文,该报文逐条发送到RP,所经过的路径就是组播转发路径。

4)信源向RP注册,发送组播数据,RP沿着组播转发路径(RPT)转发数据。

▶首先需要指定一个RP;RP为启用PIM路由器上的一个接口,RP到路由器必须可达,可以指定多个RP但同时工作的只有一个RP。RP接口可以是物理接口,也可以是逻辑接口,建议使用逻辑接口以保持稳定性。

▶最后一跳路由器收到来自组播成员的Report报文,会查看去往RP单播路由的下一跳地址,根据下一跳地址向上一跳邻居路由器发送单播Join报文,邻居路由器会形成(*,G)表项并向RP方向发送Join报文,直到RP收到Join报文。

(*, G):表示共享树(多个源共享一棵树)或由任意组播源发往组播组G的组播报文,"*"表示任意组播源,G表示特定组播组IP地址。

▶第一跳路由器将收到的第一个组播帧封装成单播的PIM报文发送给RP,这个报文称为Register(注册报文);

RP会查看是否有共享树存在,如果有,会将Register报文解封装发送给最后一跳路由器的组播组成员并根据单播路由向信源发送Join报文,沿途的路由器都会形成(S,G)表项,通过两棵树的拼接形成从信源到组播组成员的完整链路;

与此同时RP会给第一跳路由器发送Register-stop报文,第一跳路由器开始发送流量,当流量到达最后一跳路由器,最后一跳路由器有一个阈值(思科默认为0kbps),超过后自动切换成源树(share tree),最后一条路由器向信源发送Join报文;

如果中间路由器到信源有更优的路径,中间路由器发送 RP-bit prune报文给RP阻塞中间路由器到RP的路径(永久阻塞),中间路由器根据IGP路由选择到达信源的最优路径发送组播流量。

在Spare-mode下,如果有多台第一跳路由去往RP,在收到信源发送的组播流量时,只有DR路由器才能给RP发送Register报文;

如果有多台最后一跳路由器,只有选举为DR的那个最后一条路由器才能给RP发送Join报文。

在RPT共享树中,路由器不是基于三层报头的源IP地址的RPF校验,而是基于RP的接口地址进行RPF校验;

5

静态RP

没有冗余,可能会出现单点故障,不常用;手工配置RP地址 ip pim rp-address+环回口地址,需要在所有PIM的路由器上配置;默认RP选举动态优先级高于静态;后面接override参数才能让静态RP生效。

6

Auto-RP

思科私有的选举RP的方式,可以实现RP的自动选举、实现冗余备份;可以在中大型网络中使用;Auto-RP定义了两个角色和报文:

CRP(RP候选者):想成为RP的路由器,每台路由器都能做。

CMA(候选者中继代理):用来判断谁是RP并通告RP消息的路由器。

注:成为CRP或CMA的条件,必须宣告进IGP且接口必须启用任意模式的PIM

宣告报文Announce:接口启用CRP的路由器会自动发送Announce报文(源地址:想成为RP接口地址,目的地址:224.0.1.39)给所有邻居,普通路由器不会监听224.0.1.39报文,只有CMA会监听224.0.1.39;如果有多台路由器参选RP,会比较接口地址,接口地址大的路由器会被选举为RP。

发现报文Discover:选举出RP后,CMA会给邻居路由器发送Discover报文(源地址:CMA接口地址,目的地址:224.0.1.40),然后邻居路由器会泛洪扩散给域内所有路由器。

在Spare模式下,在CRP/CMA是同一台路由器和CRP和CMA直连的情况下,域内选举RP可以成功;对于CRP和CMA不直连的情况,CRP发送Announce报文给邻居时,因为邻居此时不知道RP是谁,会将Announce报文丢弃,RP选举失败。

1、如果想要选举成功,需要将接口模式修改为稀疏密集模式Spare-Dense-mode,接口在Spare模式下无法转发Announce报文,会切换到Dense模式将Announce报文发送给邻居,最终发送给CMA,CMA会将RP信息通过Discover报文发送给域内所有路由器,RP选举成功后正常组播流量会以Spare模式发送。

2.全局配置模式下敲ip pim auto-rp listener (224.0.1.39)敲完这条命令路由器在收到224.0.1.39的报文会以Dense模式发送,对于其他报文以Spare模式发送。

将接口设置为CRP命令:ip pim send-rp-announce loopback 0 scope 255

将接口设置为CMA命令:ip pim send-rp-discover loopback 0 scope 255

7

BSR

共有标准的选举RP的方式,可以实现RP的自动选举且切换速度快,支持冗余备份和负载均衡;BSR也定义了两个角色:

RP-Candidate:相当于RP候选者

C-BSR:相当于候选者中继代理

在BSR环境中,由于候选RP单播发送RP通告给BSR;所以是先选举BSR;BSR初始通告延迟为130s,在初始延迟时间内,BSR不会发送任何报文,而是监听有没有其他的BSR存在,其他BSR周期性(60s)发送BSR通告,

想成为BSR的路由器通过PK选举出C-BSR(先PK优先级,以小为优;优先级一样PK接口地址,以大为优),C-BSR周期性60S/次(2.5倍hold时间)发送BSR通告,通告目的地址为224.0.0.13(PIM的hello地址),内容包含BSR接口地址、BSR优先级、BSR计时器和RP-SET(所有候选RP的信息,初始为空)。

收到BSR通告的路由器会先进行RPF校验:

1.查看单播路由表去往BSR路由的出接口是否是接收BSR通告的入接口。

2.查看去往BSR单播路由的下一跳地址和接收BSR通告三层报头源IP地址是否一致,如果校验成功,则接收BSR报文并通过其他接口产生对应的BSR通告并发出;如果不一致,则丢弃。

8

RP的选举

RP的选举:收到BSR通告的路由器会根据最长匹配原则、比较优先级,以小为优、比较RP接口地址,以大为优;

Auto-RP由CMA确定RP,BSR是由各自选举出适合自己的RP,以实现RP的负载均衡。

(Route-config)# ip pim rp-candiate loopback 0 priority

(Route-config)# ip pim bsr-candiate loopback 0 priority

(route)# Show ip pim bsr-router

三八女神节活动火热进行中

灵魂画手们注意了!

请提笔尽情发挥

为你宝贵的口罩发挥最后一丝余热!

在口罩上为一线工作人员

送去3.8女神节的祝福吧!

详情点击“阅读全文”

最高赢取200元现金奖励 快快扫码参与吧

想要获取更多知识点免费公开课录播课

以及和众多网工朋友们battle网工技术

欢迎扫码进群 超多福利等你来

END

组播vlan_【参与方式】耗时10小时编撰(下)带你轻松通关组播知识点!相关推荐

  1. 加入rtp组播_耗时10+小时撰写 带你系统认识组播 收藏这些概念

    组播multicast:在一个或跨越多个广播域,实现点对多点的通信需求,不存在强制性:比单播技术更加灵活.比广播技术更加高效:广泛应用在网络电视.在线直播.远程教育.视频会议等对带宽和数据交互实时性较 ...

  2. 10小时训练数据打造多语种语音识别新高度

    本文联合撰写: 腾讯:吕志强,颜京豪,胡鹏飞,康健,阿敏巴雅尔 导语|在刚刚结束的NIST OPENASR评测中,TEG AI语音联合清华大学,刷新世界小语种语音识别比赛6项第一.从2000年开始,N ...

  3. 信息学奥赛一本通 1179:奖学金 | 1938:【07NOIP普及组】奖学金 | OpenJudge NOI 1.10 04 | 洛谷 P1093 [NOIP2007 普及组] 奖学金

    [题目链接] ybt 1179:奖学金 ybt 1938:[07NOIP普及组]奖学金 OpenJudge NOI 1.10 04:奖学金 洛谷 P1093 [NOIP2007 普及组] 奖学金 [题 ...

  4. Laravel 5.6 中文文档翻译完成,译者 60 人,耗时 10 天

    图片来自 laravel-news.com Laravel 5.6 的文档地址: Laravel 5.6 文档页面 总结 Laravel 5.6 文档翻译完成,总共耗时 10 天,参与用户 60 人. ...

  5. CSDN 联合 18 家大厂招聘直播,10 小时突破百万热度!

    为满足企业用工需求,更为圆 CSDN 程序员用户们的"大厂"梦.5 月 15 日 12 时, 由 CSDN 举办的「遇到 Offer-就要圆你的大厂梦」10 小时在线招聘直播活动, ...

  6. 如何构建计算机家庭组,如何创建和管理 Windows 10 家庭组

    Windows 10 家庭组是一种小型局域网网络文件共享解决方案,其在 Windows 中存在已久.使用家庭组可以让本地网络中的任意 Windows 10 设备方便地访问到其它 PC 上所的共享文件和 ...

  7. 「技术播客月」Day 10: Meta Podcast: 聊聊播客这件事

    首届·技术播客月第10天的直播正在火热进行中~ 今晚将由 「Nebula Graph 星球」 「编码人声」 「开源面对面」 三档播客节目为我们带来精彩的议题: 「Meta Podcast: 聊聊播客这 ...

  8. 带你走进华为组播IGMP 简单易懂

    哈喽,大家好!我是艺博东 ,一个思科出身专注于华为的网工:好了,话不多说,我们直接进入正题. 文章目录 IGMP lGMPv1 lGMPv2 lGMPv3 IGMP Snnoping PIM IGMP ...

  9. CSDN 联合 18 家大厂招聘直播,10 小时突破百万热度

    为满足企业用工需求,更为圆 CSDN 程序员用户们的"大厂"梦.5 月 15 日 12 时, 由 CSDN 举办的「遇到 Offer-就要圆你的大厂梦」10 小时在线招聘直播活动, ...

最新文章

  1. Python 的基本数据类型
  2. 从ICLR提交论文看机器学习的趋势和风口
  3. 【Linux 内核】线程调度示例一 ② ( 获取指定调度策略的最大和最小优先级 | 代码示例 )
  4. QT的QLatin1String类的使用
  5. java filter注入_如何使用Filter过滤请求中的SQL注入攻击
  6. Ubuntu18.04提示wifi无法连接
  7. C++学习之路 | PTA(天梯赛)—— L2-010 排座位 (25分)(带注释)(并查集)(精简)
  8. drupal 多语言_小小的开源机器人,Drupal的创造者,应对我们不断变化的经济,以及更多
  9. Android技能树 — 网络小结(6)之 OkHttp超超超超超超超详细解析
  10. C#中读取文本文件导入SQL数据库解决方法
  11. 26. Location assign() 方法
  12. mongoddb常用增删改查命令--推荐查询命令:
  13. Redis进阶不得不了解的内存优化细节
  14. 浏览器发送POST请求、DELETE请求
  15. 链接了GitHub的文件,在Pycharm不同颜色的不同含义
  16. linux ccid驱动下载,ccid驱动支持
  17. 一体广告机实现思路,非常实用(一)
  18. 百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系互转
  19. bash中的字符串长度
  20. HOOF(Histogram of Oriented Optical Flow)特征

热门文章

  1. 评分 9.7!这本 Python 书彻底玩大了?程序员:满分!
  2. 百元价位的水下相机?!1000个去海边的人有900个选择了它!
  3. wxPython + PyOpenGL 打造三维数据分析的利器!| CSDN 博文精选
  4. 代码编辑器横评:为什么 VS Code 能拔得头筹?| 程序员硬核评测
  5. 调查 10,500 名 Java 开发者发现,收费的 OracleJDK 仍是主流、IntelliJ IDEA 最受欢迎...
  6. AI 人才缺失催生跨境猎头:人才年薪高达 300 万,猎头直赚 100 万
  7. 辽宁职称计算机和英语考试,2018年辽宁职称计算机报考有哪些要求?
  8. Java开发中遇到最难的问题!java定义list集合
  9. day13【前台】搭建环境
  10. Stopping filebeat