Relative Content

K4NZDROID

category

「Network」- 组播、概念、术语

组播网络架构
组播网络,大致分为三个部分: 1)源端网络:将组播源产生的组播数据,发送至组播网络。无特殊要求,只需要第一跳路由器开启组播支持; 2)转发网络:形成无环的组播转发路径,该转发路径也被称为组播分发树(Multicast Distribution Tree)。 3)成员网络:需要让组播网络感知组播组成员位置及组播组成员加入的组播组,以向下分发组播数据。

源端网络
组播源(Multicast Source): 1)作用:组播流量的发送者,作用是发送组播数据。组播源无需运行任何组播协议,只需简单地将组播数据发送出来即可。 2)设备:例如多媒体服务器。
转发网络
组播路由器(Multicast Router): 1)作用:将数据从 Multicast Source 发送到 Multicast Receiver。组播数据转发需要依赖组播分发树,因此组播路由器需要通过协议来构建组播分发树。 2)设备:支持组播、运行组播协议的网络设备。实际上交换机、防火墙等设备也能够支持组播(取决于设备型号),路由器仅是个代表;
第一跳路由器(First-Hop Router): 1)作用:组播转发路径上,负责转发该组播源发出的组播数据的 PIM 路由器; 2)位置:与 Multicast Source 相连;
最后一跳路由器(Last-Hop Router): 1)作用:组播转发路径上,负责向该组成员转发组播数据的 PIM 路由器; 2)位置:与 Multicast Receiver 相连;
成员网络
组播接收者(Multicast Receiver),也被称为组播组成员: 1)作用:接收组播数据,是期望接收特定组播组流量的设备 2)设备:例如 运行多媒体直播客户端软件的 PC;
组播路由表(Multicast Routing Table)
类似单播网络,组播网络数据转发需要 Multicast Routing Table(组播路由表)来指导数据转法,并且每个节点都会进行组播数据检查。

Q:组播分发树是如何形成的? A:当沿路路由器都形成转发的路由信息,我们则认为组播分发树形成。
组播组(Multicast Group)
组播组(Multicast Group):用IP组播地址进行标识的一个集合。任何用户主机(或其他接收设备),加入一个组播组,就成为了该组成员,可以识别并接收发往该组播组的组播数据。
组播分发树(Multicast Distribution Tree)
解释:组播数据转发需要保证转发路径无环,无次优路径且无重复包。通过 RPF 机制 与 组播路由协议,组播网络可以最终形成以组播组为单位、无环、无次优、无重复包的组播转发路径,由于组播转发[……]

READ MORE

「Network」- 加入组播组

问题描述
在 IP Multicast 中,通信特点是报文从 Multicast Source 发出,被转发到一组特定的 Multicast Receiver;
但是 Multicast Source 不关注 Multicast Receiver 的位置信息(这种一对多关系,导致 Multicast Source 无法关心 Multicast Receiver 的位置)
所有组播数据转发需要依赖组播网络,才能将数据发送至 Multicast Receiver,因此组播网络需要知道组成员的位置与组成员的所加组播组。
解决方案
组播网络感知组播组成员有两种方法: 1)静态配置([Huawei] igmp static-group <multicast-address>) 2)动态感知([Huawei] igmp enable)
这两种方式,都是为了生成组播路由条目。
静态配置
在 Multicast Router 上,静态指定连接 Multicast Receiver 的接口,静态配置组成员加组信息。然后 Router 就会创建对应的 PIM Route 条目。
优缺点:手工静态方式灵活性差,配置工作量大,但相对比较稳定,对于新上线的组成员能够快速建立组播转发通路,较少使用。
动态感知
在 Multicast Receiver 上,主动发送 IGMP(Internet Group Management Protocol,因特网组管理协议)报文,以让组播网络感知该 Multicast Receiver 位置和所加组播组。当组播网络获得组成员位置与加组信息后,Multicast Router 就会创建对应的 PIM Route 条目,并基于这些信息转发组播报文。
优缺点:动态感知方式较为灵活,且配置简单,现网一般使用动态感知方式。[……]

READ MORE

「Network」- 组播,反向路径检查,Reverse Path Forwarding

问题描述
组播数据转发需要依赖路由表项。但是,基于目的网络的路由表在转发组播数据时存在一定问题:
解决方案
由于组播转发容易产生环路,次优,重复报文,所以组播路由表项除了 目的网络 和 出接口 外,还需要添加 组播源 和 入接口 信息。
设备仅转发从特定唯一的入接口收到的组播数据,并丢弃非期望接口接收的数据,从而避免组播转发时产生环路,次优,重复报文(部分解决)等问题。
组播路由表项
路由格式

(192.168.0.2, 239.0.0.1) // 组播源,目的网络
Upstream Interface: GigabitEthernet1/0/0 // 入接口(唯一)
Downstream interfaces // 出接口
1: GigabitEthernet2/0/0
2: GigabitEthernet3/0/0

组播路由表项包含 组播源 与 组播组(目的网络),所以又被称为(S,G)表项; 组播路由表项出接口,一般需要通过组播路由协议确定。
产生方法
与单播路由不同,并非先产生组播路由: 1)流量触发产生:进行 RPF 检查,然后生成组播路由表项; 2)控制层面申请加入,来产生路由表项,但是依旧需要流量触发。
反向路径转发(RPF)
用于确定 组播路由表项 的 组播源 与 入接口。如上路由表项,通过 RPF 检查,以确定组播路由表项的 组播源(192.168.0.2)与 入接口(Upstream Interface: GigabitEthernet1/0/0);
对于相同的组播源,设备通过 RPF(Reverse Path Forwarding,反向路径转发)检查,来确定设备上唯一的组播流量入接口。当 RPF 检查成功后,入接口将被写入组播路由表项中,其他接口便不再能作为入接口。
检查原理
当组播路由协议运行后: 设备上便(利用单播路由表、MBGP路由表、组播静态路由表)生成 RPF Route,以用于检查。 当收到数据后,便直接利用 RPF Route 进行 RPF 检查。(注意:组播网络不能独立运行,组播网络需要使用单播网络的某些信息)
当设备收到组播数据后: 假设源地址为 SRC-Address,RPF 将利用 RPF Route 来检查去往该 SRC-Address 的路由: 1)如果 在 RPF Route 中去往 SRC-Address 的出接口 与 收到该组报文的接口 是同个接口, 则接收该组播报文; 2)否则,丢弃该组播报文;
这很容易理解:去往 SRC-Address 的路径,也应该[……]

