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路由不会被优选,自然也不会被传递给邻居。

BGP MPLS IP VPN 配置基础实验

实验拓扑

实验目标

1、实现CE1 和 CE2 通过部署BGP MPLS IP VPN 联通。

配置步骤

  1. P、PE之间配置OSPF,实现骨干网的IP连通性。
  2. PE、P上配置MPLS基本能力和MPLS LDP,建立MPLS LSP公网隧道,传输VPN数据。
  3. PE1和PE2上配置VPN实例,其中PE1,vpnA使用的VPN-target属性为export 64538:1,import 64539:2 以实现相同VPN间互通,同时,与CE相连的接口和相应的VPN实例绑定,以接入VPN用户。
  4. PE1和PE2之间配置MP-IBGP,交换VPN路由信息。
  5. CE1与PE1之间配置EBGP,交换VPN路由信息。CE2与PE2 配置ospf 交换VPN 路由信息。

PE1关键配置

接口配置

dis current-configuration interface
[V200R003C00]
#
interface GigabitEthernet0/0/0
ip binding vpn-instance A // 将vpn 实例绑定到接口
ip address 172.16.0.1 255.255.255.252
#
interface GigabitEthernet0/0/1
ip address 10.0.23.2 255.255.255.0
mpls
mpls ldp
#
interface GigabitEthernet0/0/2
#
interface NULL0
#
interface LoopBack0
ip address 2.2.2.2 255.255.255.255
#
return

在接口视图下,使ip binding vpn-instance 命令,可以将该接口分配给指定的 VRF 。在以上配置中,设备的 GEO/O/0 接口被分配给了 VRF customer 。需注意的是,如果接口原来已经存在 IP地址等配置,则将其分配给 VRF 后,这些配置将会被清空,此时需重新为接口配置 IP地址。

VRF 的配置

vpn-target export-extcommunity 和 vpn-target import-extcommunity 命令则分别用于配置该 VRF Export与RT ImportRT 值。

dis current-configuration configuration vpn-instance
[V200R003C00]
#
ip vpn-instance A
ipv4-family
route-distinguisher 64538:100
vpn-target 64538:1 export-extcommunity
vpn-target 64539:2 import-extcommunity
#
return

华为数通产品上 、VRF 的名称是大小写敏感的,因此 VRFA VRFa 是两个不同的 VRF。另外,一旦 VRF 指定了 RD 值,那么该 VRF RD 将不能再被修改,如需在 VRF 中修改 RD ,则需先在系统视图下执行 undo ip vpn-instance 命令将指定的 VRF删除,然后重新创建 VRF 并为其指定新的 RD

路由配置( PE1-CE1)通过BGP 交互路由

PE1

dis current-configuration configuration bgp
[V200R003C00]
#
bgp 2345
router-id 2.2.2.2
undo default ipv4-unicast
peer 5.5.5.5 as-number 2345
peer 5.5.5.5 connect-interface LoopBack0
#
ipv4-family unicast
undo synchronization
undo peer 5.5.5.5 enable
#
ipv4-family vpnv4
policy vpn-target
peer 5.5.5.5 enable
#
ipv4-family vpn-instance A // PE 和CE 通过Ebgp交互VPNv4路由。
router-id 172.16.0.1
peer 172.16.0.2 as-number 64538

#
return

路由配置

如果客户站点的网络规模较小,在 PE-CE 之间部署静态路由的确可行,但是一旦客户站点网络规模变大,静态路由的可扩展性就将受到挑战,网络管理员的工作量也将相应增加:再者,当站点网络发生变更时(例如增加或删除网段), PE 设备是无法动态感知的,因此在多数场景下,在 PE-CE 间部署动态路由协议要显得更加实际。

在CE1 上配置BGP

dis current-configuration configuration bgp
[V200R003C00]
#
bgp 64538
router-id 172.16.0.2
peer 172.16.0.1 as-number 2345
#
ipv4-family unicast
undo synchronization
network 172.16.1.0 255.255.255.0 // 发布路由
peer 172.16.0.1 enable
#
return

CE2和PE2 通过 ospf 交互路由

查看PE2的VRF

dis current-configuration configuration vpn-instance
[V200R003C00]
#
ip vpn-instance A
ipv4-family
route-distinguisher 64539:200
vpn-target 64539:2 export-extcommunity
vpn-target 64538:1 import-extcommunity
#
return

查看PE2 OSPF 配置

PE2>dis current-configuration configuration ospf
[V200R003C00]
#
ospf 1 vpn-instance A // 创建了ospf 为1 的进程绑定了vpn-instance A
import-route bgp

area 0.0.0.0
network 172.16.0.4 0.0.0.3
#
ospf 100 router-id 5.5.5.5
area 0.0.0.0
network 5.5.5.5 0.0.0.0
network 10.0.45.0 0.0.0.255

在华为路由器上可以创建多个 OSPF 进程,每个 OSPF 进程使用Process-ID 进行标识。同 台网络设备上的不同 OSPF 进程之间相互独立,互不影响。设备会分别为这些 OSPF 进程维护不同的 LSDB ,从一个进程学习到的 LSA 仅仅存储在该进程的 LSDB 中。

如果没有在 ospf 命令中使用 vpn-instance 关键字,那么被创建的 OSPF 进程是部署在设备的根实例中的,设备通过该进程所获悉的 OSPF 路由会被加载到其全局路由表中。

ospf 命令中指定了vpnn-instance 关键字,这意味着该命令所创建的 OSPF 进程被绑定到了某个 VRF ,而不再属于根实例。

查看PE2 OSPF 对等体

dis ospf peer

 OSPF Process 1 with Router ID 172.16.0.5
     Neighbors 

Area 0.0.0.0 interface 172.16.0.5(GigabitEthernet0/0/0)’s neighbors
Router ID: 6.6.6.6 Address: 172.16.0.6
State: Full Mode:Nbr is Slave Priority: 1
DR: 172.16.0.5 BDR: 172.16.0.6 MTU: 0
Dead timer due in 37 sec
Retrans timer interval: 5
Neighbor is up for 00:35:34
Authentication Sequence: [ 0 ]

 OSPF Process 100 with Router ID 5.5.5.5
     Neighbors 

Area 0.0.0.0 interface 10.0.45.5(GigabitEthernet0/0/1)’s neighbors
Router ID: 4.4.4.4 Address: 10.0.45.4
State: Full Mode:Nbr is Slave Priority: 1
DR: 10.0.45.5 BDR: 10.0.45.4 MTU: 0
Dead timer due in 36 sec
Retrans timer interval: 5
Neighbor is up for 00:35:33
Authentication Sequence: [ 0 ]

查看路由实例表

dis ip routing-table vpn-instance A

在PE2上导入从OSPF 学习的客户路由

dis current-configuration configuration bgp
[V200R003C00]
#
bgp 2345
router-id 5.5.5.5
undo default ipv4-unicast
peer 2.2.2.2 as-number 2345
peer 2.2.2.2 connect-interface LoopBack0
#
ipv4-family unicast
undo synchronization
peer 2.2.2.2 enable
#
ipv4-family vpnv4
policy vpn-target
peer 2.2.2.2 enable
#
ipv4-family vpn-instance A //在BGP 视图中执行ipv4-family vpn-instance A 进入地址族视图
import-route ospf 1

#
return

为了达到上述目的,直接在 BGP 配置视图下执行 import-route 命令是不行的,因为这个操作只会将 PE2 的全局路由表中的 OSPF 由引入 BGP ,这显然与需求不符。要将 PEl2学习到的客户 CE2的路由引入 MP-BGP ,就必须在 BGP 配置视图 中,先执行 ipv4-family vpn-instance A 命令进入相应的地址族视图,然后再执行import-route ospf 命令将 PE2 VRF 路由表中通过 OSPF 进程 学习到的OSPF 路由引 BGP

在PE1-CE1 之间部署BGP与PE2-CE2 之间部署OSPF路由引入的差异

由于 PE 设备采用不同的 VRF 对接不同的客户,因此 PE 备与客户的 CE 设备建立
BGP 对等体关系时,必须在 VRF IPv 4地址族中指定对等体。另外,与使用 OSPF
等动态路由协议交互路由的场景不同,当 PE-CE 之间使用 BGP 交互客户路由时,无需
手工执行路由引入操作
。 PE 设备通过 BGP 从其直连 CE 设备所学习到的 BGP 路由,可
直接转换成 VPNv4 路由,然后通告给远端 PE 设备: 而其从远端 PE 设备学习到的 VPNv4
路由,也无需手工执行引入操作,可 接转换成 IPv4 路由,然后通过 PE-CE 间的 BGP对等体关系,通行给相应的PE 设备。

PE1 BGP 配置

dis current-configuration configuration bgp
[V200R003C00]
#
bgp 2345
router-id 2.2.2.2
undo default ipv4-unicast
peer 5.5.5.5 as-number 2345
peer 5.5.5.5 connect-interface LoopBack0
#
ipv4-family unicast
undo synchronization
undo peer 5.5.5.5 enable
#
ipv4-family vpnv4
policy vpn-target
peer 5.5.5.5 enable
#
ipv4-family vpn-instance A
router-id 172.16.0.1
peer 172.16.0.2 as-number 64538

#
return

在上述配置中, PEl 指定了对等体 5.5.5 .5 (PE2) 及其所处的 AS 号,并且在 VPNv4 单播
地址族中激活了该对等体。由于 PEl PE2 之间仅需交互 VPNv4 路由,尤需交互IPv 4路由,
因此使用 undo default ipv4-unicast 命令配置 BGP 缺省不在IPv 4单播胁地址族中激活对等体

查看PE1 VPNv4的对等体