4.BGP的特性
BGP具有以下特性:
(1)传输协议:TCP,端口号179;
(2)BGP是外部路由协议,用来在AS之间传递路由信息;
(3)是一种增强的路径矢量路由协议;
(4)拥有可靠的路由更新机制 ;
(5)具备丰富的Metric度量方法;
(6)无环路协议设计;
(7)为路由条目附带多种属性信息;
(8)支持CIDR(无类别域间选路);
(9)丰富的路由过滤和路由策略;
(10)无需周期性更新;
(11)路由更新时只发送增量路由;
(12)周期性发送KeepAlive报文以保持 TCP连通性;
下面详细介绍BGP的六种状态:
1)ldle状态
ldle(空闲)状态,BGP拒绝任何进入的连接请求,IdIe状态是BGP的初始状态。在ldle状态下,BGP拒绝邻居发送的连接请求。只有在收到本设备的Start事件(如运行BGP协议)后,BGP才开始尝试和其他BGP对等体进行TCP连接,并转至Commect状态。任何状态中收到NOtification报文或TCP拆链通知等Error事件后,BGP都对转至ldle状态。
2)Connect状态
Connect(连接)状态下,BGP等待TCP连接的建立完成后再决定后续操作。在Connect状态下,BGP启动连接重传定时器(通常计时器为30s),等待TCP完成连接。如果TCP连接成功,那么BGP向对等体发送Open报文,并转至OpenSent(开放)状态;如果TCP连接失败,那么BGP转至Active(活跃)状态;如果连接重传定时器超时,BGP仍没有收到BGP对等体的响应,那么BGP继续尝试和其他BGP对等体进行TCP连接,停留在Connect状态。
3)Active状态
Active(活跃)状态下,BGP将尝试进行TCP连接的建立,是BGP的中间状态。在Active状态下,BGP总是在试图建立TCP连接,如果TCP连接成功,那么BGP向对等体发送Open报文,关闭连接重传定时器,并转至OpenSent状态;如果TCP连接失败,那么BGP停留在Active状态;如果连接重传定时器超时,BGP仍没有收到BGP对等体的响应,那么BGP转至Connect状态。
4)OpenSent状态
在OpenSent(开放集)状态下,BGP等待对等体的Open报文,并对收到的Open报文中的AS号、版本号、Holdtime等进行检查。如果收到的Open安博文正确,那么BGP发送KeepAlive报文,并转至OpenConfirm(打开确认)状态;如果发现收到的Open报文有错误,那么BGP发送Notification报文给对等体,并转至IdIe状态。
5)OpenConfirm状态
OpenConfirm(打开确认)状态下,BGP等待KeepAlive或Notification报文。如果收到KeepAlive报文,则转至Established(确认)状态;如果收到Notification报文,则转至ldle状态。
6)Established状态
在Established(确认)状态下,BGP可以在对等体之间交换Update、KeepAlive、Route-refresh报文和Notification报文。如果收到正确的Update或KeepAlive报文,那么BGP就认为对端处于正常运行状态,将保持BGP连接;如果收到错误的Update或KeepAlive报文,那么BGP发送Notification报文通知对端,并转至ldle状态。
**注意:**Route-refresh报文不会改变BGP状态。如果收到Notification报文,那么BGP转至ldle状态。如果收到TCP拆链通知(FIN),那么BGP断开连接,转至ldle状态。
在BGP对等体建立的过程中,通常可见的三种状态是ldle、Active、Established。BGP对等体双方的状态必须都为Established,BGP邻居关系才能成立,双方通过Update报文交换路由信息。
(3)BGP数据库
BGP数据库是BGP正常工作所需要的存储空间,基于保存的内容不同,可分为如下几种:
1)IP路由表(IP-RIB)
全局路由信息库,包括所有最优的IP路由信息。
2)BGP路由表(Loc-RIB)
BGP路由信息看,包括本地BGP Speaker通告的路由信息,将其中最优路由添加到IP路由表中。
注意:先要关注BGP路由表,若BGP路由表中不是最优路由,则无法在IP路由表中可见。
3)邻居表
对等体邻居清单列表,包括对等体两端的邻居信息及邻居列表。
4)Adi-RIB-In
对等体宣告给本地Speaker的未处理的路由信息库。
5)Adj-RIB-Out
本地Speaker宣告给指定对等体的路由信息库。
实验
某企业因为业务需求,要使运营商网络(R1:1.1.1.1)和公司(R4:4.4.4.4)网络路由可达。需要在所有router间运行BGP协议,r1和r2、r3之间建立ebgp连接,r2、r3和r4之间建立ibgp全连接。运营商网络为as100,公司网络为as200,在as200内,使用igp协议来计算路由(该例使用ospf作为igp协议)
需求:
R1配置
sys [huawei]undo info enable
[huawei]sysname r1
[r1]interface GigabitEthernet0/0/0
[R1-GigabitEthernet0/0/0]ip address 10.0.12.1 255.255.255.0
[r1]interface GigabitEthernet0/0/1
[R1-GigabitEthernet0/0/0]ip address 10.0.13.1 255.255.255.0
r1]interface GigabitEthernet0/0/2
[R1-GigabitEthernet0/0/2]ip address 192.168.1.1 255.255.255.0
[r1]interface LoopBack 0
[R1-LoopBack0]ip address 1.1.1.1 255.255.255.255
[R1-LoopBack0]quit
[r1]bgp 100
[R1-bgp]router-id 1.1.1.1
[R1-bgp]peer 10.0.12.2 as-number 200
[R1-bgp]peer 10.0.13.3 as-number 200
[R1-bgp]network 1.1.1.1 32
[R1-bgp]network 192.168.1.0 24
R2配置
sys [huawei]undo info enable
[huawei]sysname r2
[r2]interface GigabitEthernet0/0/0]ip address 10.0.12.2 255.255.255.0
[r2]interface GigabitEthernet0/0/1
[R2-GigabitEthernet0/0/2]ip address 10.0.24.2 255.255.255.0
[r2]interface LoopBack 0
[R2-LoopBack0]ip address 2.2.2.2 255.255.255.255
[R2-LoopBack0]quit
[r2]bgp 200
[R2-bgp]router-id 2.2.2.2
[R2-bgp]peer 10.0.12.1 as-number 100
[R2-bgp]peer 10.0.24.4 as-number 200
[R2-bgp]peer 10.0.24.4 next-hop-local
[R2-bgp]quit
[r2]ospf 110
[R2-ospf-110]area 0.0.0.0
[R2-ospf-110]network 10.0.24.0 0.0.0.255
[R2-ospf-110]network 2.2.2.2 0.0.0.0
R3配置
sys [huawei]undo info enable
[huawei]sysname r3
[r3]interface GigabitEthernet0/0/0]ip address 10.0.13.3 255.255.255.0
[r3]interface GigabitEthernet0/0/1
[R3-GigabitEthernet0/0/2]ip address 10.0.34.3 255.255.255.0
[r3]interface LoopBack 0
[R3-LoopBack0]ip address 3.3.3.3 32
[R3-LoopBack0]quit
[r3]bgp 200
[R3-bgp]router-id 3.3.3.3
[R3-bgp]peer 10.0.13.1 as-number 100
[R3-bgp]peer 10.0.34.4 as-number 200
[R3-bgp]peer 10.0.34.4 next-hop-local
[R3-bgp]quit
[R3]ospf 110
[R3-ospf-110]area 0.0.0.0
[R3-ospf-110]network 10.0.34.0 0.0.0.255
[R3-ospf-110]network 3.3.3.3 0.0.0.0
R4配置
sys [huawei]undo info enable
[huawei]sysname r4
[r4]interface GigabitEthernet0/0/0]ip address 10.0.24.4 255.255.255.0
[r4]interface GigabitEthernet0/0/1
[R4-GigabitEthernet0/0/2]ip address 10.0.34.4 255.255.255.0
[r4]interface GigabitEthernet0/0/2
[R4-GigabitEthernet0/0/2]ip address 192.168.2.1 255.255.255.0
[r4]interface LoopBack 0
[R4-LoopBack0]ip address 4.4.4.4 255.255.255.255
[R4-LoopBack0]quit
[r4]bgp 200
[R4-bgp]router-id 4.4.4.4
[R4-bgp]peer 10.0.24.2 as-number 200
[R4-bgp]peer 10.0.34.3 as-number 200
[R4-bgp]network 4.4.4.4 32
[R4-bgp]network 192.168.2.0 24
[R4-bgp]peer 10.0.34.3 next-hop-local
[R4-bgp]peer 10.0.24.2 next-hop-local
[R4-bgp]quit
[R4]ospf 110
[R4-ospf-110]area 0.0.0.0
[R4-ospf-110]network 4.4.4.4 0.0.0.0
[R4-ospf-110]network 10.0.34.0 0.0.0.255
[R4-ospf-110]network 10.0.24.0 0.0.0.255
[R4-ospf-110]network 192.168.2.0 0.0.0.255
查看配置
[R4]disp bgp routing-table
BGP Local router ID is 4.4.4.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: 5
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 1.1.1.1/32 10.0.24.2 0 100 0 100i
* i 10.0.34.3 0 100 0 100i
*>i 2.2.2.2/32 10.0.24.2 0 100 0 i
*>i 3.3.3.3/32 10.0.34.3 0 100 0 i
*> 4.4.4.4/32 0.0.0.0 0 0 i
测试:从r1与r4之间ping 目前r1到r4走的是R4----R2---R1
[r1]ping 4.4.4.4
选路配置
目前从r4去往r1的路由是:R4----R2---R1,下面通过几种方式实现:r4---r3---r1
1)在r3上修改local-preference值
从R4去往R1的路由从R2 改走R3命令如下:使用本地优先级控制选路
[r3]route-policy lop permit node 10 //创建名为lop的路由策略
[r3-route-policy]apply local-preference 222 设置本地优先级222
[r3]bgp 200
[r3-bgp]peer 10.0.34.4 route-policy lop export 应用策略
[r3-bgp]quit
[r3]quit
<r3>reset bgp all 刷新路由
dis bgp routing-table
BGP Local router ID is 4.4.4.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
*>i 1.1.1.1/32 10.0.34.3 0 222 0 100i 更改后的优先级
*>i 2.2.2.2/32 10.0.24.2 0 100 0 i
*>i 3.3.3.3/32 10.0.34.3 0 222 0 i
*> 4.4.4.4/32 0.0.0.0 0 0 i
2)修改as-path属性
为了还原最初走r2的的效果,请先清除第1)步的配置,在bgp进程中删除策略调用语句
[R3]bgp 200
[R3-bpg]undo peer 10.0.34.4 route-policy lop export
在r2上修改as-path属性并传出个r4
[R2]route-policy as permit node 10
[R2-route-policy]apply as-path 123 123 123 additive
[R2-route-policy]quit
[R2]bgp 200
[R2-bgp]peer 10.0.24.4 route-policy as export
[r2-bgp]quit
[r2]quit
<r2>reset bgp all
3)通过med属性控制路由
R1到r4的默认路径为r1---r2—r4
disp bgp routing-table BGP Local router ID is
.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: 7
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 1.1.1.1/32 0.0.0.0 0 0 i
*> 2.2.2.2/32 10.0.12.2 0 0 200i
* 10.0.13.3 0 200 123 12
3 123i
*> 3.3.3.3/32 10.0.12.2 0 200i
* 10.0.13.3 0 0 200i
*> 4.4.4.4/32 10.0.12.2 0 200i
* 10.0.13.3 0 200i
修改为r1---r3----r4
在r2上进行修改MED属性并传出给r1,可以使r1去往r4的路由改走r3
[R2]route-policy med permit node 10
[R2-route-policy]apply cost + 500
[R2-route-policy]quit
[R2]bgp 200
[R2-bgp]peer 10.0.12.1 route-policy med export
[R2-bgp]quit
disp 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: 7
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 1.1.1.1/32 0.0.0.0 0 0 i
*> 2.2.2.2/32 10.0.12.2 500 0 200i
* 10.0.13.3 0 200 123 12
3 123i
*> 3.3.3.3/32 10.0.13.3 0 0 200i
* 10.0.12.2 500 0 200i
*> 4.4.4.4/32 10.0.13.3 0 200i
* 10.0.12.2 500 0 200i