READ MORE

「Multicast」- 路由表

路由表类型
在不同的 Multicast Router 上,Multicast Route Table 会基于不同的表项汇总形成: 1)最后一跳路由器,Multicast Route Table 主要基于 PIM Route Table、IGMP Group Table、IGMP Route Table 汇总形成; 2)其余组播路由器,Multicast Route Table 主要基于 PIM Route Table;
IGMP Route Table
作用:主要是用来扩展 PIM Route Table 的出接口。
创建:当 Multicast Receiver 发送的 IGMP Membership Report 报文时,来触发创建的。
格式:

<AR7>display igmp routing-table
00001. (*, 239.0.0.1) // 接收任意源的组播
List of 1 downstream interface
GigabitEthernet1/0/0 (192.168.1.254), // 出接口
Protocol: IGMP

注意: 1)在 eNSP 中,可能无法显示该路由表;
IGMP Group Table
作用:用于维护 组加入 信息,并通知组播路由协议(通常所说的为 PIM 协议)创建相应 (*, G) 表项。
创建:当 Multicast Receiver 发送的 IGMP Membership Report 报文时,来触发创建的。
格式:

<AR7>display igmp group
Interface group report information of VPN-Instance: public net
GigabitEthernet0/0/2(192.168.2.254):
Total 1 IGMP Group reported
Group Address Last Reporter Uptime Expires
239.2.2.2 192.168.2.1 00:11:54 00:01:53
| |
| 组播组 | 组成员网络地址

PIM Route Table
如下命令输出,是采用动态感知:

<AR7>display pim routing-table
VPN-Inst[……]

READ MORE

「Network」- 组播、报文格式

组播数据报文的结构与单播报文类似
但对于目的地址,组播数据报文与单播报文有很大差异: 1)DST IP Address:为组播网络地址,地址范围从 224.0.0.0 到 239.255.255.255 止; 2)DST MAC Address:为组播物理地址,Multicast MAC Address 由 Multicast IP Address 映射而来

IPv4组播报文的 SRC-IPAddress 字段为 IPv4 单播地址,可使用 A、B、C 类地址,不能是D类、E类地址。
组播网络地址
IPv4 地址空间分为五类(Class A – Class E),其中 Class D 地址为 IPv4 组播地址,范围是从 224.0.0.0~239.255.255.255,用于标识组播组,且仅能作为组播报文的目的地址使用,不能作为源地址使用。
IANA 对 Class D 地址做出进一步的定义,几种主要的组播地址如下表所示: 1)224.0.0.0—224.0.0.255:为路由协议预留的永久组地址 2)224.0.1.0—231.255.255.255,233.0.0.0—238.255.255.255:ASM,Any-Source 临时组播组地址(Any-Source,即任何人都可以发送数据) 3)232.0.0.0—232.255.255.255:SSM,Source-Specific 临时组播组地址(指定设备才能发送组播) 4)239.0.0.0—239.255.255.255:本地管理的 Any-Source 临时组播组地址(企业网内部,类似私有地址)
一个组播地址就表示一个点到多点的数据流,比如IPTV数据流,语音会议数据流。大多数情况下,同一个组播网络里不同的业务(比如,IPTV,语音会议)就需要使用不同的组播IP地址。
在网络层上,加入同一组播组的所有用户主机能够识别同一个 IPv4 组播组地址。一旦网络中某用户加入该组播组,则此用户就能接收以该组地址为目的地址的IP组播报文。
组播物理地址
以太网传输IPv4单播报文的时候, DST-MACAddress 使用的是接收者的MAC地址。但是在传输组播数据时,其目的地不再是一个具体的接收者,而是一个成员不确定的组,所以要使用IPv4组播MAC地址。
IANA 规定,IPv4 Multicast MAC Address: 1)高 24 位为 0x01005e; 2)第 25 位为 0; 3)低 23 位为 IPv4 Multicast Address 的低 23 位;

例如,组播组地址 224.0.1.1 对应的 Multicast MAC Address 为 01-00-5e-00-01-01。[……]

READ MORE

「IGMP」- Internet Group Management Protocol,因特网组管理协议

问题描述
组播网络需要感知在当前网络内的组播组成员,才能决定是否向当前网络内转发组播流量。
这能够通过静态配置实现,即在路由器上明确声明当前网络内的组播设备以及所在组播组。
但静态配置的缺点也很明显:灵活性差,配置工作量大,不利于大规模的组播网络扩展。
解决方案
IGMP 是 TCP/IP 协议族中负责 IPv4 组播成员管理的协议(IPv6 使用 MLD 协议),用来在 接收者主机 和 与其直接相邻的组播路由器 间建立和维护组播组成员关系。
IGMP 通过在 组播组成员 和 组播路由器间 交互 IGMP 报文实现组成员管理功能,IGMP 报文封装在 IP 报文中。[……]

READ MORE

「IGMP」- 概念、术语

概述介绍
到目前为止,IGMP有三个版本:IGMPv1(近乎废弃)、IGMPv2(在 ASM 中使用 )、IGMPv3(在 SSM中使用);
机制,IGMPv1,IGMPv2,IGMPv3 查询器选举,依靠其他协议,自己选举,自己选举 成员离开方式,静默离开,主动离开,主动离开 特定组查询,不支持,支持,支持 指定源、组,不支持,不支持,支持 版本兼容性,,IGMPv1,IGMPv1、IGMPv2[……]

READ MORE

「IGMPv1」- 工作原理

概述介绍

