边界网关协议 (Border Gateway Protocol) 学习

  • A+
所属分类:网络技术

记录一些对边界网关协议的知识。

简介

边界网关协议 (Border Gateway Protocol) 简称BGP,简单说就是用于网络域边界的路由协议。
BGP主要用于不同自治网络间的路由通信,比如公司机房和多个运营商的边界网络。
不同的公司内网会用各种不同的由协议,但用于网络边界的路由协议只有BGP。公网网络条目众多,内部网关协议(IGP)无法承载,而BGP可以轻松应对。
BGP既不是纯粹的矢量距离协议,也不是纯粹的链路状态协议,通常被称为通路向量路由协议。

自治系统 (Autonomous System)

自治系统或自治域(Autonomous system, AS)是指在互联网中,一个或多个实体管辖下的所有IP网路和路由器的组合,它们对互联网执行共同的路由策略。参考文档
自治系统编号 (Autonomous System Number) 简称ASNumber,ASN,就是用于标记这些自治域的编号。

边界网关协议计算的就是自治系统之间的路由。相当于一般的协议计算链路会过几个路由器,而BGP计算的是会过几个自治域。

BGP的邻居关系

ASNumber决定的是BGP中路由器之间的关系。
BGP中大致可分为两种邻居关系:IBGP邻居和EBGP邻居。
- IBGP:同一个AS内部的BGP邻居关系,IBGP邻居通常是指运行BGP协议的对等体两端均在同一个AS域内,属于同一个BGP AS内部。
- EBGP:AS之间的BGP邻居关系,EBGP邻居通常是指运行BGP协议的对等体两端分别在不同的AS内。

BGP既可用于网络边界也可用于内部网络。比如kubernetes的网络插件Calico就是用的BGP协议。
但内部网络(IGP)不一定都是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等价负载均衡

边界网关协议 (Border Gateway Protocol) 学习
两个AS间如果存在等价链路,则流量会等价负载均衡。参考文档

注意: 不要将内部网络配置成EBGP,也就是不要设置成不同的ANS。因为EBGP不知道AS内部的路由规则,两个相邻的AS间的链路自然是等价的,所以流量会等价负载均衡,导致部分流量被均衡到错误的方向。

BGP的特点

基于TCP协议

BGP是运行于TCP上的路径矢量路由协议,TCP端口号179
使用TCP协议是因为携带的路由信息较多,且可能跨不同网络传送路由信息,TCP可以保证BGP的可靠传输。

防环规则

AS内部防环

AS内部防环通过IBGP水平分割来实现的,IBGP水平分割的基本思想是不把从IBGP邻居学到的路由传递给其他IBGP邻居

AS间防环

AS间防环通过属性AS-PATH(通路向量信息)来实现,AS-PATH就是在IP分组到达目的网络过程中所必须经过的AS的列表。
基本思想是,如果某台BGP路由器从其外部对等体收到某条路由的AS-PATH中包含有自己的AS号那么该路由器就知道出现了环路,因而丢弃该路由。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: