BGP学习笔记2

BGP建立对等体的对等体都会发起TCP三次握手,所以会建立两个TCP连接,但是实际BGP只会保留其中一个TCP连接,从Open报文中获取对端BGP Identifier之后BGP对等体会比较本端的Router ID和对端的Router ID大小,如果本端Router ID小于对端Router ID,则会关闭本地建立的TCP连接,使用由对端主动发起创建的TCP连接进行后续的BGP报文交互

实际实验中:先发起的TCP连接会中断,后发起的TCP连接有效

R3的Router ID: 10.1.34.3,R4的Router ID:10.1.34.4。先配置R4的bgp,R4先发TCP,后配置R3,抓包显示则保留R3的TCP,并不会保护Router ID大的R4的TCP

BGP报文

1. BGP header:每一类BGP报文都会携带的头部

        

  • Marker:占16字节,用于检查BGP对等体的同步信息是否完整,以及用于BGP验证的计算。不使用验证时所有比特均为1(十六进制则全“FF”)。
  • Length:占2个字节(无符号位),BGP消息总长度(包括报文头在内),以字节为单位。长度范围是19~4096。
  • Type:占1个字节(无符号位),BGP消息的类型。Type有5个可选值,表示BGP报文头后面所接的5类报文(其中,前四种消息是在RFC4271中定义的,而Type5的消息则是在RFC2918中定义的):
    TYPE值报文类型
    1OPEN
    2UPDATE
    3NOTIFICATION
    4KEEPALIVE
    5REFRESH(RFC2918)

2. BGP type:

           1.open:协商BGP对等体参数,建立对等体关系(类似于OSPF的hello报文)

                         需要协商哪些参数

           2. keepalive:用于维护BGP的邻居关系

                                 不携带任何信息参数,只用于邻居保活。默认60s周期发送,180s超时。

         [R3-bgp]timer keepalive <0-21845> 改变周期通告的时间

        [R3-bgp]timer keepalive 60 hold  <0, 3-65535>  配置保活时间

        keepalive和holdtime时间两端可以不一致(要满足本端的keeplive时间在对端的holdtime时间内)两端最终会协商为小值

KEEPALIVE报文只有BGP报文头,没有具体内容,故其报文长度应固定为19个字节。

          3. update:用于BGP路由信息的传递和撤销

              只有当设备发送路由或撤销路由时,才会发送

          4. notification:用于断开BGP连接

手动删除BGP邻居后,会通告notification报文,通知对端断开BGP邻接(TCP连接)

          5. route-refresh: 用于请求更新BGP路由

           <R3>refresh bgp all import  向对端发送route-fefresh报文请求路由信息

          <R4>refresh bgp all export   向对端主动发送update报文

BGP状态机

1.idle:初始化状态,等待初始事件的发生

2. connect:TCP连接状态

  •    1. 不存在TCP连接的设备,退回初始状态
  •    2. 存在TCP连接,但是TCP连接超时或TCP连接中断

      1)进入到active状态,继续尝试TCP连接,并启动连接定时器(32-37s)

          a.如果连接定时器超时,则退回connect

          b. 在连接定时器内,TCP正常连接

  •     3. 存在TCP连接,且正常连接,发送open报文,进入下一个opensent状态

3. opensent状态:等待对方发送的open报文,进行open报文参数协商

   1)如果没有收到对方的open报文,发送notification报文退回idle状态

   2)如果收到了open报文,但报文内的参数协商存在问题,发送notification报文退回idle状态

  3)如果收到了open报文,且报文内的参数协商不存在问题,会发送keeplive报文,进入openconfirm状态

4. openconfirm状态:等待对方发送的keeplive报文

    1)如果没有收到keeplive报文,则发送notification报文退回idle状态

    2)如果收到了keeplive报文,进入到established状态,BGP邻居关系正常建立

5. established:BGP的邻居最终状态

   如果存在错误,会发送notification报文退回idle状态

   可以通过update报文更新路由、撤销路由信息

   可以通过route-refresh报文,请求路由信息

***任何状态下,如果收到了notification报文,则退回到idle状态

BGP路由的生成

1.通过network方式通告的

   [R4-bgp]network 100.4.4.4 32  被通告的路由一定是设备已经存在的路由

2. 通过import方式引入的

   [R4-bgp]import-route static   协议存在的路由,可以被引入的方式引入,被引入的路由不需要在路由表中最优选