IGMPv1 主要基于 Query 和 Report 机制完成组播组管理。在网络中,大致工作过程如下: 1)组播路由器被称为 IGMP Querier(Querier 查询器),向共享网络上所有主机和路由器发送的 Membership Query(普遍组查询报文)查询,用于查询哪些组播组存在成员。 2)主机向 IGMP Querier 发送的 Membership Report(成员关系报告报文)报文,用于申请加入某个组播组或者应答查询报文;
通过 Query 与 Report 报文,IGMP Querier 可以解到该网段内哪些组播组存在成员。 查询器和非查询器均能收到成员关系报告(目的地址 224.0.0.1),因此均能形成 IGMP Route Table 与 IGMP Group Table;
查询器选举机制
鉴于 Memebership Query 报文是组播报文,所以在多路访问网络中只需要一个 IGMP Querier 发送查询报文,即可查询所有组成员的加组信息。
IGMPv1 没有基于 IGMP 的查询器选举机制,所以需要依赖 PIM 进行 IGMP Querier 选举。IGMPv1 将组播路由协议(PIM)选举出唯一的组播信息转发者(Assert Winner 或 DR,用于转发组播流量)作为 IGMPv1 Querier,负责该网段的组成员关系查询。

组成员加组机制
在初始时,IGMPv1 组成员将主动发送 IGMPv1 Memebership Report 报文,来加组。
组成员探测机制
当网络稳定后,IGMP Querier 需要了解网络内是否有存活组播成员。
IGMPv1 组成员存活的基本流程如下:
IGMP Querier 发送目的地址为 224.0.0.1(表示同一网段内所有主机和路由器)的普遍组查询报文;普遍组查询报文是周期性发送的(默认每 60 秒发送,可通过命令配置)。
收到该 Query 报文的 Membership 启动定时器。该示例的 Membership-1 和 Membership-2 是 Multicast-Group-G1 的成员,则在本地启动定时器 Timer-G1(缺省情况下,定时器的范围为 0s~10s 间的随机值)。首个定时器超时的组成员,将发送针对该组的报告报文。
IGMP Querier 接收到 Membership-1 的报告报文后,了解到在本网段的 Multicast-Group-G1 中存在成员,则由生成 IGMP Group Table 与 IGMP Route Table((*, G),“*”代表任意组播源)。而后在网络中一旦有组播组 Multicast-Group-[……]

READ MORE

「IGMPv2」- 工作原理

问题描述
IGMPv1 有一定缺陷: 1)IGMPv1离组使用超时机制,组成员只能静默离组。在未超时的时间内,组播流量依然会被组播路由器转发。 2)IGMPv1 IGMP Querier 选举必须要依赖PIM协议,导致 IGMP Querier 选举不够灵活。
解决方案
IGMPv2 vs. IGMP v1
在保持对 IGMPv1 兼容的同时,IGMPv2 还改善 IGMPv1 的缺陷。
相同点: 1)协议兼容:IGMPv2 能与 IGMPv1 兼容。 2)加组机制:IGMPv2 组成员加组机制与 IGMPv1 基本相同
改进点: 1)选举机制:IGMPv2 增加 IGMP Querier 选举机制; 2)离组机制:IGMPv2 增加 离开组机制;
查询器选举机制
与 IGMPv1 比,IGMPv2 IGMP Querier 选举机制有较大改进,IGMPv2 使用独立的 IGMP Querier 选举机制。
当网络上存在多个 Multicast Router 时,IP Address 最小的路由器成为 IGMP Querier 角色: 1)初始状态都认为自己是 IGMP Querier ,并且都会发送 IGMP Membership Query 报文; 2)当收到对端报文后,接口 IP Address 最小的 Multicast Router 自动成为 IGMP Querier ; 3)非 IGMP Querier 上都会启动一个定时器(即其他 IGMP Querier 存在时间定时器 Other Querier Present Timer,默认 120s)。在该定时器超时前,如果收到来自 IGMP Querier 的 Query 报文,则重置该定时器;否则认为原 IGMP Querier 失效,并发起新的 IGMP Querier 选举过程。
组成员加组机制
IGMPv2 组成员加组机制与 IGMPv1 一致,不再赘述。
组成员探测机制
在 IGMPv2 中,引入组成员离组机制,所以无需特意来探测组内是否存在成员。
组成员离组机制
新增两种报文
为了改善组成员离开机制,IGMPv2 新增 Leave Group 报文与 Group-Specific Query 报文,来加速感知 IGMPv2 组成员离开。
1)成员离开报文(Leave Group):成员离开组播组时主动向 IGMP Querier 发送该报文,以宣告自己离开某个组播组。成员离开报文目的地址为 224.0.0.2(仅 IGMP Querier 处理)。
2)特定组查询报文(Group-Specific Query):IGMP Querier 向共享网段内指定组播组发送的 Quer[……]

READ MORE

「IGMPv3」- 工作原理

问题描述
出于安全考虑,我们希望 Multicast Receiver 能够只选择接收从特定 Multicast Source 发来的组播数据,即 Multicast Receiver 需要告知组播网络,接收来自哪些特定 Multicast Source 的组播流量。
IGMPv1 与 IGMPv2 的报文中均无法携带 Multicast Source 的信息,因此无法配合 SSM 使用(其实可使用 SSM Mapping 功能解决这个问题)。
解决方案
IGMPv3 主要是为了配合 SSM(Source-Specific Multicast)模型发展起来的,提供在报文中携带 Multicast Source 信息的能力,即主机可以对组播源进行选择。
IGMPv3 vs. IGMPv2
相同点: 1)查询器选举机制一致:IP地址小的为查询器; 2)使用 General Query 报文,来查询组成员加组信息; 3)使用 Group-Specific Query 报文,来查询特定组播的成员存活情况;
改进点: 1)IGMPv3 Membership Query 报文,包含 Gereral Query、Group-Specific Query、Group-and-Source-Specific Query(新增); 2)IGMPv3 Membership Report 报文,不仅包含主机想要加入 Multicast Group,而且包含其想要接收来的 Multicast Source 的信息; 3)抑制机制:鉴于同个组播组的不同成员可能希望接收来自不同源的组播,所以 IGMPv3 无 Report 报文抑制机制(协议本身无此设计); 4)离组机制:IGMPv3 具有组成员离开通知机制,但是没有定义专门的成员离开报文,成员离开通过特定类型的 Report 报文来传达。
查询器选举机制
查询器选举机制与 IGMPv2 保持一致,IP Address 小的为查询器,这里不再赘述。
组成员加组机制
IGMPv3 组成员加组机制与 IGMPv2 类似,但有以下不同: 1)IGMPv3 Membership Report 报文,能够携带 Multicast Source 信息。 2)IGMPv3 Membership Report 报文,没有 Report 报文抑制机制。
组成员探测机制
在 IGMPv3 中,具备组成员离组机制,所以无需特意来探测组内是否存在成员。
组成员离组机制
1)IGMPv3 没有专门的成员离开报文,成员离开需要借助 Membership Report 实现; 2)IGMP Querier 在收到改变源组对应关系的成员关系报告后,会发送 Group-and-[……]

