Network 路由策略在双点双向路由重分发场景中的应用

单点路由重分发是指的是在2个路由域之间的一台边界设备上执行路由重分发的场景,这种场景相对简单,缺乏冗余性,一旦边界设备上发生故障,那么譔设备所连接的2个路由域通信就中断了。

双向重分发的场景中存在两台边界设备,而且这两台设备都执行了路由重分发的操作。

双点双向路由重分发虽然增强了网络的可靠性,但是在双点(两台边界设备)上执行双向路由重分发后,次优路径、路由环路及路由倒灌等问题是非常容易被引发的。

配置完常规的路由重分发,观察R4去往1.1.1.1的路由,下一跳只出现了R2/R3其中的一台 ?

到达 OSPF 域的路由 192 168.12.0/24 192.168.13.0/24 的确是出现了等价负载分担,这属于正常。

从以上输出可以看出 R3 的路由表中1.1.1.0/24 路由竟然来源于RIP ,这显然是有问题的,因为这条路由是在 OSPF 中发布的, R3 达该目标网段,理应优选 OSPF 路由,下一跳应该是 Rl 才合理。

然而此时 R3 的路由表中该条路由却是来源于R1 ,而且下一跳为 R4 ,这就出现了次优路径现象一R3 转发到达1.1.1.0/24 的数据时,使用的转发路径为 R4-R2-Rl 。为什么会出现这样的现象?为什么只有1.1.1. 0/24 这条 OSPF 外部路由才会出现这样的现象?

在华为的数通产品上, R1 由的优先级值是 100 OSPF 路由有两个优先级,其中内部路由的优先级值为 10 ,外部路由则为 150 。

双点双向路由重分发是一个经典的课题,这种类型的网络很容易出现路由环路或者
次优路径问题。解决的方法也是多种多样的,解决方案的核心思想是在R2及R3上,将1.1.1.0/24 这条 OSPF 外部路由的优先级值调节得比RIP路由的优先级值更小(例如调整为 99)

R1 dis current-configuration
[V200R003C00]
#
sysname R1

acl number 2000
rule 5 permit source 1.1.1.0 0
#
interface GigabitEthernet0/0/0
ip address 192.168.12.1 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 192.168.13.1 255.255.255.0

interface LoopBack0
ip address 1.1.1.1 255.255.255.0
#
ospf 1 router-id 1.1.1.1
import-route direct route-policy hcnp
area 0.0.0.0
network 192.168.12.0 0.0.0.255
network 192.168.13.0 0.0.0.255
#
route-policy hcnp permit node 10
if-match acl 2000

R2 配置

sysname R2

acl number 2000
rule 5 permit source 1.1.1.0 0


interface GigabitEthernet0/0/0
ip address 192.168.12.2 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 192.168.24.2 255.255.255.0
#
interface GigabitEthernet0/0/2

#
ospf 1 router-id 2.2.2.2
import-route rip 1
preference ase route-policy hcnp 150
area 0.0.0.0
network 192.168.12.0 0.0.0.255
#
rip 1
undo summary
version 2
network 192.168.24.0
import-route ospf 1
#
route-policy hcnp permit node 10
if-match acl 2000
apply preference 99

#
R3 的配置

sysname R3

#
acl number 2000
rule 5 permit source 1.1.1.0 0
#

#
interface GigabitEthernet0/0/0
ip address 192.168.13.3 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 192.168.34.3 255.255.255.0

#
#
ospf 1 router-id 3.3.3.3
import-route rip 1
preference ase route-policy hcnp 150
area 0.0.0.0
network 192.168.13.0 0.0.0.255
#
rip 1
version 2
network 192.168.34.0
import-route ospf 1
#
route-policy hcnp permit node 10
if-match acl 2000
apply preference 99

#

R4 的配置

sysname R4
#

interface GigabitEthernet0/0/0
ip address 192.168.24.4 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 192.168.34.4 255.255.255.0

