首页 > 代码库 > BGP路由

BGP路由

1、自治系统(AS)

技术分享

自治系统:由同一个技术管理机构管理、使用统一选路策略的一些路由器的集合;

自治系统内部的路由协议——IGP

自治系统之间的路由协议——EGP

AS号段:1-64511(公有号段)、64512-65535(私有号段)


2、BGP特征

IGP:着重于发现和计算路由,主要有RIP、OSPF、ISIS;

EGP:着重于控制路由的传播和选择最优的路由,通常指BGP;

BGP用来在AS之间传递路由信息,是一种增强的距离矢量路由协议(可靠的路由更新机制、丰富的metric度量方法、从设计上避免了环路的发生)为路由附带属性信息,支持CIDR(无类别域间选路)、丰富的路由过滤和路由策略;


3、BGP路由传递


技术分享

首次连接是通过TCP三次握手,然后发生open消息协商,然后再通过keepalive报文检测TCP的连通性;


4、BGP可靠的路由更新

传输协议:TCP,端口号179,无需周期性更新;

路由更新:只发送增量路由;

周期性发送keepalive报文检测TCP的连通性;


5、BGP报文种类

 open:负责和对等体建立邻居关系;

keepalive:在对等体之间周期性地发送,用以维护连接;

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

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

route-refresh:用来通知对等体自己支持路由刷新能力。


1)BGP报文头

技术分享

报文头共19个字节:marker为固定值、length报文长度、type报文类型;


2)Open报文

技术分享


3)keepalive报文

技术分享

4)update报文

技术分享

5) notification报文

技术分享

6)route-refresh报文:通知对方进行路由刷新

技术分享


6、BGP协议中消息的应用

通过TCP建立BGP连接时,发送OPEN消息;

连接建立后,如果有路由需要发送或路由变化时,发送UPDATE消息通告对端;

稳定后要定时发送keepalive消息以保持BGP连接的有效性;

当本地BGP在运行中发现错误时,要发送NOTIFICATION消息通告BGP对等体;

ROUTE-KEFRESH消息用来通知对等体自己支持路由刷新;


7、BGP状态机

技术分享


8、BGP数据库

IP路由表(IP-RIB):全局路由信息库,包括所有IP路由信息;

BGP路由表(Loc-RIB):BGP路由信息库,包括本地BGP Speaker选择的路由信息;

邻居表:对等体邻居清单列表;

Adi-RIB-In:对等体宣告给本地Speaker的未处理的路由信息库;

Adi-RIB-Out:本地speaker宣布给指定对等体的路由信息库;

技术分享


9、BGP邻居关系

技术分享

BGP邻居关系建立在TCP连接的基础之上;

可以通过IGP或静态路由来提供TCP连接的IP可达性;

BGP两种邻居关系:IBGP和EBGP

技术分享


技术分享

Loopback地址作为一台路由器的管理地址:管理员会使用该地址对路由器远程登录(telnet ),选择的telnet 地址必须是永远也不会down 掉的,而虚接口(Loopback接口)恰好满足此类要求。该接口地址作为动态路由协议OSPF 、BGP 的router id。

IBGP如果要指定使用Loopback作为原地址需要加一条命令:peer 4.4.4.4 connect-interface loopback 0;

EBGP建立连接要求TLL为1,即直连

EBGP如果指定使用Loopback作为原地址需要再加一条命令:peer 4.4.4.4 ebgp-max-hop 2


10、BGP路由通告原则

连接一建立,BGP Speaker将把自己所有BGP路由通告给新对等体;

多条路径时,BGP Speaker只选最优的给自己使用;

BGP Speaker只把自己使用的最优路由通告给对等体;

查BGP路由命令:display bgp routing-table

技术分享

BGP Speaker从EBGP获得的路由会向它所有BGP对等体通告(包括EBGP和IBGP);

技术分享

保证IBGP下一跳可达

技术分享


next-hop-local是RTB的地址;

BGP Speaker从IBGP获得的路由不会通告给它的IBGP邻居;

技术分享

IBGP全互联,导致AS内部路由器需要维护更多的IBGP会话;

解决会话过多的方法是:路由反射器、联盟;

BGP Speaker从IBGP获得的路由是否通告给它的EBGP对等体要依IGP和BGP同步的情况来决定;

技术分享

成为BGP路由的途径之一:network命令

技术分享

成为BGP路由的途径之二:import命令

技术分享

11、BGP路径选择

BGP路径属性是一组描述BGP前缀特性的参数;

BGP路径属性可以被分为四大类:公认必遵、公认任意、可选过渡、可选非过渡;

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

1)公认必遵:所有BGP路由器都可以识别,且必须存在于update消息中,如果缺少这种属性,路由信息就会出错;

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

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

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

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


常见BGP路由属性:

origin:描述如何成为BGP路由

AS_PATH:一条路由中经过了哪些AS

nexthop:路由下一跳

MED:数据流如何进入其他AS

local-preference:数据流如何离开AS

community:对路由的标记

技术分享

起源(Origin):某条路由是直接而具体的注入到BGP路由表中的,则origin属性为IGP;通过network命令注入BGP的路由;通过EGP学到的路由,则origin属性为EGP;其他情形下,origin属性都为incomplete;通过import命令注入BGP的路由;

origin属性值默认情况下不被任何路由器修改

技术分享

AS路径(AS_PATH)属性:作用是避免成环、选路;

技术分享

技术分享

技术分享

下一跳属性(Next Hop)

技术分享

本地优先级属性(local-preference)

技术分享

MED属性:只能通告给邻居路由器

技术分享

上图是同一个AS两个MED,选MED小的;

下图是两个AS的MED不同,所以不考虑MED值;

技术分享

团体属性(community):是一组有相同性质的目的地址路由,目的就是将路由信息编组,通过组的标识决定路由传递的策略。

技术分享

no_export:不通告本AS

no_advertise:不通告

no_export_subconfed:只通过给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度量最低的路径

12)比较cluster-list长度,短者优先

13)比较originator_ID(如果没有originator_id,则用router id比较),选择数值较小的路径;

14)比较对等体的IP地址,选择IP地址数值最小的路径;


12、BGP路由聚合

自动聚合:

技术分享

手动聚合:手动聚合的优先级高于自动聚合的优先级;

技术分享


BGP路由