READ MORE

「IGMP」- 报文格式

IGMPv1

Version:IGMP 版本,IGMPv1 值为 1;
Type:报文类型。该字段有以下两种取值: 1)0x1:表示普遍组查询报文(Memebership Query ); 2)0x2:表示成员关系报告报文(Memebership Report);
Group Address:组播组地址。 1)在 Memebership Query 中,该字段设为 0; 2)在 Memebership Report 中,该字段为成员加入的组播组地址;
在 IP Layer 中,Memebership Query 与 Memebership Report 均为组播报文,目的地址为 224.0.0.1(所有的设备都要进行响应)。
Memebership Query

Frame 760: 60 bytes on wire (480 bits), 60 bytes captured (480 bits) on interface -, id 0
Ethernet II, Src: HuaweiTe_49:02:cb (00:e0:fc:49:02:cb), Dst: IPv4mcast_01 (01:00:5e:00:00:01)
Internet Protocol Version 4, Src: 192.168.2.254, Dst: 224.0.0.1
Internet Group Management Protocol
[IGMP Version: 1]
Type: Membership Query (0x11)
Reserved: 00
Checksum: 0xeeff [correct]
[Checksum Status: Good]
Multicast Address: 0.0.0.0

Memebership Report

Frame 771: 46 bytes on wire (368 bits), 46 bytes captured (368 bits) on interface -, id 0
Ethernet II, Src: HuaweiTe_5a:28:cc (54:89:98:5a:28:cc), Dst: IPv4mcast_02:02:02 (01:00:5e:02:02:02)
Internet Protocol Version 4, Src: 192.168.2.1, Dst: 239.2.2.2
Internet Group Management Protocol
[IGMP Version: 1]
Type: Membership Report (0x12)
Reserved:[……]

READ MORE

「Network」- IGMP version 3,报文格式

Membership Query

IGMPv3 Query 报文重要字段说明:
Type:报文类型,取值为0x11,IGMPv3的查询报文共有三类(通过其他字段是否有值来区分): 1)普遍组查询报文(General Query),作用与IGMPv1、IGMPv2中的普遍组查询报文作用一致。 2)特定组查询报文(Group-Specific Query),作用与 IGMPv2 中的特定组查询报文作用一致。 3)特定源组查询报文(Group-and-Source-Specific Query),用于查询该组成员是否愿意接收特定源发送的数据。特定源组查询通过在报文中携带一个或多个 Multicast Source Address 来达到这一目的。
Max Response Code:最大响应时间。成员主机在收到IGMP查询器发送的普遍组查询报文后,需要在最大响应时间内做出回应。
Group Address:组播组地址。在普遍组查询报文中,该字段设为0;在特定组查询报文和特定源组查询报文中,该字段为要查询的组播组地址。
Number of Sources:报文中包含的组播源的数量。对于普遍组查询报文和特定组查询报文,该字段为0;对于特定源组查询报文,该字段非0。此参数的大小受到所在网络MTU大小的限制。
Source Address:组播源地址,其数量受到Number of Sources字段值大小的限制。
Packet Example: General Query

Frame 32: 60 bytes on wire (480 bits), 60 bytes captured (480 bits) on interface -, id 0
Ethernet II, Src: HuaweiTe_49:02:cb (00:e0:fc:49:02:cb), Dst: IPv4mcast_01 (01:00:5e:00:00:01)
Internet Protocol Version 4, Src: 192.168.2.254, Dst: 224.0.0.1
Internet Group Management Protocol
[IGMP Version: 3]
Type: Membership Query (0x11)
Max Resp Time: 10.0 sec (0x64)
Checksum: 0xec5f [correct]
[Checksum Status: Good]
Multicast Address: 0.0.0.0
…. 0… = S: Do not suppress router side processing[……]

READ MORE

「IGMP」- 常用配置

配置命令(Huawei)
使能 IGMP 功能:

[Huawei – GigabitEthernet1/0/0] igmp enable
[Huawei – GigabitEthernet1/0/0] igmp version number // 配置IGMP版本

// 查看接口的IGMP配置和运行信息
<Huawei>display igmp interface

// 查看加入组播组的成员信息
<Huawei>display igmp group

IGMP Snopping

// 使能IGMP snopping功能
[Huawei]igmp-snooping enable
[Huawei-vlan10] igmp-snooping enable

// VLAN下使能IGMP代理功能
[Huawei-vlan10] igmp-snooping proxy

// 1)查看二层组播转发表
<Huawei>display l2-multicast forwarding-table vlan vlan-id

IGMP SSM Mapping

// 在IGMP视图下配置静态SSM映射关系。
[Huawei-igmp] ssm-mapping <group-address> <group-mask> <source-address>

// 在接口下使能IGMP SSM Mapping
[Huawei – GigabitEthernet1/0/0] igmp ssm-mapping enable

// 查看IGMP SSM Mapping静态映射关系
<Huawei>display igmp ssm-mapping[……]

READ MORE

「IGMP」- 代理、Proxy

