记录一些对边界网关协议的知识。
简介
边界网关协议 (Border Gateway Protocol) 简称BGP
,简单说就是用于网络域边界的路由协议。
BGP主要用于不同自治网络间的路由通信,比如公司机房和多个运营商的边界网络。
不同的公司内网会用各种不同的由协议,但用于网络边界的路由协议只有BGP。公网网络条目众多,内部网关协议(IGP)无法承载,而BGP可以轻松应对。
BGP既不是纯粹的矢量距离协议,也不是纯粹的链路状态协议,通常被称为通路向量路由协议。
自治系统 (Autonomous System)
边界网关协议计算的就是自治系统之间的路由。
自治系统或自治域(Autonomous system, AS)是指在互联网中,一个或多个实体管辖下的所有IP网路和路由器的组合,它们对互联网执行共同的路由策略。参考文档
自治系统编号 (Autonomous System Number) 简称ASNumber
,ASN
,就是用于标记这些自治域的编号。
BGP的邻居关系
ASNumber
决定的是BGP
中路由器之间的关系。
在BGP
中大致可分为两种邻居关系:IBGP邻居和EBGP邻居。
- IBGP:同一个AS内部的BGP邻居关系,IBGP邻居通常是指运行BGP协议的对等体两端均在同一个AS域内,属于同一个BGP AS内部。
- EBGP:AS之间的BGP邻居关系,EBGP邻居通常是指运行BGP协议的对等体两端分别在不同的AS内。
BGP
既可用于网络边界也可用于内部网络。比如kubernetes
的网络插件Calico
就是用的BGP
协议。
但内部网络不一定都是IBGP
,也可能是别的协议。
IBGP的优化
IBGP默认是节点间两两互联的full-mesh
,为了避免full-mesh
的连接方式,常见的IBGP
优化有两种,一种是Route Reflector
,一种是BGP Confederation
。
Route Reflector
Reflector类似路由中转节点,一般的IBGP router不会传递来自其他IBGP router的路由。但路由反射器是例外,它会将学习到的IBGP路由,传递给所有连接的RR-client。
BGP Confederation
BGP Confederation是将一个大的AS里面的BGP router,划分到多个小的sub-AS。通过这样的划分,减少IBGP peer连接数。
EBGP等价负载均衡
两个AS
间如果存在等价链路,则流量会等价负载均衡。参考文档
注意: 不要将内部网络配置成EBGP
,也就是不要设置成不同的ANS
。因为EBGP
不知道AS
内部的路由规则,两个AS
间的链路自然是等价的,流量会等价负载均衡,导致部分流量被均衡到错误的方向。
BGP的特点
基于TCP协议
BGP
是运行于TCP
上的路径矢量路由协议,TCP
端口号179
。
使用TCP
协议是因为携带的路由信息较多,且可能跨不同网络传送路由信息,TCP
可以保证BGP
的可靠传输。
防环规则
AS内部防环
通过IBGP水平分割来实现的,IBGP水平分割的基本思想是不把从IBGP邻居学到的路由传递给其他IBGP邻居;
AS间的防环
通过属性AS-PATH
(通路向量信息)来实现,AS-PATH
就是在IP
分组到达目的网络过程中所必须经过的AS
的列表。
基本思想是,如果某台BGP
路由器从其外部对等体收到某条路由的AS-PATH
中包含有自己的AS号那么该路由器就知道出现了环路,因而丢弃该路由。
收 藏