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

2022-11-28 16:13:26 浏览数 (2)

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

简介

边界网关协议 (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号那么该路由器就知道出现了环路,因而丢弃该路由。

收 藏

0 人点赞