问题描述
现网中可能存在一台 IGMP Querier 需要管理大量 Multicast Receiver 的情况,大量 Multicast Receiver 频繁加入/离开组播组时,会产生大量的 Membership Query、Membership Report 报文,从而给 IGMP Querier 带来较大的处理压力。
解决方案
通过 IGMP Proxy 功能,能够减少 IGMP Querier 压力;
原理简述
通过 IGMP Proxy 功能: 1)IGMP Proxy 将成员关系报告/离开报文汇聚后,再统一上送给 IGMP Querier; 2)IGMP Proxy 也能够代理 IGMP Querier 向成员主机发送 Query 报文,维护组成员关系,基于组成员关系进行组播转发; 3)从本质上将,IGMP Proxy 的功能类似于 IGMP Querier,对报文信息进行处理后,再发送给 IGMP Querier 以减缓压力; IGMP Proxy 通常被部署在 IGMP Querier 和 Multicast Receiver 间的三层设备上。
概念术语
接口类型
为了实现以上功能,IGMP Proxy 定义两类接口: 1)主机接口(Host Interface):IGMP Proxy 设备上配置 IGMP Proxy 功能的接口,该接口连接 IGMP Querier; 2)路由器接口(Router Interface):IGMP Proxy 设备上配置 IGMP 功能的接口,该接口连接 Multicast Receiver;
这两类接口与我们理解中的相反(主要看它代表的什么):
成员加组机制
原理简述
IGMP Proxy 减少 Membership Reportt 的工作机制如下: 1)Router Interface 作为 IGMP 接口,对下呈现为 IGMP Querier,发送 Query 报文,处理 Report 报文,形成 IGMP 表项,并将 Report 从 Host Interface 发送给的 IGMP Querier; 2)当新用户加入同个组播组时,IGMP Proxy 不会再向 IGMP Querier 反馈 Report 报文,因此减少 IGMP Querier 接收的 Report 报文数量。
细节说明

IGMP Proxy 收到某组播组的 Report 报文后,会在 IGMP Group Table 中查找该组播组: 1)如果找到相应的组播组,IGMP Proxy 就不需要向 IGMP Querier 发送 Report 报文; 2)如果没有找到相应的组播组,IGMP Proxy 会向 IGMP Querier[……]

READ MORE

「IGMP」- SSM Mapping

问题描述
现网中存在部分只能运行 IGMPv 1与 IGMPv2 的老旧终端,在部署 SSM 模式的组播时,由于 IGMPv1 与 IGMPv2 报文中无法携带 Muticast Source 信息,因此无法使用 SSM 模式的组播网络。
解决方案
IGMP SSM Mapping,通过静态的将 Multicast Source 与 Multicast Group 进行绑定,使得 IGMPv1 与 IGMPv2 的组成员也能接入SSM组播网络。
注意事项:无论使用 IGMPv1、IGMPv2、IGMPv3加入SSM组播组,SSM Multicast Group 的地址依然是232.0.0.0~232.255.255.255。
原理简述
1)在 IGMP Querier 上,静态配置 SSM Mapping 规则; 2)根据收到 IGMP Membership Report 中的 Multicast Group 信息,并结合 SSM Mapping 关系,生成 IGMP Routing Table 信息;

在配置 SSM Mapping 规则后,当 IGMP Querier 收到来自成员主机的 IGMPv1 或 IGMPv2 Membership Report 报文时,首先检查该报文中所携带的 Multicast-Group,然后根据检查结果的不同分别进行处理: 1)如果 Multicast-Group 在 ASM 地址范围内,则只提供 ASM 服务。 2)如果 Multicast-Group 在 SSM 地址范围内(缺省情况下为232.0.0.0~232.255.255.255): —- 如果路由器上没有 Multicast-Group 对应的 SSM Mapping 规则,则无法提供 SSM 服务,丢弃该报文。 —- 如果路由器上包含 Multicast-Group 对应的 SSM Mapping 规则,则依据规则将报告报文中所包含的 (*, G) 信息映射为 (G, INCLUDE, (S1, S2…)) 信息,提供 SSM 服务。
IGMP SSM Mapping 不处理 IGMPv3 的 Report 报文。
为了保证同一网段运行任意版本IGMP的主机都能得到SSM服务,需要在与成员主机所在网段相连的组播路由器接口上运行 IGMPv3 协议;[……]

READ MORE

「IGMP」- Snooping

问题描述
当组播数据从最后一跳路由器发往组播组成员时,往往会经过交换机。由于组播数据的 DST-MAC-Address 为 Multicast MAC Address,默认情况 交换机将泛洪此类数据帧,有可能导致不同组的组播流量会被别组的成员接收。
为什么交换机不会学习 Multicast-MAC-Address?由于组播报文的目的地址为组播组地址,通过映射得到 Multicast-MAC-Address 的,在二层设备上多个接口会出现相同的 MAC Address,这与单播 MAC Address 学习机制冲突。如果增加对这类 MAC Address 学习,会增加设备研发的技术难度(一个问题通常有很多方案,但是历史的总总原因选择了我们现在看到的决断。无需过于纠结,只要知道现在这个东西是这个样子的就好了)。因此组播报文就会在所有接口进行广播,和它在同一广播域内的组播成员和非组播成员都能收到组播报文。
这样不但浪费了网络带宽,而且影响了网络信息安全。
解决方案
IGMP Snooping 功能可以控制组播流量在以太网的泛洪范围,实现组播数据在数据链路层的转发和控制,避免不同组的组播流量被别组成员接收。
原理简述
当配置 IGMP Snooping 特性后,二层组播设备可以侦听和分析组播用户和上游路由器间的 IGMP 报文,根据这些信息建立二层组播转发表(L2-Multicast-Forward-Table),控制组播数据报文转发,这样就防止了组播数据在二层网络中的广播。

组播转发表(L2-Multicast Forward-Table)
二层组播转发表项中存在两类接口: 1)路由器端口(Router Port):二层组播设备上朝向三层组播设备(DR或IGMP查询器)一侧的接口,二层组播设备从此接口接收组播数据报文。 2)成员端口(Member Port):又称组播组成员端口,表示二层组播设备上朝向组播组成员一侧的端口,二层组播设备往此接口发送组播数据报文。

