「Huawei VRP」- 配置 RIP 协议

[Huawei] rip [Huawei-rip-1] network 10.0.0.0 # 宣告网络,对于 RIPv1 只能针对主类进行宣告(否则报错)
[Huawei-rip-1] version 2
修改 Metric 参数
interface GigabitEtherente 0/0/0 [Interface] rip metricin 2 # 修改收到的 Metric 参数,并累加该值 [Interface] rip metricout 2 # 修改发出的 Metric 参数,使用该值。对端收到的也为该值;
水平分割/毒性反转
[Interface] rip split-horizon [Interface] rip poision-reverse # 优先级更高
禁止发送 RIP 报文
[Interface] undo rip output # 不发送 [Interface] undo rip input # 不接收
抑制接口
[rip-a] silent-interface GigabitEthernet 0/0/1 # 该接口只接收 RIP 报文,但是不发送;优先级高于 Input/Output 特性;
验证 RIP 配置
display rip
关闭汇总(RIPv2)
undo summary
summary always # 针对华为设备的设置,而单纯的 summary 不会发生汇总
[Huawei] undo summary [Interface] rip summary-address 10.1.56.0 255255.0.0 # 手动进行汇总[……]

READ MORE

「Network」- 路由控制、路由策略、路由过滤

问题描述
在复杂的数据通信网络中,根据实际组网需求,往往需要实施对路由信息进行过滤、属性设置等操作。通过对路由的控制,进而影响数据流量转发。
解决方案
Route Policy(路由策略),能够实现对路由控制。例如 从路由表中去除某些路由条目、仅允许存在特定路由条目 等等;
原理简述
1)开始,通过工具(匹配规则)来抓取路由条目; 2)然后,针对抓取到的路由条目应用某些策略;

特性说明
Route Policy 并非单一的技术或网络协议,而是一个技术专题或方法论,里面包含多种工具及方法。
应用场景
路由策略应用灵活而广泛,有以下几种常见方式: 1)控制路由的发布:对发布的路由进行过滤,只发布满足条件的路由(network); 2)控制路由的接收:对接收的路由进行过滤,只接收满足条件的路由; 3)控制路由的引入:控制从其他路由协议引入的路由条目,只有满足条件的路由才会被引入(import);[……]

READ MORE

「Route Policy」- 概念、术语

概述协议
当实施路由策略时,需要完成两件工作:
1)路由匹配:通过编写规则,来捕获符合条件的路由条目;
ACL;IP Prefix;
2)实施策略:针对匹配的路由,来使用策略工具进行处理;
Filter Policy;Route Policy;[……]

READ MORE

「Route Policy」- IP Prefix

问题描述
ACL 仅能匹配路由条目的 Prefix(网络前缀)信息,无法用于匹配 Mask(前缀长度),鉴于此,通过 ACL 无法更好的进行路由匹配;
解决方案
IP-Prefix List(IP 前缀列表)是将路由条目的网络地址、掩码长度作为匹配条件的过滤器,能在各路由协议发布和接收路由时使用;
IP Prefix 是专门用于匹配路由条目的工具(但是不能用于过滤流量),在路由过滤时,通常建议使用 IP Prefix 工具;
语法格式
与 ACL 不同,IP-Prefix List 能够同时匹配 IP 地址前缀长度 以及 掩码长度,增强了匹配的精确度;

[Huawei] ip ip-prefix <ip-prefix-name> index <INDEX> <action> <prefix> <mask> greater-equal <start> less-equal <end>

[Huawei] ip ip-prefix test index 10 permit 192.168.1.0 22 greater-equal 24 less-equal 26

1)ip-prefix-name:地址前缀列表名称 2)INDEX:本匹配项在地址前缀列表中的序号,匹配时根据序号从小到大进行顺序匹配 3)action:permit/deny,地址前缀列表的匹配模式为允许 / 拒绝,表示匹配 / 不匹配 4)prefix/mask:匹配路由的网络地址,并限定网络地址的前多少位需严格匹配 5)start/end:匹配路由前缀长度,掩码长度的匹配范围 mask-length<=greater-equal-value<=less-equal-value<=32
匹配机制

默认规则
针对某条路由,若无与其匹配的规则,则默认拒绝;
简单示例

