EBGP使用环回口建邻居用到ebgp-multihop和update source loopback

先讲点概念,方便理解
EBGP —— (External Border Gateway Protocol) 外部边界网关协议,用于在不同的自治系统间交换路由信息。
IBGP(Internal Border Gateway Protocol)——内部BGP协议(IBGP)
next-hop-self:
当配置IBGP对等体关系时,要配置next-hop-self。因为BGP一般不修改条目携带的路径属性,若从本端EBGP对等体先学到路由,然后该路由,由本端传到自己的IBGP对等体,若不使用next-hop-self会使本端的IBGP对等体无法与本端的EBGP对等体通信;
ebgp-multihop:
当配置的是EBGP对等体关系,且你的EBGP邻居和你不是直连时,要配置ebgp-multihop x(x是本地到对端设备的跳数),这个俗称EBGP的多跳。因为默认(至少cisco设备是)EBGP邻居的建立所用报文的TTL值为1,配置EBGP多跳实质上修改的是这个TTL值。(另外,IBGP邻居建立所用的报文默认的TTL值为255,所以它不需要配置多跳)

下面的实验会产生三个状态IDLE和ACTIVE,Established
EBGP初始IDLE
ebgp-multihop配置完成 ACTIVE
update source loopback 配置完成Established
BGP路由选择协议六个状态
① Idle(空闲):
Idle 是BGP连接的bai第一个du状态,在空闲zhi状态,BGP在等待一个启动事件,启动事件出现以dao后,BGP初始化资源,复位连接重试计时器(Connect-Retry),发起一条TCP连接,同时转入Connect(连接)状态。
② Connect(连接):
在Connect 状态,BGP发起第一个TCP连接,如果 连接重试计时器(Connect-Retry)超时,就重新发起TCP连接,并继续保持在Connect 状态,如果TCP 连接成功,就转入OpenSent 状态,如果TCP 连接失败,就转入Active 状态。
③ Active(活跃):
在Active状态,BGP总是在试图建立TCP 连接,如果连接重试计时器(Connect-Retry)超时,就退回到Connect 状态,如果TCP 连接成功,就转入OpenSent 状态,如果TCP 连接失败,就继续保持在Active状态,并继续发起TCP连接。
④ OpenSent(打开消息已发送):

⑤ OpenConfirm(打开消息确认)状态:

⑥ Established(连接已建立):
在Established 状态,BGP 邻居关系已经建立,这时,BGP将和它的邻居们交换Update 报文,同时复位保持计时器。

实验如图
EBGP使用环回口建邻居用到ebgp-multihop和update source loopback_第1张图片
我们首先用OSPF做互联互通。
R1
router ospf 99
router-id 10.10.10.10
log-adjacency-changes
network 1.1.1.0 0.0.0.255 area 0
network 10.10.10.0 0.0.0.255 area 0

R2
router ospf 99
router-id 20.20.20.20
log-adjacency-changes
network 1.1.1.0 0.0.0.255 area 0
network 2.2.2.0 0.0.0.255 area 0
network 20.20.20.0 0.0.0.255 area 0

然后我看配置BGP
R2:
router bgp 200
no synchronization
bgp router-id 20.20.20.20
bgp log-neighbor-changes
network 1.1.1.0 mask 255.255.255.0
network 2.2.2.0 mask 255.255.255.0
neighbor 10.10.10.10 remote-as 100
neighbor 30.30.30.30 remote-as 300
R1,R3参考R2省略了
这时BGP邻居是IDLE状态,为什么呢?
在ebgp建立邻居的时候默认ttl值为1,如果不修改ebgp-multihop会导致非直连的ebgp邻居无法建立邻居关系(这也是一种ebgp的防环措施)。
在你直接输入ebgp-multohop在什么参数都不加的情况下默认为255
当我们加入neighbor 10.10.10.10 ebgp-multihop 255
neighbor 30.30.30.30 ebgp-multihop 255

此时bgp邻居是ACTIVE状态,但是还是不能建立邻居,为什么呢
因为bgp邻居建立是基于tcp连接的,必须有本端地址和对端地址。指定更新源,实际就是指定发出open包的源地址,也就是tcp连接的本端地址。
R1直连R2,网段1.1.1.0/24。R1环回口10.10.10.10/32,R2环回口20.20.20.20/32。
如果直接R1 neighbor 20.20.20.20 remote-as 200
R2 neighbor 10.10.10.10 remote-as 100
因为没有指定更新源,就像发icmp包一样,bgp默认会用出口地址作为源,也就是R1的open包源为1.1.1.1,R2的open包源为1.1.1.2。
这样:对于R1,我要跟2.2.2.2建邻居,却收到了1.1.1.2的open包,我当然不理它;对于R2同理,邻居建不起来。
下面这点很多人都不知道,就是只要有一台路由器做了update-source loopback0,邻居就能构建成功。因为bgp邻居只建立一条tcp连接。为了严谨 R1上也做下update-source loopback0
即使双方都做了update-source loopback0,show tcp brief也可看到,只会构建一条tcp连接。
在这里插入图片描述
当上述两项配置完成基本的BGP连接就完成了。

这时我们思考一个问题如果R1的BGP中没有做 network 10.10.10.0 mask 255.255.255.0
R2的BGP路由表是空的。但是show ip route 路由表中是存在的显示是OSPF的路由
当BGP中宣告了后就能看到show ip route bgp
在这里插入图片描述
这是为什么呢?
因为路由协议|优先级 ———————————— DIRECT|0 STATIC|1 EIGRP Summary|5 eBGP|20 内部EIGRP|90 IGRP|100 OSPF|110 IS-IS|115 RIP|120 EGP|140 外部EIGRP|170 iBGP|200
EBGP 20优先于ospf 110因此路由自动把路由表中的OSPF改成了BGP
EBGP使用环回口建邻居用到ebgp-multihop和update source loopback_第2张图片
如图 我们再思考一个问题 R2上10.10.10.0 /24 有两条路由。这是因为,R3上也和R1建了邻居,R3也会发给R2去往R1的路由,但是R2上选择最优路是 下面自己从AS100学来的路由。

由于断网没保存,重写的不够详细,如有不懂可以留言,我解释下

你可能感兴趣的:(网络)