rip 1
undo summary
version 2
network 192.168.24.0
network 192.168.34.0
#


Network 路由策略(Router Policy)

定义

路由策略主要实现了路由过滤和路由属性设置,通过改变路由属性设置来改变网络流量经过的路径。

路由策略并非单一的路由协议,而是一个技术专题或者方法论。

目的

路由协议在发布、接收和引入路由信息时,根据实际组网需求实施一些策略,以便对路由信息进行过滤和改变路由信息的属性,如:

  • 控制路由的接收和发布,只发布和接收必要、合法的路由信息,以控制路由表的容量,提高网络的安全性。
  • 控制路由的引入(路由的重分发),在一种路由协议引入其它路由协议发现的路由信息丰富自己的路由信息时,只引入一部分满足条件的路由信息。
  • 设置特定路由的属性修改通过路由策略过滤的路由的属性,满足自身需要。

实例

route-policy hcie permit node 10

if-match 1

if-match 2

apply 3

route-policy hcie permit node 15

if-match x1

if-match x2

apply y1

route-policy hcie permit node 20

if-match x3

apply y2

路由策略的名字根据需要自己定义。这些if-match 语句之间是与的关系,也就是所有的if-match语句必须同时满足,也就例外的情况:

匹配模式

  • Permit: 指定该节点的匹配模式为允许。如果路由匹配的结果是满足该节点的所有
    if match 语
    句,则该路由被视为允许通过,该节点的 apply 语句将被执行,且不再进
    入下一个节点:如果该节点中有 if-match 语句不满足,则进入下一个节点继续匹配。
  • Deny: 指定节点的匹配模式为拒绝。如果节点的匹配模式为 deny ,则该节点的
    apply 语句将不被执行
    。如果路由匹配的结果是满足该节点的所有 if-match 语句,那么
    Route-Policy 的匹配过程立即结束,不会再进入下一个节点,而且满足该节点条件的路
    由被视为拒绝通过。如果该节点下有 if-match 语句不满足,则进入下 个节点继续匹配。
  • 值得注意的是, Route-Policy 用于路由匹配时,被匹配对象(也就是路由条 目)必须满足 个节点中的所有 if-match 语句,才被认为匹配该节点。如果某条路由没有被Route-Policy 的任何节点匹配,则该路由被视为拒绝通过该 Route-Policy ,也就是说,Route-Policy 的末尾隐含着一个类似拒绝所有的节点。当然,为了避免所有的路由都被拒绝通过,一个 Route-Policy 中必须至少有一个节点的匹配模式为 permit.

路由策略配置任务概览

1、先配置过滤器:路由策略过滤器包括访问控制列表、地址前缀列表、AS路径过滤器、团体属性过滤器、扩展团体属性过滤器和RD属性过滤器。路由策略的过滤器不仅可以在路由策略的if-match子句中使用,还可以在特定情况下单独使用。

2、配置路由策略

3、配置策略生效时间(一般立即生效)

以下是一些常用的 if-match 命令、Apply 子句。


匹配 ACL:
if-match acl { acl-number | acl-name }
匹配 IP 前缀列表:
if-match ip-prefix ip-prefix -name
匹配路由的度量值
if-match metric metric
匹配路由的出接口
if-match interface G0/0/1
匹配路由的标记
if-match tag tag

在route-policy视图下,使用 apply 命令指定需执行的动作,这些动作主要是对所匹配的路由的某些属性进行修改,例如修改路由的度量值、优先级值、标记等。
以下是一些常用的 apply 命令。
设置路由的度量值:
apply cost [ + | -] cost
设置路由的度量值类型:
设置 IS-IS 的度量值类型: apply cost-type { external | internal }
设置 OSPF 的度量值类型: apply cost-type { type-l | type-2 }
设置路由的下一跳地址:
apply ip-address next-hop { ipv4-address | peer-address }
设置路由的优先级
apply preference preference
设置路由的标记:
apply tag tag
一个节点中可以不包含任何 apply 语句,此时该节点只被用于执行路由过滤,而不用于设置路由的属性。

