1. 交换专题 Smart Link & Monitor Link
Smart Link 的概念及术语
技术背景
双上行组网是目前常用应用组网之一,提供物理冗余的同时也带来了环路问题,常规的解决方案是采用生成树协议来保证冗余性同时解决环路问题,但生成树协议的收敛至多只能达到秒级速度,这在性能上对于某些敏感的业务或客户而言就无法接受了。
Smart Link概述
SmartLink是一种为双上行组网量身定做的解决方案, 具有如下优点:
-
能够实现在双上行组网的两条链路正常情况下,只有一条处于连通状态,而另一条处于阻塞状态,从而防止了环路引起的广播风暴。
-
当主用链路发生故障后,流量会在毫秒级的时间内迅速切换到备用链路上,保证了数据的正常转发。
-
配置简单,便于用户操作。
Smart Link 术语介绍
-
Smart Link Group
也称为灵活链路组, 一个SmartLink组包含两个成员接口, 一个主端口(Master Port) 一个从端口(Slave Port) 。正常情况下, 只有一个端口(主端口或从端口) 处于转发(Active) 状态,另一个接口处于待命(Standby) 状态被阻塞(Block) 。
当处于转发状态的端口出现链路故障时(这里的链路故障包括端口down、OAM单通等) ,SmartLink组会自动将该端口阻塞, 并将原阻塞的处于待命状态的端口切换到转发状态
-
Master/Slave端口
主/从端口是SmartLink Group中的两个端口角色, 是通过命令行指定的。当两个接口都是UP时,主端口优先进入转发状态,而从端口保持待命。当主端口或其所在链路发生故障时,从端口切换为转发状态。
-
主链路/从链路
我们把主端口所在的链路称为主链路,从端口所在的链路称为从链路
-
发送控制VLAN
发送控制VLAN(Control VLAN) 是SmartLink组用于广播发送FLUSH报文的VLAN。如果在Switch C和Switch D上开启了FLUSH报文发送功能, 当发生链路切换时, 设备会从新的主用链路上在发送控制VLAN内组播发送FLUSH报文
-
接收控制VLAN
接收控制VLAN是上游设备用于接收并处理FLUSH报文的VLAN。如果上游设备Switch A和Switch B能够识别FLUSH报文, 并开启了FLUSH报文接收处理功能, 当发生链路切换时, 上游设备会处理收到的属于接收控制VLAN的FLUSH报文, 进而执行MAC地址转发表项和ARP表项的刷新操作。
-
Flush报文
当SmartLink组发生链路切换时, 原有的转发表项已经不再适用于新的拓扑网络,需要对整网进行MAC地址转发表项和ARP表项的更新。SmartLink通过FLUSH报文来通知其他设备进行表项的刷新操作。
FLUSH报文采用IEEE802.3封装,包括Destination MAC、Source MAC、Control VLAN ID和VLAN Bitmap等信息字段
Smart Link 的工作机制
拓扑环境
网络正常工作时
Switch A的端口GE1/0/1为主端口,GE1/0/2为副端口。
双上行链路都正常的情况下,主端口处于转发状态,所在的链路是主用链路,副端口处于待命状态,所在链路是备用链路。
数据沿着红色线条所表示的链路进行传输,网络中不存在环路,避免产生广播风暴。
网络故障时
当Switch A的主用链路发生故障时,主端口GE1/0/1切换到待命状态,副端口GE1/0/2切换到转发状态。
此时, 网络中各设备上的MAC地址转发表项和ARP表项可能已经错误, 需要提供一种MAC及ARP更新的机制,完成流量的快速切换,以免造成流量丢失。目前更新机制有以下两种。
网络拓扑变更机制
当Smart Link发生链路切换时, 网络中各设备上的MAC地址转发表项和ARP/ND表项可能已经不是最新状态, 为了保证报文的正确发送, 需要提供一种MAC地址转发表项和ARP/ND表项的更新机制。目前更新机制有以下两种:
-
由Smart Link设备从新的链路上发送Flush报文。此方式需要上行的设备都能够识别SmartLink的Flush报文并进行更新MAC地址转发表项和ARP/ND表项的处理。
这种方式适用于上游设备(如图中的Switch B、Switch C和Switch D)支持Smart Link功能, 能够识别FLUSH报文的情况。为了实现快速链路切换,需要在Switch A上开启FLUSH报文发送功能,在上游设备所有处于双上行网络上的端口开启接收处理FLUSH报文功能。
Switch A发生链路切换后, 会从新的主用链路上发送FLUSH报文。FLUSH报文的VLAN Bitmap字段填充链路切换前组内处于转发状态的GE1/0/1端口所在Smart Link组的保护VLAN ID, Control VLAN ID字段填充Smart Link组配置的发送控制VLAN ID。
当上游设备收到FLUSH报文时, 判断该FLUSH报文的发送控制VLAN是否在收到报文的端口配置的接收控制VLAN列表中。如果不在接收控制VLAN列表中, 设备对该FLUSH报文不做处理,直接转发;如果在接收控制VLAN列表中, 设备将提取FLUSH报文中的VLAN Bitmap数据, 将设备在这些VLAN内学习到的MAC及ARP表项删除。
通过FLUSH报文通知设备更新的机制无须等到表项老化后再进行更新,可以大大减少表项更新所需时间一般情况下,链路的整个切换过程可在毫秒级的时间内完成的,基本无流量丢失。但是要求上联的交换机都支持Smart Link功能
Tips
-
为了保证FLUSH报文在发送控制VLAN内正确传送, 请确保双上行网络上的所有端口都allow发送控制VLAN。否则, FLUSH报文将发送或转发失败。
-
建议用户以保留Tag的方式发送FLUSH报文, 若想以去掉Tag的方式发送FLUSH报文, 需确保对端端口缺省VLAN和发送控制VLAN一致, 否则将导致FLUSH报文不在发送控制VLAN内传送。
-
在配置了接收Flush报文的情况下, Flush报文会触发设备的MAC清除和ARP老化学习的动作。这将占用大量的设备资源, 为了防止网络震荡, 不建义在规模较大的Smart Link网络中部署接收Flush报文功能
-
-
自动通过流量刷新MAC地址转发表项和ARP/ND表项。此方式适用于与不支持SmartLink功能的设备(包括其他厂商设备) 对接的情况,需要有上行流量触发。
这种方式适用于与不支持Smart Link功能的设备(包括其他厂商设备)对接的情况,需要有上行流量触发。
如果没有来自Switch A的上行流量去触发Switch D的MAC及ARP表项更新, 那么当Switch D收到目的设备为Switch A的数据报文时, Switch D仍会通过端口GigabitEthernet1/0/1转发出去,但报文已经不能到达Switch A, 流量中断, 直到其MAC或ARP表项自动老化。
如果Switch A有上行流量要发送, 但由于Switch A的MAC及ARP表项也是错误的,所以直到其表项自动老化、重新学习后,流量才能被发送出去。当上行流量通过端口GE1/0/2到达设备Switch D后,Switch D会更新自己的MAC及ARP表项, 那么当Switch D再收到目的设备为Switch A的数据报文时, Switch D会通过端口GE1/0/2转发出去,报文就可以经由Switch C到达Switch A。
链路恢复机制
Smart Link组支持两种模式:角色抢占模式和非角色抢占模式
- 若Smart Link组配置为角色抢占模式,当主用链路故障恢复后,主端口将抢占为转发状态,副端口则进入待命状态。只有当主用链路故障时,副端口才会从待命状态切换到转发状态。
- 若Smart Link组配置为非角色抢占模式,当主用链路故障恢复后,副端口将继续处于转发状态,主端口继续处于待命状态,这样可以保持流量的稳定。默认是非抢占模式。
Smart Link多实例实现流量负载分担
Smart Link 的基本配置
实验1
SW3配置
#关闭接口下的STP
[SW3] Interface gigabitethernet1/0/1
[SW3-gigabitethernet1/0/1] stp disable
[SW3] Interface gigabitethernet1/0/2
[SW3-gigabitethernet1/0/2] stp disable
#配置接口类型为trunk并放行相关VLAN(用户VLAN及控制VLAN)
[SW3] Interface gigabitethernet 1/0/ 1
[SW3-gigabitethernet1/0/1] port link-type trunk
[SW3-gigabitethernet1/0/1] port trunk allow-pass vlan 10 20 99
[SW3] Interface gigabitethernet1/0/2
[SW3-gigabitethernet1/0/2] port link-type trunk
[SW3-gigabitethernet1/0/2] port trunk allow-pass vlan 10 20 99
#创建Smart Link Group 1
[SW3] smart-link group 1
#在SMLK Group配置模式下设置master/slave端口
[SW3-smlk-group 1] port gigabitethernet1/0/1 master
[SW3-smlk-group 1] port gigabitethernet1/0/2 slave
#在SMLK Group配置模式下配置发送控制vlan
[SW3-smlk-group 1] flush send control-vlan 99 password simple 123
#在SMLK Group配置模式下使能回切功能并设置回切等待时间
[SW3-smlk-group 1] restore enable #缺省是关闭状态
[SW3-smlk-group 1] timer wtr 30 #缺省是60S
#使能SMLK Group
[SW3-smlk-group 1] smart-link enable
SW1配置
[SW1] Interface gigabitethernet1/0/1
[SW1-gigabitethernet1/0/1] smart-link flush receive control-vlan 99 password simple 123
[SW1] Interface gigabitethernet1/0/2
[SW1-gigabitethernet1/0/2] smart-link flush receive control-vlan 99 password simple 123
SW2配置
[SW2] Interface gigabitethernet1/0/1
[SW2-gigabitethernet1/0/1] smart-link flush receive control-vlan 99 password simple 123
[SW2] Interface gigabitethernet1/0/2
[SW2-gigabitethernet1/0/2] smart-link flush receive control-vlan 99 password simple 123
SW3上的查看及验证
GE1/0/1链路down掉的时候
实验2
SW3配置
#关闭接口下的STP
[SW3] Interface gigabitethernet1/0/1
[SW3-gigabitethernet1/0/1] stp disable
[SW3] Interface gigabitethernet1/0/2
[SW3-gigabitethernet1/0/2] stp disable
#配置接口类型为trunk并放行相关VLAN(用户VLAN及控制VLAN)
[SW3] Interface gigabitethernet 1/0/ 1
[SW3-gigabitethernet1/0/1] port link-type trunk
[SW3-gigabitethernet1/0/1] port trunk allow-pass vlan 1 to 20 99
[SW3] Interface gigabitethernet1/0/2
[SW3-gigabitethernet1/0/2] port link-type trunk
[SW3-gigabitethernet1/0/2] port trunk allow-pass vlan 1 to 20 99
#配置VLAN映射
[SW3] stp region-configuration
[SW3-mst-region] instance 20 vlan 11 to 20
[SW3-mst-region] active region-configuration
#创建SMLK group并设置Master/Slave端口
[SW3] smart-link group 1
[SW3-smlk-group1] port gigabitethernet1/0/1 master
[SW3-smlk-group1] port gigabitethernet1/0/2 slave
#配置该实例绑定的VLAN报文从备用端口发送, 实现负载分担方式。
[SW3-smlk-group1] load-balance instance 20 slave
#在SMLK Group配置模式下使能回切功能并设置回切等待时间
[SW3-smlk-group 1] restore enable #缺省是关闭状态
[SW3-smlk-group 1] timer wtr 30 #缺省是60S
#在SMLK Group配置模式下配置发送控制vlan
[SW3-smlk-group 1] flush send control-vlan 99 password simple 123
#使能SMLK Group
[SW3-smlk-group 1] smart-link enable
Monitor Link概述及技术实现
Monitor Link技术背景
Monitor Link是对Smart Link技术的有力补充。Monitor Link用于监控上行链路,以达到让下行链路同步上行链路状态的目的, 使Smart Link的备份作用更加完善
Monitor Link组也称为监控链路组,由一个或多个上行和下行端口组成。下行端口的状态随上行端口状态的变化而变化
上行端口(Uplink Port) 是Monitor Link组中的监控对象,是通过命令行指定的Monitor Link组的一种端口角色。
如果多个端口被配置为Monitor Link组的上行端口,只要这些端口中有一个端口处于转发状态, 那么Monitor Link组的状态就为UP;只有当所有上行端口都发生故障时Monitor Link组的状态才为DOWN, 这时所有下行端口将都将被关闭。当Monitor Link组的上行端口未指定时,则认为上行端口故障,所有下行端口都将被关闭。
下行端口(Downlink Port) 是Monitor Link组中的监控者, 是通过命令行指定的Monitor Link组的另外一种端口角色。Monitor Link组的下行端口可以是以太网端口(电口或光口)或聚合接口。
当Monitor Link组的上行端口恢复正常时,Monitor Link只会开启因上行端口故障而阻塞的下行端口,不能开启手工关闭的下行端口。并且某个下行端口故障对上行端口和其他下行端口没有影响。
实验
SwitchA部署Smart Link。GE1/0/1为Master端口,GE1/0/2为Slave端口
SwitchB部署Monitor Link。GE1/0/1为Uplink,GE1/0/2为Downlink
配置SWB
#创建monitor link group
[SWB] monitor-link group 1
#配置monitor link group的上行接口
[SWB-mtlk-group1] port gigabitethernet1/0/1 uplink
#配置monitor-link组的下行接口
[SWB-mtlk-group1] port gigabitethernet1/0/2 downlink
典型组网环境
Smart Link与Monitor Link配合组网
-
Smart Link配置在Switch A上。
-
当Switch A与Switch B或Switch A与Switch C之间的链路出现故障时,Smart Link组迅速感知并进行链路的切换
-
为了使Switch A能直接感知Switch D与B(或C)之间的链路故障,还需要在Switch B(及C) 上配置Monitor Link组,端口GE1/0/1作为上行端口,端口GE1/0/2作为对应的下行端口。
-
Monitor Link组一旦检测到上行端口所在链路故障,将强制关闭下行端口,从而触发Switch A上的Smart Link组内的链路切换。
-
当上行端口或链路故障恢复时,下行端口将自动开启, 从而使Switch A能够迅速感知Switch D与B(或C) 之间链路状态的变化。
配置SwitchA
#创建Smart Link Group 1
[SWA] smart-link group 1
#设置master/slave端口
[SWA-smlk-group1] port gigabitethernet1/0/1 master
[SWA-smlk-group1] port gigabitethernet1/0/2 slave
#在SMLK Group配置模式下使能回切功能并设置回切等待时间
[SWA-smlk-group 1] restore enable #缺省是关闭状态
[SWA-smlk-group 1] timer wtr 30 #缺省是60S
#在SMLK Group配置模式下配置发送控制vlan
[SWA-smlk-group 1] flush send control-vlan 99 password simple 123
#使能SMLK Group
[SWA-smlk-group 1] smart-link enable
配置SwitchB
#创建monitor-link组
[SWB] monitor-link group 1
#配置monitor-link组的上行接口
[SWB-mtlk-group1] port gigabitethernet1/0/1 uplink
#配置monitor-link组的下行接口
[SWB-mtlk-group1] port gigabitethernet1/0/2 downlink
#配置接收控制VLAN
[SWB] Interface GigabitEthernet0/0/1
[SWB-GigabitEthernet0/O/1] smart-link flush receive control-vlan 99 password simple 123
[SWB] Interface GigabitEthernet0/0/2
[SWB-GigabitEthernet0/0/2] smart-link flush receive control-vlan 99 password simple 123
配置SwitchC
#创建monitor-link组
[SWC] monitor-link group 1
#配置monitor-link组的上行接口
[SWC-mtlk-group1] port gigabitethernet1/0/1 uplink
#配置monitor-link组的下行接口
[SWC-mtlk-group1] port gigabitethernet1/0/2 downlink
#配置接收控制VLAN
[SWC] Interface GigabitEthernet0/0/1
[SWC-GigabitEthernet0/O/1] smart-link flush receive control-vlan 99 password simple 123
[SWC] Interface GigabitEthernet0/0/2
[SWC-GigabitEthernet0/0/2] smart-link flush receive control-vlan 99 password simple 123
配置SwitchD
[SWD] Interface GigabitEthernet0/0/1
[SWD-GigabitEthernet0/O/1] smart-link flush receive control-vlan 99 password simple 123
[SWD] Interface GigabitEthernet0/0/2
[SWD-GigabitEthernet0/0/2] smart-link flush receive control-vlan 99 password simple 123
Smart Link与Monitor Link级联组网
Smart Link与RRPP混合组网
2.路由重发布
路由协议重发布的概念及原理
网络中存在多种IP路由协议
-
网络中存在多厂商的设备,使用了不同的路由协议
-
网络合并
-
从旧的路由协议过渡到新的路由协议
-
大型网络中的路由逻辑规划
-
基于路由策略的需要(可靠性、冗余性、分流模型等)
路由重发布的概念
-
路由重发布是指在路由协议域的边界设备上将路由信息从一个路由协议导入到另一个路由协议的过程。
-
路由重发布(路由引入)是有方向性的
-
只有存在于路由表中的路由才能够被执行路由重发布
路由重发布的注意要点
-
路由优先级(Route Preference)
双点重发布导致次优路由,可以在R3上修改路由优先级,针对1.1.1.1/32的路由,使得IBGP的路由更优
另一个可选的方法是,在R2上进行BGP到OSPF的路由重发布时, 将发布进OSPF的路由设置相应的tag值, 随后在R3上针对该tag值进一步部署路由过滤、调整优先级、基于重发布的路由策略等等。
-
路由倒灌问题(feedback)
双点双向重发布
-
路由信息不兼容(度量值信息不一致)
-
收敛时间不一致(不同路由协议的收敛速度不同)
-
度量值
OSPF的路由metric是基于接口开销, 与接口的带宽有关;RIP的路由metric是基于跳数;不同的路由协议对路由metric的定义及理解不同, 那么在路由协议之间做import-route, 就必须要关注metric问题。
种子度量值
在向路由协议重发布路由时,使用的初始度量值叫做种子度量值,也叫默认度量值。每个厂商的种子度量值可能不尽相同,因此在部署路由协议间的重发布时,建议手工设置度量值。
可在特定路由协议中使用相关命令修改种子度量值。例如在OSPF中使用default cost命令, 在RIP中使用default-cost命令
路由协议重发布的配置
[R2] ospf 1
[R2-ospf-1] import-route ?
bgp Border Gateway Protocol(BGP) routes
direct Connected routes
isis Intermediate System to Intermediate System(IS-IS) routes
limit Limit the number of routes imported into OSPF
ospf Open Shortest Path First(OSPF) routes
rip Routing Information Protocol(RIP) routes
static Static routes
unr User Network Routes
实验1 OSPF与RIP的互重发布
[R2] ospf 1
[R2-ospf-1] import-router rip
#如果不指定cost, 则路由重发布进OSPF后cost=1, type为E2,可以关联cost及type关键字修改cost和外部路由metric-type
实验2 OSPF import直连路由
#loopback1作为域外路由
[R3] ospf 1
[R3-ospf-1] import-route direct
#如果不指定cost, 则路由重发布进OSPF后cost=1, type为E2, 可以关联cost及type关键字修改cost和外部路由metric-type
#使用direct关键字, 则除了已经在ospf中network外的所有活跃的直连接口所在网段都会被注入到OSPF域中。
ospf 1
area 0
network 3.3.3.0 0.0.0.255
该命令会激活OSPF。即会向外发送hello报文,接受hello报文;这个接口能被域内的OSPF路由器学习到内部路由
ospf 1
import-route direct
该命令会把所有的直连路由以AS外部路由的形式注入到AS内部
实验3 OSPF静态路由
[R2] ip route-static 11.11.11.0 24 192.168.12.1
[R2] ospf 1
[R2-ospf-1] import-route static
#如果不指定cost, 则路由重发布进OSPF后cost=1, type为E2, 可以跟上cost及type关键字修改cost和外部路由metric-type
#使用static关键字, 路由表中所有静态路由都会被注入到OSPF域
3. 路由专题-路由策略
route-policy
技术背景
如图,路由表中所有的RIP路由都被注入到了OSPF,如果只是想注入特定的路由呢?或者如果希望针对不同的路由设置不同的metric呢?
Route-policy的用途
-
Route-policy包含一个或者多个“节点Node”的列表。
-
路由重分发期间可以关联route-policy进行路由过滤或执行策略。
-
Route-policy的应用非常广泛, 是一个相当重要的基础工具。
Route-policy初相识
Route-policy的配置
-
创建route-policy
[Huawei] route-policy name{permit|deny} node node
-
permit指定节点的匹配模式为允许。当路由项通过该节点的过滤后, 将执行该节点的apply子句, 不进入下一个节点的过滤; 如果路由项没有通过该节点过滤,将进入下一个节点继续过滤。
-
deny指定节点的匹配模式为拒绝, 这时apply子句不会被执行。当路由项满足该节点的所有if-match子句时, 将被拒绝通过该节点, 不进入下一个节点; 如果路由项不满足该节点的任何if-match子句, 将进入下一个节点继续过滤。
-
默认所有未匹配的路由将被拒绝通过Route-Policy。如果Route-Policy中定义了一个以上的节点, 则各节点中至少应该有一个节点的匹配模式是permit。
-
-
配置If-match子句
[Huawei-route-policy] if-match?
选项 操作 acl 匹配ACL cost 匹配路由信息的cost interface 匹配路由信息的出接口 ip{ next-hop | route-source | group-address } 匹配IPv 4的路由信息(下一跳、源地址或组播组地址) ip-prefix 匹配前缀列表 route-type 匹配各类型路由信息 tag 匹配路由信息的标记域 -
对于同一个Route-Policy节点, 命令if-match acl和命令if-match ip-prefix不能同时配置,后配置的命令会覆盖先配置的命令。
-
对于同一个Route-Policy节点, 在匹配的过程中, 各个if-match子句间是“与”的关系, 即路由信息必须同时满足所有匹配条件, 才可以执行apply子句的动作。但命令if-match route-type和if-match interface除外, 这两个命令的各自if-match子句间是“或”的关, 与其它命令的if-match子句间仍是“与”的关系。
-
如不指定if match子句, 则所有路由信息都会通过该节点的过滤。
-
-
配置apply子句
[Huawei-route-policy] apply ?
选项 操作 cost 设置路由的cost cost-type{ type-1|type-2 } 设置OSPF的开销类型 ip-address next-hop 设置IPv4路由信息的下一跳地址 preference 设置路由协议的优先级 tag 设置路由信息的标记域
Route-policy配置示例1
[R1] acl 2000 #使用ACL 2000匹配路由
[R1-acl-basic-2000] rule permit source 172.16.1.0 0.0.0.0
[R1] route-policy RP permit node 10 #使用route-policy RP调用ACL 2000
[R1-route-policy] if-match acl 2000
[R1-route-policy] apply cost 20
[R1] ospf 1 #在路由注入时调用route-policy RP
[R1-ospf-1] import-route direct route-policy RP
Route-policy配置示例2
配置R2
[R2] ip route-static 10.0.1.0 24 172.16.2.2
[R2] ip route-static 10.0.2.0 24 172.16.2.2
[R2] acl 2000
[R2-acl-basic-2000] rule permit source 10.0.1.0 0
[R2] acl 2001
[R2-acl-basic-2001] rule permit source 10.0.2.0 0
[R2] route-policy RP permit node 10
[R2-route-policy] if-match acl 2000
[R2-route-policy] apply cost 20
[R2] route-policy RP permit node 20
[R2-route-policy] if-match acl 2001
[R2-route-policy] apply cost 10
[R2] ospf 1
[R2-ospf-1] import-route static route-policy RP
IP-Prefix
技术背景:使用ACL匹配路由
IP-Prefix List 初相识
-
IP-Prefix List(IP前缀列表) 是一个常用的路由匹配工具, 相比于ACL,它的可控性更强、更为灵活;
-
IP-Prefix List不仅仅能匹配路由条目中的网络号, 还能匹配网络掩码(也就是前缀长度),增强了路由匹配的精确度;
-
每个IP-Prefix List包含一条或多条语句, 每条语句都有自己的序号, 按序号从小到大的顺序排列。
如果只配置了greater-equal, 则掩码长度范围需在greater-equal-value和32之间。
如果只配置了less-equal, 则掩码长度范围需在mask-length和less-equal-value之间。
IP-Prefix List的配置
[Huawei] ip ip-prefix abcd index 10 permit 1.0.0.0 8
[Huawei] ip ip-prefix abcd index 20 permit 2.0.0.0 8
在匹配过程中,系统按索引号升序依次检查各个表项,只要有一个表项满足条件,就认为通过该过滤列表,不再去匹配其他表项。
默认所有未匹配的路由将被拒绝通过过滤列表。如果所有表项都配置成deny模式, 则任何路由都不能通过该过滤列表。因此, 需要在多条deny模式的表项后定义一条permit 0.0.0.00 less-equal 32表项, 允许其它所有IPv4路由信息通过。
IP-Prefix List 配置示例 1
-
匹配某条特定路由:192.168.1.0/24
ip ip-prefix ipprefix1 permit 192.168.1.0 24
-
匹配默认路由
ip ip-prefix ipprefix2 permit 0.0.0.0 0
-
匹配所有主机路由
ip ip-prefix ipprefix3 permit 0.0.0.0 0 greater-equal 32
-
匹配所有路由(any)
ip ip-prefix ipprefix4 permit 0.0.0.00 less-equal 32
IP-Prefix List 配置示例2
匹配以下路由(用最精确最简洁的方式)
192.168.4.0/24 192.168.4.0/24 192.168.4.0/24 192.168.4.0/24
[Huawei]ip ip-prefix abcd permit 192.168.4.0 22 greater-equal 24 less-equal 24
IP-Prefix List配置示例3
filter-policy
用于控制路由更新、接收的一个工具。只能过滤路由信息,无法过滤LSA。(RIP协议同步时发送的是路由信息,OSPF同步时发送的是LSA)
对RIP发送的路由做过滤 示例1
在R2上部署filter-policy export
,将其通告给R3的RIP路由进行过滤, 只把192.168.3.0/24路由过滤掉,其他路由放行,完成部署后R2的路由表里拥有完整的路由信息, 而R3将无法通过RIP学习到192.168.3.0/24 路由,因为已经被R2过滤。
对RIP发送的路由做过滤 示例2
R1在RIP配置视图下部署import-route direct
命令, 缺省情况下所有的直连路由都会被引入RIP,
可以在RIP中使用filter-policy export
命令对其向RIP通告的路由进行过滤, 此时可关联协议类型(direct) , 对所引入的外部路由的类型进行限制。
对RIP接收的路由做过滤
在R2上使用filter-policy import
命令将其所接收的路由进行过滤, 将路由192.168.3.0/24过滤掉。
由于RIP是距离矢量路由协议, 它是将自己的路由表通告给直连的路由器, 当R2的路由表中192.168.3.0/24路由被过滤掉后, R3也就无法通过RIP学习到该路由
对OSPF接收的路由做过滤 示例1
在R2上使用filter-policy import
命令能够对其准备加载进路由表的OSPF路由进行过滤, 但是无法阻挡LSA进入R2的LSDB。
R3依然能够学习到R1所产生的Type-1 LSA并计算出1.1.1.0/24路由。因此在本场景下, R2所部署的filter-policy import并不会对R3产生影响
对OSPF接收的路由做过滤 示例2
在R2上使用filter-policy import
命令能够对其准备加载进路由表的OSPF路由进行过滤, 但是无法阻挡LSA进入R2的LSDB。
R2作为ABR,向Area 1中注入Type-3 LSA, 用于描述Area 0内的路由, 由于R2部署了filter-policy import
并将1.1.1.0/24路由过滤, 它将不再向Area 1内注入描述该区域间路由的Type-3 LSA。因此R3的路由表中不会存在1.1.1.0/24路由。
4. 路由专题 OSPF LSAs及特殊区域详解
LSA类型及详解
LSA在报文中的位置
OSPF LSA类型
类别 | 名称 | 描述 |
---|---|---|
1 | Router LSA | 每台OSPF路由器都会产生, 描述了路由器所有OSPF直连链路的状态和Cost值。只能在所属区域内泛洪。 |
2 | Network LSA | 由DR产生, 描述该DR连接的所有路由器的routerID, 其中包含DR自己的routerID。只能在所属区域内泛洪。 |
3 | Network Summary LSA | 由ABR产生, 描述一个区域内网段的路由。 |
4 | ASBR summary LSA | 由ABR产生, 是一条主机LSA, 指向ASBR. |
5 | AS External LSA | 由ASBR产生, 用于描述本AS之外的外部路由。 |
7 | NSSA LSA | 由ASBR产生, 内容几乎和LSA5是相同的, 但NSSA LSA仅仅在始发这个LSA的NSSA内泛洪, 不能直接进入骨干区域.NSSA的ABR会将7类LSA转换成5类LSA注入到骨干区域。 |
LSA类型1:Router LSA
-
每个OSPF路由器针对它所在的区域产生LSA 1, 描述区域内部与路由器直连的链路的信息(包括链路类型, Cost等) 。
-
1类LSA只允许在本区域内洪泛, 不允许跨越ABR。
-
1类LSA中会标识路由器是否是ABR( B比特置位 ) 、ASBR( E比特置位 ) 或者是Virtual link( V比特置位 ) 的端点的身份信息。
LSA类型2:Network LSA
- 2类LSA描述TransNet(包括Broadcast和NBMA网络) 网络信息。
- 由DR生成, 描述其在该多路访问网络上连接的所有OSPF路由器以及该MA网段掩码信息; 2类LSA中没有COST字段。
- 2类LSA只在本区域Area内洪泛, 不允许跨越ABR。
- Network LSID是DR进行宣告的那个接口的IP地址。
LSA类型1、2小结
LSA类型3:Network Summary LSA
由ABR生成, 实际上就是将区域内部的Type 1 Type 2的信息收集起来以路由前缀的形式扩散出去, 这就是Summary LSA中Summary的含义(注意这里的summary与路由汇总没有关系,仅仅是一个“归纳”的意思)
-
3类LSA的Link State ID是该LSA所描述的目的网络地址。
-
如果一台ABR路由器在与它本身相连的区域内有多条路由可以到达目的地, 那么它将只会始发单一的一条网络汇总LSA到骨干区域, 而且这条网络汇总LSA是上述多条路由中代价最低的。
-
ABR收到来自同区域其它ABR传来的Type 3 LSA后重新生成新的Type 3 LSA(Advertising Router改为自己) 然后继续在整个OSPF系统内扩散
LSA类型4:ASBR Summary LSA
ASBR Summary LSA由ABR生成,用于描述ASBR。它的LinkState ID为ASBR的OSPF RouterID
LSA类型5:AS External LSA
Autonomous System External LSA由ASBR生成用于描述OSPF自治系统外的目标网段信息、Link State ID是目的地址的IP网络号。
-
外部路由通过路由import, 引入OSPF路由域, 相应信息(路由条目) 由ASBR以LSA 5的形式生成然后注入OSPF路由域;
-
使用5类LSA计算得出的路由在我司设备路由表中的protocol字段显示为 “O_ASE” 也就是OSPF外部路由。
-
5类LSA有两种meic类型:type 1及type 2, 在做路由重发布(import-route) 时,如果未指定具体的metric-type, 则默认为type 2, 且外部cost默认为1,
Type 2路由cost=外部开销;
Type 1路由cost=外部开销+内部开销;
-
5类LSA不允许进入特殊区域——stub area&NSSA
LSA类型7:NSSA External LSA
LSA类型7只存在于NSSA中
- NSSA(非完全末梢区域Not-So-Stubby Area) 我们可以理解为从Stub Area延伸而来, Stub是不允许在本地注入外部路由的, 而NSSA可以, 但在NSSA中ASBR针对从OSPF域外注入的路由产生一种特殊的LSA类型:LSA 7, 这种类型的LSA从报文的结构上看与LSA 5非常类似。
- LSA类型7只能在NSSA区域中洪泛, 到达NSSA的ABR后, ABR将其转换成LSA类型5, 然后传播到Area 0, 进而传播到整个OSPF路由域。
- LSA类型7与LSA类型5一样, 也有metric-type 1和metric-type 2, 其之间的区别也一样。
OSPF路由表及LSDB
一个实验
OSPF特殊区域详解
domain和area的区别:将整个OSPF区域划分为多个Area,所有的Area构成了Domain
OSPF划分区域注意事项:
-
骨干区域Area0有且只有一个,且不允许被划分。为了防止环路,ABR只能使用它从Area0收到的三类LSA进行区域之间路由的计算。
-
所有非零区域必须与Area0直接相连。OSPF区域在逻辑上类似于星型拓扑
ABR是位于一个或多个OSPF区域边界上,将这些区域连接到主干网络的路由器。 ABR被认为同时是OSPF主干和相连区域的成员。 因此,它们同时维护着描述主干拓扑和其他区域拓扑的路由选择表。 该类路由器可以同时属于两个以上的区域,但其中一个必须是骨干区域。
特殊区域
- Stub area 末梢区域
-
Stub Area禁止来自骨干区域的4、5类LSA进入
-
Stub Area的ABR会自动向该区域下发3类LSA的默认路由
-
Stub Area路由器禁止执行外部路由重发布动作
- Totally stub area 完全末梢区域
-
Totally Stub Area禁止来自骨干区域的3、4、5类LSA进入
-
Totally Stub Area的ABR会自动向该区域下发3类LSA的默认路由
-
Totally Stub Area路由器禁止执行外部路由重发布动作
- NSSA (Not-so-stubby area) 非完全末梢区域
-
NSSA禁止4、5类LSA泛洪。允许本区域路由器注入AS外部路由, 这些路由注入后以7类LSA泛洪, 并且7类LSA只能在NSSA内泛洪
-
NSSA的ABR将7类LSA转换成5类LSA并泛洪到骨干区域
-
NSSA的ABR下发一条7类LSA的0.0.0.0/0缺省路由进NSSA
- Totally NSSA
NSSA的缺省路由
对于NSSA
-
如果ABR在骨干区域内有FULL的邻居, 则该ABR会自动下发一条7类LSA描述的缺省路由, 该缺省路由无法取消
-
ABR下发默认路由
-
-
如果ABR在骨干区域内无FULL的邻居, 则该ABR需配置nssa default-route-advertise命令, 且本地需有非OSPF的缺省路由, 才会向NSSA下发7类LSA描述的缺省路由
-
ASBR下发默认路由
-
对于Totally NSSA
- ABR会自动下发一条3类LSA描述的缺省路由, 以及一条7类LSA描述的缺省路由(要求该ABR在骨干区域内有FULL的邻居) , NSSA内的路由器会通过这条3类LSA计算缺省路由
OSPF区域类型小结
Area Type | Description |
---|---|
常规区域 | 缺省情况下, OSPF区域被定义为普通区域。普通区域包括标准区域和骨干区域。 |
Stub区域 | 禁止4、5类LSA泛洪, 允许骨干区域进入的3类LSA, 同时ABR会自动下发3类LSA的缺省路由 |
Totally Stub区域 | 禁止3、4、5类LSA泛洪, 同时ARB会自动下发3类LSA的缺省路由 |
NSSA | NSSA禁止从骨干区域进入的4、5类LSA, 但是允许本地区域注入AS外部路由, 这些外部路由以7类LSA在NSSA内泛洪。NSSA ABR下发一条7类的缺省路由 |
Totally NSSA | 在NSSA的基础上, 禁止从骨干区域进入的3类LSA, 同时NSSA ABR下发一条3类的缺省路由 |
OSPF特殊区域及LSA泛洪小结
OSPF特殊区域的配置
OSPF特殊区域 stub
#R2的配置
[R2] ospf 1
[R2-ospf-1] area 1
[R2-ospf-1-area-0.0.0.1] stub
[R2-ospf-1-area-0.0.0.1] default cost 5
#R3的配置
[R2] ospf 1
[R2-ospf-1] area 1
[R2-ospf-1-area-0.0.0.1] stub
OSPF特殊区域-stub注意事项
-
骨干区域area0不能配置成Stub区域。
-
如果要将一个区域配置成Stub区域, 则该区域中的所有路由器都要配置Stub区域属性,否则邻居关系无法正常建立。
-
Stub区域内不能存在ASBR, 即自治系统外部的路由不能在Stub区域内传播。
-
Stub区域内不能存在虚连接。
OSPF特殊区域-totally stub
#R2的配置
[R2] ospf 1
[R2-ospf-1] area 1
[R2-ospf-1-area-0.0.0.1] stub no-summary
#R3的配置
[R2] ospf 1
[R2-ospf-1] area 1
[R2-ospf-1-area-0.0.0.1] stub
OSPF特殊区域-NSSA
#R2的配置
[R2] ospf 1
[R2-ospf-1] area 1
[R2-ospf-1-area-0.0.0.1] nssa
#R3的配置
[R2] ospf 1
[R2-ospf-1] area 1
[R2-ospf-1-area-0.0.0.1] nssa
OSPF特殊区域-Totally NSSA
[R2-ospf-1-area-0.0.0.1] nssa no-summary
5. 路由专题 OSPF协议特性
OSPF路由汇总
路由汇总1 在ABR上执行
-
缺省情况下, Area 1、Area 0内的路由器会学习到Area 2内的路由明细。
-
在保持路由可达的同时, 减小路由器上的路由表规模, 可以在R3(ABR)上对区域内的路由进行汇总,使得R1及R2只会学习到汇总路由,而不会学习到明细路由。
[R3] ospf 1
[R3-ospf-1] area 2
[R3-ospf-1-area-0.0.0.2] abr-summary 192.168.0.0 255.255.248.0
[R3] ospf 1
[R3-ospf-1] area 2
[R3-ospf-1-area-0.0.0.2] abr-summary 192.168.0.0 255.255.248.0 not-advertise
-
not-advertise 使得明细路由和汇总路由都被抑制了
-
abr-summary 命令还可用于LSA过滤
-
abr-summary只能部署在ABR上,而且只对本ABR产生的3类LSA有效
-
abr-summary命令关联cost关键字可设置汇总路由的cost,缺省取所有被汇总的路由中最大的那个开销值作为汇总路由的cost
路由汇总2 在ASBR上执行
- 缺省情况下,Area1、Area0内的路由器会学习R3所引入的所有外部路由明细
- 在R3(ASBR)上,可以对其所引入的外部路由执行路由汇总
[R3] ospf 1
[R3-ospf-1] asbr-summary 192.168.0.0 255.255.248.0[tag 100]
Virtual Link
技术背景
-
OSPF要求所有的非骨干区域必须与骨干区域Area 0直连。
-
骨干区域Area 0必须是连续的。
-
所有的区域间(Inter-Area) 路由须经由Area 0中转, 3类LSA只能由ABR产生。
-
ABR只能够使用Area 0接收的3类LSA计算路由, 忽略从非0区域收到的3类LSA。
-
Area 2并未与Area 0直连, 因此Area 2内的路由器(如R 4) 将无法学习到Area 0、Area 1内的路由, 只能学习到本区域内的路由, 而R1、R2也无法学习到Area 2内的路由。
-
R3不是一台ABR, 无法为Area 2注入3类LSA, 也无法将3类LSA注入Area 2。
-
Virtual-Link(虚链路) 是一条虚拟的、逻辑的链路, 被视为Area 0的一段延伸。
-
通过在R1、R2之间建立一条OSPF虚链路, 使得R 3能够通过这条Virtual Link接入Area 0, 从而成为一台ABR。
-
R 2、R 3之间的Virtua-Link建立起来之后, R2-R3会基于这条虚链路建立邻居关系, 此时R3就成为一台ABR, 也就能够为Area 2内注入3类LSA。
配置示例
[R2] ospf 1
[R2-ospf-1] area 1
[R2-ospf-1-area-0.0.0.1] vlink-peer 3.3.3.3
[R3] ospf 1
[R3-ospf-1] area 1
[R3-ospf-1-area-0.0.0.1] vlink-peer 2.2.2.2
虚链路引发的环路
R2访问3.3.3.0/24出现环路
修改OSPF路由优先级
技术背景
R3会优先选择RIP进行计算,双点重发布导致次优路径问题
#修改OSPF路由优先级1
[R3] ospf 1
[R3-ospf-1] preference ase 90
#修改OSPF路由优先级2
[R3] ip ip-prefix 1 permit 2.2.2.0 24
[R3] route-policy rp permit node 10
[R3-route-policy] if-match ip-prefix 1
[R3-route-policy] apply preference 90
[R3] ospf 1
[R3-ospf-1] preference ase route-policy rp
Silent-Interface
技术背景
SW的配置如下
ospf 1
area 0
network 192.168.99.0 0.0.0.255
network 192.168.10.0 0.0.0.255
network 192.168.20.0 0.0.0.255
SW的Vlanif10 及 Vlanif20 接口一旦激活OSPF便会开始周期性地发送Hello报文试图发现链路上地邻居,然而VLAN10 和 VLAN20内并没有其他的OSPF路由器
SW的配置修改如下
ospf 1
silent-interface vlanif10
silent-interface vlanif20
area 0
network 192.168.99.0 0.0.0.255
network 192.168.10.0 0.0.0.255
network 192.168.20.0 0.0.0.255
一个接口如果被设置为Silent-interface, 则使用network通告接口后, 接口不会接收也不会发送OSPF Hello包, 也就是不会在该接口上形成OSPF邻居关系。但接口的路由依然会被其他的OSPF路由器(如图中的R1) 学习到
下发默认路由
OSPF缺省路由的发布方式
区域类型 | 产生条件 | 发布者 | 产生的LSA的类型 | 泛洪范围 |
---|---|---|---|---|
普通区域 | 通过default-route-advertise命令配置 | ASBR | Type-5 LSA | 普通区域 |
Stub | 自动产生 | ABR | Type-3 LSA | Stub区域 |
NSSA | 通过nssa[ default-route-advertise ] | ASBR | Type-7 LSA | NSSA区域 |
完全NSSA | 自动产生 | ABR | Type-3 LSA | NSSA区域 |
NSSA的ABR会自动在NSSA中注入缺省路由(使用7类的LSA描述)
常规区域产生缺省路由
[R4] ip route-static 0.0.0.0 0.0.0.0 x.x.x.x
[R4] ospf 1
[R4-ospf-1] default-route-advertise
-
使用default route-advertise命令, 要求在本地路由表中存在非OSPF的 0.0.0.0/0 的缺省路由(该条路由可以是静态配置的,也可以是通过其他动态路由协议学习到的),才会向OSPF域中注入缺省路由
-
增加cost关键字可以修改引入的缺省路由的Cost, 缺省为1
-
增加type关键字可以修改引入的缺省路由的开销类型, 缺省为2
[R4] ospf 1
[R4-ospf-1] default-route-advertise always
使用了always关键字后, 无论本机是否存在激活的非OSPF缺省路由, 都会产生并发布一个描述缺省路由的LSA。
NSSA的缺省路由
-
对于NSSA
如果ABR在骨干区域内有FULL的邻居, 则该ABR会自动下发一条7类LSA描述的缺省路由,该缺省路由无法取消。
如果ABR在骨干区域内无FULL的邻居, 则该ABR需配置nssa default-route-advertise命令, 且本地需有非OSPF的缺省路由, 才会向NSSA下发7类LSA描述的缺省路由。
-
对于Totally NSSA
ABR会自动下发一条3类LSA描述的缺省路由, 以及一条7类LSA描述的缺省路由(要求该ABR在骨干区域内有FULL的邻居) 。
LSA过滤
对发送的LSA进行过滤
R2的配置
[R2] interface serial1/0/ 0
[R2-Serial1/0/0] ospf filter-lsa-out ?
ospf filter-lsa-out all #将对除Grace LSA外的所有LSA进行过滤。
ospf filter-lsa-out summary #将对Network Summary LSA(Type 3 LSA) 进行过滤。
ospf filter-lsa-out ase #将对AS External LSA(Type 5 LSA) 进行过滤。
ospf filter-lsa-out nssa #将对NS SALSA(Type 7 LSA) 进行过滤。
ospf filter-lsa-out #可以关联ACL。
在ABR上对Type-3 LSA进行过滤 方法一
R2的配置
[R2] ip ip-prefix 1 permit 192.168.12.0 24
[R2] ospf 1
[R2-ospf-1] area 1
[R2-ospf-1-area-0.0.0.1] filter ip-prefix 1 import
-
Filter import命令将对进入Area 1的Type-3LSA进行过滤。完成上述配置后Area 1内将只有描述192.168.12.0/24的Type-3LSA, 而没有描述1.1.1.0/24的Type-3 LSA。
-
Filter import命令可以关联ACL、IP-Prefix以及Route-policy。
R2的配置
[R2] ip ip-prefix 1 permit 192.168.12.0 24
[R2] ospf 1
[R2-ospf-1] area 1
[R2-ospf-1-area-0.0.0.1] filter ip-prefix 1 export
-
Filter export命令将对从Area 1出(进入其他区域的)的Type-3 LSA进行过滤。完成上述配置后Area 0内将只有描述192.168.12.0/24的Type-3LSA, 而没有描述2.2.2.0/24的Type-3 LSA。
-
Filter export命令可以关联ACL、IP-Prefix以及Route-policy。
在ABR上对Type-3 LSA进行过滤 方法二
[R3] ospf 1
[R3-ospf-1] area 2
[R3-ospf-1-area-0.0.0.2] abr-summary 192.168.0.0 255.255.248.0 not-advertise
使用filter-policy对OSPF接收的路由做过滤1
-
在R2上使用filter-policy import命令能够对其准备加载进路由表的OSPF路由进行过滤, 但是无法阻挡LSA进入R2的LSDB。
-
R3依然能够学习到R1所产生的Type-1 LSA并计算出1.1.1.0/24路由。因此在本场景下, R2所部署的filter-policy import并不会对R3产生影响。
使用filter-policy对OSPF接收的路由做过滤2
-
在R2上使用filter-policy import命令能够对其准备加载进路由表的OSPF路由进行过滤, 但是无法阻挡LSA进入R2的LSDB。
-
R2作为ABR, 向Area 1中注入Type-3 LSA, 用于描述Area 0内的路由, 由于R2部署了filter-policy import并将1.1.1.0/24路由过滤, 它将不再向Area 1内注入描述该区域间路由的Type-3 LSA。因此R3的路由表中不会存在1.1.1.0/24路由。
使用filter-policy对OSPF发送的路由做过滤
-
R1将直连路由引入OSPF, 通过在R1上部署filter-policy export,可以将R1向OSPF通告的外部路由进行过滤。
-
当filter-policy export用于对OSPF发送的路由做过滤时, 只能部署在执行路由引入的OSPF路由器上, 而且只对其始发的OSPF外部路由生效。
OSPF报文认证
OSPF Packet Header
接口明文认证
接口密文认证
区域明文认证
区域密文认证
Virtual-Link的认证
OSPF多进程
技术背景
OSPF多进程之间的路由信息互操作
OSPF多进程实例应用