<Huawei>display igmp-snooping port-info vlan 1
———————————————————————–
(Source, Group) Port Flag
Flag: S:Static D:Dynamic M: Ssm-mapping
———————————————————–[……]

READ MORE

「PIM」- Protocol Independent Multicast

问题描述
在组播网络中,需要形成组播分发树,以保证转发路径无环,无次优路径且无重复包。
解决方案
PIM(Protocol Independent Multicast,协议无关组播)协议主要作用是生成 Intra-AS Multicast Distribution Tree(域内组播分发树)。
PIM 称为协议无关组播。协议无关,指的是与单播路由协议无关,即 PIM 不需要维护专门的单播路由信息,只要有可用的单播路由即可。还是那句话,组播不能独立运行,而是需要在单播网络基础上运行。
作为组播路由解决方案,它直接利用单播路由表的路由信息,对组播报文执行 RPF 检查,检查通过后创建 Multicast Routing Table,从而转发组播报文。[……]

READ MORE

「PIM」- 概念、术语

组播分发树的形成模式
目前在实际网络中,PIM 主要有两种模式: 1)PIM-DM(PIM Dense Mode,PIM 密集模式) ; 2)PIM-SM(PIM Sparse Mode,PIM 稀疏模式) ,根据组播服务模型又能分为: —- PIM-SM(ASM):为任意源组播,来建立组播分发树。 —- PIM-SM(SSM):为指定源组播,来建立组播分发树。
PIM Dense Mode
模型分类:ASM
适用场景:主要用在 组成员较少、相对密集 的组播网络中;
工作机制:该模式建立 Distribution Tree 的基本思路是 扩散-剪枝:将组播流量全网扩散,然后剪枝没有组成员的路径,最终形成组播分发树。
PIM Sparse Mode(ASM)
模型分类:ASM
适用场景:主要用在 组成员较多、相对稀疏、分布广泛的大型网络 的组播网络中;
工作机制:采用接收者主动加入的方式建立组播分发树,需要维护RP、构建RPT、注册组播源。该模式建立组播分发树的基本思路是先收集组成员信息,然后再形成组播分发树。使用 PIM-SM 不需要全网泛洪组播流量,对现网的影响较小,因此现网多使用 PIM-SM 模式。
PIM Sparse Mode(SSM)
模型分类:SSM
适用场景:适合网络中的用户预先知道组播源的位置,直接向指定的组播源请求组播数据的场景
工作机制:直接在组播源与组成员之间建立SPT,无需维护RP、构建RPT、注册组播源
组播分发树的结构种类
通过 PIM 形成的组播分发树主要分为以下两种:
SPT(Shortest Path Tree)
以 Multicast Source 为根,组播组成员为叶子的组播分发树称为 SPT(Shortest Path Tree),SPT 又被称为源树。
使用范围:在 PIM-DM 与 PIM-SM 中均有使用。

RPT(RP Tree)
以 RP(Rendezvous Point)为根,组播组成员为叶子的组播分发树称为 RPT(RP Tree),又被称为共享树。流量必须先发往 RP,然后由 RP 向下转发。
使用范围:在 PIM-SM 中使用。

PIM Routing Table
PIM Routing Table 即通过 PIM 建立的组播协议路由表项。
在 PIM Network 中,存在两种路由表项(S 表示组播源,G 表示组播组,* 表示任意): 1) (S, G) 路由表项主要用于在PIM网络中建立 SPT。对于PIM-DM网络和PIM-SM网络适用。 2) (*, G) 路由表项主要用于在PIM网络中建立 RPT。[……]

READ MORE

「Multicast」- PIM-Dense Mode

问题描述
解决方案
在形成 SPT 过程中,PIM-DM 将进行 邻居发现(Neighbor Discovery)、扩散(Flooding)、断言(Assert)、剪枝(Prune)、嫁接(Graft)、状态刷新(State Refresh)机制;[……]

READ MORE

「Multicast」- 概念、术语(PIM Dense Mode)

报文类型
注意 PIM-DM 与 PIM-SM 使用的协议报文类型有所不同;
1)Hello,用于 PIM Neighbor 发现,协议参数协商,PIM Neighbor 关系维护等; 2)Join/Prune(加入/剪枝):在 PIM 中,Join 及 Prune 报文使用相同的报文格式,但报文载荷中的字段内容有所不同; —- Join 报文用于加入组播分发树; —- Prune 报文则用于修剪组播分发树; 3)Graft(嫁接),用于将设备所在的分支嫁接到组播分发树,其使用单播报文; 4)Graft-ACK(嫁接确认),用于对邻居发送的 Graft 报文进行确认; 5)Assert(断言),用于断言机制; 6)State-Refresh(状态刷新),[……]

READ MORE

「Multicast」- DR,Designated Router(PIM-DM)

在 PIM-DM 中,DR 的作用并不多,唯一需要 DR 的是 IGMP Querier 机制:此时 DR 充当 IGMPv1 Querier;
在 IGMPv1 中,没有 IGMP Querier 选举机制,需要借助 PIM 协议完成 IGMP Querier 选举(实际上是在选举 DR 设备)。
在 IGMPv2 中,引入独立 IGMP Querier 选举机制,所以不再通过 PIM 进行 IGMP Querier 选举。
参考文献
Understanding Designated Routers | Juniper Networks[……]

READ MORE

「Multicast」- 形成组播分发树(PIM Dense Mode)

邻居关系建立(PIM Hello)
邻居发现是形成组播分发树的先决条件,组播转发路径只能在 PIM Neighbor 间建立,通过 PIM Hello 包完成;
邻居关系建立
当路由器的接口激活 PIM 后,接口便周期(30s)发送 PIM Hello 数据包,目的地址 224.0.0.13。当交互 Hello 报文后,组播路由器间就能知道邻居信息,建立 PIM Neighbor 关系;

