「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

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

PIM-SM(ASM)首次形成 Distribution Tree 主要依赖: 1)RPT 构建(RPT Setup):组播叶子路由器主动建立到 RP 的组播分发树(RPT) 2)SPT 构建(SPT Setup):通过 Multicast Source Registration(组播源注册机制)形成组播源到RP的组播分发树(SPT) 3)DR 选举(DR Election):DR负责源端或组成员端组播报文的收发,避免重复组播报文,同时成员端DR还负责发送Join加组消息。

RPT Setup
RPT(RP Tree)是一棵以 RP 为根,以存在组成员关系的 PIM Router 为叶子的组播分发树。
在网络中,当出现 Multicast Receiver(形成 IGMP 表项)时: 1)Receiver-DR 向 RP 发送 Join 报文(广播); —- Join 报文包含 Upstream-Neighbor 字段,暗示由 RPF Neighbor 来处理该报文; —- Join 报文周期(60s)发送 ⇒ Reveiver-DR 作为 IGMP Querier 周期发送 Query 报文,而 Multicast Revceiver 会回复 Report 报文,进而导致 Reveiver-DR 会周期发送 Join 报文; 2)在 Join 报文去往 RP 的路径上,所有 PIM Router 将逐跳创建 (*, G) 表项,生成一棵以 RP 为根的 RPT; —- 鉴于 Join 报文的周期发送,该 (*, G) 表项的超时时间会被刷新,即:只要存在 Multicast Receiver,则该表项不会消失;

在使用 RPF 检查时,应该针对 RP 地址进行测试;
SPT Setup
问题描述:在 Multicast Source 与 Source-DR 间,没有 IGMP 协议,所以无法发送 Join 报文,所以无法通过 IGMP 生成 PIM (*, G) 表项,进而无法发送 Join 消息形成组播分发树。
解决方案:在 PIM-SM(ASM)中,想要形成从 Source-DR 到 RP 的 SPT,需要 Multicast Source Registration 机制(组播源注册)。
注册机制
形成 SPT 需要 Register 与 Join 报文,具体过程如下: 1)在 Multicast Source 中,发送组播数据到 Source-DR 设备; 2)在 Source-DR 中,根据 RP 信息,将 Register 报文(单播)发送给 RP 设备(组播数据被封装入 Register 中,目的地址为 RP 地址); 3)在 RP 中,基于组播报文的[……]

READ MORE

「Multicast」- PIM-Sparse Mode,常见报文格式

Bootstrap(BSR Election)