3.通过BGP邻居学习的

   可以接收IBGP、EBGP邻居发布的路由

4. 通过聚合的方式产生路由

    [R4-bgp]summary automatic 

[R4]dis bgp routing-table  查看BGP协议生成的路由表

1. 如果路由的下一跳为0.0.0.0,则表示该路由是自身设备发布的

2. 如果路由的下一跳为127.0.0.1,则表示该路由是设备聚合发布的

  BGP路由的传递

1. 从EBGP邻居接收的路由,可以传递给IBGP邻居

    传给IBGP邻居的路由一下跳不做改变,会导致BGP路由不可用(下一跳不可达)

    路由不存在*>(*:可用的路由,>:最优的路由)

   [R3-bgp]peer 1.1.1.1 next-hop-local  向IBGP邻居传递路由时,将路由的下一跳改变为自身的更新源地址

    R4发布一条路由100.4.4.4/32

R1学习到100.4.4.4/32的路由下一跳不变

2. 从IBGP邻居接收的路由,不可以传递给IBGP邻居

  为了防止AS内BGP路由环路,设计的规则(水平分割)

R2上学习不到100.4.4.4的路由

3. 从EBGP邻居接收的路由,可以传递给EBGP邻居

    路由的下一跳改变为邻居的更新源地址(邻居建立使用的地址)

R5可以学习到100.4.4.4的路由条目,下一跳改变为邻居的更新源地址

4. 从IBGP邻居接收的路由,可以传递给EBGP邻居

R1上发布一条100.1.1.1/32的路由,R5可以接收到

***********************************************************************************************************

*BGP设备自身发布的路由,可以传递给IBGP邻居、EBGP邻居                                                 *

*BGP只传递最优的路由                                                                                                               *

***********************************************************************************************************

项目

描述

BGP Local router ID is 192.168.2.2

BGP的Router ID是192.168.2.2,其格式与IPv4地址一样。

Status codes

路由的状态代码。显示在每条路由的最前面。
  • *:表示路由是有效路由,下一跳可达。
  • >:表示路由是BGP选出的最优路由。
  • d:表示路由是衰减路由。
  • h:表示路由是历史路由。
  • i:表示路由是AS内部路由,来自于IBGP对等体。
  • s:表示路由处于被抑制状态。配置路由聚合时,如果选择抑制参与聚合的具体路由,则这些具体路由会被打上s标记。
  • S:处于Stale状态的路由,正在被删除。BGP GR过程中可能出现此标记。

BGP振荡抑制使用惩罚值来衡量一条路由的稳定性,惩罚值越高则说明路由越不稳定。路由每发生一次振荡,即路由器收到该路由的Withdraw报文或者收到该路由的属性更新的Update报文时,BGP便会给此路由增加一定的惩罚值。

当惩罚值超过抑制阈值时,BGP会将该路由的>标志去掉,此路由被抑制,不再参与BGP选路,路由器也不再向其他BGP对等体发布该路由的Update报文。
  • 如果该路由被打上d标志,说明路由器最后收到的是Update报文。
  • 如果该路由被打上h标志,说明路由器最后收到的是Withdraw报文。
惩罚值增加到一定程度之后,便不会再增加,这个值称为惩罚上限值。同时,被抑制的路由每经过一段时间,惩罚值便会减少一半。
  • 如果是d标志的路由,当惩罚值降到再使用阈值时,此路由会被去掉d标记,变为可用并被优选后加入到IP路由表中,同时向其他BGP对等体发布该路由的Update报文。
  • 如果是h标志的路由,当惩罚值降为0时,此路由会从BGP路由表中删除。

Origin

路由的Origin属性代码。显示在每条路由的最后面。
  • IGP:BGP用network (BGP)命令注入到路由表的路由,其Origin属性为IGP。

  • EGP:通过EGP得到的路由信息,其Origin属性为EGP。

  • Incomplete:表示路由的来源无法确定。BGP通过import-route (BGP)命令引入的路由,其Origin属性为Incomplete。

Network

BGP路由表中的网络地址。

NextHop

报文发送的下一跳地址。

MED

BGP路由的MED度量值,作用类似于IGP路由的Cost(也称为Metric)。

LocPrf

本地优先级(Local_Pref)。

PrefVal

协议首选值(PrefVal)。

Path/Ogn

AS_Path属性及Origin属性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值