举例 在引入直连路由时调用路由策略

需求:

Rl 及R2 在各自的 GEO/O/O 接口上激活 OSPF AreaO内建立邻接关系。 Rl 还有另外 3个直连接口,这 个接口并没有使用 network 命令激活OSPF 。为了让 OSPF 域内的路由器能够学习到 Rl GE0 /0/1 GE0/0/2 接口的路由(且路由的度量值为 20) ,就需要在 Rl 上将直连路由引入 OSPF ,但是这样一来, Rl 所有的直连路由都会被引入,这显然并非我们期望看到的结果.

R1配置

acl 2000

rule permit source 10.0.1.0 0.0.0.0

rule permit source 10.0.2.0 0.0.0.0

quit

创建一个路由策略,名字为hcie 同时配置一个节点,节点编号为10

route-policy hcie permit node 10

在节点10定义一个apply 语句,设置路由度量值为20

if-match acl 20

apply cost 20

quit

配置OSPF

ospf 1

area 0

network 10.1.12.0 0.0.0.255

quit

import-route direct route-policy hcie

ospf 路由过滤为什么只能在in 方向(不绝对)

“哈哈,这个问题问得好,这和OSPF的LSA有关系。OSPF在发送区域内路由的时候,是把路由放在LSA-1中放出去的,LSA-1里放的可不只是路由啊,所以发送时无法过滤路由。而收取路由的时候,收到LSA-1以后是先计算SPF,再查看路由表,正好就有机会查看分发列表去决定收取那些路由。”

所以,OSPF区域内路由过滤时,只能用于in方向。

Network VLan与Trunk

VLan

1、Vlan 的出现帮忙解决了广播域过大的问题

2、在不同的vlan内报文传输相互隔离,vlan 标签(Tag)是什么时候打上的?做了Vlan的划分后是怎么抑制广播报文的?

3、PC 无法处理带标签的报文,正常的报文发送到以太网称为以太网帧,也叫UnTagged帧,是谁给UnTagged帧贴上标签的?打上(去掉)标签是由直连的交换机操作的,加了vlan 标签的帧称为802.1Q帧。0x8100

4、VLAN ID 是12位的0~4095 可用的Vlan 是1~4094 .

5、没有Vlan Tag时 数据帧根据MAC 地址转发,打上Vlan Tag后会根据Tag 转发。

6、 Vlan 划分 :基于主机的MAC、基于交换机端口、基于子网、基于协议、基于策略

7、PVID 也就是默认没有划分VLAN 时交换机的接口ID也叫做缺省的VLAN ID ;大多厂商出厂设置为1 的PVID .每个端口只能有一个Pvid (缺省VLAN ID)

8、以太网交换机二层接口类型:Access 、Trunk、Hybrid Hybird口是access 口和Trunk的结合,可以选择Access,也可以是Trunk .

Access 口会将收到的数据做一个判断 ,如果和Access 接口的VlanID 相同则接受,不同则丢弃,发送同理。

9、Hybrid 混合接口通过 Untagged 列表与 Tag列表决定是否要不要脱标签。

10、Vlan 1 通常是不使用的,默认作为管理VLAN

Trunk

解决了相同VLAN 跨交换机访问的问题

不同的VLAN 经过Trunk时,会被打上VLAN tag用于区分不同的VLAN

路由器、防火墙物理接口、终端(PC,Server)的网卡不识别带VLAN TAG的数据帧,所以要求交换机上连接这些设备的接口必须配置成Access链路;而交换机与交换机之间互联,交换机与路由器子接口、防火墙子接口之间的互联链路要设置Trunk 链路。

vlan 间的通信一般使用三层交换

Trunk \ Vlan端口划分查看

dis port vlan

Trunk的配置

port link-type trunk

port trunk allow vlan 11 to 19

Network BGP故障诊断

