简介
本文档介绍如何在基于 Cisco Nexus NX-OS 的交换机上配置路由泄漏。
先决条件
要求
Cisco 建议您了解以下主题:
- Nexus NX-OS软件
- 路由协议,例如增强型内部网关路由协议(EIGRP)、开放最短路径优先(OSPF)、边界网关协议(BGP)等。
使用的组件
本文档中的信息基于NXOS版本7.3(0)D1(1)的Cisco Nexus 7000。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
限制
您必须将路由直接从源VRF泄漏到目标VRF。您不能泄漏当前从另一个VRF泄露的路由。
假设通过Nexus上的不同VRF路由时,无法建立从Nexus到对等IP的BGP会话。
配置
VRF 之间的泄漏在 BGP 进程级别执行。因此,必须先将路由添加到 BGP 进程,具体来说是添加到 BGP 表中。
注意:术语“默认 VRF”和“全局路由表”在本文档中可互换使用。
默认 VRF 到 VRF
在本例中,Nexus 通过 EIGRP 在其默认 VRF 中收到了两个路由。配置泄漏 VRF BLUE 中的路由。
在本例中,仅泄漏路由 192.168.2.0/24。
全局路由表输出 |
Nexus# show ip route eigrp
IP Route Table for VRF "default"
'*' denotes best ucast next-hop
'**' denotes best mcast next-hop
'[x/y]' denotes [preference/metric]
'%<string>' in via output denotes VRF <string>
172.16.2.2/32, ubest/mbest: 1/0
*via 10.1.2.2, Eth2/1, [90/130816], 00:00:21, eigrp-1, internal
192.168.2.0/24, ubest/mbest: 1/0
*via 10.1.2.2, Eth2/1, [90/130816], 00:00:21, eigrp-1, internal
Nexus# |
注意:在NX-OS中,需要启用全局配置模式中的功能。要启用 BGP,请使用命令 feature bgp。
重分布BGP中默认VRF路由表中存在的路由。由于路由位于默认VRF中,因此BGP中的redistribute命令位于全局address-family ipv4 unicast部分下。请对redistribute命令使用正确的参数。这取决于路由在默认VRF中的状态(直连、eigrp、ospf等)。
注意:如果要泄漏的路由作为 BGP 路由安装在源 VRF 中,您可以在所有场景中跳过步骤 1。在本示例中,源VRF是默认VRF(全局路由表)。
重新分配到 BGP |
route-map ALL permit 10 ! router bgp 65535
address-family ipv4 unicast
redistribute eigrp 1 route-map ALL |
注意:在NX-OS中,始终需要将路由映射作为参数来选择性地重新分发路由。创建的空路由映射permit语句对于匹配任何和所有路由是有效的。
- 步骤 2: 在目的 VRF 中配置 Import VRF default。
在目的 VRF 中配置了 import vrf default 命令。命令行需要路由映射作为参数,以便明确定义要在目标VRF中导入的路由,在本例中是名为BLUE的VRF。
在目的 VRF 中配置 Import VRF default |
ip prefix-list NETWORK seq 5 permit 192.168.2.0/24
!
route-map GLOBAL-TO-VRF permit 10
match ip address prefix-list NETWORK
!
vrf context BLUE
address-family ipv4 unicast
import vrf default map GLOBAL-TO-VRF |
您可以在目标VRF中确认现在通过BGP看到路由。VRF中的这些BGP路由现在可以在运行在同一VRF中的任何其他路由协议中重分发。
查看目的 VRF 路由表 |
Nexus# show ip route vrf BLUE
IP Route Table for VRF "BLUE"
'*' denotes best ucast next-hop
'**' denotes best mcast next-hop
'[x/y]' denotes [preference/metric]
'%<string>' in via output denotes VRF <string>
192.168.2.0/24, ubest/mbest: 1/0
*via 10.1.2.2%default, Eth2/1, [20/130816], 00:15:00, bgp-65535, external, tag 65535,
Nexus# |
VRF 到 VRF
在本例中,Nexus 通过 EIGRP 在其名为 RED 的 VRF 中收到了两个路由。配置泄漏 VRF BLUE 中的路由。
VRF RED 路由表输出 |
Nexus# show ip route eigrp vrf RED
IP Route Table for VRF "RED"
'*' denotes best ucast next-hop
'**' denotes best mcast next-hop
'[x/y]' denotes [preference/metric]
'%<string>' in via output denotes VRF <string>
172.16.2.2/32, ubest/mbest: 1/0
*via 10.1.2.2, Eth2/1, [90/130816], 00:00:08, eigrp-1, internal
192.168.2.0/24, ubest/mbest: 1/0
*via 10.1.2.2, Eth2/1, [90/130816], 00:00:08, eigrp-1, internal
Nexus# |
重分布BGP中VRF RED路由表中存在的路由。由于路由位于VRF RED中,因此BGP中的redistribute命令位于vrf RED地址系列ipv4单播部分下。
重新分配到 BGP |
route-map ALL permit 10 ! router bgp 65535 vrf RED
address-family ipv4 unicast
redistribute eigrp 1 route-map ALL |
为了在VRF之间泄漏,需要使用路由目标。源VRF导出路由目标值。目标VRF导入相同的路由目标值。
创建导出和导入路由目标 |
vrf context RED address-family ipv4 unicast route-target export 1:1 ! vrf context BLUE address-family ipv4 unicast route-target import 1:1 |
您可以在目标VRF中确认现在通过BGP看到路由。VRF中的这些BGP路由现在可以在运行在同一VRF中的任何其他路由协议中重分发。
查看目的 VRF 路由表 |
Nexus# show ip route vrf BLUE
IP Route Table for VRF "BLUE"
'*' denotes best ucast next-hop
'**' denotes best mcast next-hop
'[x/y]' denotes [preference/metric]
'%<string>' in via output denotes VRF <string>
172.16.2.2/32, ubest/mbest: 1/0
*via 10.1.2.2%RED, Eth2/1, [20/130816], 00:01:58, bgp-65535, external, tag 65535,
192.168.2.0/24, ubest/mbest: 1/0
*via 10.1.2.2%RED, Eth2/1, [20/130816], 00:01:58, bgp-65535, external, tag 65535,
Nexus# |
您可以选择使用源VRF下的export map命令以将路由目标分配到要导出的特定路由。使用路由映射中的set extcommunity rt参数以分配路由目标。
在本例中,仅网络192.168.2.0/24与Route-Target 1:1一起导出,该路由后来以VRF BLUE导入。
结果是仅泄漏指定网络。
将路由目标分配给特定路由 |
ip prefix-list NETWORK seq 5 permit 192.168.2.0/24
!
route-map ADD-RT permit 10
match ip address prefix-list NETWORK
set extcommunity rt 1:1
!
vrf context RED
address-family ipv4 unicast
export map ADD-RT
!
vrf context BLUE
address-family ipv4 unicast
route-target import 1:1 |
VRF 到默认 VRF
注意:在Nexus 7000和Nexus 7700系列交换机上,在NX-OS版本7.3(0)D1(1)中引入了此功能,该功能支持使用export vrf default map命令从任何其他VRF将IP前缀导出到全局路由表(默认VRF)。
Nexus 通过 EIGRP 在其名为 RED 的 VRF 中收到了两个路由。配置泄漏默认 VRF 中的路由。
在本例中,仅泄漏路由 192.168.2.0/24。
重分布BGP中VRF RED路由表中存在的路由。由于路由位于VRF RED中,因此BGP中的redistribute命令位于vrf RED地址系列ipv4单播部分下。
重新分配到 BGP |
route-map ALL permit 10 ! router bgp 65535 vrf RED
address-family ipv4 unicast
redistribute eigrp 1 route-map ALL |
- 步骤 2: 在源 VRF 中配置 Export VRF default。
在源 VRF 中配置了 export vrf default 命令。该命令行需要使用 route-map 作为参数,以明确定义要在默认 VRF 中导出的路由。
在源 VRF 中配置 Export VRF default |
ip prefix-list NETWORK seq 5 permit 192.168.2.0/24
!
route-map GLOBAL-TO-VRF permit 10
match ip address prefix-list NETWORK
!
vrf context RED
address-family ipv4 unicast
export vrf default map GLOBAL-TO-VRF |
您可以在默认VRF中确认现在通过BGP看到路由。默认VRF中的这些BGP路由现在可以在同样运行在默认VRF中的任何其他路由协议中重分布。
查看默认 VRF 路由表 |
Nexus# show ip route IP Route Table for VRF "default" '*' denotes best ucast next-hop '**' denotes best mcast next-hop '[x/y]' denotes [preference/metric] '%<string>' in via output denotes VRF <string>
192.168.2.0/24, ubest/mbest: 1/0 *via 10.1.2.2%RED, Eth2/1, [20/130816], 00:08:19, bgp-65535, external, tag 65535, Nexus# |
验证
VRF 路由泄漏过程分为 4 个阶段。可按以下顺序进行验证:
要检查路由表中的路由是否正确,可使用以下命令:
show ip route [vrf
]
要检查 BGP 表中的路由是否正确,可使用以下命令:
请注意,第二个命令可以互换使用,以便在 BGP 表中显示 IPv4 单播地址。
show bgp ipv4 unicast [vrf
] show ip bgp [vrf
]
最后,show forwarding route A.B.C.D/LEN [VRF <vrf name>]可用于确认线路卡级别编程的第3层 — 路由(硬件编程)。
Nexus# show forwarding route 10.1.2.2
slot 1
=======
IPv4 routes for table default/base
'*' denotes recursive route
----------------+----------------------------------------+----------------------+-----------------
Prefix | Next-hop | Interface | Labels
----------------+----------------------------------------+----------------------+-----------------
10.1.2.0/24 Attached Ethernet2/1
Nexus#