BGP路由协议



边界网关协议BGP(Border Gateway Protocol)是一种实现自治系统AS(Autonomous System)之间的路由可达,并选择优选路由的距离矢量路由协议。

AS(Autonomous System,自治系统)是指由同一个技术管理机构管理、使用统一选路策略的一些路由器的集合。

AS的内部使用IGP来计算和发现路由,同一个AS内部的路由器之间是相互信任的,因此IGP的路由计算和信息泛洪完全处于开放状态,人工干预很少。

不同AS之间的连接需求推动了外部网关协议的发展,BGP作为一种外部网关协议,用于在AS之间进行路由控制和优选。

IGP 是运行在AS 内部的路由协议,主要有RIP、OSPF 及IS-IS,IGP 着重于发现和计算路由。

EGP 是运行于AS 之间的路由协议,现通常都是指BGP,BGP 是实现路由控制和选择最好的路由协议。


BGP 特点

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

是一种增强的距离矢量路由协议

可靠的路由更新机制(路由的获取,优选和通告)(传输协议:TCP,端口号179;无需周期性更新;路由更新只发送增量路由;周期性发送keepAlive报文检测TCP的连通性)

丰富的Metric度量方法

从设计上避免了环路的发生,提供路由环路避免机制,并能够高效传递路由,维护大量的路由信息;

在不完全信任的AS之间提供丰富的路由控制能力。

为路由附带属性信息

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

丰富的路由过滤和路由策略,能够灵活的进行路由选路


BGP邻居类型

运行在不同AS之间的BGP路由器建立的邻居关系为EBGP(External BGP)邻居关系。

运行在相同AS内的BGP路由器建立的邻居关系为IBGP(Internal BGP)邻居关系。

在这里插入图片描述


BGP报文种类

在这里插入图片描述

BGP报文有五种类型:
(其中Keepalive报文为周期性发送,其余报文为触发式发送)

Open:负责和对等体建立邻居关系。

KeepAlive:该消息在对等体之间周期性地发送,用于保持BGP连接。

Update:该消息被用来在BGP对等体之间传递路由信息。

Notification:当BGP Speaker检测到错误的时候,就发送该消息给对等体。

Route-refresh:用来通知对等体自己支持路由刷新能力;用于在改变路由策略后请求对等体重新发送路由信息。只有支持路由刷新(Route-refresh)能力的BGP设备会发送和响应此报文。


路由注入

第一种方法是通过Network 命令:路由器将通过Network 将IP 路由表里的路由信息注入到BGP 的路由表中,并通过BGP 传递给其他对等体。通过Network 命令注入到BGP 路由表里的路由信息必须存在于IP 路由表中。

第二种方法是通过Import 命令把其他协议的路由信息注入到BGP 路由表中,通过Import 注入的路由信息通过组合策略共同使用。


BGP通告原则

 BGP通告原则之一 : 仅将自己最优且有效(valid,即路由条目前有*标识)(best,即路由条目前有>标识)的路由发布给邻居。

在这里插入图片描述

BGP通告原则之二 : 通过EBGP获得的最优路由发布给除路由获取端以外的所有BGP邻居(包括EBGP邻居和IBGP邻居)

BGP通告原则之三 : 通过IBGP获得的最优路由不会发布给其他的IBGP邻居(水平分割)

BGP通告原则之四 : BGP与IGP同步(从IBGP邻居学来的路由是否发布给BGP邻居,取决于该路由是否也能通过IGP得知,即BGP和IGP同步)

本地始发的路由都是最优且有效路由(通过network和import注入的路由等),都是会被通告给邻居路由器的,包括IBGP邻居与EBGP邻居。


BGP的路径属性

BGP路径属性是一组描述BGP前缀特性的参数
BGP路径属性可以被分为四大类:
公认必遵 (Well-known mandatory)
公认任意 (Well-known discretionary)
可选过渡 (Optional transitive)
可选非过渡 (Optional non-transitive)


常见BGP路由属性

在这里插入图片描述

Origin:起点属性。定义路由信息的来源,标记一条路由是怎样成为BGP路由的。

As_PATH:AS路径属性。是路由经过的AS的序列,即列出此路由在传递过程中经过了哪些AS。它可以防止路由循环,并用于路由的过滤和选择。

Next hop:下一跳属性。包含到达更新消息所列网络的下一跳边界路由器的IP地址。

MED属性:当某个AS有多个入口时,可以用MED属性来帮助其外部的AS选择一个较好的入口路径。一条路由的MED值越小,其优先级越高。

Local-Preference:本地优先级属性。用于在AS内优选到达某一目的地的路由。反映了BGP Speaker对每条BGP路由的偏好程度。属性值越大越优。

Community:团体属性。团体属性标识了一组具有相同特征的路由信息,与它所在的IP子网或自治系统无关。


BGP路由选路原则

BGP路由器将路由通告给邻居后,每个BGP邻居都会进行路由优选,路由选择有三种情况:

  1. 该路由是到达目的地的唯一路由,直接优选。
  2. 对到达同一目的地的多条路由,优选优先级最高的。
  3. 对到达同一目的地且具有相同优先级的多条路由,必须用更细的原则去选择一条最优的。

一般来说,BGP计算路由优先级的规则如下:

  1. 丢弃下一跳不可达的路由。
  2. 优选Preference_Value值最高的路由(私有属性,仅本地有效)。
  3. 优选本地优先级(Local_Preference)最高的路由。
  4. 优选手动聚合>自动聚合>network>import>从对等体学到的。
  5. 优选AS_Path短的路由。
  6. 起源类型IGP>EGP>Incomplete。
  7. 对于来自同一AS的路由,优选MED值小的。
  8. 优选从EBGP学来的路由(EBGP>IBGP)。
  9. 优选AS内部IGP的Metric最小的路由。
  10. 优选Cluster_List最短的路由。
  11. 优选Orginator_ID最小的路由。
  12. 优选Router_ID最小的路由器发布的路由。
  13. 优选具有较小IP地址的邻居学来的路由。

故障案列分析

当BGP的邻居关系无法建立时,可以从以下几点进行检查
(1)TCP 179 端口被禁用(ACL过滤了)
(2)没有IP 连通性。
(3)OPEN 消息参数不正常。
(4)EBGP/IBGP 配置有误。
(5)物理层以及其他故障。


相关问题

  1. BGP路径属性的作用?BGP发展到现在为止总共有多少种属性?
    BGP是一个路由选择策略工具,区别于IGP,BGP目的是传递路由而不是发现路由。而BGP的路径属性就是一组描述BGP前缀特性的参数,让BGP可以很好的控制路由信息的传递。而BGP4发展到现在为止,总共有16种路径属性。

  2. AS_PATH属性是怎样防止路由环路?
    AS_PATH属性列表以相反的顺序列出了一条前缀先后经过的AS,每经过的一个AS,该AS号会被放入AS_PATH列表的最前面(开始处)。如果在路由更新消息中发现自己所在的AS号已经被包含在AS_PATH属性中,则表明该路由之前曾经通过该AS或者是源自于该AS,为避免路由环路,将此路由信息丢弃。

  3. MED与LOCAL_PREF属性的区别是什么?
    MED主要作用在EBGP对等体上,而LOCAL_PREF则主要作用在IBGP对等体上。换过另外一种说法就是,MED通常通过EBGP对等体向外发送,从而实现对对端AS入流量的控制;而LOCAP_PREF通常向IBGP对等体发送,从而实现对本地AS出流量的控制。


**本文中的部分内容来自网络或相关书籍**
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