一、适用场景
1、企业需要连接总部与分部,但总部与分部运行着不同的路由协议,总部到分部有自建的专线,端到端的设备支持BGP路由协议。
2、网络运营商,如电信、联通、移动等,各区域的ip路由表庞大,若要完成区域之间的连接,既不暴露某区域的网络拓扑,又能减少路由表的条目,只传送最优的路由。
3、中大型企业的网络,区域的网络结构复杂,路由表条目多,使用BGP路由可给网络减负,留出更的CPU计算资源与内存、缓存等资源,提高处理的效率与与速率。
二、专业术语
1、BGP路由协议的产生(Border Gateway Protocol):OSPF、ISIS路由协议在网络中已经广泛使用,但是随着网络规模的扩大,路由条目也随增加,IGP协议已经无法管理大规模网络了。因此出现了AS的概念。
可以把大型网络中的不同的设备划分到不同的组(自治系统AS)中,或者某地理范围中的网络设备都划分在一个组中,那么一个组中的这些设备运行相同的路由协议。比如可以将企业总部网络划分在一个AS中,企业的分部网络划分在一个AS中。不同的AS可以运行不同的路由协议。
2、iBGP与EBGP
(1)IBGP:内部网关协议,自治系统AS之内运行IGP协议
(2)EBGP:外部网关协议,自治系统AS之间运行EGP协议
3、自治系统的编号: 标准编号为16位二进制,2……16范围0-65535,公有编号范围1-64511。私有编号范围64512-65535 扩展编号:32位二进制。
4、BGP特征:BGP协议本身不产生新路由,不计算路由,不会暴露AS内部的网络拓扑。只转发本地路由表中来自其他协议生成的路由条目,即路由的搬运工。BGP协议本质上是一个重发布协议,专为AS之间共享路由定制。
5、BGP的5种报文
6、BGP是基于TCP的路由协议,只要能够建立TCP就能够建立BGP。
7、BGP防环机制:
(1)EBGP利用AS_PATH属性防环:路由条目在传递的过程中,将记录所经过的AS号,BGP协议拒绝接受携带本地AS号的BGP路由,丢弃这条路由。
(2)EBGP 的防环机制:Next-hop下一跳属性,EBGP之间通告路由的时候会修改next-hop属性,把自己的的AS number前缀到as-path属性上,接收方从EBGP收到路由更新后首先检查as-path属性,如果发现自己的AS number就认为有环路风险,直接丢弃该路由;
(3)IBGP 的防环机制:水平分割,IBGP不中转路由,从一个IBGP邻居处学习到的路由条目不得传递给下一个BGP邻居。
(4)IBGP 的防环机制:Origin属性,解决反射器产生的环路,不接收与自己起源ID相同的路由。
(5)IBGP中的反射器的防环机制:ORIGINATOR_ID属性用于记录到本地AS内部路由发起者的路由器ID,BGP发布者将丢弃ORIGINATOR_ID中与自己路由器ID相同的路由信息。
(6)cluster-list属性用于防止集群之间环路。RR反射路由的时候会将自己的cluster-id(默认为router-id)写进cluster-list,当接收这条路由发现cluster-list里面有自己的cluster-id,就会拒收路由。
(7)IBGP中的联盟的防环:通过AS Path属性防环,联盟相关的属性在传出联盟时会自动被删除。
CLUSTER_LIST属性和ORIGINATOR_ID属性不是公认必遵属性,只用于BGP反射里面防环。
BGP在比较Next Hop属性时,会优选去往Next Hop属性中IP地址的IGP开销最小的路由。
8、BGP建立邻居的过程及6种状态机:
BGP建立邻居的过程及6种状态机
三、拓扑图
四、配置过程
(一)采用对端物理接口的ip地址建立BGP邻居
【AR1】:
sysname AR1
interface GigabitEthernet0/0/0
ip address 10.1.12.1 255.255.255.0
interface GigabitEthernet0/0/1
ip address 10.1.21.1 255.255.255.0
interface LoopBack0
ip address 1.1.1.1 255.255.255.255
router id 1.1.1.1
bgp 100 #注:写错AS号时,undo BGP会清除所有BGP配置
peer 10.1.12.2 as-number 100 #使用对端的物理端口建立BGP邻居
peer 10.1.21.2 as-number 100 #使用对端的物理端口建立BGP邻居
#使能BGP的iPv4地址族并进入BGP的P4地址族视图,缺省进入BGP-IPv4单播地址族视图, 将IP路由表中的路由以静态方式加入到BGP路由表中,并发布给对等体(可以是各种路由,最终引入的是哪种协议的路由要视路由的优先级而定)。
ipv4-family unicast
network 1.1.1.1 255.255.255.255
network 10.1.12.0 255.255.255.0
network 10.1.21.0 255.255.255.0
peer 2.2.2.2 enable
ip route-static 2.2.2.2 255.255.255.255 10.1.12.2
ip route-static 2.2.2.2 255.255.255.255 10.1.21.2
ip route-static 3.3.3.3 255.255.255.255 10.1.12.2
ip route-static 3.3.3.3 255.255.255.255 10.1.21.2
【AR2】:
sysname AR2
interface GigabitEthernet0/0/0
ip address 10.1.12.2 255.255.255.0
interface GigabitEthernet0/0/1
ip address 10.1.32.1 255.255.255.0
interface GigabitEthernet0/0/2
ip address 10.1.21.2 255.255.255.0
interface GigabitEthernet2/0/0
ip address 10.1.23.1 255.255.255.0
interface LoopBack0
ip address 2.2.2.2 255.255.255.255
bgp 100
peer 10.1.12.1 as-number 100
peer 10.1.21.1 as-number 100
peer 10.1.23.3 as-number 200
peer 10.1.23.3 ebgp-max-hop 255
peer 10.1.32.3 as-number 200
peer 10.1.32.3 ebgp-max-hop 255
ipv4-family unicast
network 2.2.2.2 255.255.255.255
network 10.1.12.0 255.255.255.0
network 10.1.21.0 255.255.255.0
network 10.1.23.0 255.255.255.0
network 10.1.32.0 255.255.255.0
import-route static
peer 1.1.1.1 enable
peer 3.3.3.3 enable
peer 3.3.3.3 next-hop-local
ip route-static 1.1.1.1 255.255.255.255 10.1.12.1
ip route-static 1.1.1.1 255.255.255.255 10.1.21.1
ip route-static 3.3.3.3 255.255.255.255 10.1.23.2
ip route-static 3.3.3.3 255.255.255.255 10.1.32.2
【AR3】:
sysname AR3
router id 3.3.3.3
interface GigabitEthernet0/0/0
ip address 10.1.32.2 255.255.255.0
interface GigabitEthernet0/0/1
ip address 10.1.23.2 255.255.255.0
interface LoopBack0
ip address 3.3.3.3 255.255.255.255
bgp 200
peer 10.1.23.2 as-number 100
peer 10.1.23.2 ebgp-max-hop 255
peer 10.1.32.2 as-number 100
peer 10.1.32.2 ebgp-max-hop 255
ipv4-family unicast
ip route-static 1.1.1.1 255.255.255.255 10.1.23.1
ip route-static 1.1.1.1 255.255.255.255 10.1.32.1
ip route-static 2.2.2.2 255.255.255.255 10.1.23.1
ip route-static 2.2.2.2 255.255.255.255 10.1.32.1
1、此时在AR1上查看BGP的邻居状态,断开AR1的G0/0/1接口后,查看邻居,如下图:
由上图可见
(1)到AR2的10.1.21.2这条到BGP邻居的状态为Idle(空闲状态),在该状态下,BGP路由器尚未建立与邻居路由器的TCP连接。
(2)正常连接到AR2的10.1.12.2这条到BGP邻居的状态为Established(BGP邻居连接已建立) Established状态下:BGP可以和对等体交换Update、Keepalive、Route-refresh报文和 Notification报文。在建立连接状态下,BGP邻居之间的连接已经建立并且稳定,可以交换路由信息。
2、在AR1的G0/0/1接口上执行undo shutdown后,再通过抓包,如下图:
(1)当AR1的G0/0/1状态恢复正常后,在AR2的G0/0/2端口上抓包,查看BGP协议报文,可看出是OPEN message报文,建立BGP邻居的报文
(2)在AR1上通过display bgp peer命令,可以看到2条链路都建立了BGP邻居,状态是Established,说明AR1与AR2已经建立BGP邻居。
3、在AR2上查看邻居状态,AR2与AR1之间的iBGP邻居已经建立完成,AR2与AR3之间的EBGP邻居已经建立完成,如下图:
4、查看邻居状态:
(1)在AR3上查看BGP的邻居状态,与AR2已经建立BGP邻居,如下图:
(2)在AR2上查看IBGP邻居状态:
(3)在AR2上查看EBGP邻居状态:
5、查看BGP路由表是空的,此时我们还没有通过network与import命令引入路由到BGP对等体中
6、查看ip路由表
至此,通过物理接口的ip地址建立iBGP与EBGP已经完成。
(二)采用环回口地址建立BGP邻居
1、采用环回口地址建立BGP邻居的好处:
(1)提高稳定性:环回接口是一种逻辑接口,不受物理链路的影响,只要路由器本身不故障,环回接口就会一直处于UP状态。因此,使用环回接口建立BGP邻居关系可以提供更高的稳定性,减少因物理链路故障导致的BGP会话中断12。
(2)增加冗余性:当存在多条路径通往对等体时,使用环回接口建立BGP邻居关系可以增加冗余性。如果某条路径出现故障,其他路径仍然可以通过环回接口保持BGP会话的连续性,确保网络的可用性12。
(3)快速收敛:在内部网关协议(IGP)路由协议或静态路由的支持下,使用环回接口可以提供快速的收敛。当某条路径出现故障时,IGP或静态路由可以迅速重新计算路由,确保流量能够快速切换到其他路径1。
(4)适用于IBGP:在内部BGP(IBGP)环境中,通常使用环回接口建立邻居关系。这是因为IBGP环境底层存在IGP,环回接口也会宣告到IGP中。即使其中一条物理链路故障,环回接口仍然可以保持UP状态,不会影响IBGP邻居关系。
(5)简化配置:在某些情况下,使用环回接口可以简化BGP配置。例如,在建立EBGP邻居关系时,如果直连设备使用环回接口建立连接,可以减少配置的复杂性
2、使用环回口地址建立BGP邻居配置:
【AR1】:
bgp 100
peer 2.2.2.2 as-number 100
peer 2.2.2.2 connect-interface LoopBack0
#指定更新源(open报文以物理源口来发送,与环回口不同,所以要做此指定)
ip route-static 2.2.2.2 255.255.255.255 10.1.12.2
ip route-static 2.2.2.2 255.255.255.255 10.1.21.2
ip route-static 3.3.3.3 255.255.255.255 10.1.12.2
ip route-static 3.3.3.3 255.255.255.255 10.1.21.2
【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 200
peer 3.3.3.3 ebgp-max-hop 255
peer 3.3.3.3 connect-interface LoopBack0
ip route-static 1.1.1.1 255.255.255.255 10.1.12.1
ip route-static 1.1.1.1 255.255.255.255 10.1.21.1
ip route-static 3.3.3.3 255.255.255.255 10.1.23.2
ip route-static 3.3.3.3 255.255.255.255 10.1.32.2
(4)display bgp peer命令查看BGP邻居的状态,可以看出AR2与AR1、AR2与AR3都已经通过loopback环回接口建立了邻居关系,如下图:
(5)shutdown g0/0/0后,再看bgp邻居依然存在(因为loopback口的TCP连接依然存在,所以用loopback口做bgp邻居有此优势)
注:使用EBGP做邻居时,需要指定更新源,并将TTL值指定为大于等于2,默认255
【AR3】
bgp 200
peer 2.2.2.2 as-number 100
peer 2.2.2.2 ebgp-max-hop 255
peer 2.2.2.2 connect-interface LoopBack0
ip route-static 1.1.1.1 255.255.255.255 10.1.23.1
ip route-static 1.1.1.1 255.255.255.255 10.1.32.1
ip route-static 2.2.2.2 255.255.255.255 10.1.23.1
ip route-static 2.2.2.2 255.255.255.255 10.1.32.1
五、验证结果
(一)BGP的报文类型:
1、配置BGP路由协议,建立BGP邻居
(1)配置BGP自治系统100,指定邻居的的ip及AR1所在的自治系统编号100
(2)在AR1的接口上抓包,抓包为OPEN报文,如下图:
2、BGP的update报文,当路由条目有变化时,会触发更新,报文内容如下:
(1)包含公认必遵属性ORIGIN属性、AS_PATH属性
(2)Update报文:包含公认必遵属性NEXT_HOP等,如下图
3、Keepalive报文:每隔60秒发送一次,通过keepaliver报文确认邻居在线与否。
4、Notification报文:当出现BGP故障时,通过Notification报文通知
(1)执行undo bgp 自治系统编号 命令,取消bgp配置时,y确认
(2)此时在AR1接口上抓包就能看到BGP路由协议的Notification报文
(二)在AR1上查看iBGP邻居状态正常,如下图:
(三)在AR3上查看EBGP邻居状态正常,如下图:
至此,iBGP与EBGP的初识实验结束,后续再写黑洞路由、AS_PATH属性、Local_prefrence优先级属性、MED属性、BGP路由反射器、手动路由聚合、自动路由聚合、路由控制之路由策略、策略路由traffic-policy、MPLS-VPN搭建之MP-BGP等。