Frame 866: 60 bytes on wire (480 bits), 60 bytes captured (480 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
…. 0100 = Type: Bootstrap (4)
Reserved byte(s): 00
Checksum: 0x43cd [correct]
[Checksum Status: Good]
PIM Options
Fragment tag: 0x6f10
Hash mask len: 30
BSR priority: 30
BSR: 10.0.0.4
Address Family: IPv4 (1)
Encoding Type: Native (0)
Unicast: 10.0.0.4

C-RP-Advertisement

Frame 1585: 60 bytes on wire (480 bits), 60 bytes captured (480 bits) on interface -, id 0
Ethernet II, Src: HuaweiTe_ce:7c:6d (00:e0:fc:ce:7c:6d), Dst: HuaweiTe_54:69:ea (00:e0:fc:54:69:ea)
Internet Protocol Version 4, Src: 10.0.0.2, Dst: 10.0.0.4
Protocol Independent Multicast
0010 …. = Version: 2
…. 1000 = Type: Candidate-RP-Advertisement (8)
Reserved byte(s): 00
Checksum: 0xea62 [correct]
[Checksum Status: Good]
PIM Options
Prefix-count: 1[……]

READ MORE

「Multicast」- PIM-Sparse Mode

静态 RP 配置

[Huawei] multicast routing-enable
[pim] static-rp x.x.x.x {ACL} # 每台设备都要进行配置

参考设备手册,以获取更多细节。
动态 RP 配置
配置命令:

[AR3]display current-configuration interface
[V200R003C00]
#
interface GigabitEthernet0/0/0
ip address 192.168.2.253 255.255.255.0
pim sm
#
interface GigabitEthernet0/0/1
ip address 10.0.45.3 255.255.255.0
pim sm
#
interface GigabitEthernet0/0/2
#
interface NULL0
#
interface LoopBack0
ip address 10.0.0.3 255.255.255.255
pim sm
#
return
————————————————————————— C-RP
[AR3-pim]display this
[V200R003C00]
#
pim
c-rp LoopBack0
#
return
————————————————————————– C-BSR
[AR5-pim]display this
[V200R003C00]
#
pim
c-bsr LoopBack0
#
return

查看信息:

[AR3-pim]display pim rp-info
VPN-Instance: public net
PIM-SM BSR RP Number:2
Group/MaskLen: 224.0.0.0/4
RP: 10.0.0.2
Priority: 0
Uptime: 00:02:30
Expires: 00:02:00
Group/MaskLen: 224.0.0.0/4
RP: 10.0.0.3 (local)
Priority: 0
Uptime: 00:08:02
Expires: 00:02:00

[AR3-pim]display pim bsr-info
VPN-Instance: public net
Elected AdminScoped BSR C[……]

READ MORE

「Multicast」- 协议扩展

[……]

READ MORE

「Multicast」- SPT Switchover(PIM-SM,ASM)

问题描述
在PIM-SM网络中,一个组播组只对应一个RP。因此组播数据最初都会发往RP,由RP进行转发,这会导致两个问题: 过大的组播流量会对RP形成巨大的负担。 组播转发路径有可能是次优路径。

如果所示,从 Source 到 Reveiver 中,经过 RP(Router B)是次优路径。
解决方案
当数据发送至 RP 后,RP 会沿 RPT 将数据发送给成员端 DR。
为了解决 RPT 潜在的次优路径问题,Receiver-DR 会基于组播数据包中的 SRC-IP,反向建立从成员端 DR 到 Multcast Source 的 SPT;
具体过程如下:
事先在 Receiver-DR 中配置流量阈值,超过该阈值,将进行 SPT Switchover 操作: 1)基于 RPF 规则,决定(简单说,就是单播路由)的最短路径,设备将 Join 消息从 RPF 选举得出的上行接口发出; 2)而后,流量将从新的接口流入; 3)原有次优接口以后会送来流量,但是经过 RPF 检查(根据源地址进行 RPF 检查,而非 RP 地址),将进行修剪(用什么报文?);
在 SPT 切换的过程中,多路访问网络可能会存在重复报文,需要利用 Assert 机制快速选定下行接口。
组播分发树的维护
当组播分发树(SPT 或 RPT)稳定后,Receiver-DR 会周期性发送 Join/Prune 报文,用于维护组播分发树。 如果没有组播流量: 1)SPT 在一段时间后(默认 210s)会消失; 2)Receiver-DR 恢复到 RP 的 RPT(即原始转发路径);[……]

READ MORE

「Multicast」- PIM, 3.PIM Sparse Mode (SSM)

SSM 针对特定 Multicast Source 和 Multicast Group 的绑定数据流提供服务。
Multicast Receiver 在加入 Mutlicast Group 时,能够指定只接收特定 Multicast Source 的数据(加入 Multicast Group 以后,Multicast Receiver 只会收到指定源发送到该组的数据。),或指定拒绝接收来自特定 Multicast Source 的数据。 SSM 对组地址不再要求全网唯一,只需要每个 Multicast Source 保持唯一。这里的“唯一”指的是同个 Multicast Source 上不同的组播应用必须使用不同的 SSM 地址来区分。不同的 Multicast Source 间可以使用相同的组地址,因为 SSM 中针对每一个 (S, G) 信息都会生成表项。这样一方面节省了组播组地址,另一方面也不会造成网络拥塞。
解决方案
原理简述
由于 SSM 提前定义组播的源地址,所以 PIM-SM(SSM)可以在 Reveiver-DR 上基于组播源地址直接反向建立 SPT;
PIM-SM(SSM)无需维护 RP、无需构建 RPT、无需注册组播源,可以直接在 组播源 与 组成员 间建立SPT。PIM-SM(SSM)无需Assert机制
在PIM-SM(SSM)模型中,关键机制包括邻居发现、DR竞选、构建 SPT(DR与邻居发现机制与PIM-DM模式相似)。