BGP协议的故障诊断命令及命令意思如下所示: 


display bgp peer                                 
显示公网IPv4邻居的摘要信息 

display bgp vpnv4 all peer 显示vpnv4 bgp 对等体


display bgp peer ipv4-address  verbose             
显示指定邻居的详细信息 


display bgp peer ipv4-address log-info              
显示指定邻居的信息记录(该命令对邻居意外中断问题定位非常重要) 


display bgp group group-name                     
显示公网IPv4邻居组信息 


display bgp routing-table statistics                 
显示BGP公网IPv4单播路由统计 


display bgp routing-table                         
显示BGP公网IPv4单播路由摘要信息 


display bgp routing-table peer ip-address advertised-routes   
显示给指定邻居发布的路由 


display bgp routing-table peer ip-address received-routes   
显示从指定邻居收到的路由 


display bgp network                             
显示通过Network命令引入到BGP的路由 


display bgp path                                
显示BGP公网Ipv4单播路由的路经属性信息 


display bgp ipv6                               
显示BGP公网IPv6的相应信息,与对应Ipv4命令用法相同 


display bgp multicast               
显示BGP公网IPv4多播的相应信息,与对应IPv4单播命令用法相同 


display ip  routing-table statistics    
显示系统公网IPv4路由统计 


display ip routing-table protocol bgp   
显示系统公网IPv4路由表中BGP Active路由的摘要信息 


display ip routing-table protocol bgp verbose   
显示系统公网IPv4路由表中BGP Active路由的摘要信息 


display ip routing-table protocol bgp inactive    
显示系统公网IPv4路由表中BGP Inactive路由的摘要信息 

BGP是唯一能够运行在AS之间的路由协议,在Internet上,他有不可替代的地位。同时BGP是“传递路由信息”的协议,并不是“发现路由信息”的协议,协议的工作过程可以分为如下两个过程:

  • 设备之间正常的建立起BGP邻居;
  • 邻居之间传递、同步路由信息;

当然,由于BGP协议十分灵活,而且路由属性众多,可以通过多种路由策略完成特定的需求,我们在此只考虑最简单的情况。

与其他路由协议的定位方式一样,我们首先需要保证设备配置的正确性。与其他路由协议相比,BGP的基础配置是比较简单的,我们只需要在BGP协议配置模式下指定邻居的IP地址和AS number就可以完成(目前几乎所有的BGP应用都是“非同步”模式,所以这里没有考虑“同步类型”配置)。为了保证BGP邻居之间的可靠性,一般我们还会通过“peer peer-ip-add connect-interface interface-type interface-num”命令指定建立BGP邻居的“源地址”。为了保证邻居配置可靠、没有歧义,我们建议邻居之间的“源地址”与“目的地址”能够完全对应(本端指定的“源地址”与对端配置的“邻居地址”相同)。

一般情况下,至此BGP邻居已经可以正常建立了。我们可以通过“display bgp peer”命令来查看,如果到达到“establish”状态,则表示邻居正常建立。如果不进行其他特殊配置,BGP只向邻居传递BGP路由,而网络中默认是没有任何BGP路由的。我们可以通过“import-route”和“network”命令使其他类型的路由信息转变为BGP路由。

BGP协议本身维护自己的一张路由表,主要用来路由信息选优。BGP只把本机路由表中“有效”并且“最优”的路由信息传递给邻居。所谓“有效”是指路由表项的“下一跳”可达;“最优”是指在目的网段相同(包括目的网段前缀和掩码都相同)的情况下,路由优先级最高在本设备系统路由表中存在的也是“最优路由”,所以判断一条路由条目是否可以在路由表中以“BGP路由”的形式存在,首先要确保在BGP路由表中,该路由条目是“有效”并且“最优”的。在华为数据通信设备中,BGP路由在默认情况下是优先级最低的,所以如果本机有其他路由协议、相同目的网络的路由,BGP路由不会被优选,自然也不会被传递给邻居。