BGP邻居建立及特点

BGP邻居建立及特点

BGP特点:

  1. 有认证和GTSM机制,保障安全
  2. 有丰富的路由属性,更加灵活的选路
  3. 通过路由聚合,路由衰减防止震荡
  4. 增量式,触发式更新,路由条目太多了
  5. 基于TCP协议,179号端口,支持BFD等,提高可靠性
  6. 邻居多,对于有相同出口的场景,BGP会按组打包,提高打包,发包性能

BGP有两种角色

speaker发送BGP报文的发送者
peer相互发送BGP报文之间的关系叫对等体

BGP的邻居:

因为基于TCP协议,所以不需要直连,通过IGP(ospf等)协议,静态等来实现道路畅通,只要TCP可达,即路由也可达

BGP的邻居必须手动指定,不像ospf通过net一下就可以自动获取,
并且,一台BGP路由器只能在一个AS区域内,不能像ospf路由器那样,一台的多个接口属于不同的区域

所以,根据AS又可以分为:

IBGP:内部BGP,在相同AS内的BGP路由器
EBGP:外部BGP,在不同AS内的BGP路由器

在这里插入图片描述这里有三台路由器,需求RT1和RT2建立邻居,RT2和RT3建立邻居
先看RT1和RT2之间的需求
配置:

[rt1-bgp]dis th
[V200R003C00]
#
bgp 12        //bgp进程号
 router-id 1.1.1.1
  //bgp的router-id,和ospf的一样,选举方式也一样    
 peer 10.1.1.2 as-number 12  //指定的邻居ip以及邻居所属的AS
 #
 ipv4-family unicast
  undo synchronization
  peer 10.1.1.2 enable
[rt2-bgp]dis th
[V200R003C00]
#
bgp 12  //bgp进程号
 router-id 2.2.2.2  //bgp的router-id,和ospf的一样,选举方式也一样  
 peer 10.1.1.1 as-number 12 //指定的邻居ip以及邻居所属的AS
 #
 ipv4-family unicast
  undo synchronization
  peer 10.1.1.1 enable
#

路由器在配置好邻居后,会自动配置enable,反之也说明邻居是可以关闭的
验证:
在这里插入图片描述状态为establishe则代表邻居建立成功

peer指向的邻居地址
V表示版本号,这里是4
AS表示区域号
MsgRcvd表示接受的数据包的个数,是会随着时间不断更新的
MsgSent表示发送的数据包的个数,也是会不断更新的
out表示缓存区待发送的数据包
Up/Down表示建立时长
state表示状态
pre表示从对方那里收到多少条路由更新

通过抓包可以看出,邻居建立之前显示TCP的三次握手,只要有一方发起,并且握手成功,peer就建立完成了
在这里插入图片描述在这里插入图片描述
验证tcp的状态发现:bgp邻居建立成功的最后状态和tcp的状态一模一样(bgp是基于tcp建立邻居的),并且发起方是不定的(纯看运气),谁先发,谁的端口号就是随机的,发送到对方的179端口上面的listening是监听状态

RT1:
eg:我的179端口接收10.1.1.2从任意端口发来的请求
eg:10.1.1.2从50037端口向我的179发起请求,经过三次握手,最终邻居建立成功

在BGP的世界,一台路由器可能用多个端口连接多台设备,建立多个邻居,如果用物理端口,万一端口downl,邻居建立失败,里面这么多路由不就嗝了,所以,可以通过创建loopback口,来进行邻居的建立

在这里插入图片描述配置完成后,发现等了60S多了还没有建立邻居(BGP默认60S发一次keepalive,更新机制比较慢)一抓包发现,只有arp请求,其他啥都没有,为什么呢?
在这里插入图片描述在这里插入图片描述在这里插入图片描述

bgp状态也不对,ping1.1.1.1发现,原来是路由没有通,BGP虽然不用直连就可以建立邻居,但是如果底层的IGP路由都没有通,BGP也无法建立邻居
配置ospf后发现:
在这里插入图片描述邻居还是没有建立成功
首先分析一下,bgp邻居建立需要哪些条件:

  1. 邻居地址可达
  2. 本地配置的邻居AS=邻居声明的AS
  3. 源ip=邻居指定的IP地址

前面两条都满足了,但是源ip等于邻居指定的ip是什么意思呢?
通过抓包可以看出,发起方是10.1.1.2或者10.1.1.1(因为数据包发出时,目的地址是2.2.2.2,但是源地址默认是出接口地址),但是我们配置时的peer指定的是2.2.2.2和1.1.1.1,很明显BGP查看之后,不知道10.1.1.2或者10.1.1.1是谁,于是就RST重置,拒绝,再发起,也是重置拒绝
在这里插入图片描述所以这里需要加一条命令:
手动指定源地址是哪个接口的地址

peer 1.1.1.1(邻居的回环地址) connect-interface lo1

60秒一过,邻居建立成功

在这里插入图片描述在这里插入图片描述RT1和RT2的需求基本上就完成了,RT3和RT2之间也要建立邻居:

ip route-sta 3.3.3.3 32 10.2.2.3  //保证路由时畅通的
[rt2-bgp]dis th
[V200R003C00]
#
bgp 12
 peer 1.1.1.1 as-number 12 
 peer 1.1.1.1 connect-interface LoopBack1
 peer 3.3.3.3 as-number 3 
 peer 3.3.3.3 connect-interface LoopBack1
 #
ip route-static 2.2.2.2 32 10.2.2.2 //保证路由是畅通的
[rt3-bgp]dis th
[V200R003C00]
#
bgp 3
 peer 2.2.2.2 as-number 12 
 peer 2.2.2.2 connect-interface LoopBack1

等了好久邻居也没有成功,抓包发现:
在这里插入图片描述TCP建立成功后,双方又发送了notification报文,然后TCP就断开连接了???
点开报文发现,TTL的值变成了1,之前邻居建立成功的报文TTL的值都是255,通过点开notification,里面的FSM状态检测机制说有一个错误,然后标出了TTL值为1的问题:
在这里插入图片描述在这里插入图片描述
当RT2发送到10.2.2.3时,会查看路由表3.3.3.3在哪里,这里算是一跳TTL的值会减一,所以这里需要将TTL的值进行修改,至少修改成2

peer 2.2.2.2 ebgp-max-hop 255 (后面数字不敲默认时255)

这里和前面不一样,双方都需要修改TTL值才可以邻居建立成功,否则会在成功,失败反复跳转
在这里插入图片描述双方都配置后,邻居建立成功:
在这里插入图片描述

优化:

RT1和RT2之间可以采用loopback口配置,因为他们属于同一个AS区域内(IBGP),里面会跑动态路由来保证道路畅通;
然而RT2和RT3之间是属于不同的AS内(EBGP),他们之间不能通过跑ospf等建立邻居,否则就不需要BGP了,所以他们之间就需要跑静态,然后修改TTL,但是这样又有点麻烦,所以在不同的AS之间,可以直接通过物理口建立邻居,并且EBGP是默认直连,TTL默认为1,当然如果是非直连,可以通过修改TTL实现

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

番茄上的Tomato

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值