BGP路由技术理论

Posted on 2020-06-15 13:10  留不住的时间  阅读(520)  评论(0编辑  收藏  举报

BGP概述:自治系统之间进行路由学习及选路的协议

1、 自治系统:运行同一种路由协议的路由器的集合

  a) 自治系统编号:1~65535

  b) 公有AS号:1~64511

  c) 私有AS号:64512~65535

2、 动态路由分类:

  a) 按自治系统分类:IGPEGP

    1. IGP:自治系统内部的路由协议:作用:发现计算路由
    2. EGP:自治系统之间的路由协议:作用:控制路由的传播,选择最优路由

  b) 按协议类型分类:

    1. 距离矢量路由协议:RIPV1RIPV2BGPEIGRP
    2. 链路状态路由协议:OSPFISIS

3、 BGP的概念

  a) 作用:在AS之间自动交换无环路由信息

  b) 解决自治系统之间的路由学习问题

4、 BGP的特征

  a) 传输协议:TCP,端口号179

  b) BGP是外部路由协议,用在AS之间传递路由信息

  c) 是一种增强的路径矢量路由协议

  d) 拥有可靠的路由更新机制

  e) 具备丰富的metric度量方法

  f) 无环路协议设计

  g) 为路由条目附带多种属性信息

  h) 支持CIDR(无类别域间选路)

  i) 丰富的路由过滤和路由策略

  j) 无须周期性更新

  k) 路有更新时只发送增量路由

  l) 周期性发送keepalive报文,以保持TCP连通性

BGP邻居关系

    发言者:运行BGP的路由器

    对等体:相互之间传递报文的speaker之间互称为对等体

  1、 BGP报文

    a) Open报文:第一个报文,用于建立连接关系

    b) Update报文:更新路由信息

    c) Notification报文:当BGP检测到错误时,发送报文返回idle状态,立即断开连接——不允许错误出现的一种路由协议

    d) Route-refresh:路由刷新

    e) Keepalive:保持连接,默认周期60s,保持180s

  2、 BGP状态机

    a) Idle状态:拒绝任何进入的连接请求,是BGP的初始状态,还没运行BGP

    b) Connect状态:连接状态,建立连接

    c) Active状态:尝试进行TCP连接,是BGP的中间状态

    d) Opensent状态:等待对等体的open报文,并对收到的open报文进行检查,没有问题,发送keepalive报文,并进入openconfirm状态,如果有错,则进入idle状态

    e) Openconfirm状态:等待keepalive或notification报文,

    1. 收到keepalive报文——进入established状态
    2. 收到notificaton报文——进入idle状态

    f) Established状态:BGP可以在对等体之间交换update、keepalive、route-refreshnotification报文

    BGP对等体双方都为established状态,BGP邻居关系才能成立

  3、 BGP数据库

    a) Ip路由表:全局路由数据库,包括所有最优的IP路由信息

    b) BGP路由表:BGP发言者通告的路由信息

    c) 邻居表:对等体邻居清单列表

    d) Adi-RIB-In:对等体宣告给本地发言者的未处理的路由信息库

    e) Adj-RIB-Out:本地发言者宣告给指定对等体的路由信息库

  4、 BGP邻居关系类型

    a) IBGP邻居:同一个AS内部的BGP邻居关系

    b) EBGP邻居:AS之间的BGP邻居关系

    c) AS号相同为IBGP邻居,AS号不同为EBGP邻居

    d) Display bgp peer:查看BGP邻居信息

通告BGP路由的方法

  1、 network方式

    a) 可以将当前设备路由表中的路由(非BGP)发布到BGP路由表中,并通告给邻居

    b) Network的对象是路由条目

  2、 import方式

    a) 将所学习到的路由信息重分发到BGP路由表中,是BGP宣告路由的一种方式

    b) Import的对象是某种动态路由协议,而不是路由条目

  Display bgp routing-table  查看BGP路由表

