BGP基础知识(上)

BGP

  1. 边界网关路由协议 --无类别路径矢量路由协议- - -分布式计算
  2. 典型的EGP协议,用于AS和AS之间
  3. AS自治系统–as编号 0-65535 1-64511公有 64512-65535私有
  4. 特性:

    1.可靠性–不能周期更新,增量更新;-TCP
    直接用tcp来传递路由信息(端口号:179),保证了可靠性,但是丧失邻居自动发现。- - - 可以非直连建邻

    2.可控性–该协议的真正意义,在于AS间共享路由条目时更加方便快捷的干涉选路

    1. AS-BY-AS 以一个AS为单位进行计数
      IGP -hop-by-hop 一个路由器为一个单位
  5. BGP的邻居没有自动发现机制,只能手动 neighbor bgp-peer-ip
  6. 能传输多种网络层协议BGP基础知识(上)_第1张图片

    每种网络层协议都用一个address family去配置(除了ipv4 mulicast)

  7. BGP更新延时时间
    1. IBGP是5秒
      在这里插入图片描述

    2. EBGP是30秒
      在这里插入图片描述

    3. BGP邻居关系的维护是keeplive包,默认60秒,超时180秒
      在这里插入图片描述

总结:由于BGP管理的路由信息非常庞大,所以不能够使用周期更新,只能使用触发更新。并且BGP会认为一条路由时间越久越稳定,在这种情况下,BGP必然不会使用复杂的算法来处理BGP收到的路由信息,又由于每个AS情况不一致,管理范围也有限,他必然需要丰富的管理参数,不能只依赖metric。综上所述,BGP必然需要多种参数共同来决定路由的选择,并且不能依赖某种特点的全局算法,只能单独去计算某一条路由,不能全盘考虑,并且需要依赖所属AS管理员手动设置BGP更像是路径优先协议,通过给每一个路由设置大量的属性参数来进行灵活的管理或者选路,并且这些属性参数大量的都需要人为来操控

一、BGP特点

1)无类别路径矢量 -----距离矢量的升级版—AS-BY–AS
2)使用单播更新来发送所有信息;基于TCP 179端口工作
3)增量更新–仅触发无周期
4)具有丰富的属性来取代IGP中度量进行选路----多个参数控制协议
5)可以在进项和出项对流量实施强大的策略–可控性
6)默认不被用于负载均衡-----通过各种选路规则仅仅产生一条最佳路径
7)BGP支持认证和聚合(汇总)

二、BGP peer的四种包

open 用于标示自己,规定BGP运行的参数BGP version(2,3,4会协商最低的) , AS number,Hold time (默认180,不一 样以短的为准),BGP router-id (标识BGP路由器产生和ospf一样),optional parameters(可选支持,如多协议,认 证等) 在这里插入图片描述BGP基础知识(上)_第2张图片
keeplive 维护BGP peer关系,默认60,open协商成功就会发送 在这里插入图片描述
update 用于更新路由 BGP基础知识(上)_第3张图片
notification BGP出错报文 BGP基础知识(上)_第4张图片

三、BGP 状态机

  1. down状态
  2. Idle state
    配置了neighbor 或重置了邻居,BGP初始化所有资源打开connectRetry 计时器,初始化邻居的TCP连接,接听来自邻居 初始化消息并将它的状态转到connect状态
    为了防止差错的持续出现造成BGP邻居的摆动,connectRetry计时器会呈现级数级的增加第一次60s,下一次的为前一 次的2倍120s,再下次240s。。。
  3. Connect state
    BGP等到TCP连接完成以后再决定后续的动作
    1.如果tcp同步成功,BGP将connectRetry 清零,完成初始化并发送一个open消息给邻居并把状态置为open
    2.如果失败,BGP继续监听邻居发出的连接,重置connectRetry计时器并转移到active状态
    3.如果connectRetry时间超时,计时器重新开始,在试图与邻居建立TCP连接,bgp保持connect状态,出现其他事件转 入idle状态。
  4. Active state
    BGP试图与邻居建立一个TCP的连接
    1.如果TCP连接成功,BGP将connectRetry计时器清零,完成初始化,给邻居发送Open消息并将状态置为open,hold时 间置为4mins
    2.如果在active状态,connectRetry计时器超时回到connect状态并重置connectRetry计时器
    3.如果试图与一个未知IP建立TCP会话,同时connectRetry计时器重置,连接拒绝并保持active状态
    4.任何一个事件都会导致重回idle
  5. Open send state
    在此状态,已经发送了open消息,BGP等待邻居发送的open消息
    1.收到open消息,如果发现差错,将给邻居发送一个notification消息并置为idle
    2.如果收到open消息没错,将发送keeplive给邻居,并建立IBGP或者EBGP状态置为open confire state
    3.如果收到TCP断开消息则断开BGP连接重置connectRetry计时器,状态置为active
  6. Open confire state
    在此状态下BGP会等待一个keeplive消息或notification消息
    1.如果后搜到一个keeplive消息状态置为establish
    2.如果收到notification消息状态置为idle断开tcp连接
    3.如果hold计时器超时,检测到一个差错或者stop事件,bgp将给邻居发送一个notification并断开连接,状态置为idle
  7. Establish state
    此状态,BGP对等体间的连接已经完全建立,可以交换update, keeplive和notification消息,收到notification状态置为idle 中断连接。