邻居关系维护
维持邻居关系依靠 PIM Hello 报文,邻居超时时间默认为 105s(标准为 3 倍的间隔时间,即 90 秒;在华为设备中,PIMv1 为 3 倍,即 90 秒,而 PIMv2 为 105 秒);
如果超时时间内收不到邻居发来的 PIM Hello 报文,则删除邻居关系;
分发树的形成
PIM-DM 首次形成组播分发树主要依赖:扩散机制、剪枝机制、断言机制: 1)扩散机制:组播数据包向所有的 PIM Neighbor 泛洪,同时组播路由器产生组播路由表项; 2)断言机制:当组播转发过程中存在多路访问网络,则需要选举出一个组播转发路由器,避免重复组播报文; 3)剪枝机制:如果组播路由器下没有组成员,则将源到该组播路由器的组播转发路径剪枝; 4)DR 选举机制:通过 PIM Hello 进行 DR 选举,以负责流量的转发;

扩散机制
Multicast Source 发送的组播报文会在全网内扩散; 当 PIM Router 接收到组播报文,先进行 RPF 检查,通过后会在 PIM Router 上创建(S,G)表项,然后会向所有 PIM Neighbor 发送;
扩散过程如下:
PIM-DM 形成的(S,G)表项有老化时间(默认 210s),如果老化时间超时前没有收到新的组播报文,则删除(S,G)表项;
扩散机制会周期性(默认180s)全网扩散组播数据,周期性扩散的主要目的是探测是否有新成员加组,但是由于全网扩散组播数据会浪费大量带宽,所以现在的组播网络一般使用 状态刷新机制、嫁接机制 来实现周期性全网扩散感知新成员加组的目的;
断言机制(Assert)
问题描述: 在网段(MA Network)中,当有多个相连的 PIM Router 向该网段转发组播报文时,需要保证只有一个 PIM Router 向该网段转发组播报文;
解决方案: 通过 Assert(断言)机制,其选举规则,将决定 Multicast Router 的转发行为: 1)获胜一方的下游接口称为 Assert Winner,将负责后续对该网段组播报文的转发; 2)落败一方的下游接口称为 Assert Loser,后续不会对该网段转发组播报文,PIM Router 也会将[……]

READ MORE

「Multicast」- PIM-Dense Mode 报文格式

PIM Hello
在 PIM Hello 中,携带多项 PIM 协议报文参数,主要用于 PIM Neighbor 间的 PIM 协议报文的控制。
具体如下: 1)DR_Priority:表示各路由器接口竞选DR的优先级,优先级越高越容易获胜。 2)Holdtime:表示保持邻居为可达状态的超时时间。如果在超时时间内没有收到PIM邻居发送的Hello报文,路由器则认为邻居不可达。 3)LAN_Delay:表示共享网段内传输 Prune 报文的延迟时间。 4)Neighbor-Tracking:表示邻居跟踪功能。 5)Override-Interval:表示 Hello 报文中携带的否决剪枝的时间间隔。

Frame 2: 76 bytes on wire (608 bits), 76 bytes captured (608 bits) on interface -, id 0
Ethernet II, Src: HuaweiTe_3e:77:c4 (00:e0:fc:3e:77:c4), Dst: IPv4mcast_0d (01:00:5e:00:00:0d)
Internet Protocol Version 4, Src: 10.0.45.5, Dst: 224.0.0.13
Protocol Independent Multicast
0010 …. = Version: 2
…. 0000 = Type: Hello (0)
Reserved byte(s): 00
Checksum: 0x2720 [correct]
[Checksum Status: Good]
PIM Options: 5
Option 1: Hold Time: 105
Option 19: DR Priority: 1
Option 20: Generation ID: 3401703534
Option 2: LAN Prune Delay: T = 0, Propagation Delay = 500ms, Override Interval = 2500ms
Option 21: State-Refresh: Version = 1, Interval = 60s

PIM Assert

Frame 34: 60 bytes on wire (480 bits), 60 bytes captured (480 bits) on interface -, id 0
Ethernet II, Src: HuaweiTe_1b:76:bc (00:e0:fc:1b:76:bc), Dst:[……]

READ MORE

「Network」- 组播,Multicast,常见问题处理

配置命令(Huawei)
常用命令

<Huawei> display pim interface
<Huawei> display pim neighbor

// 查看更多详细信息
<Huawei> display pim fsm

简单实验(PIM-Dense Mode)

配置:

// 路由器的互联接口
[Huawei] multicast routing-enable
[Interface] pim dm

// 在接收端的路由器
[Huawei] multicast routing-enable
[Interface] pim dm
[Interface] igmp enable # igmp static-group 239.1.1.1

// 注意事项
// 1)设备设备都要正确配置,否则组播流量是不会下发的。比如,如果没有终端加入组播组,则组播流量不会下发。
// 2)在下游接口中,如果单纯开启 IGMP 而没有开启 pim dm 指令,那生成的 PIM 路由将无法学习到下游接口,则无法下发流量;

查看:

// 查看路由表 以及 RPF 信息

<AR1>display multicast routing-table
(Empty)

<AR1>display pim routing-table
(Empty)

<AR1>display multicast rpf-info 192.168.1.2
VPN-Instance: public net
RPF information about source: 192.168.1.2
RPF interface: GigabitEthernet0/0/0
Referenced route/mask: 192.168.1.0/24
Referenced route type: unicast
Route selection rule: preference-preferred
Load splitting rule: disable

通过 eNSP 支持的 VLC 来播放视频,并在接收端查看视频……
查看:

<AR1>display multicast routing-table
Multicast routing table of VPN-Instance: public net
Total 1 entry

00001. (192.168.1.2, 239.2.2.2)
Uptime: 00:00:16[……]

READ MORE

「Multicast」- PIM-Sparse Mode(ASM)

