本示例的基本拓扑结构如图所示,需要在所有Router间运行BGP,其中RouterA、RouterB之间建立EBGP连接,RouterB、RouterC和RouterD之间建立IBGP全连接。现要通过BGP实现各路由器所连网段的三层互通。
本示例要求通过BGP实现网络的三层互通,只需配置BGP基本功能即可。在配置BGP基本功能过程中,因为BGP本身不能发现和产生路由,所以BGP路由表中的路由全部都是从IGB路由引入的。根据本节前面介绍可得出本示例BGP基本功能的配置思路如下。
① 配置各路由器的接口IP地址。
② 在各路由器上启动BGP进程,配置EBGP和IBGP对等体。
③ 引入必要的路由即可。
1) 配置各路由器的接口IP地址
【Router-A上的配置】
interface GigabitEthernet1/0/0
ip address 8.1.1.1 255.0.0.0
#
interface GigabitEthernet2/0/0
ip address 200.1.1.2 255.255.255.0
#
【Router-B上的配置】
interface GigabitEthernet1/0/0
ip address 9.1.1.1 255.255.255.0
#
interface GigabitEthernet2/0/0
ip address 200.1.1.1 255.255.255.0
#
interface GigabitEthernet3/0/0
ip address 9.1.3.1 255.255.255.0
#
【Router-C上的配置】
interface GigabitEthernet2/0/0
ip address 9.1.2.1 255.255.255.0
#
interface GigabitEthernet3/0/0
ip address 9.1.3.2 255.255.255.0
#
【Router-D上的配置】
interface GigabitEthernet1/0/0
ip address 9.1.1.2 255.255.255.0
#
interface GigabitEthernet2/0/0
ip address 9.1.2.2 255.255.255.0
#
2) 在各路由器上使能BGP进程,配置对等体连接
l 配置Router-B、Router-C和Router-D之间的IBGP连接。注意,每个对等体连接均需要在双方设备上分别配置,且如果是IBGP对等体,则双方都须处于同一个AS中。
因为本示例没有配置Loopback接口,也没有在系统视图下全局配置Router ID,所以需要在BGP视图下手动配置各路由器的Router ID。为了便于区分,Router-B、Router-C和Router-D的Router ID分别设为2.2.2.2、3.3.3.3和4.4.4.4。此处,IBGP的源接口和源IP地址均缺省采用设备的物理接口和物理接口IP地址。
【Router-B上的配置】
bgp 65009
router-id 2.2.2.2
peer 9.1.1.2 as-number 65009
peer 9.1.3.2 as-number 65009
#
【Router-C上的配置】
bgp 65009
router-id 3.3.3.3
peer 9.1.2.2 as-number 65009
peer 9.1.3.1 as-number 65009
#
【Router-D上的配置】
bgp 65009
router-id 4.4.4.4
peer 9.1.1.1 as-number 65009
peer 9.1.2.1 as-number 65009
#
l 配置Router-A与Router-B之间的EBGP连接,也需要在双方分别配置,此处采用缺省的物理接口和物理接口IP地址作为EBGP连接源接口和源IP地址。Router-A的路由器ID设为1.1.1.1。
【Router-A上的配置】
bgp 65008
router-id 1.1.1.1
peer 200.1.1.1 as-number 65009
#
【Router-B上的配置】
bgp 65009
router-id 2.2.2.2
peer 9.1.1.2 as-number 65009
peer 9.1.3.2 as-number 65009
peer 200.1.1.2 as-number 65008
#
配置好BGP对等体后,可通过display bgp peer命令查看各设备上的BGP对等体的连接状态。下面是同时有IBGP连接和EBGP连接的Router-B上的输出结构,从中可以看出,Router-B到其他路由器的BGP连接均已建立(参见输出信息中的粗体子部分)。
<Router-B>display bgp peer
BGP local router ID : 2.2.2.2
Local AS number : 65009
Total number of peers : 3 Peers in established state : 3
Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv
9.1.1.2 4 65009 11 12 0 00:09:31 Established 0
9.1.3.2 4 65009 12 13 0 00:10:49 Established 0
200.1.1.2 4 65008 4 4 0 00:02:18 Established 0
<Router-B>
3) 在各路由器上引入所需的IGP路由
配置Router-A发布与EBGP对等体之间的非直连路由8.0.0.0/8。注意,这里要在对应的地址族视图下进行配置,因为如果是在BGP视图下发布,将在多种地址族下生效。
bgp 65008
router-id 1.1.1.1
peer 200.1.1.1 as-number 65009
#
ipv4-family unicast
undo synchronization
network 8.0.0.0
peer 200.1.1.1 enable
#
此时可通过display bgp routing-table命令查看各路由器的BGP路由表信息,可发现他们均已有Router-A发布的这条8.0.0.0/8路由,其中前面带*的路由表示有效路由。从中可以看出,Router-A和Router-B上的该路由都是有效的,而Router-C虽然学习到了AS65008中的8.0.0.0/8路由,但因为下一跳200.1.1.2不可达(因为目前还没有BGP路由到达),所以也不是有效路由。
<Router-A>display bgp routing-table
BGP Local router ID is 1.1.1.1
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 1
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 8.0.0.0 0.0.0.0 0 0 i
<Router-A>
<Router-B>display bgp routing-table
BGP Local router ID is 2.2.2.2
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 1
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 8.0.0.0 200.1.1.2 0 0 65008i
<Router-B>
<Router-C>display bgp routing-table
BGP Local router ID is 3.3.3.3
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 1
Network NextHop MED LocPrf PrefVal Path/Ogn
i 8.0.0.0 200.1.1.2 0 100 0 65008i
<Router-C>
【经验之谈】从以上路由表信息可以看到,Router-A上的8.0.0.0/8路由的下一跳为0.0.0.0,因为这条路由是本地设备通告的,没有经过下一跳,而 Router-B和Router-C上的8.0.0.0/8路由的下一跳均为200.1.1.2,那是因为在EBGP对等体之间的EBGP路由发布时,下一跳将为发送路由器的出接口的IP地址,在IBGP对等体之间的EBGP路由发布时,下一跳不变。而IBGP对等体之间进行IBGP路由八部时只能进行单跳通告,收到的IBGP路由的设备不再通告给它自己的对等体。
在路由表中,最后一列的“Path/Ogn”用来表示路由的AS路径和路由源类型,因为8.0.0.0/8路由是通过network命令通告的,所以显示未i,代表IGP类型。
为了解决Router-C和Router-D能够到达8.0.0.0/8路由的下一跳200.1.1.2,只须在它们共同连接的Router-B上使BGP引入直连路由即可。
[Router-B]bgp 65009
[Router-B-bgp]ipv4-family unicast
[Router-B-bgp-af-ipv4]import-route direct
此时可看到,在Router-A上的BGP路由表中除了原来自己通告的8.0.0.0/8路由表项外,还有Router-B引入的3条直连路由,具体如下所示(参见输出信息中的粗体子部分),其中带>的表示到达对应网段的优选路由。
<Router-A>display bgp routing-table
BGP Local router ID is 1.1.1.1
Status codes: * - valid, > - best, d - damped,()
h - history, i - internal, s - suppressed, S – Stale
抑制 陈旧
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 4
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 8.0.0.0 0.0.0.0 0 0 i
*> 9.1.1.0/24 200.1.1.1 0 0 65009?
*> 9.1.3.0/24 200.1.1.1 0 0 65009?
200.1.1.0 200.1.1.1 0 0 65009?
<Router-A>
在Router-C的BGP路由表中也可见到Router-B所引入的3条直连路由,另外,原来的8.0.0.0/8路由变为有效,可到达(前面有一个*号),具体如下所示(参见输出信息中的粗体部分)。可以通过ping命令验证Router-C可以访问8.1.1.1地址了。
<Router-C>display bgp routing-table
BGP Local router ID is 3.3.3.3
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 4
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 8.0.0.0 200.1.1.2 0 100 0 65008i
*>i 9.1.1.0/24 9.1.3.1 0 100 0 ?
i 9.1.3.0/24 9.1.3.1 0 100 0 ?
*>i 200.1.1.0 9.1.3.1 0 100 0 ?
<Router-C>