组播 | 数据转发原理 / 跨网段交换实现

注:本文为 “组播数据转发” 相关合辑。
略作重排,如有内容异常,请看原文。


组播数据转发原理

不喜欢热闹的孩子 原创于 2024-07-08 10:16:59 发布

一、组播数据转发原理

前文已学习组播的基本概念和网络组成结构,本节将学习组播数据的转发。首先需要明确,组播网络与单播网络相同,均需保证网络可达,因此组播数据的转发需在单播网络支持的基础上进行配置。若单播网络不可通,则组播网络无实际意义。

组播数据转发需依赖路由表项。然而,基于目的网络的路由表在转发组播数据时存在一定问题:

转发环路

转发环路

  • 组播源发送组播报文,组播 IP 为 G1
  • 组播组成员也加入 G1
  • RT1 到达成员有两条路径,出接口有两个,因此均会发送组播报文
  • RT4 收到两份重复报文并转发给组播组成员

次优路径

次优路径

与上述情况类似,会出现次优路径。

由于组播转发易产生环路、次优路径及重复报文等问题,因此组播路由表项除包含目的网络和出接口外,还需添加组播源和入接口的信息。设备仅转发从特定唯一的入接口收到的组播数据,以此避免组播转发时产生的环路、次优路径及重复报文(部分情况)等问题。为此,提出了 RPF(Reverse Path Forwarding,反向路径转发)机制,用于解决重复报文和次优路径问题。

二、RPF(Reverse Path Forwarding,反向路径转发)

对于相同的组播源,设备可通过RPF(Reverse Path Forwarding,反向路径转发) 检查确定设备上唯一的组播流量入接口。

RPF

RPF

组播路由表项包含组播源与组播组,因此有时又被称为**(S,G)表项**。

组播转发过程:

  • RT1 是第一跳路由器,组播报文中包含组播源地址 S1,加入的组为 G1,表项为(S1,G1)
  • RT1 通过路由表查看到达 S1 的路由,发现为直连,入接口为直连接口,出接口为 IF1 和 IF2
  • RT2 从 RT1 接收到组播报文,通过路由表查看(S1,G1),确定入接口为 IF1,出接口为 IF2
  • RT3 从 IF1 和 IF2 分别接收到组播报文,通过查看路由表发现 IF1 的优先级更高,因此确定报文入接口为 IF1,丢弃从 IF2 接收的组播报文,出接口为组播组成员所在的 IF3,从而形成无环的转发路径
  • 每个路由器均会进行 RPF 检查,通过路由表确定最优的入接口。

RPF(反向路径检查)在三层设备上通过 IP 路由确定最优到达组播源的路径,对其他次优路径进行逻辑阻断。

原理:组播路由器根据报文的源地址,通过路由表(单播路由表、MBGP 路由表或组播静态路由表)查找到达“报文源”的路由,核查到达“报文源”的路由表项的出接口是否与收到组播报文的入接口一致。若一致,则认为该组播报文从正确的接口到达,从而保证整个转发路径的正确性和唯一性。这一过程被称为 RPF 检查。每个组播路由均会进行 RPF 检查。

RPF检查工作原理

RPF 检查工作原理

RPF路由选举规则

RPF 路由选举规则

根据以下原则从三条最优路由中选择一条作为 RPF 路由:

  • 若配置了按照最长匹配选择路由,则从这三条路由中选出最长匹配的路由;
  • 若这三条路由的掩码相同,则选择优先级最高的路由;
  • 若它们的优先级也相同,则按照组播静态路由 > MBGP 路由 > 单播路由的顺序进行选择。

MBGP:MBGP(Multicast BGP,组播 BGP) 主要用于传递组播源相关的路由条目。

组播静态路由表:手工配置组播源与出接口的对应关系。

总体而言,其原理较为晦涩,简单来说,就是根据组播源的地址,由路由器自身通过查看路由表确定最优入接口以进行转发。查看路由表的方式有三种:组播静态路由、MBGP 路由、单播路由。由于当前未配置组播静态路由和 MBGP,因此通过单播路由的方式查看路由表以确定最优路径。