问题描述
PIM-DM 模型使用“扩散-剪枝”形成组播分发树的原因是:在组播网络中,大部分 Multicast Router 无法得知组成员的位置,所以通过这种流量分发的方式来检测 Multicast Receiver 的存在;
在中大型组播网络中,由于网络较大,如果使用 PIM-DM 会遇到组多问题: 1)网络冲击:使用“扩散-剪枝”方式需要全网扩散组播报文,对于网络有一定冲击; 2)资源浪费:所有组播路由器均需要维护组播路由表,即使该组播路由器无需转发组播数据; 3)效率不高:对于组成员较为稀疏的组播网络,使用“扩散-剪枝”形成组播分发树的效率不高;
解决方案
原理简述
PIM-SM(ASM)模型形成组播分发树的方法是: 1)将 Multicast Receiver 的位置事先告知 Rendezvous Point(RP,汇聚点),形成 RPT(RP Tree); 2)Multicast Source 在发送组播数据时,组播网络先将组播数据发送至RP,然后由 RP 再将组播数据转发给组成员; 3)对于部分次优的组播转发路径,PIM-SM(ASM)能自动优化为最优路径(SPT);
特性说明
通过PIM-SM(ASM)模式形成组播分发树有如下好处: 1)只有组播转发路径上的 Multicast Router 需要维护组播路由表; 2)通过 RP 可以让所有 Multicast Router 获知组成员的位置; 3)避免“扩散-剪枝”机制,提高组播分发树的形成效率;
参考文献
PIM-SM (ASM Model) – AR500, AR510, AR531, AR550, AR1500, and AR2500 V200R009 CLI-based Configuration Guide – IP Multicast – Huawei[……]

READ MORE

「Multicast」- PIM-Sparse Mode,概念,术语

报文类型
Hello:用于 PIM Neighbor 发现,协议参数协商,PIM Neighbor 关系维护等;
Register(注册):用于事先源的注册过程。这是种单播报文,在源的注册过程中,组播数据被 First-Hop Router 封装在单播注册报文中发往 RP;
Register-Stop(注册停止):RP 使用该报文通知 First-Hop Router 停止通过注册报文发送组播流量;
Join/Prune(加入/剪枝):Join 报文用于加入组播分发树;Prune 报文则用于修剪组播分发树;
Assert(断言):用于断言机制。在 SM 中,当成员注册时,报文只会有一条路径,所以流量也在该流经上转发,所以很少产生 Assert 报文;
Bootstrap(自举):用于 BSR 选举。另外 BSR 也使用该报文向网络中扩散 C-RP(Candidate-RP,候选 RP)的汇总信息;
Candidate-RP-Advertisement(候选 RP 通告):C-RP 使用该报文向 BSR 发送通告,报文中包含该 C-RP 的网络地址及优先级等信息;[……]

READ MORE

「Multicast」- DR,Designated Router(PIM-SM)

问题描述
在 源端网络 或 成员端网络 中,有可能有多台组播路由器转发组播流量,从而造成重复组播报文的问题。
解决方案
PIM DR(Designated Router)是源端网络或者成员端网络的唯一组播转发者,由于不存在别的组播转发路由器就避免重复组播报文的问题。
源端网络的 DR 称为 Source-DR; 成员网络的 DR 成为 Reveiver-DR;
对于成员端网络,如果有多台组播路由器,则组播路由器的下行接口需要同时开启 IGMP 与 PIM 协议;
选举位置
在 MA Network 中,在互联接口间进行 DR 的选举,即:某台 Router 在某个接口上是 DR,但是在另个接口上不一定是 DR;
选举机制
DR 选举机制与 PIM-DM 中的 DR 选举机制一致: 1)比较 PIM Hello 报文的 DR Priority 字段(默认为 1,越大越优); 2)如果(1)相同,再比较路由器的 IP Address(大的,获胜);

当 DR 出现故障后,邻居路由器间会重新选举 DR。
参考文献
Understanding Designated Routers | Juniper Networks[……]

READ MORE

「Multicast」- PIM-Sparse Mode, Rendezvous Point

RP(Rendezvous Point,汇聚点)为网络中一台重要的 PIM Router ,用于处理源端 DR 注册信息及组成员加入请求。在网络中的所有 PIM Router 都必须知道 RP 的地址,类似于一个供求信息的汇聚中心。
配置 RP 设备
通过以下方式配置 RP: 1)Static RP:在网络中的所有 PIM Router 上配置相同的 RP 地址,静态指定 RP 的位置。 2)Dynamic RP:通过选举机制在多个 C-RP(Candidate-RP,候选RP)间选举出 RP;
Static RP 或 Dynamic RP,在设置时均能够指定该 RP 为哪些 Multicast Group 提供服务。但是,注意,同个 Multicast Group 必须指定相同的 RP 设备(即地址相同),所以同个 Multicast Group 无法使用两个 RP 进行负载分担;
Static RP
静态 RP 是手动指定的,需要在每台设备上配置静态 RP 地址;
Dynamic RP
动态选举 RP 会涉及两类角色: 1)C-BSR(Candidate-Bootstrap Router):参与 BSR 竞选,得到唯一的 BSR 设备; 2)C-RP(Candidate-RP):参与 RP 竞选,得到唯一的 RP 设备;
选举过程概述

1)C-BSR 通过竞选能选举出一个唯一的 BSR;(每 60s 发送一次报文) 2)C-RP 将自身信息发送给 BSR,使用单播报文,其中包含该 C-RP 服务的 Multicast Group; 3)BSR 收集 C-RP 的信息并形成 RP-Set 信息,BSR 通过 PIM 报文将 RP-Set 信息扩散给所有 PIM Router; 4)PIM Router 收到 RP-Set 消息后,根据 RP 选举规则选举出合适的 RP。
BSR Election Rules
BSR 竞选规则如下: 1)Priority 较高者获胜(Priority 数值越大优先级越高)。 2)如果优先级相同,IP Address 较大者获胜。
RP Election Rules
RP竞选规则如下: 1)与用户加入的组地址匹配的 C-RP 服务的组范围掩码最长者获胜(每个 RP 能够选择其要处理的组播地址范围,类似网络前缀)。 2)如果以上比较结果相同,则 C-RP Priority 较高者获胜(优先级数值越小优先级越高)。 3)如果以上比较结果都相同,则执行 Hash 函数,计算结果较大者获胜。 4)如果以上比较结果都相同,则 C-RP 的 IP Address 较大者获胜。[……]

READ MORE