前面我们已经学习了BGP的基础概念、BGP五种报文类型、BGP对等体以及状态机制、BGP的路由产生和路由通告原则,现在可以到实践阶段了。
一、BGP配置命令
# 启动BGP进程,bgp {AS号}
[Huawei] bgp { as-number-plain | as-number-dot }
# 使用router-id命令配置BGP的Router ID
# 如果是IBGP,建议将BGP Router ID配置为设备Loopback接口的地址。
# 如果是RBGP,可以设置为直连接口IP地址
[Huawei-bgp] router-id ipv4-address
# 配置BGP对等体,创建BGP对等体,指定对等体地址以及AS号。
[Huawei-bgp] peer { ipv4-address | ipv6-address } as-number { as-number-plain | as-number-dot }
# 如果是IBGP,配置建立对等体使用的源地址为Loopback接口
[Huawei-bgp] peer ipv4-address connect-interface interface-type interface-number [ ipv4-source-address ]
# EBGP对等体最大跳数,指定建立EBGP连接允许的最大跳数。缺省情况下,EBGP连接允许的最大跳数为1,即只能在物理直连链路上建立EBGP连接。
[Huawei-bgp] peer ipv4-address ebgp-max-hop [ hop-count ]
# 路由通告
network IP_ADDR<X.X.X.X> <mask>
二、实例配置一
1、AS 100内使用环回口建立IBGP全互联,IGP使用OSPF使得各环回口路由可达 2、AS 200使用直连接口建立邻居 3、AR4通告路由192.168.1.1/32 4、AR1通告AS100的内网网段10.1.12.0/24,10.1.13.0/24,10.1.23.0/24
2.1 接口配置
各路由器直连接口和环回口配置地址。
# AR1
interface GigabitEthernet0/0/0
ip address 10.1.12.1 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 10.1.13.1 255.255.255.0
#
interface GigabitEthernet0/0/2
ip address 10.1.14.1 255.255.255.0
#
interface LoopBack0
ip address 1.1.1.1 255.255.255.255
# 其它的省略,步骤一致
2.2 AS 内部的OSPF进程配置,让直连网段和环回网段全部互通
# AR1
ospf 1
area 0.0.0.0
network 1.1.1.1 0.0.0.0
network 10.1.12.0 0.0.0.255
network 10.1.13.0 0.0.0.255
# AR2
ospf 1
area 0.0.0.0
network 2.2.2.2 0.0.0.0
network 10.1.12.0 0.0.0.255
network 10.1.23.0 0.0.0.255
# AR3
ospf 1
area 0.0.0.0
network 3.3.3.3 0.0.0.0
network 10.1.13.0 0.0.0.255
network 10.1.23.0 0.0.0.255
到这一步我们的AR1、AR2、AR3的环回口应该都能互相ping通了,前面我们讲过了,IBGP邻居建议使用Lookback建立邻居,但是必须要环回口也是需要有路由的,也是通过IGP实现。
2.3 配置IBGP全互联
这里按照配置使用环回口地址建立IBGP邻居。
# AR1
bgp 100
peer 2.2.2.2 as-number 100 # 指定对等体地址2.2.2.2
peer 2.2.2.2 connect-interface LoopBack0 # 指定使用环回口0建立连接,否则会使用直连接口连接导致一直处于Active状态,邻居建立失败
peer 3.3.3.3 as-number 100
peer 3.3.3.3 connect-interface LoopBack0
#
ipv4-family unicast
undo synchronization
peer 2.2.2.2 enable
peer 3.3.3.3 enable
# AR2
bgp 100
peer 1.1.1.1 as-number 100
peer 1.1.1.1 connect-interface LoopBack0
peer 3.3.3.3 as-number 100
peer 3.3.3.3 connect-interface LoopBack0
#
ipv4-family unicast
undo synchronization
peer 1.1.1.1 enable
peer 3.3.3.3 enable
# AR3
bgp 100
peer 1.1.1.1 as-number 100
peer 1.1.1.1 connect-interface LoopBack0
peer 2.2.2.2 as-number 100
peer 2.2.2.2 connect-interface LoopBack0
#
ipv4-family unicast
undo synchronization
peer 1.1.1.1 enable
peer 2.2.2.2 enable
# 查看邻居状态为Established表示邻居状态正常,IBGP建立完成
[AR1-bgp-af-ipv4]DIS BGP PEER
BGP local router ID : 1.1.1.1
Local AS number : 100
Total number of peers : 3 Peers in established state : 3
Peer V AS MsgRcvd MsgSent OutQ Up/Down State Pre
fRcv
2.2.2.2 4 100 31 49 0 00:27:28 Established
0
3.3.3.3 4 100 30 40 0 00:27:13 Established
0
10.1.14.4 4 200 33 39 0 00:29:20 Established
2.4 AR1与AR4建立直连的EBGP邻居
# AR1
bgp 100
peer 10.1.14.4 as-number 200 # 保证接口地址能ping通的情况下直接建立
# AR4
bgp 200
router-id 10.1.14.4
peer 10.1.14.1 as-number 100 # 使用直连接口建立邻居
#
ipv4-family unicast
undo synchronization
peer 10.1.14.1 enable
# 通过display bgp peer查看邻居状态正常
<AR4>display bgp peer
BGP local router ID : 10.1.14.4
Local AS number : 200
Total number of peers : 1 Peers in established state : 1
Peer V AS MsgRcvd MsgSent OutQ Up/Down State Pre
fRcv
10.1.14.1 4 100 41 36 0 00:32:53 Established
3
2.5 通告路由
在AR1和AR4上通告网段,使得AS100内都能访问192.168.1.1。
# AR4
bgp 200
router-id 10.1.14.4
peer 10.1.14.1 as-number 100
#
ipv4-family unicast
undo synchronization
network 192.168.1.0 # 通过network通告网段,网段存在自身路由表可以通告
peer 10.1.14.1 enable
# AR1,AR1通过OSPF已经学到所有直连网段的路由,也可以直接network
bgp 100
peer 2.2.2.2 as-number 100
peer 2.2.2.2 connect-interface LoopBack0
peer 3.3.3.3 as-number 100
peer 3.3.3.3 connect-interface LoopBack0
peer 10.1.14.4 as-number 200
#
ipv4-family unicast
undo synchronization
network 10.1.12.0 255.255.255.0
network 10.1.13.0 255.255.255.0
network 10.1.23.0 255.255.255.0
peer 2.2.2.2 enable
peer 3.3.3.3 enable
peer 10.1.14.4 enable
到这里各个路由器应该能够学习到各种需要的路由了。
# AR1
[AR1]dis 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
*> 10.1.12.0/24 0.0.0.0 0 0 i
*> 10.1.13.0/24 0.0.0.0 0 0 i
*> 10.1.23.0/24 0.0.0.0 2 0 i
*> 192.168.1.0 10.1.14.4 0 0 200i
# AR2
<AR2>DIS 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: 4
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 10.1.12.0/24 1.1.1.1 0 100 0 i
*>i 10.1.13.0/24 1.1.1.1 0 100 0 i
*>i 10.1.23.0/24 1.1.1.1 2 100 0 i
i 192.168.1.0 10.1.14.4 0 100 0 200i
# AR4
<AR4>dis bgp routing-table
BGP Local router ID is 10.1.14.4
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
*> 10.1.12.0/24 10.1.14.1 0 0 100i
*> 10.1.13.0/24 10.1.14.1 0 0 100i
*> 10.1.23.0/24 10.1.14.1 2 0 100i
*> 192.168.1.0 0.0.0.0 0 0 i
到这里都能够学习到路由了,但是会发现只有AR1和AR4能够ping通,AR2和AR3是不能ping通192.168.1.1的。而且AR2和AR3上面的BGP路由不是最优选路由。
2.6 指定IBGP从自身转发
我们查看AR1上学习到的192.168.1.0路由信息。
<AR1>dis bgp routing-table 192.168.1.0
BGP local router ID : 1.1.1.1
Local AS number : 100
Paths: 1 available, 1 best, 1 select
BGP routing table entry information of 192.168.1.0/24:
From: 10.1.14.4 (10.1.14.4) # 从能够邻居学习到的路由
Route Duration: 00h33m21s
Direct Out-interface: GigabitEthernet0/0/2
Original nexthop: 10.1.14.4 # 下一跳地址
Qos information : 0x0
AS-path 200, origin igp, MED 0, pref-val 0, valid, external, best, select, acti
ve, pre 255
Advertised to such 2 peers: # AR1将这条路由通告给了AR2和AR3
2.2.2.2
3.3.3.3
然后到AR2上查看路由信息。
<AR2>dis bgp routing-table 192.168.1.0
BGP local router ID : 2.2.2.2
Local AS number : 100
Paths: 1 available, 0 best, 0 select
BGP routing table entry information of 192.168.1.0/24:
From: 1.1.1.1 (1.1.1.1)
Route Duration: 00h21m39s
Relay IP Nexthop: 0.0.0.0
Relay IP Out-Interface:
Original nexthop: 10.1.14.4 # 起源下一跳地址
Qos information : 0x0
AS-path 200, origin igp, MED 0, localpref 100, pref-val 0, internal, pre 255
Not advertised to any peer yet
回顾我们刚才的操作,我们没有将这段公网直连路由通告过,EBGP进行路由通告不会改变下一跳,因此AR2和AR3是没有到达10.1.14.0/24的路由的,不管是BGP路由还是OSPF路由表都没有的,而且通告这段路由也不现实。
但是我们AR1是能够知道去往AR4的,因此我们AR2和AR3只需要找到AR1,然后去往192.168.1.0/24即可。
我们需要配置IBGP对等体时指定邻居从自身转发。
bgp 100
peer 2.2.2.2 as-number 100
peer 2.2.2.2 connect-interface LoopBack0
peer 3.3.3.3 as-number 100
peer 3.3.3.3 connect-interface LoopBack0
peer 10.1.14.4 as-number 200
#
ipv4-family unicast
undo synchronization
network 10.1.12.0 255.255.255.0
network 10.1.13.0 255.255.255.0
network 10.1.23.0 255.255.255.0
peer 2.2.2.2 enable
peer 2.2.2.2 next-hop-local # 指定邻居2.2.2.2从AR1转发
peer 3.3.3.3 enable
peer 3.3.3.3 next-hop-local # 指定邻居3.3.3.3从AR1转发
peer 10.1.14.4 enable
# 然后再次到AR上查看路由就会发现有变化了。
<AR2>dis bgp routing-table 192.168.1.0
BGP local router ID : 2.2.2.2
Local AS number : 100
Paths: 1 available, 1 best, 1 select
BGP routing table entry information of 192.168.1.0/24:
From: 1.1.1.1 (1.1.1.1)
Route Duration: 00h00m56s
Relay IP Nexthop: 10.1.12.1 # 下一跳转发地址为直连路由,并且AR2上有这个路由的
Relay IP Out-Interface: GigabitEthernet0/0/0
Original nexthop: 1.1.1.1 # 起源下一条为AR1
Qos information : 0x0
AS-path 200, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, bes
t, select, active, pre 255, IGP cost 1
Not advertised to any peer yet
# 然后AR2和AR3都可以实现到达192.168.1.1
<AR2>ping 192.168.1.1
PING 192.168.1.1: 56 data bytes, press CTRL_C to break
Reply from 192.168.1.1: bytes=56 Sequence=1 ttl=254 time=30 ms
Reply from 192.168.1.1: bytes=56 Sequence=2 ttl=254 time=40 ms
Reply from 192.168.1.1: bytes=56 Sequence=3 ttl=254 time=20 ms
Reply from 192.168.1.1: bytes=56 Sequence=4 ttl=254 time=30 ms
Reply from 192.168.1.1: bytes=56 Sequence=5 ttl=254 time=30 ms
--- 192.168.1.1 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 20/30/40 ms
简单说就是EBGP通告路由不会改变下一跳导致IBGP无法找到下一跳地址转发,需要在出口的EBGP上配置自身为下一跳转发。
2.7 BGP配置的层次结构
bgp 100 # BGP的全局视图,在这里配置对等体信息和AS号
peer 2.2.2.2 as-number 100 # 默认是建立ipv4的邻居,因此这里的邻居会默认加入一条
peer 2.2.2.2 connect-interface LoopBack0 # peer 2.2.2.2 enable在下面的地址簇里面
peer 3.3.3.3 as-number 100
peer 3.3.3.3 connect-interface LoopBack0
peer 10.1.14.4 as-number 200
#
ipv4-family unicast # IPv4地址簇,默认是ipv4单播unicast
undo synchronization
network 10.1.12.0 255.255.255.0
network 10.1.13.0 255.255.255.0
network 10.1.23.0 255.255.255.0
peer 2.2.2.2 enable
peer 2.2.2.2 next-hop-local
peer 3.3.3.3 enable
peer 3.3.3.3 next-hop-local
peer 10.1.14.4 enable
因为BGP支持IPv4、IPv6、vpn实例、EVPN等地址簇,默认在全局下配置是IPv4单播地址簇,自动添加了peer x.x.x.x enable
,像一些命令可以手动进入地址簇进行配置。
示例:
bgp 100
peer 2.2.2.2 as-number 100
peer 2.2.2.2 connect-interface LoopBack0
peer 3.3.3.3 as-number 100
peer 3.3.3.3 connect-interface LoopBack0
peer 10.1.14.4 as-number 200
#
ipv4-family unicast
undo synchronization
network 10.1.12.0 255.255.255.0
network 10.1.13.0 255.255.255.0
network 10.1.23.0 255.255.255.0
peer 2.2.2.2 enable
peer 2.2.2.2 next-hop-local
peer 3.3.3.3 enable
peer 3.3.3.3 next-hop-local
peer 10.1.14.4 enable
#
ipv6-family unicast
undo synchronization
#
ipv4-family vpnv4
policy vpn-target
目前我们暂时还是学习到IPv4的单播即可。
三、EBGP多跳实验
# 配置基础的地址
# AR1和AR3的接口需要路由可达,通过默认路由方式
interface GigabitEthernet0/0/0
ip address 10.1.12.1 255.255.255.0
#
ip route-static 0.0.0.0 0.0.0.0 10.1.12.2
# AR1和AR3公网接口正常ping通
[AR1]ping -a 10.1.12.1 10.1.23.3
PING 10.1.23.3: 56 data bytes, press CTRL_C to break
Reply from 10.1.23.3: bytes=56 Sequence=1 ttl=254 time=70 ms
Reply from 10.1.23.3: bytes=56 Sequence=2 ttl=254 time=30 ms
Reply from 10.1.23.3: bytes=56 Sequence=3 ttl=254 time=30 ms
Reply from 10.1.23.3: bytes=56 Sequence=4 ttl=254 time=30 ms
Reply from 10.1.23.3: bytes=56 Sequence=5 ttl=254 time=40 ms
--- 10.1.23.3 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 30/40/70 ms
建立EBGP邻居。
# AR1
bgp 100
router-id 10.1.12.1
peer 10.1.23.3 as-number 200
#
ipv4-family unicast
undo synchronization
peer 10.1.23.3 enable
# AR3
bgp 200
router-id 10.1.23.3
peer 10.1.12.1 as-number 100
#
ipv4-family unicast
undo synchronization
peer 10.1.12.1 enable
发现BGP邻居会一直保持在Connect状态,因为默认BGP认为直连是最可靠的,因此跳数默认为1,如果是经过多条需要通过参数peer 10.1.23.3 ebgp-max-hop
指定跳数限制,直接回车为255。
# 双方都需要开启才生效
bgp 100
router-id 10.1.12.1
peer 10.1.23.3 as-number 200
peer 10.1.23.3 ebgp-max-hop 255
#
ipv4-family unicast
undo synchronization
peer 10.1.23.3 enable
#
[AR1]dis bgp peer
BGP local router ID : 10.1.12.1
Local AS number : 100
Total number of peers : 1 Peers in established state : 1
Peer V AS MsgRcvd MsgSent OutQ Up/Down State Pre
fRcv
10.1.23.3 4 200 2 4 0 00:00:35 Established
0
就是EBGP如果经过中间设备跳数大于1都需要配置ebgp-max-hop
。
总结:本次实验简要地进行了IBGP利用环回口建立邻居以及EBGP多跳实验,需要多配置使用才能熟悉。
如果对文章感兴趣欢迎微信搜索公众号:不喜欢热闹的孩子
本文由 mdnice 多平台发布