配置组播数据通过 GRE 隧道实现跨单播网段交换的示例

规格

适用于所有版本、所有形态的 AR 路由器。

组网需求

RouterA 连接组播源,RouterB 连接组播接收者。RouterA 和 RouterB 使用 loopback 接口建立一条 GRE 隧道,在 GRE 隧道接口配置 PIM SM 协议,使组播流通过 GRE 隧道发送给组播接收者。

图 组播 Over GRE 功能组网图
在这里插入图片描述

操作步骤

1. RouterA 的配置

#
multicast routing-enable
#
interface GigabitEthernet0/0/1
 ip address 10.1.1.2 255.255.255.0  // 连接组播源的接口的 IP 地址
 pim sm  // 使能 PIM-SM
#
interface GigabitEthernet1/0/0
 ip address 192.168.12.1  255.255.255.0
#
interface loopback0
 ip address 10.10.1.1 255.255.255.255
#
interface tunnel0/0/1
 tunnel-protocol gre  //tunnel 封装为 GRE 隧道
 ip address 192.168.1.1 255.255.255.0
 source 10.10.1.1
 destination 10.10.1.2
 pim sm  // 在 Tunnel 接口使能 PIM-SM
#
ospf 1
 area 0
  network 10.10.1.1 0.0.0.0
  network 10.1.1.0 0.0.0.255
  network 192.168.1.0 0.0.0.255
#  // 配置 C-RP 和 C-BSR,使用 tunnel 接口的 IP 地址作为候选 RP 的 IP 地址
pim
 c-bsr Tunnel0/0/1
 c-rp Tunnel0/0/1
#

2. RouterB 的配置

#
multicast routing-enable
#
interface GigabitEthernet0/0/1
 ip address 10.2.1.1 255.255.255.0  // 连接组播接收者的接口的 IP 地址
 pim sm  // 使能 PIM-SM
 igmp enable  // 使能 IGMP
#
interface GigabitEthernet1/0/0
 ip address 192.168.13.1  255.255.255.0
#
interface loopback0
 ip address 10.10.1.2 255.255.255.255
#
interface tunnel0/0/1
 tunnel-protocol gre  //tunnel 封装为 GRE 隧道
 ip address 192.168.1.2 255.255.255.0
 source 10.10.1.2
 destination 10.10.1.1
 pim sm  // 在 GRE Tunnel 接口使能 PIM-SM
#
ospf 1
 area 0
  network 10.10.1.2 0.0.0.0
  network 10.2.1.0 0.0.0.255
  network 192.168.1.0 0.0.0.255
#

3. 验证配置结果

# 在路由器上使用 display pim interface 命令可以查看路由器接口上 PIM 的配置和运行情况,“State” 为 “up”。

# 在 RouterB 上使用 display igmp group 命令可以看到接收者已经加入到组播组。

Interface group report information
 GigabitEthernet0/0/1 (10.2.1.1):
  Total 1 IGMP Group reported
   Group Address   Last Reporter   Uptime      Expires
   225.1.1.2       10.2.1.2        00:02:04    00:01:17

# 在路由器上执行 display pim routing-table 命令可以看到 (10.1.1.1, 225.1.1.2) 表项。

 (10.1.1.1, 225.1.1.2)
     RP: 192.168.1.1
     Protocol: pim-sm, Flag: ACT
     UpTime: 00:04:32
     Upstream interface: Tunnel0/0/1
         Upstream neighbor: 192.168.1.1
         RPF prime neighbor: 192.168.1.1
     Downstream interface (s) information:
     Total number of downstreams: 1
         1: GigabitEthernet0/0/1
             Protocol: pim-sm, UpTime: 00:04:32, Expires: -

配置注意事项

  • 使用 Loopback 接口建立 GRE 隧道,并在 Tunnel 接口上使能 PIM SM。
  • 连接 receiver 的接口需要使能 IGMP 协议。
  • 配置 C-RP 和 C-BSR 时,使用 tunnel 接口的 IP 地址作为候选 RP 的 IP 地址。

via:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值