组播分发树形成与维护
PIM-SM(SSM)模型构建组播分发树的形成主要依赖 IGMPv3 报文与 Join 报文。
PIM-SM(SSM)模型形成的组播分发树会一直存在(周期 Join 报文),不会因为没有组播流量而消失。[……]

READ MORE

「NETWORKING」- 差错控制技术

差错控制技术一般可以分为前向纠错与后向纠错两种:
后向纠错
ARQ(Automatic Repeat-reQuest,自动重传请求),是一种按需重传机制,发送方通过“发送-确认”机制感知接收方是否收到数据报文,如果没有收到接收方发的确认报文则会重传相应报文,由于是通过发送方重新发送报文达到纠错的结果,所以也被称为后向纠错;
这种纠错方式需要重复发送报文所以会引入额外时延。
前向纠错
将冗余纠错包与数据包一起发往接收方,接收方如果发现差错,直接通过冗余纠错包还原丢失的数据包。由于该纠错行为是发生在接收方的,所以也被称为前向纠错;
例如:FEC 技术;[……]

READ MORE

「NETWORKING」- A-FEC(Adaptive-FEC)

问题描述
在 FEC 中,原始数据与冗余纠错包的数量比例是固定的。当碰到突发丢包时有可能因丢包过多,导致冗余包无法还原原始数据,因此当面对有突发丢包的网络时,FEC 是不适用的。同时,FEC 由于添加了冗余包使得带宽利用率有所下降;
解决方案
A-FEC(Adaptive-FEC)技术可以基于现有网络质量灵活地增加冗余包,较好地解决 FEC 面临的问题;
原理简述
当网络质量较好时,A-FEC 可以少量添加或者不添加冗余包,提高带宽利用率; 当网络质量较差时,A-FEC 会增加冗余包的数量,避免因突发丢包导致的数据无法还原的问题;

应用场景
使用 FEC 或 A-FEC 可以保障关键的视频应用,减少视频卡顿与花屏。使用 A-FEC 算法根据应用和链路质量在发送端灵活增加冗余包,抵御网络连续丢包,可保障关键的视频应用在 20% 丢包的情况下无卡顿、无花屏;[……]

READ MORE

「NETWOKRING」- FEC(Forward error correction,前向纠错)

问题描述
在 IP 视频通话中常会因为丢包导致图像失真,音频中断等问题,因此在传输过程中需要部署差错控制技术;
解决方案
FEC(Forward error correction,前向纠错)技术是差错控制技术的一种,发送方在发送数据时会附上冗余纠错包,接收方如果发现差错后可以基于冗余包进行纠错;
原理简述

特性特征
FEC 冗余纠错包的纠错能力是有一定限制的,比如:4 个报文中丢了 3 个报文,那么依靠剩下的 1 个报文,FEC 是没有办法还原出其余三个报文的;
应用场景
FEC 适用于会随机丢包或者跨国 RTT 比较大的网络;[……]

READ MORE

「Networking」- 网络可靠性

问题描述
网络的可靠性,指当设备或者链路出现单点或者多点故障时,能够保证网络服务不间断的能力;
解决方案
网络的可靠性,通过从两类技术实现: 1)故障检测:能够通过软件实现; 2)冗余组件:能够从单板、设备、链路、软件多个层面实现
单板可靠性(硬件实现)
S12700E-8 机框正面结构

框式交换机由机框、电源模块、风扇模块、主控板、交换网板(SFU)、线路板(LPU)构成; 机框:为各种板卡、模块提供插槽,实现板卡间的通信; 电源模块:设备的供电系统 风扇模块:设备的散热系统 主控板(MPU,Main Processing Unit):负责整个系统的控制平面和管理平面; 交换网板(SFU,Switch Fabric Unit):负责整个系统的数据平面。数据平面提供高速无阻塞数据通道,实现各个业务模块之间的业务交换功能; 线路板(LPU,Line Processing Unit):线路处理单元是物理设备上用于提供数据转发功能的模块,提供不同速率的光口、电口;
S12700E-8 机框正面结构

