BGP实验(eNSP实现)
BGP协议是一种用于在不同自治系统(AS)之间交换网络层可达性信息的路由选择协议。BGP协议的特点有以下几点BGP是基于策略的路由选择协议,它不使用传统的内部网关协议(IGP)的指标,而使用基于路径、网络策略或规则集来决定路由。BGP使用TCP作为其传输层协议,提高了协议的可靠性。BGP报文有五种类型:Open、Update、Notification、Keepalive和Route-refresh
实验拓扑图
实验目的和需求
掌握bgp协议的基本原理和功能,了解ebgp和ibgp的区别和作用,学习如何配置bgp进程、建立对等体关系、引入和宣告路由、修改路由属性和控制选路策略,观察并分析bgp路由信息在不同AS之间的交换和传递过程。
需求:让r1和r5能过互相访问对方的5.5.5.5和1.1.1.1。
实验步骤
-
基本配置:配置路由器的名称、接口IP地址、环回口等基本参数。
-
配置IGP协议:在同一个AS内部,配置IGP(这里以OSPF为例)协议,实现内部网络互通。
-
配置BGP协议:在不同AS之间,配置BGP进程、邻居关系等参数,建立ebgp或ibgp连接。
-
路由宣告和引入:在BGP进程中,使用network命令宣告本地路由或使用import命令引入其他协议的路由,并观察邻居间的路由更新信息。
-
用户测试:在各个网络节点上,使用ping或traceroute等工具测试网络连通性和数据流向
-
基本配置
各个路由器的端口ip地址配置如下
[r1]dis ip int brief
Interface IP Address/Mask Physical Protocol
GigabitEthernet0/0/0 12.1.1.1/24 up up
LoopBack0 1.1.1.1/32 up up(s)
[r2]dis ip int brief
Interface IP Address/Mask Physical Protocol
GigabitEthernet0/0/0 12.1.1.2/24 up up
GigabitEthernet0/0/1 23.1.1.2/24 up up
LoopBack0 2.2.2.2/32 up up(s)
[r3]dis ip int brief
Interface IP Address/Mask Physical Protocol
GigabitEthernet0/0/1 23.1.1.3/24 up up
GigabitEthernet0/0/2 34.1.1.3/24 up up
LoopBack0 3.3.3.3/32 up up(s)
[r4]dis ip int brief
Interface IP Address/Mask Physical Protocol
GigabitEthernet0/0/0 45.1.1.4/24 up up
GigabitEthernet0/0/2 34.1.1.4/24 up up
LoopBack0 4.4.4.4/32 up up(s)
[r5]dis ip int brief
Interface IP Address/Mask Physical Protocol
GigabitEthernet0/0/0 45.1.1.5/24 up up
LoopBack0 5.5.5.5/32 up up(s)
-
配置IGP协议
在同一个AS内部,配置IGP(这里以OSPF为例)协议,实现内部网络互通,为BGP协议打底,因为想要建立起BGP的邻居关系,要跟邻居TCP可达,也就是能够通信。
[r2]
ospf 1
area 0.0.0.0
#
interface GigabitEthernet0/0/1
ospf enable 1 area 0.0.0.0
#
interface LoopBack0
ospf enable 1 area 0.0.0.0
[r3]
ospf 1
area 0.0.0.0
network 0.0.0.0 255.255.255.255
[r4]
ospf 1
area 0.0.0.0
#
interface GigabitEthernet0/0/2
ospf enable 1 area 0.0.0.0
#
interface LoopBack0
ospf enable 1 area 0.0.0.0
-
配置BGP协议
-
在R1上配置BGP进程和EBGP邻居关系。
[r1]
bgp 100
router-id 1.1.1.1
peer 12.1.1.2 as-number 200
-
在R2上配置BGP进程,EBGP邻居关系和IBGP邻居关系。
[r2]
bgp 200
router-id 2.2.2.2
peer 4.4.4.4 as-number 200
peer 4.4.4.4 connect-interface LoopBack0
peer 12.1.1.1 as-number 100
peer 4.4.4.4 next-hop-local
-
在R4上配置BGP进程,EBGP邻居关系和IBGP邻居关系。
注意:r3上不需要配置bgp协议。
[r4]
bgp 200
router-id 4.4.4.4
peer 2.2.2.2 as-number 200
peer 2.2.2.2 connect-interface LoopBack0
peer 45.1.1.5 as-number 300
peer 2.2.2.2 next-hop-local
-
在R5上配置BGP进程,EBGP邻居关系。
[R5]
bgp 300
router-id 5.5.5.5
peer 45.1.1.4 as-number 200
-
查检查R1 R2 R4 R5的邻居关系是否起来。
[r1]dis bgp peer
Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv
12.1.1.2 4 200 41 40 0 00:37:35 Established 2
[r2]dis bgp peer
Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv
4.4.4.4 4 200 40 42 0 00:37:55 Established 1
12.1.1.1 4 100 41 43 0 00:38:23 Established 1
[r4]dis bgp peer
Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv
2.2.2.2 4 200 42 41 0 00:38:24 Established 2
45.1.1.5 4 300 41 42 0 00:38:54 Established 1
[r5]dis bgp peer
Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv
45.1.1.4 4 200 42 42 0 00:39:26 Established 1
状态为Established 表示邻居关系建立成功。
-
路由宣告和引入
-
在BGP进程中,使用network命令宣告本地路由或使用import命令引入其他协议的路由,并观察邻居间的路由更新信息。
[r1]
bgp 100
network 1.1.1.1 255.255.255.255
[r5]
bgp 300
network 5.5.5.5 255.255.255.255
-
查看路由更新信息
[r1-bgp]dis bgp routing-table
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 1.1.1.1/32 0.0.0.0 0 0 i
*> 5.5.5.5/32 12.1.1.2 0 200 300i
[r5-bgp]dis bgp routing-table
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 1.1.1.1/32 45.1.1.4 0 200 100i
*> 5.5.5.5/32 0.0.0.0 0 0 i
[r2]dis bgp routing-table
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 1.1.1.1/32 12.1.1.1 0 0 100i
*>i 5.5.5.5/32 4.4.4.4 0 100 0 300i
[r4]dis bgp routing-table
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 1.1.1.1/32 2.2.2.2 0 100 0 100i
*> 5.5.5.5/32 45.1.1.5 0 0 300i
-
此时路由已经传过去了,但是r1和r5之间现在是ping不通的,因为在r3中出现了路由黑洞,它没有去往r1和r5的路由
[r3]dis ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 13 Routes : 13
Destination/Mask Proto Pre Cost Flags NextHop Interface
2.2.2.2/32 OSPF 10 1 D 23.1.1.2 GigabitEthernet0/0/1
3.3.3.3/32 Direct 0 0 D 127.0.0.1 LoopBack0
4.4.4.4/32 OSPF 10 1 D 34.1.1.4 GigabitEthernet0/0/2
23.1.1.0/24 Direct 0 0 D 23.1.1.3 GigabitEthernet0/0/1
23.1.1.3/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/1
23.1.1.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/1
34.1.1.0/24 Direct 0 0 D 34.1.1.3 GigabitEthernet0/0/2
34.1.1.3/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/2
34.1.1.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/2
127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0
127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0
127.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0
255.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0
这时我们要在r2和r4中的ospf进程下引入bgp路由,让r3学习到这两条路由。
[r2]ospf 1
[r2-ospf-1]import-route bgp
[r4]ospf 1
[r4-ospf-1]import-route bgp
此时再去看r3的路由表。
[r3]dis ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 15 Routes : 15
Destination/Mask Proto Pre Cost Flags NextHop Interface
1.1.1.1/32 O_ASE 150 1 D 23.1.1.2 GigabitEthernet0/0/1
2.2.2.2/32 OSPF 10 1 D 23.1.1.2 GigabitEthernet0/0/1
3.3.3.3/32 Direct 0 0 D 127.0.0.1 LoopBack0
4.4.4.4/32 OSPF 10 1 D 34.1.1.4 GigabitEthernet0/0/2
5.5.5.5/32 O_ASE 150 1 D 34.1.1.4 GigabitEthernet0/0/2
23.1.1.0/24 Direct 0 0 D 23.1.1.3 GigabitEthernet0/0/1
23.1.1.3/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/1
23.1.1.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/1
34.1.1.0/24 Direct 0 0 D 34.1.1.3 GigabitEthernet0/0/2
34.1.1.3/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/2
34.1.1.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/2
127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0
127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0
127.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0
255.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0
r3学习到了去往1.1.1.1和5.5.5.5的路由。
-
用户测试
<r1>ping -a 1.1.1.1 5.5.5.5
PING 5.5.5.5: 56 data bytes, press CTRL_C to break
Reply from 5.5.5.5: bytes=56 Sequence=1 ttl=252 time=40 ms
Reply from 5.5.5.5: bytes=56 Sequence=2 ttl=252 time=50 ms
Reply from 5.5.5.5: bytes=56 Sequence=3 ttl=252 time=30 ms
Reply from 5.5.5.5: bytes=56 Sequence=4 ttl=252 time=30 ms
Reply from 5.5.5.5: bytes=56 Sequence=5 ttl=252 time=40 ms
<r1>tracert -a 1.1.1.1 5.5.5.5
traceroute to 5.5.5.5(5.5.5.5), max hops: 30 ,packet length: 40,press CTRL_C to break
1 12.1.1.2 30 ms 10 ms 10 ms
2 23.1.1.3 20 ms 20 ms 20 ms
3 34.1.1.4 50 ms 30 ms 30 ms
4 45.1.1.5 30 ms 40 ms 40 ms
<r5>ping -a 5.5.5.5 1.1.1.1
PING 1.1.1.1: 56 data bytes, press CTRL_C to break
Reply from 1.1.1.1: bytes=56 Sequence=1 ttl=252 time=40 ms
Reply from 1.1.1.1: bytes=56 Sequence=2 ttl=252 time=40 ms
Reply from 1.1.1.1: bytes=56 Sequence=3 ttl=252 time=40 ms
Reply from 1.1.1.1: bytes=56 Sequence=4 ttl=252 time=50 ms
Reply from 1.1.1.1: bytes=56 Sequence=5 ttl=252 time=40 ms
<r5>tracert -a 5.5.5.5 1.1.1.1
traceroute to 1.1.1.1(1.1.1.1), max hops: 30 ,packet length: 40,press CTRL_C to break
1 45.1.1.4 20 ms 30 ms 20 ms
2 34.1.1.3 20 ms 20 ms 20 ms
3 23.1.1.2 40 ms 20 ms 30 ms
4 12.1.1.1 40 ms 30 ms 40 ms
实验完成。
-
总结
BGP协议是一种用于在不同自治系统(AS)之间交换网络层可达性信息的路由选择协议。BGP协议的特点有以下几点:
-
BGP是基于策略的路由选择协议,它不使用传统的内部网关协议(IGP)的指标,而使用基于路径、网络策略或规则集来决定路由。
-
BGP使用TCP作为其传输层协议,提高了协议的可靠性。BGP报文有五种类型:Open、Update、Notification、Keepalive和Route-refresh。
-
BGP有两种运行模式:内部BGP(iBGP)和外部BGP(eBGP)。iBGP用于在同一个AS内部交换路由信息,eBGP用于在不同AS之间交换路由信息。
-
BGP维护自己的主路由表,称为Loc-RIB(本地路由信息库),以及针对每个邻居的Adj-RIB-In(入站邻接路由信息库)和Adj-RIB-Out(出站邻接路由信息库)。
-
BGP有六种状态,分别是Idle、Connect、Active、Open-Sent、Open-Confirm和Established。只有当双方都处于Established状态时,才能交换路由信息。
-
BGP具有丰富的路由属性,可以对特定的路由进行描述、过滤和选择。常用的属性有Origin、AS_Path、Next-Hop等。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)