1.1.1.1/32、1.1.1.0/27、1.1.1.0/26、1.1.1.0/25、1.1.1.0/24
||
vv
ip ip-prefix myList index 10 permit 1.1.1.0 24 greater-equal 24 less-equal 27
||
VV
1.1.1.0/27、1.1.1.0/26、1.1.1.0/25、1.1.1.0/24

所有掩码长度在 8 到 32 的路由都被 Permit:

ip ip-prefix aa index 10 permit 10.0.0.0 8 less-equal 32

屏蔽某几条,并允许其他所有:[……]

READ MORE

「Route Policy」- 过滤策略,Filter Policy(路由、过滤)

问题描述
我们需要对路由信息过滤,能够对接收、发布、引入的路由进行过滤。
解决方案
Filter-Policy(过滤-策略)是个很常用的路由信息过滤工具,能够对接收、发布、引入的路由进行过滤,可应用于 IS-IS、OSPF、BGP 等协议。

如图所示,R1、R2、R3 间运行BGP路由协议,路由在各个设备间传递。当需要根据实际需求过滤某些路由信息时,能够使用 Filter-Policy 实现。
在距离矢量路由协议中
在距离矢量路由协议中,设备间传递的是路由信息,如果需要对这种路由信息进行某种过滤,可以使用 Filter-Policy 实现
注意,出方向和入方向的生效位置:

距离矢量协议是基于路由表生成路由的,因此过滤器会影响从邻居接收的路由和向邻居发布的路由。
如果要过滤掉上游设备到下游设备的路由,只需要在上游设备配置filter-policy export或者在下游设备上配置filter-policy import。
在链路状态路由协议中
在链路状态路由协议中,各路由设备间传递的是 LSA 信息,然后设备根据 LSA 汇总成的 LSDB 信息计算出路由表。
但是 Filter-Policy 仅过滤路由信息,而无法过滤 LSA:

Import: 1)操作对象:学习到的路由条目(实际上是对 OSPF 计算出来的路由进行过滤,不是对发布和接收的 LSA 进行过滤); 2)OSPF 把网络中所泛洪的LSA存储到自己的 LSDB 中,并且运行 SPF 算法,计算出一棵以自己为根且无环的最短路径树,Filter-Policy对 OSPF 计算出来的路由(加载到路由表之前)进行过滤,而不会对 LSA 进行过滤(否则会影响拓扑计算);
Export: 1)操作对象:通过命令 import-route 引入外部路由; 2)对引入的路由在发布时进行过滤,只将满足条件的外部路由转换为 Type5 LSA 发布出去;
配置命令(Huawei)
OSPF(链路状态)

// 按照过滤策略,控制下发到 IP Routing Table 中的路由条目,但不会影响通告;
[Huawei-ospf-100] filter-policy { acl | ip-prefix | route-policy route-policy-name [ secondary ] } import