以 S12700E-8 为例,设备提供 8 个线路板槽位、4 个交换网板槽位、2 个主控板槽位、6 个电源模块槽位、4 个风扇模块槽位; 框式交换机配置多个主控板、交换网板可保证设备自身的可靠性,单个槽位的交换网板、主控板损坏不影响设备的正常运行; 框式交换机的线路板损坏后,该板卡上的接口无法正常转发数据;
设备可靠性(硬件实现)
主备备份

设备冗余设计的网络中,下游交换机双上行接入,采用链路一主一备的方式,主链路上行接口、设备故障可以切换到备份链路,通过备份设备转发;
链路检测技术(软件实现)

为保证设备间链路可靠性,在设备间部署多条物理线路,为防止环路 STP 只保留一条链路转发流量,其余链路成为备份链路;
IP Flow Performance Measurement (FPM)
用于检测链路可靠性技术;
通过业务数据测试,所以测试结果对于业务更加精准;
Network Quality Analysis (NQA)
网络质量检测技术;[……]

READ MORE

「NETWORKING」- 高可靠性:链路探测技术

问题描述
网络链路质量的波动会影响业务质量,而如何快速地感知链路质量波动是改善链路质量的第一步;
解决方案
探测链路质量的协议和技术有很多,基本可以分为两大类:
链路连通性检测技术
主要有: 1)BFD(Bidirectional Forwarding Detection,双向转发检测) EFM(Ethernet in the First Mile,最后一公里以太网) CFM(Connectivity Fault Management,连接错误管理)
链路质量检测技术
主要有: NQA(Network Quality Analysis,网络质量分析) IP FPM(IP Flow Performance Measurement,IP 流性能测量)

应用场景
在现网中,主要使用 BFD 探测链路连通性,使用 NQA、IP FPM 探测链路质量;
常用链路质量探测场景
NQA 与 BFD 通常会与浮动路由联动。当 NQA 或 BFD 检测到链路出现故障,则高优先级路由会失效,备用路由会被启用;

端到端链路质量探测场景
IP FPM 通过将数据包进行染色标注数据包,帮助入口与出口的设备测量特定流量的丢包或抖动; 由于 IP FPM 可以端到端地测量网络质量,所以可以在出口多链路的场景下测试不同链路的真实网络质量;[……]

READ MORE

「Network」- 双向转发检测(BFD, Bidirectional Forwarding Detection)

问题描述
随着网络应用的广泛部署,网络发生故障极大可能导致业务异常。为了减小链路、设备故障对业务的影响,提高网络的可靠性,网络设备需要尽快检测到与相邻设备间的通信故障,以便及时采取措施,保证业务正常进行;
在无法通过硬件信号检测故障的系统中: 1)应用通常采用上层协议本身的 Hello 报文机制检测网络故障。例如,常用路由协议的 Hello 报文机制检测时间较长,检测时间超过 1s。当应用在网络中传输的数据超过 GB/s 时,秒级的检测时间将会导致应用传输的数据大量丢失; 2)在三层网络中,静态路由本身没有故障检查机制;

解决方案
BFD(Bidirectional Forwarding Detection,双向转发检测)提供了一个通用的、标准化的、介质无关、协议无关的快速故障检测机制,用于快速检测、监控网络中链路或者 IP 路由的转发连通状态;
故障检测存在的意义是:为了及时发现问题以进行切换,而非单纯检测故障。所以,存在主备链路才更加有意义;
原理简述
BFD 是个简单的 Hello 协议: 1)两个系统间建立 BFD Session 通道,并周期性发送 BFD 检测报文; 2)如果某个系统在规定的时间内没有收到对端的检测报文,则认为该通道的某个部分发生故障;

特性说明
对相邻转发引擎之间的通道提供轻负荷、快速故障检测; 用单一的机制对任何介质、任何协议层进行实时检测;
应用场景[……]

READ MORE

「BFD」- 概念、术语

