边界网关协议(Border Gateway Protocol,BGP)是一种用来在路由选择域之间交换网络层可达性信息(Network Layer Reachability Information,NLRI)的路由选择协议。由于不同的管理机构分别控制着他们各自的路由选择域,因此,路由选择域经常被称为自治系统AS(Autonomous System)
BGP是为了在AS之间更高效率的传递路由和维护大量的路由而产生的一个外部网关协议。
BGP 是一种用于自治系统AS(Autonomous System)之间的动态路由协议。
此次我们通过以下这个简易3个AS的网络来学习BGP基本配置。
接口配置
[R1]int lo 0
[R1-LoopBack0]ip ad 1.1.1.1 24
[R1-LoopBack0]int g 0/0/0
[R1-GigabitEthernet0/0/0]ip ad 12.0.0.1 24
[R1-GigabitEthernet0/0/0]q
[R1]ip route-static 0.0.0.0 0 12.0.0.2
[R2]int lo 0
[R2-LoopBack0]ip ad 2.2.2.2 24
[R2-LoopBack0]int g 0/0/0
[R2-GigabitEthernet0/0/0]ip ad 12.0.0.2 24
[R2-GigabitEthernet0/0/0]int g 0/0/1
[R2-GigabitEthernet0/0/1]ip ad 23.0.0.1 24
[R2-GigabitEthernet0/0/1]q
[R2]ospf 2 router-id 2.2.2.2
[R2-ospf-2]a 2
[R2-ospf-2-area-0.0.0.2]network 2.2.2.2 0.0.0.0
[R2-ospf-2-area-0.0.0.2]network 23.0.0.0 0.0.0.255
[R3]int lo 0
[R3-LoopBack0]ip ad 3.3.3.3 2
[R3-LoopBack0]int g 0/0/0
[R3-GigabitEthernet0/0/0]ip ad 23.0.0.2 24
[R3-GigabitEthernet0/0/0]int g 0/0/1
[R3-GigabitEthernet0/0/1]ip ad 34.0.0.1 24
[R3-GigabitEthernet0/0/1]q
[R3]ospf 2 router-id 3.3.3.3
[R3-ospf-2]a 2
[R3-ospf-2-area-0.0.0.2]network 3.3.3.3 0.0.0.0
[R3-ospf-2-area-0.0.0.2]network 23.0.0.0 0.0.0.255
[R3-ospf-2-area-0.0.0.2]network 34.0.0.0 0.0.0.255
[R4]int lo 0
[R4-LoopBack0]ip ad 4.4.4.4 24
[R4-LoopBack0]int g 0/0/0
[R4-GigabitEthernet0/0/0]ip ad 34.0.0.2 24
[R4-GigabitEthernet0/0/0]int g 0/0/1
[R4-GigabitEthernet0/0/1]ip ad 45.0.0.1 24
[R4-GigabitEthernet0/0/1]q
[R4]ospf 2 router-id 4.4.4.4
[R4-ospf-2]a 2
[R4-ospf-2-area-0.0.0.2]net 4.4.4.4 0.0.0.0
[R4-ospf-2-area-0.0.0.2]net 34.0.0.0 0.0.0.255
[R5]int lo 0
[R5-LoopBack0]ip ad 5.5.5.5 24
[R5-LoopBack0]int g 0/0/0
[R5-GigabitEthernet0/0/0]ip ad 45.0.0.2 24
建邻
直连链路
当BGP运行于不同AS之间时,称为EBGP(Externel BGP,外部边界网关协议)
- 执行命令
system-view
,进入系统视图。 - 执行命令
bgp as-number
,进入BGP视图。 - 执行命令
peer { ipv4-address | peerGroupName } as-number as-number
,指定对等体的IP地址及其所属的AS编号。
查看配置结果
display bgp peer
查看对等体路由
- Peer :对等体的IP地址
- V :BGP版本
- AS:对等体所处的AS号
- MsgRcvd:从该对等体处接收的BGP数据包
- MsgSent:发送给该对等体的BGP数据包
- OutQ:队列,指示剩余未发送BGP数据包的数量
- Up/Down:建立/断开对等体的时间 State --和该对等体所处的状态
- PrefRcv:从该对等体出接收到的BGP路由数量
- PrefRcv:从该对等体出接收到的BGP路由数量
非直连链路
当BGP运行于同一AS内部时,被称为IBGP(Internel BGP,内部边界网关协议)
- 执行命令
system-view
,进入系统视图。 - 执行命令
bgp as-number
,进入BGP视图。 - 执行命令
peer { ipv4-address | peerGroupName } as-number as-number
,指定对等体的IP地址及其所属的AS编号。
指定对等体所属的AS编号应该和本地AS号相同。
指定对等体的IP地址可以是以下三种:- 直连对等体的接口IP地址。
- 直连对等体的子接口IP地址。
- 路由可达的对等体的Loopback接口地址。
- 执行命令
peer { ipv4-address | peerGroupName } connect-interface interface-type interface-number [ ipv4-source-address ]
,改变BGP对等体建立的更新源地址(注意,必须保证建立对等体的双方地址匹配)
其它类型EBGP连接
- 执行命令
peer { ipv6-address | group-name } ebgp-max-hop [ hop-count ]
,配置EBGP连接的最大跳数。 - 通常情况下,EBGP对等体之间必须具有直连的物理链路,如果不满足这一要求,则必须使用peer ebgp-max-hop命令允许它们之间经过多跳建立TCP连接。
通过以上命令,就能够实现R4连接到R5的环回接口并成功建邻,当然,这两个机器之间的基本链路需要先正常连接。
宣告网络
network命令用来配置BGP将IP路由表中的路由以静态方式加入到BGP路由表中,并发布给对等体。
BGP协议自身不能发现路由,所以需要引入其他协议的路由(如IGP或者静态路由等)注入到BGP路由表中,从而将这些路由在AS之内和AS之间传播。在引入路由时,可以针对不同的路由协议来对路由信息进行过滤。当需要将IP路由表中的路由以静态方式加入到BGP路由表中,并发布给对等体时,使用network命令。
使用network命令注入到BGP路由表的路由,其Origin属性为IGP。通过network命令将指定前缀和掩码的一条路由注入到BGP路由表中,该路由是从各路由协议的路由中选出的最优路由。
network { ipv4-address [ mask | mask-length ] | ipv6-address prefix-length } [ route-policy route-policy-name ]
此时我们先在R1路由器的宣告1.1.1.0
的网络,并查看BGP的路由表。
- NextHop 路径属性,谁发送的下一跳就是谁,注:对于自身发布的路由信息因为下一跳是自身,所以该字段用0.0.0.0来表示
- MED 路由度量值
- LocPrf 本地优先级
- PrefVal 协议首选值
- Path/Ogn 显示AS路径号及Origin属性
- 状态码
* 代表路由可用,路由可用的条件是该网段信息下一跳属性在本身路
由表中存在,只有可用的路由信息才会参与路由优选
> 代表该路由是最优的路由(比较路径属性的结果),只有最优的路
由信息才会加载到自身的路由表,并且传递因为AS-BY-AS特性的存在,导致IBGP对等体传递路由信息时NextHop–默认不做修改
通过isplay bgp routing-table
查看BGP的路由信息可以知道这次宣告成功。
next-hop-local
peer next-hop-local命令用来设置向IBGP对等体(组)通告路由时,把下一跳属性设为自身的IP地址。
先查看一下R2和R3的BGP路由表。
查看R2和R3路由器发现,R2通过EBGP学习的路由能够正常PING通,而R3通过IBGP学习到的路由,下一跳是12.0.0.1
无法正常连接到该IP,这是EBGP邻居发来的路由的下一跳都是其EBGP邻居的Peer地址,本端对等体所属AS域内的IBGP邻居收到这样的路由后,由于下一跳不可达导致路由无法活跃。
因此,需要在R2上对IBGP邻居配置peer next-hop-local
命令,使得发给IBGP邻居的路由的下一跳是其自身的地址,IBGP邻居收到这样的路由后发现下一跳可达,路由即为活跃路由*。
路由引入
在同一个网络拓扑结构中,如果存在多种不同的路由协议,由于不同路由协议的机理各有不同,对路由的处理也不相同,这就在网络中造成了路由信息的隔离,在路由协议的边界设备上,将某种路由协议的路由信息引入另一种路由协议中,这个操作被称为路由引入(Route Importation)或者路由重分发(Route Redistribution)。
import-route命令用来配置BGP引入其他路由协议和路由类型的路由信息。
Import方式是按协议类型,将RIP路由、OSPF路由、ISIS路由等协议的路由引入到BGP路由表中。为了保证引入的IGP路由的有效性,Import方式还可以引入静态路由和直连路由。
最后,我们再把OSPF中的路由引入到BGP的路由表中,完成全路通讯。
到此,通过基本的几个命令我们已经完成网络的搭建,让AS之间能够正常通讯
组建的BGP网络是实现了网络中不同AS之间的通信。
总得来说,配置BGP的基本功能是组建BGP网络最基本的配置过程,主要包括三部分:
- 创建BGP进程:只有先创建BGP进程,才能开始配置BGP的所有特性。
- 建立BGP对等体关系:只有成功建立了BGP对等体关系,设备之间才能交换BGP消息。
- 引入路由:BGP协议本身不发现路由,只有引入其他协议的路由才能产生BGP路由。