// 按照过滤策略,设置对引入路由在向外发布时进行过滤。
[Huawei-ospf-100] filter-policy { acl | ip-prefix | route-policy route-pol[……]

READ MORE

「Route Policy」- Route Policy(路由、过滤、设置属性)

解决方案
Route-Policy 也是个策略工具,用于过滤路由信息。与 Filter Policy 不同,Route Polocy 能为过滤后(允许通过)的路由信息设置路由属性。
Route-Policy 主要用于路由条目过滤,辅以设置路由属性。
语法格式
格式概览:
配置示例:

route-policy test permit node 10
if-match x1
if-match x2
apply y1

route-policy test permit node 20
if-match x3 x4
apply y2

……

route-policy test permit node N
if-match xn
apply yn

permit / deny
指定 Route-Policy Node 的匹配模式为允许或拒绝,决定路由条目是否通过;
permit:指定 Route-Policy 节点的匹配模式为允许。如果路由与节点所有的 if-match 子句匹配成功,则执行此节点 apply 子句;否则,进行下一节点。
deny:指定 Route-Policy 节点的匹配模式为拒绝。如果路由与节点所有的 if-match 子句匹配成功,则该路由将被拒绝通过;否则进行下一节点。
node
指定 Route-Policy 的节点号。整数形式,取值范围是 0~65535;
Route-Policy 由单个或多个 Node(节点)构成,按照编号从小到大的顺序排列。Node 间的关系为“或”,Route Policy 根据 Node 编号,大小从小到大顺序执行,当某个 Node 匹配时,将不会继续向下匹配。
if-match / apply
每个 Node 由条件语句(匹配条件,if-match)及执行语句(执行动作,apply)组成。每个 Node 可包含多个 if-match,在 Node 内的多个 if-match 间的关系为“与”,即匹配所有条件语句才会执行本节点内的动作。
if-match 子句:定义该节点的匹配条件。通常是对 ACL、IP Prefix 的引用;
apply 子句:定义针对被匹配路由执行的操作。Permit 时,才使用 apply 子句,否则 apply 是无意义的。apply 用来为路由策略指定动作,用来设置匹配成功的路由的属性。在 Node 中,如果没有配置apply子句,则该节点仅起过滤路由的作用。如果配置一个或多个apply子句,则通过节点匹配的路由将执行所有apply子句。[……]

READ MORE

「路由策略」- 3.Problem Solving (how-to)

控制引入路由(Huawei)

[ACL]
[IP Prefix]

[OSPF-1] filter-policy <acl/ip-prefix>
[OSPF-1] import-route <type> route-policy <name>

通过 Route Policy 技术,来修改 BGP Route 属性:

# 这里我们使用 ACL 来抓取路由,仅测试目的

[ACL-2000] rule permit source 10.1.1.1 0.0.0.0

route-policy set-as_path permit node 1000
if-match acl 2000
apply as-path 100 additive

route-policy set-as_path permit node 2000 # 当无匹配规则时,Route Policy 默认为拒绝,
# 该条目用于匹配其他所有路由条目,以允许通过;[……]

READ MORE

「Network」- 路由引入

问题描述
场景一:假设 A公司 和 B公司 各有自己的网络,这两个网络被独立管理及运维,A公司 网络使用的路由协议为 OSPF 协议,B公司 网络使用的路由协议为 IS-IS 协议。现在两家公司合并成一家公司,导致原有的两张网络不得不进行整合,为了使合并后的新公司业务流量能够正常在整合后的网络上交互,最重要的就是实现路由互通。
场景二:在大型企业网络中,网络规模十分庞大,选用单一的路由协议无法满足网络的需求,因此多种路由协议共存的情况十分常见。或者出于业务逻辑或行政管理的考虑,会在不同的网络结构中设计和部署不同的路由协议,使路由的层次结构更加清晰可控。在这样的网络环境下,也需要实现全网路由互通。
解决方案
若要实现路由互通,可以通过以下方法: 1)重新规划及整改全网路由协议 —- 该方案部署复杂。在大型环境中,重构并不是问题的解决方案; 2)在 OSPF 和 IS-IS 路由域的边界设备上进行操作,使得路由信息在两个动态路由协议之间传递。 — 该方案不需要改变原有拓扑架构,部署较为简单,但可能有环路风险。
原理简述
路由引入,指将路由信息从某种路由协议发布到另种路由协议的操作。 通过路由引入,能够实现路由信息在不同路由协议间传递。 当执行路由引入时,还能够部署路由控制,从而实现对业务流量的灵活把控。
协议特性
优点:当网络规模较大且使用多种路由协议时,路由协议间通过路由引入的方式,来实现路由的相互通告。
缺点:由于路由引入可能会引入大量路由,并导致低性能设备无法承受,因此在路由引入时,需要进行路由控制来实现路由的按需分发。
应用场景
多种路由协议互通
将汇聚层交换机的 Vlanif 引入 OSPF 协议,而不是通过 network 宣告。通过路由引入,以使 OSPF 不会向该 VLAN 内发送报文。否则,如何通过 network 方式,则会向该网络宣告 OSPF 信息。
概念术语
来源
在执行路由引入时,引入的路由信息来自全局路由表,而非协议路由表。
比如 import-route direct 是引入 display ip routing-table 显示的 Type=Direct 类型的路由条目。
方向
路由引入是具有方向性的: 1)将路由信息从路由协议 A 引入到路由协议 B(A-to-B),则路由协议 B 能获知 A 中的路由信息。 2)但是此时,A 还并不知晓 B 路由协议中的路由信息,除非配置 B-to-A 的路由引入。
在路由引入时,需要注意以下几点: 1)路由优先级:比如 OSPF 外部优先级 150;OSPF 内部优先级 10;IS-IS 仅有单个优先级 15 ; 2)路由回灌:单点双向引入还好,但是双点双向引入[……]