检测机制
两个系统建立BFD会话,并沿它们之间的路径周期性发送BFD控制报文,如果一方在既定的时间内没有收到BFD控制报文,则认为路径上发生了故障。
建立会话
BFD 通过控制报文中的 本地标识符 和 远端标识符 区分不同的 Session(会话);
根据 Local Discriminator 和 Remote Discriminator 的配置方式不同,会话的建立有两种方式:静态建立会话;动态建立会话:
静态建立会话
对于静态建立的会话: 1)通过命令行手工配置会话参数,包括配置本地标识符和远端标识符等; 2)然后手工下发 BFD 会话建立请求;

应用场景:单臂回声(当对方不支持 BFD 时使用)
动态建立会话
对于动态建立的会话: 1)Local Discriminator,是由触发创建会话的系统动态分配; 2)Remote Discriminator 从收到对端 BFD 消息的 Local Discriminator 的值学习而来。

动态建立会话时,系统对本地标识符和远端标识符的处理方式如下: 1)动态分配本地标识符,当应用程序触发动态创建BFD会话时,系统分配属于动态会话标识符区域的值作为BFD会话的本地标识符。然后向对端发送 Remote Discriminator=0 的BFD控制报文,进行会话协商。 2)自学习远端标识符,当BFD会话的一端收到 Remote Discriminator=0 的BFD控制报文时,判断该报文是否与本地BFD会话匹配(?),如果匹配,则学习接收到的 BFD 报文中 Local Discriminator 的值,获取远端标识符。
应用场景:通过协议驱动,需要协议程序支持 BFD 功能。比如 OSFP 的 BFD 特性,当开启后,运行 OSPF 的同时会进行 BFD 检测。
会话状态
会话有四种状态: 1)在会话过程中包含有三个状态:Init、Up 两个用来建立会话;Down 用来断开会话; 2)另外还有一个特殊状态:AdminDown,使会话可以通过管理手段 down,在状态机中 AdminDown 也是 down 状态。
Down 状态说明当前会话断开。会话将持续维持在 down 状态,直到收到对端的报文并且该报文的 sta 字段标志着对端状态不是 up 状态: 1)如果收到的是 down 报文,状态机将从 down 状态跳转到 init 状态; 2)如果收到的是 init 报文,状态机将从 down 状态跳转到 up 状态; 3)如果收到的是 up 包,状态机维持 down 状态。
Init 状态说明与远端正在通信,并且本地会话期望进入 up 状态,但是远端还没回应。一个init状态的会话会维[……]

READ MORE

「BFD」- 报文格式

BFD 检测是通过维护在两个系统间建立的 BFD Session 来实现的,系统通过发送 BFD 报文建立会话; BFD 控制报文根据场景不同封装不同,报文结构由 强制部分 和 可选的认证字段 组成;
强制部分

Ver:BFD协议版本号,目前为 1; Diag:诊断字,标明本地 BFD 系统最近一次会话状态发生变化的原因; Sta:BFD本地状态;
P:参数发生改变时,发送方在BFD报文中置该标志,接收方必须立即响应该报文; F:响应P标志置位的回应报文中必须将F标志置位; C:转发/控制分离标志,一旦置位,控制平面的变化不影响BFD检测; A:认证标识,置1代表会话需要进行验证; D:查询请求,置位代表发送方期望采用查询模式对链路进行监测; M:为BFD将来支持点对多点扩展而设的预留位;
Detect Mult:检测超时倍数,缺省 3 倍。用于检测方计算检测超时时间; Length:报文长度,单位为字节;
My Discriminator:BFD 会话连接本地标识符(Local Discriminator) 。发送系统产生的一个唯一的、非零鉴别值,用来区分一个系统的多个BFD会话; Your Discriminator:BFD 会话连接远端标识符(Remote Discriminator) 。从远端系统接收到的鉴别值,这个域直接返回接收到的“My Discriminator”,如果不知道这个值就返回0;
Desired Min TX Interval:本地支持的最小 BFD 报文发送间隔; Required Min RX Interval:本地支持的最小 BFD 报文接收间隔; Required Min Echo RX Interval:本地支持的最小Echo报文接收间隔,单位为微秒(如果本地不支持Echo功能,则设置0);
可选部分(认证字段)

