组播技术补充知识点
作者:互联网
组播流量负载分担:
概念:
“负载分担”与“负载均衡”是不同的概念。“负载分担”是指如果发往某一目的地的数据流存在多条等价的转发路径,就将数据在这多条路径上转发,达到分流的目的。在进行数据转发时,每一条路径上转发的数据流量并不一定相同,转发流量多少需要根据负载分担方式来决定。“负载均衡”属于“负载分担”的一种特殊形式,不仅将数据流在这多条路径上转发,并且每条路径转发等量的数据流量。
机制:
缺省情况下,组播报文转发过程中如果存在多条等价的最优转发路径,按照RPF检查对等价路由的处理规则分两种情况:
• 如果这几条等价路由都是来自同一张路由表项,比如单播路由表、组播静态路由表或者MBGP路由表中的一种,则选取下一跳地址最大的路由作为RPF路由。
• 如果这几条等价路由来自不同的路由表,首先会比较路由优先级,再比较掩码长度。如果上述都相同,则设备会根据一定的函数计算选取出一条路由作为RPF路由。
无论上述哪种情况,设备在RPF检查时都只会选取出一条路由作为RPF路由,进行组播报文转发。
“组播负载分担”是指如果存在多条等价的最优转发路径时,不按照RPF检查规则来选取下一跳地址最大的路由,而是根据配置的组播负载分担方式将组播流在这多条路径上进行分流转发。
如图所示,组播源Source向组播组G发送组播流,路由器RouterA和RouterD之间运行某种IGP协议(如OSPF)RouterA→RouterB→RouterD和RouterA→RouterC→RouterD是2条等价转发路径。缺省情况下,根据RPF检查规则,组播流会从Int0端口转发,因为Int0的IP地址比Int1地址大。配置组播负载分担之后,就不会根据下一跳地址来选取转发路径,RouterA→RouterB→RouterD和RouterA→RouterC→RouterD都会转发组播流。
组播负载分担方式:
对于来自任意源组播(*,G)或指定源(S,G)组播的数据流,“组播负载分担”提供了不同的负载分担方式来支持不同应用场合:
- 基于组播组G的负载分担。
- 基于组播源S的负载分担。
- 基于组播源组(S,G)的负载分担。
- 其他负载分担方式。
- 稳定优先负载分担。
- 基于链路带宽的负载分担。
华为设备相关配置:
执行命令multicast load-splitting { balance-ucmp | stable-preferred | source | group | source-group },配置组播负载分担。 命令中不同的参数对应着不同组播负载分担策略:
• balance-ucmp:表示平衡负载分担。该策略会根据等价路由的出接口转发能力分配(*,G)或者(S,G)表项。
• stable-preferred:表示稳定优先负载分担。该策略适用于组播业务稳定的场景。
增加或删除等价路由时,设备会对负载自动进行均衡调整。删除组播路由表项、接口的组播负载分担权值变化时,设备不主动对负载进行均衡调整。
• group:表示基于组地址进行负载分担。该策略适用于一源多组的场景。
• source:表示基于源地址进行负载分担。该策略适用于一组多源的场景。
• source-group:表示同时基于源地址和组地址进行负载分担。该策略适用于多个源和多个组的场景。
BSR管理域:
概念:
为了实现网络管理精细化,可以选择将一个PIM-SM网络(经常使用在大型组播网络中)划分为多个BSR管理域和一个Global域。这样一方面可以有效地分担单一BSR的管理压力,另一方面可以使用私有组地址为特定区域的用户提供专门服务。每个BSR管理域中维护一个BSR,为某一特定地址范围的组播组服务。Global域中维护一个BSR,为所有剩余的组播组服务。
对于PIM路由器来说:
如图所示,对于有相同组地址的不同管理域,各BSR管理域所包含的PIM路由器互不相同,同一PIM路由器不能同时属于多个BSR管理域。各BSR管理域在地域上相互独立,且相互隔离。BSR管理域是针对特定地址范围的组播组的管理区域,属于此范围的组播报文只能在本管理域内传播,无法通过BSR管理域边界。
Global域包含PIM-SM网络内的全部PIM路由器。不属于任意BSR管理域的组播报文,可以在整个PIM网络范围内传播。Global域和每个BSR管理域都包含针对自己域的C-RP和BSR设备,这些设备在行使相应功能时,仅在本域内有效(Global就是在所有域有效)。即BSR机制和RP竞选在各管理域之间是隔离的。也就是说Global区域包含了所有路由器,其他BSR区域的路由器不能互相重复。总之,划分不同的域就是为了针对不同组播所传输的范围,不同区域中的路由器不能相同,除了Global区域包涵了所有的路由器,因为它组播传输范围是所有路由器。
对于组播地址来说:
每个BSR管理域为特定地址范围的组播组提供服务,不同的BSR管理域服务的组播组范围可以重叠(路由器不能重叠)。该组播地址只在本BSR管理域内有效,相当于私有组地址。如图所示,BSR1域和BSR3域对应的组地址范围出现重叠,但是BSR1中的路由器不能出现在BSR3中。不属于任何BSR管理域的组播组,一律属于Global域的服务范围。Global域组地址范围是除G1、G2之外的G-G1-G2。例如global区域中的组播地址可以在整个区域中传递,BSR1区域中的地址可以在BSR1中传递,BSR3中的地址只能在BSR3区域中传递(虽然组播范围是BSR1的子集,但是传递的路由器不同)。
总结:每个BSR管理域都有自己的边界,该管理域的组播信息(C-RP宣告报文、BSR自举报文等)不能跨越域传播。同时Global域的组播信息可以在整个Global域内传递,可以穿越任意BSR管理域。
华为设备BSR管理域相应配置:
- 在PIM域内所有设备上使能BSR管理域功能
a. 执行命令system-view,进入系统视图。
b. 执行命令pim [ vpn-instance vpn-instance-name ],进入PIM视图。
c. 执行命令c-bsr admin-scope,使能BSR管理域功能。 - 在每个BSR管理域的边缘接口上配置边界
a. 执行命令system-view,进入系统视图。
b. 执行命令interface interface-type interface-number,进入接口视图。
c. 执行命令multicast boundary group-address { mask | mask-length },配置BSR管理域边界。
限定了组地址范围后,该范围内的组播报文将无法通过此接口进行转发。 - 在每个BSR管理域的C-BSR上配置服务的组地址范围
a. 执行命令system-view,进入系统视图。
b. 执行命令pim [ vpn-instance vpn-instance-name ],进入PIM视图。
c. 执行命令c-bsr group group-address { mask | mask-length } [ hash-length hash-length | priority priority ] *,配置C-BSR服务的组地址范围。 - 配置Global域的C-BSR
a. 执行命令system-view,进入系统视图。
b. 执行命令pim [ vpn-instance vpn-instance-name ],进入PIM视图。
c. 执行命令c-bsr global [ hash-length hash-length | priority priority ] *,配置Global域的C-BSR。
组播静态路由:
除单播路由外,MBGP路由、组播静态路由也是RPF检查的依据。
R3到组播源(Source)的RPF邻居为R1,从Source发出的组播报文会沿着Source->R1->R3的路径传输。此时,在R2上配置组播静态路由,指定R3的RPF邻居为R2,则从Source发出的组播报文的传输路径将发生改变,改为沿Source->R1->R2->R3的路径传输,区别于原来的单播路由路径。
例如在R2可以直接走R1为单播路由最优,但是这条路径流量太多了,所以我们可以配置静态组播路由,使得R2走R3再到R1。并且在RPF检测中默认静态组播路由的优先级高于单播路由。
MBGP:
MulticastBGP (MBGP)是BGP对传统的BGP协议扩展,此处代表使能组播能力的BGP。RFC 4760定义BGP支持多种不同类型的路由一-IPv4 单播、IPv4 组播、IPv6 单播和组播等,传输单播路由协议是BGP的基本功能。BGP针对不同协议有不同的路由表,如BGP IPv4单播路由表和IPv4组播路由表,区别是单播BGP路由会进入单播路由表中,用于路由IP数据包,而组播路由表里面的路由仅用来做RPF检查。不要误解MBGP是用来取代PIM的协议,其和static-rpf-route -样,用来做RPF检查。MBGP是对原有BGP协议的扩展,所以MBGP仍使用标准BGP的选路规则,仍使用相同的属性及策略控制技术。
使能BGP支持组播,仅需要以下两点支持即可,这是BGP可以支持多协议的基础。
- 在BGP建立邻居关系时,通过NLRI Capabilit 协商双方是否支持multicast,即协商是否支持AFI=1, SubAF=2;仅当双方都支持AFISAF-=1/2,组播协议路由才能双向传递。
- 组播路由使用BGP更新报文来通告,但不同于IPv4单播路由的是,在BGP更新报文中并没有NLRI, 而是定义了两个新的路径属性MP REACH_ NLRI和MP_UNREACH_ NLRI,用来传递组播路由。其中,MP REACH NLRI用于通告组播路由,而MP_ UNREACH NLRI用于撤销组播路由。属性的类型代码分别为14和15。下图所示是MP REACH NLRI属性,其中包括组播路由的下一跳地址信息, 组播路由前缀及其长度等:
同理,用于撤销路由的MP_ UNREACH _NLRI属性格式如下图所示:
图中组播NLRI和Nexthop地址信息出现在路径属性MP_REACH_NLRI中,如下是BGP的Updata报文:
资料整理来源:华为hedex文档、《HCIE路由交换学习指南》
标签:知识点,负载,组播,补充,BSR,BGP,分担,路由 来源: https://blog.csdn.net/tushanpeipei/article/details/112426700