BGP路由协议(1)

什么是BGP
BGP是外部路由协议,是一种增强的距离矢量路由协议。

BGP作用
用来在AS之间传递路由信息。

什么是系统(AS)
AS是由同一个技术管理机构管理、使用统一选路策略的一些路由器的集合。

BGP特征

  • 可靠的路由更新机制
  • 丰富的Metric度量方法
  • 从设计上避免了环路的发生
  • 为路由附带属性信息
  • 支持CIDR(无类别域间选路)
  • 丰富的路由过滤和路由策略

可靠的路由更新机制

  • 传输协议:TCP,端口号179
  • 无需周期性更新
  • 路由更新:只发送增量路由
  • 周期性发送keepAlive报文检测TCP的连通性

BGP报文五种类型:

  • Open:负责和对等体建立邻居关系。
  • KeepAlive:该消息在对等体之间周期性地发送,用以维护连接。
  • Update:该消息被用来在BGP对等体之间传递路由信息。
  • Notification:当BGP Speaker检测到错误的时候,就发送该消息给对等体。
  • Route-refresh:用来通知对等体自己支持路由刷新能力。

BGP协议中消息的应用

  1. 通过TCP建立BGP连接时,发送OPEN消息
  2. 连接建立后,如果有路由需要发送或路由变化时,发送UPDATE消息通告对端
  3. 稳定后要定时发送KEEPALIVE消息以保持BGP连接的有效性
  4. 当本地BGP在运行中发现错误时,要发送NOTIFICATION消息通告BGP对等体
  5. ROUTE-REFRESH消息用来通知对等体自己支持路由刷新

BGP六种状态机
Idle、Connect、Active、OpenSent、OpenConfirm和Established。
在这里插入图片描述

BGP邻居关系
BGP邻居关系建立在TCP连接的基础之上
可以通过IGP或静态路由来提供TCP连接的IP可达性

BGP两种邻居
IBGP和EBGP

BGP通告原则

  • BGP Speaker只把自己使用的最优路由通告给对等体
  • BGP Speaker从EBGP获得的路由会向它所有BGP对等体通告(包括EBGP和IBGP)
  • BGP Speaker 从IBGP获得的路由不会通告给它的IBGP邻居。
  • BGP Speaker 从IBGP获得的路由是否通告给它的EBGP对等体要依IGP和BGP同步的情况来决定

AS内部的IBGP对等体为什么需要建立全互连?
为了保证IGP对等体之间的连通性

BGP如何解决对等体数量过多而导致的占用资源过多的问题?

  • 路由反射器
  • 路由联盟

BGP的路径属性
BGP路径属性是一组描述BGP前缀特性的参数
BGP路径属性可以被分为四大类:

  • 公认强制(Well-known mandatory)
  • 公认可选(Well-known discretionary)
  • 可选过渡 (Optional transitive)
  • 可选非过渡 (Optional non-transitive)

公认属性是所有BGP路由器都必须识别的属性

  • 公认必遵 (Well-known mandatory)
    • 所有BGP路由器都可以识别,且必须存在于Update消息中。如果缺少这种属性,路由信息就会出错
  • 公认任意 (Well-known discretionary)
    • 所有BGP路由器都可以识别,但不要求必须存在于Update消息中,可以根据具体情况来决定是否添加到Update消息中

可选属性不需要都被BGP路由器所识别

  • 可选过渡 (Optional transitive)
    • BGP路由器可以选择是否在Update消息中携带这种属性。接收的路由器如果不识别这种属性,可以转发给邻居路由器,邻居路由器可能会识别并使用到这种属性
  • 可选非过渡 (Optional non-transitive)
    • BGP路由器可以选择是否在Update消息中携带这种属性。在整个路由发布的路径上,如果部分路由器不能识别这种属性,可能会导致该属性无法发挥效用。因此接收的路由器如果不识别这种属性,将丢弃这种属性,不必再转发给邻居路由器

常见BGP路由属性

属性 类别
1. Origin 公认强制
2. AS_PATH 公认强制
3. Next hop 公认强制
4. MED 可选非过渡
5. Local-Preference 公认可选
6. Atomic-Aggregate 公认可选
7. Aggregator 可选过渡
8. Community 可选过渡
9. Originator-ID 可选非过渡
10. Cluster-List 可选非过渡
11. MP_Reach_NLRI MPLS/v*n体系结构
12. MP_Unreach_NLRI MPLS/v*n体系结构
13. Extended_Communities MPLS/v*n体系结构

起源(Origin)属性
决定路由Origin属性的方式

  • 某条路由是直接而具体的注入到BGP路由表中的,则origin属性为IGP
  • 通过network命令注入BGP的路由
  • 通过EGP(RFC904)学到的路由,则origin属性为EGP
  • 其他情形下,Origin属性都为 Incomplete
  • 通过import命令注入BGP的路由
    Origin属性值默认情况下不被任何路由器修改

AS_PATH属性
AS_PATH如何避免形成路由环路?
BGP不会接受AS_PATH中已包含本地AS号的路由。如果BGP路由信息发布者从EBGP对等体收到一条路由,它的AS_PATH包含发布者自己的AS号,就说明这条路由曾经从本AS发出过,将其丢弃,同时不再进行转发。

MED (Multi-Exit-DISC) 属性
MED是可选非过渡属性
区别到达同一邻居AS的多条入口链路(MED值越小,链路越优先)
通过EBGP发送MED值给对等体

LOCAL-PREF与MED的区别。

  • MED通常通过外部链路宣告给对等体,区分本地AS到同一邻居AS之间的多入口链路,MED数值越小越优
  • LOCAL_PREF只能发布给IBGP邻居,数值越高越优先

其他属性后续再复习

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度量最低的路径
    当以上全部相同,则为等价路由,可以负载分担
    注:AS_PATH必须一致.当负载分担时,以下3条原则无效
  12. 比较Cluster-List长度,短者优先,
  13. 比较Originator_ID(如果没有Originator_ID,则用Router ID比较),选择数值较小的路径
  14. 比较对等体的IP地址,选择IP地址数值最小的路径