报文格式
单臂回声

Frame 33: 66 bytes on wire (528 bits), 66 bytes captured (528 bits) on interface -, id 0
Ethernet II, Src: HuaweiTe_84:0e:3c (00:e0:fc:84:0e:3c), Dst: HuaweiTe_76:6c:63 (00:e0:fc:76:6c:63)
Internet Protocol Version 4, Src: 10.0.25.2, Dst: 10.0.25.2
User Datagram Protocol, Src Port: 49154, Dst Port: 3784
BFD Control message
001. …. = Protocol Version[……]

READ MORE

「BFD」- 常用配置示例

配置示例(Huawei)
参考设备文档,以获取 BFD 与使用方法,以及常见问题的处理方法。
补充说明: 1)静态:当设备开启 BFD 并 commit 后,设备便已开始发送 BFD 报文;后续操作是将 BFD Session 与其他模块进行关联(联动)。 2)动态:无需执行 commit 指令,直接提交即可;
动态 BFD 配置

[AR4]bfd
[AR4]bfd 1 bind peer-ip 10.0.46.6 interface GigabitEthernet 0/0/1 source-ip 10.0.46.4 auto

与静态路由联动

[R1] bfd 12 bind peer 10.0.12.2 interface GigabitEthernet 0/0/1
[BFD] discriminator local 10
[BFD] discriminator remote 20
[BFD] commit

[R2] bfd 21 bind peer 10.0.12.1 interface GigabitEthernet 0/0/1
[BFD] discriminator local 20
[BFD] discriminator remote 10
[BFD] commit

[R1] ip route-static 4.4.4.4 10.0.12.2 track bfd-session 12 # 被 BFD 追踪,当链路故障时,立即时效
[R1] ip route-static 4.4.4.4 10.0.13.2 preference 100 # 该优先级 100 的静态路由开始生效

<Huawei> display bfd session all verbose

单臂回声

[Huawei] bfd

[R2] bfd 21 bind peer 10.0.12.1 interface GigabitEthernet 0/0/1 one-arm-echo
[BFD] discriminator local 20
[BFD] commit

[R1] ip route-static 4.4.4.4 10.0.12.2 track bfd-session 12 # 被 BFD 追踪,当链路故障时,立即时效[……]

READ MORE

「BFD」- 高级功能

共享会话
同一个数据路径上只建立一个BFD会话,如果不同的应用在同一个数据路径上需要使用不同的BFD协议参数,则应该考虑通过共享解决:选择能覆盖所有应用要求的参数来配置唯一的BFD会话,BFD会话的状态变更将上报给所有绑定的应用。
注意,这并非 BFD 高级特性,而是实践经验;
BFD Echo
BFD Echo(BFD 回声功能),是由本地发送 BFD Echo 报文,远端系统将报文环回的一种检测机制。
支持 BFD 功能的设备主动发起回声请求功能,不支持 BFD 功能的设备接收到该报文后直接将其环回,从而实现转发链路的连通性检测功能。
原理简述
发送端的 BFD 报文使用相同的源目地址
特性说明
1)不要求远端支持 BFD 特性,仅本端支持 BFD 特性便能完成链路检测; 2)当不能用于多跳:数据包不会发送到远端,在送达远端前便被中间系统转发回来(RFC 5883/Section 3);
应用场景
在两台直接相连的设备中,R1 支持 BFD 功能,R2 不支持 BFD 功能,只支持基本的网络层转发。为了能够快速的检测这两台设备之间的故障,可以在 R1 上创建 One-Arm-Echo(单臂回声)功能的 BFD 会话。