BGP对等体配置

  BGP设备会将最优路由加入BGP路由表,形成BGP路由,

  1、 EBGP多跳

    a) 默认BGPEBGP邻居之间的TTL值为1,所以要用EBGP多跳来解决非直连的邻居关系

    b) Peer  12.0.0.1  ebgp-max-hop  2

  2、 更新源建立邻居关系

    a) 使用环回接口建立BGP邻居的方法称为更新源建邻居

    b) Peer  3.3.3.3  connect-interface  lo 0

    c) 本地loopback接口先要让对等体可达,需要手动添加对等体环回接口的路由条目,或者IGP自动学习对方环回接口路由

保证IBGP下一跳可达

  1、 AS内传播IBGP时,改变下一跳信息

  2、 Peer  34.1.1.4  next-hop-local

BGP的属性

  1、 BGP属性的分类

    a) 公有必遵:所有BGP路由器都可以识别,且必须存在于update报文中

    b) 公认任意:所有BGP路由器都可以识别,但不要求必须存在于update消息中,可以根据具体情况决定是否添加到update消息中

    c) 可选过渡:BGP路由器可以选择是否在update消息中携带这种属性,接收的路由器如果不识别这种属性,可以转发给邻居路由器

    d) 可选非过渡:BGP路由器可以选择是否在update消息中携带这种属性,接收的路由器如果不识别这种属性,将丢弃这种属性。

  2、 BGP属性的介绍

    a) Origin(起源)属性:

    1. 公有必遵,作用:标记一条路由怎么成为BGP路由的
    2. IGP(i):优先级最高。Network注入
    3. EGP(e):优先级次之。通过EGP得到
    4. Incomplete(?):其他方式学习到(如:import-route引入)。

    b) AS-PATH(AS路径)属性:

    1. 按矢量顺序记录了某条路由从本地到目的地址所要经过的所有AS编号。
    2. 始发路由时:
      1. 通告给EBGP对等体时,在update报文中创建一个携带本地AS号的AS-PATH列表
      2. 通告给IBGP对等体时,在update报文中创建一个空的AS-PATH列表
    3. 转发路由时:
      1. 通告给EBGP时,会把本地AS编号添加在AS-PATH列表的最前面(最左面)
      2. 发布给IBGP时,不会改变AS-PATH的属性

    c) Next-hop(下一跳)属性:

    1. IGP下一跳描述的是下一个路由器,BGP下一跳描述的是下一个AS(不一定是直连设备地址)。
    2. IBGP对等体发布从EBGP对等体学来的路由时,不改变路由的信息的下一跳属性

    d) Local-pref属性:

    1. 标识BGP路由的优先级,判断流量离开AS时的最佳路由
    2. AS内,多条路由到目的地址,local-pref属性值越大越优先,默认值为100.
    3. 配置

    e) MED属性:

    1. 判断流量进入邻居AS时的最佳路由。
    2. 两个AS之间有多条路由时,MED值越小越优先,默认值为0.
    3. 配置

BGP的选路原则

  1、 若去往目的网络的下一跳不可达,则可以忽略此路由

  2、 Preferred-value优先级以数值高的路由优先

  3、 Local-preference优先级以数值高的路由优先

  4、 聚合路由优先级高于非聚合路由

  5、 本地手动聚合路由的优先级高于本地自动聚合的路由

  6、 本地通过network命令引入的路由的优先级高于本地通过import-route命令引入的路由

  7、 AS路由长度最短(最少个数)的路由优先级高

  8、 比较origin属性,IGP优先级高于EGP,EGP优先级高于incomplete

  9、 比较MED优先级较小的路由

  10、 EBGP路由优先级高于IBGP

  11、 BGP优先选择到BGP下一跳的IGP度量低的路径

当以上全部相同,则为等价路由,可以负载分担,当负载分担时,以下三条原则无效

  1、 比较cluster-list长度,短者优先

  2、 比较originator_ID(如果没有originator_ID,则比较router DI),选择数值较小的路径。

  3、 比较对等体的IP地址,选择IP地址数值最小的路径。