READ MORE

「Network」- 路由引入,双点双向路由重分发,Dual-Point Bidirectional Route Redistribution

问题描述
在边界路由器上把两个路由域的路由相互引入,称之为双向路由重发布。两个路由域存在两个边界路由器,并且都执行双向路由重分发,此时称为双点双向路由重发布。

双点双向路由重发布是种经典的路由模型,因单点的双向路由重发布缺乏冗余性,一旦单点的边界路由器故障,那么两个路由域之间的通信可能就会出现问题。因此在大型网络部署中,一般采用双点双向路由重发布。
双点双向重路由发布,虽然增强网络的可靠性,但是容易引发 次优路径、路由环路 问题。
路径次优

问题描述
1)R1 ⇒ R2 ⇒ R4 ⇒ R3,此时 R3 学习到 10.1.1.0/24 路由,协议优先级为 15; 2)R1 ⇒ R3,此时 R3 学习到 10.1.1.0/24 路由,协议优先级为 150(该直连路由通过 OSPF 引入,属于 OSPF ASE 路由); 3)根据路由匹配规则(若网络地址相同,则比较协议优先级),则 R3 访问 10.1.1.0/24 路径为:R3 ⇒ R4 ⇒ R2 ⇒ R1; 4)这是次优路径,而最佳路径是通过 R3 ⇒ R1 直接访问;
原因分析
在路由引入及发布过程中,路由优先级(这里是路由协议的优先级)发生变化
Q:是否会出现双向次优路由?即 R2 R3 都进行路由引入,导致 R2 R3 去往 10.1.1.0/24 都为次优路径? A:次优路径是单向的。因为 R2 引入之后 R3 通过 ISIS 学习 10.1.1.0/24 路由,并加入路由表。此时执行 Import Route 是从路由表中引入 OSPF 路由,而 10.1.1.0/24 是 ISIS 学习到的,因此不会引入该路由,也就是说 R2 不会通过 ISIS 学习到 10.1.1.0/24 路由。(这里需要强调的是,路由引入是从全局路由表引入的,而非协议路由表。先入为主,导致 R3 全局路由表的 10.1.1.0/24 路由是通过 ISIS 学习到的,而 Import Route OSPF 不会引入该路由,因此 R3 无法通过 ISIS 学习到)
解决方案
方案一、过滤路由:在 R3 的 IS-IS 进程内,通过 Filter-Policy 禁止来自 R4 的 10.1.1.0/24 路由加入本地路由表:

[R3] acl 2001
[R3-acl-basic-2001] rule 5 deny source 10.1.1.0 0
[R3-acl-basic-2001] rule 10 permit

[R3] isis
[R3-isis-1] filter-policy 2001 import

[R2] …
……

Q:既然不会出现双向次优路由,为什么 R2 与 R3 都要进行路[……]

READ MORE

「Network」- IP Multicast,组播

问题描述
点到多点业务可以由单播,组播,广播进行承载,现网中也有各种各样的实现方式。
但使用单播或广播承载点到多点业务时存在一些固有的问题:
解决方案
组播(Multicast)技术,在一台 源主机 和 多台接收主机 间进行,中间的网络设备根据接收者的需要,有选择性地对数据进行复制和转发。组播技术能够较好的解决单播或广播在承载点到多点业务时存在的问题。
原理简述
在组播方式下,单一的信息流沿网络被同时发送给多个用户,相同的组播数据流在每一条链路上最多仅有一份。

特性说明
组播技术有效地满足单点发送、多点接收的需求,实现 IP Network 中点到多点业务数据的高效传送,能够大量节约网络带宽、降低网络负载。
相比单播和广播,使用组播的好处如下: 1)相比单播:增加用户,不会导致信息源的负载加重,不会导致网络资源消耗的显著增加; 2)相比广播:不会造成网络资源的浪费,并能提高信息传输的安全性,而且组播可以实现跨网段的传输;
应用场景
IPTV、视频会议[……]

READ MORE

「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」- 协议、扩展、技术

[……]

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

「PIM」- 报文格式(Multicast,组播)

目前常用版本是 PIMv2,PIM 报文直接封装在 IP 中: 1)协议号:103 2)组播地址为:224.0.0.13[……]

READ MORE