联动功能
联动,是指 BFD 与其他协议共同工作。例如 BFD 与 OSPF 联动就,是将 BFD 和 OSPF 关联起来, BFD 将链路故障的快速检测结果告知 OSPF 协议(否则依赖 OSPF Hello 报文检测会需要很久才能发现链路故障)。
原理简述
当 BFD 会话建立后,会周期性地快速发送 BFD 报文。如果在检测时间内没有收到 BFD 报文则认为该双向转发路径发生故障,通知被服务的上层应用进行相应的处理。
联动功能由三部分组成: 1)监测模块:负责对链路状态、网络性能等进行监测,并将探测结果通知给追踪模块; 2)追踪模块:当收到监测模块的探测结果后,将及时改变追踪项的状态,并通知应用模块; 3)应用模块:根据追踪项的状态,进行相应的处理,从而实现联动;

场景:与 Static Routing 联动
静态路由自身没有检测机制,如果静态路由存在冗余路径,通过静态路由与 BFD 联动,当主用路径故障时,实现静态路由的快速切换 。
如下图,当通往 ISP1 的链路出现故障的时候,BFD会话能够快速感知,并通知路由器将流量切换到指向 ISP2 的链路:[……]

READ MORE

「IP-FPM」- IP Flow Performance Measurement,IP性能测量

问题描述
随着云计算时代的到来,业务端到端的性能检测变得非常重要,
但是常用的 NQA 技术在网络端到端性能统计的场景下存在缺陷: 1)NQA 通过构造业务报文,模拟业务报文在网络上转发,因此统计得到的性能指标不够精确; 2)NQA 不支持跨网络层端到端的场景,不能很好地解决 IP 网络在多路径场景下,网络性能难以监控和统计的问题;
解决方案
IP FPM(IP Flow Performance Measurement,IP 性能测量)是一种通用的 IP 网络性能检测的方案,可以有效地解决上述问题;
一方面,IP FPM 可以直接对业务报文进行测量,测量数据可以真实反映 IP 网络的性能; 另一方面,IP FPM 可以在线监控 IP 网络承载的业务的变化,真实准确地反映出业务的运行情况;
原理简述

TLP(Target Logical Port,目标逻辑端口)
TLP 是分布在网络边缘的观测点,对应网络中边缘节点的接口,负责完成如下动作: 执行统计动作(丢包统计、时延统计); 产生统计数据(收发报文计数、收发流量统计、时间戳信息等);
对于一条具体的目标流: 1)如果一个 TLP 是其上游统计点,那么该 TLP 被称为 In-Point-TLP; 2)如果该 TLP 是目标流的下游统计点,那么该 TLP 被称为 Out-Point-TLP;
DCP(Data Collecting Point,数据收集点)
DCP 是 IP FPM 统计系统的数据收集点,对应网络中的边缘节点,负责完成如下动作: 管理和控制 TLP; 收集 TLP 产生的统计数据; 上报统计数据给 MCP;
MCP(Measurement Control Point,测量控制点)
MCP 是 IP FPM 统计系统的控制角色,对应网络中的中间节点,负责完成如下动作: 收集 DCP 上送的统计数据; 完成统计数据的汇总和计算; 向用户终端或者网管系统上报统计结果;[……]

READ MORE

「NQA」- 网络质量分析(Network Quality Analysis)

问题描述
为了使网络服务质量可见,使用户能够自行检查网络服务质量是否达到要求,需要采取以下措施: 1)在设备上,提供能够说明网络服务质量的数据; 2)在网络中,部署探针设备能对网络服务质量进行监控;
但是,当部署上述措施时,需要在设备侧提供(如时延、拌动、丢包率等)相关统计参数和使用专用的探针设备,增加设备和资金的投入;
解决方案
NQA(Network Quality Analysis,网络质量分析)能够实现该需求,并减少设备和资金的投入(控制成本);
NQA 是种实时的网络性能探测和统计技术,可以对响应时间、网络拌动、丢包率等网络信息进行统计;
原理简述
NQA 通过发送特定的数据包,达到测试该业务在现网中的业务质量的目的:
1)NQA 测试中,把测试两端称为客户端和服务器端 (或者称为源端和目的端); 2)NQA 的测试由客户端发起,在客户端配置测试例后,NQA 把相应的测试例放入到测试例队列中进行调度; 3)NQA 测试可与多个模块进行联动,NQA 将结果通知其他模块,其他模块会根据探测结果进行相应处理;