四、BGP的工作过程

  1. 启动配置完成后,本地和对端先单播进行TCP的三次握手,建立TCP的会话;
  2. 会话建立后,使用open报文进行邻居关系的建立,正常收发一次open报文即可;建立关系后生成邻居表;
  3. 邻居关系建立后,用户进行路由宣告;宣告配置完成后,BGP使用update包进行路由条目的传递—目标网络号+属性
  4. 本地接收到的所有路由条目均存储在BGP表中;–装载本地发出和接收到的所有路由
  5. 默认仅从BGP表中挑选一条最优路径到路由表内;
  6. 收敛完成,仅keeplive包继续周期保活TCP会话即可;

注:所有BGP协议的数据包均基于TCP的会话传递;TCP会保证这些数据包的可靠性-确认、重传、排序、流控(窗口机制

结构突变:

  1. 新增网段–BGP路由上出现了新的宣告路由,使用更新包更新即可
  2. 断开网段–BGP路由上出现断开路由,若本地给邻居发送的是汇总路由;那么只要所有明细没有全部断开,将不进行BGP更新;若明细全部消失,使用更新包告知即可;对端删除该信息即可;
  3. 无法沟通—hold time到时时,断开邻居关系,删除所有通过该邻居学习到的信息;

五、BGP中的名词解释

  1. 对等体(peer)----邻居–BGP协议可以非直连建邻

  2. IBGP —同一个AS内设备间的BGP邻居关系 --管理距离为200

  3. EBGP --不同AS间设备建立的BGP邻居关系 --管理距离为20

六、BGP路由黑洞问题
  BGP可以非直连建邻,非直连传递路由信息;导致所有运行了BGP协议的路由器均学习到路由条目;但是数据层面流量在传输时所需要经过没有运行BGP协议的路由器时,将出现不可达现象
  BGP基础知识(上)_第5张图片
  路由黑洞问题总结描述:A为一个AS、B C D E为一个AS F为一个AS
AB之间为EBGP邻居关系,EF之间为EBGP邻居关系
BCDE这个AS内BE为边界,跑BGP,中间设备不跑BGP,BE之间非直连建邻
重点!!
A路由器有一个A网段的路由,控制层面经过B 传给 E 再传给F
但是当F访问A网段的时候,F首先到E、E查表发现走B到A网段,所以递归查找E如何到B,结果查到经过D C可以到达,但是D C没有到达A网段的路由,故路由丢去,造成路由黑洞

七、BGP参数属性
一共10种属性(cisco11种)分为4类

1. well-known mandatory- - -公认必尊
2. well-known discretionary- - -公认可尊
3. optional transitive- - -可选传递
4. optional nontransitive- - -可选非传递

1. 公认必尊
所有BGP路由器必须识别遵守的原则有origin,as_path ,next_hop

2. 公认可尊
所有路由器都能识别但是不一定要遵守,local_pref,atomic_aggregate

3. 可选传递
不是所有BGP路由器都能识别,但是所有BGP都能传递,aggregator和community

4. 可选非传递
不是所有路由器都被识别,不能识别的BGP路由器就丢弃它,MED,originator_id和cluster_id,weight

11 条属性:weight ,origin ,as_path ,next_hop ,local_pref ,atomic_aggregate ,
Aggregator ,community ,MED,originator_id ,cluster_list

Weihgt
cisco私有属性,对于离开AS的路由在路由器选择那一条最优,本台路由器产生为32768,学习的为0.不能传递,适用于一台路由去 往别的AS有多个出口。
Origin
起源,0表示宣告(i),1表示EGP学到(E),3表示其他手段得到(重发布?),越低越好
AS path
一条路由在传输过程中经历了那些AS(不算自己),可用来放环。越短越好
Nei X.X.X.X allowas-in 允许和具有自己相同的AS的路由进入本AS
Nei x.x.x.x as-override 把具有和其他AS相同AS号的路由放入这个AS
Next_hop
到达路由的下一跳路由器IP地址
通告路由器和接受路由器不在一个AS,next_hop为通告路由器的更新地址
通告路由器和接受路由器在一个AS内,next_hop为通告邻居的更新地址
通告路由器和接受路由器在一个AS内且为邻居关系更新地址为不同AS,则为外部更新地址

Local_pref
不能传输到其他AS,值越高越优,用于本AS选择离开AS的出口路由器默认为100
MED
用于选择流入AS的入口路由器,可以在俩个AS之间传递,越低越好默认0

Atomic_aggregate
用来警告下游路由器路由聚合后产生的路由路径丢失。
BGP支持向BGP邻居传递重叠路由可以选择多种方式
1.明细和粗略的都公布
2.只公布明细
3.只公布没有重叠的
4.聚合后公布聚合后的路由
5.明细和粗略都不公布

Aggregator
用来通告汇总路由的汇聚路由器 BGP_ID(cisco)

Community
1.internet 默认属性,可以给任何bgp发送
2.no_export 只能在一个AS内传递,可以在联盟内传递。
3.no_advertise 不在IBGP邻居间传递
4.local-as 不向任何EBGP邻居发送包括联盟的EBGP邻居

标准和扩展community
标准是普通路由可以设置的团体公有和私有
扩展是mpls中的vrf路由传递定义的

Originator_id
路由反射使用,是路由发起者产生的一个32比特的值,该值是本地路由发起者的RID,如果路由发起者从属性上看到 自己的RID,说明有环路就忽略

Cluster_list
路由反射器使用,是路由进过反射器簇ID的一个序号。如果反射器在属性里看到自己的簇ID就说明有环路,忽略

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