BGP的特殊性

前言

我们在学习数通的时候经常会有这种情况出现,根据某种协议开发出来的应用也跟此协议是一样的名字,比如BGP,在网络设备上我们如果想使用BGP,那就直接敲BGP的命令就可以了,协议和应用共同一个名字,很有意思,相当于“方便面牌方便面”!但有一些协议和应用是分开的,比如说遵循DNS协议开发出来的BIND应用,遵循HTTP协议开发的apache和nginx。

  • BGP的应用场景非常灵活,上到骨干网,下到数据中心都有它的身影,主要原因是因为它有非常丰富的选路机制,我们可以根据自己的需求进行灵活的选路,也正因如此,BGP路由协议比OSPF、ISIS等协议的复杂程序更高。
  • BGP是一个“高级”的路由协议,这里面的高级不是说高端,而是说BGP做为应用是工作在应用层的,会向内核注册套接字,即IP+端口的形式,这与传统的路由协议OSPF、ISIS是截然不同的,比如OSPF并没有具体侦听的端口,仅仅是侦听了两个组播地址而已,并没有涉及到端口。但也正因如此,BGP的故障处理与其它路由协议的故障处理思路也稍有不同!BGP的高级之后还体现在一般我们在做BGP之前会提前把IGP协议做好,BGP在IGP协议的基础上进行工作。
  • BGP是一个应用非常广泛的路由协议,我们会在很多地方都能看到BGP,比如在VXLAN、MPLS,SRV6、主要是因为BGP的运载能力特别强,通过不断的的扩展地址族去承载不同的信息,这与IPV6又有些类似,可以说BGP有一个非常好的框架,可以不断的的进行扩展更新,无需推翻重来。
  • BGP当中有一个点容易被人忽略,由于BGP是一个应用层应用,侦听有套接字,所以它起码拥有两个状态机,其中一个TCP的有限状态机,另外一个是BGP本身的状态机,这与传统的IBGP有着很大的不同。

BGP常识

灵活

BGP的功能非常丰富,操作也非常的灵活,这一点与传统的IGP有着很大的不同点,灵活是其优点,同时也是其缺点,过于灵活,导致很多工程师无法驾驭BGP,甚至连一些基本的常识都不是特别清楚。

假设当前A节点与B节点相连,A节点的IP地址是1.0.0.1,而B节点的IP地址是2.0.0.2

A节点启动BGP,BGP应用根据管理员的配置向内核申请套按字,并且限制对方连接的源地址,注意这是两个动作,以华为为例:

# A节点
bgp 65000
  # 此命令的含义是我连接对方时使用环回口的IP
  # 并且向内核申请0.0.0.0:179的套接字
  peer 2.0.0.2 connect LookBack 0
  # 邻居是2.0.0.2
	# 并且我只允许邻居通过此IP来连接我!
	peer 2.0.0.2 as 65000

# 通过查看tcp当前被侦听套接字也能推断出来!如下所示:
[Huawei]dis tcp status
TCPCB    Tid/Soid Local Add:port        Foreign Add:port      VPNID  State
b4b2d79c 164/1    0.0.0.0:179           2.0.0.2:0             0      Listening

在这一步就有可能会出现一些连接故障了,比如说防火墙把TCP的179号端口给阻拦了!或理对方没有通过我指定的IP地址来连接我!这都会导致连接失败。并且这一步还有一个隐含的要求,默认是IPV4的单播地址族,如果对方不是,那也无法连接成功!

BGP故障处理方法论

我们处理路由连接故障是有一定的方法论的,比如根据OSI模型从底向上进行排错,我们也可以根据自定义的方法论去排除故障,比如根据以下模型:

  • BGP故障处理方法论
    1. 明确问题
      1. 问题到底是什么?可以写到纸上刺激思考!
      2. 此问题需要自己的处理吗?不要干一些吃力不讨好的事情!
    2. 分析问题原因
      1. 最低层:最基础的,看看两端是否能通信?端口是否能通?
      2. 配置层:其次查看双方的配置,看是否对称,最基础的配置是否有问题;
      3. 物理层:看接口的计数器,判断是不是频繁闪断,这会导致BGP频繁重启;
      4. 链路层:PING大包,判断对方的MTU是否有问题,导致数据丢包;
      5. 网络层:抓包看,看中间是不是过了NAT设备
      6. 应用层:应用本身的条目限制
        1. rouer id 冲突
        2. AS号冲突
        3. 应用本身的限制,比如对方配置了限制数量数量,导致本端的路由条目传不过去;
        4. 用Loopback口建立EBGP邻居未配置peer ebgp-max-hop
        5. 用Loopback口建立邻居时没有配置peer connect-interface
        6. 对端发送的路由数量是否超过peer route-limit命令设定的值。
        7. 对端配置了peer ignore
        8. 两端的地址族不匹配

附件

BGP与VXLAN、SRV6

EVPN与VXLAN(一) - 张贺贺呀 - 博客园

SRV6基础(二) - 张贺贺呀 - 博客园

官为官网BGP故障处理案例

BGP故障案例 - ME60 维护宝典 - 华为

posted @ 2020-05-14 16:21  张贺贺呀  阅读(609)  评论(1)    收藏  举报