特性特征
当设备部署 NQA 时,就不用部署专门的探针设备,可以有效的节约成本; NQA 可以实现对网络运行状况的准确测试,输出统计信息; NQA 的联动功能能够用于链路连通性检测; 使用非业务数据测试网络质量,所以测试结果对于业务会存在偏差;
应用场景
NQA 监测网络上运行的多种协议的性能,使用户能够实时采集到各种网络运行指标,例如:HTTP 的总时延、TCP 连接时延、DNS 解析时延、文件传输速率、FTP 连接时延、DNS 解析错误率等;
概念术语
联动功能组成部分
联动功能由检测模块、Tack、应用模块组成:
测试类型
NQA 的测试主要是针对常用的网络服务进行测试:
在 SD-WAN 中,还会关注链路的时延,以控制流量的转发;[……]

READ MORE

「NETWORKING」- 可靠性技术:冗余

当网络出现问题时,问题点可能无法第一时间发现或者修复,因此需要冗余技术;
常用的冗余技术主要有 Stack(堆叠)、Link Aggregation(链路聚合)、VRRP 等。
其中出口或者网关设备使用最多的网络冗余技术是 VRRP;[……]

READ MORE

「Link Aggregation」- 链路聚合、链路汇聚、绑定

问题描述
随着网络规模不断扩大,用户对骨干链路的带宽和可靠性提出了越来越高的要求。随着业务的发展和园区网络规模的不断扩大,用户对于网络的带宽、可靠性要求越来越高。传统解决方案通过升级设备方式提高网络带宽,同时通过部署冗余链路并辅以STP(Spanning Tree Protocol,生成树协议)协议实现高可靠。传统解决方案存在灵活度低、故障恢复时间长、配置复杂等缺点。
在传统技术中,常用更换高速率的接口板或更换支持高速率接口板的设备的方式来增加带宽,但这种方案需要付出高额的费用,而且不够灵活。
解决方案
将多条物理链路捆绑为一条逻辑链路,从而实现增加链路带宽的目的。同时,这些捆绑在一起的链路通过相互间的动态备份,可以有效地提高链路的可靠性,生成树计算时按一个链路计算,这样的方法叫做链路聚合。
以太网链路聚合,Eth-Trunk / port trunking, link bundling, Ethernet/network/NIC bonding, channel bonding, NIC teaming,Link Aggregation,思科叫做 port-channel,华为叫做 Eth-trunk
原理简述
采用 链路聚合技术 能够在不进行硬件升级的条件下,通过将多个物理接口捆绑为一个逻辑接口,来达到增加链路带宽的目的。
此时,当链路聚合后,在 STP 中,认为是单个链路,STP 将 Eth-Trunk 视为单个接口。
协议特性
1)增加带宽:链路聚合接口的最大带宽可以达到各成员接口带宽之和。实现增大带宽目的(而 STP 会阻塞端口,无法完全利用带宽)
2)提供冗余:当某条活动链路出现故障时,流量可以切换到其他可用的成员链路上,从而提高链路聚合接口的可靠性。
3)负载分担:担在一个链路聚合组内,可以实现在各成员活动链路上的负载分担。
Q:链路聚合是否会导致环路?即同个数据帧是否会在同个链路聚合组内的多条链路间转发? A:在链路聚合组内的端口,交换机不会将数据发送给组内的其他端口。
应用场景
核心节点部署:数据转发都要通过核心节点,所以链路聚合需要部署在核心节点中,提升整个网络的数据吞吐量。
交换机之间:为保证交换机之间的链路带宽以及可靠性,可以在交换机之间部署多条物理链路并使用Eth-Trunk。
交换机与服务器之间:为了提高服务器的接入带宽和可靠性,将两个或者更多的物理网卡聚合成一个网卡组,与交换机建立链路聚合。
交换机与堆叠系统:汇聚层交换机进行堆叠,堆叠系统使得两台交换机成为一台逻辑上的设备,交换机与堆叠系统通过链路聚合互联可以组建高可靠、无环的网络。
防火墙双机热备心跳线:在防火墙双机热备组网中,使用心跳线来检测[……]

READ MORE