自治系统(AS)中的协议---IGP、EGP(BGP)

olivee 4年前 ⋅ 1478 阅读

参考:

1. 自治系统(AS)

自治系统(AS)就是指在网络中处于同一个控制下的路由器和计算机群组,在同一个自治系统中运行相同的路由协议,来完成系统中路由器之间的互联。

每个自治系统有自己独立的编号,以区别于别的自治系统,这个自治系统号ASN(Autonomous System Number)由两个字节组成,理论上取值范围为 1- 65535,末尾的1024个ASN是私有自治号,用于王国内部的下属郡国使用,不能外泄(类似私有IP,如果不小心外泄,别人也会忽略)。

16 位私有 ASN 的范围包括 64512 到 65534。您还可以提供介于 4200000000 与 4294967294 之间的 32 位 ASN。

比如中国电信的AS号 为 4809,那么中国电信的用户就置身于4809 的独立王国,如果用户访问的服务器也是在这个AS内,那双向的流量都在王国里来回溜达。

不光运营商可以拥有AS号,一些大型企业如 Google , Amonzon, Apple , eBay 都拥有自己的AS号,一个AS号通常足够使用,但运营商通常会有多个AS号,用于不同的独立的网络。

881-20191121104811644-1850159463.png

2. BGP

BGP---边界网关协议运行于TCP上的一种自治系统的路由协议。 BGP 是唯一一个用来处理像因特网大小的网络的协议,也是唯一能够妥善处理好不相关路由域间的多路连接的协议。 BGP 构建在 EGP 的经验之上。 BGP 系统的主要功能是和其他的 BGP 系统交换网络可达信息。网络可达信息包括列出的自治系统(AS)的信息。这些信息有效地构造了 AS 互联的拓朴图并由此清除了路由环路,同时在 AS 级别上可实施策略决策。

1675881-20191121104647610-1440509796.png

BGP协议概述

边界网关协议BGP是一种实现自治系统之间的路由可达,并选择最佳路由、提供无环路的域间距离矢量路由协议。早期发布的3个版本分别是BGP-1(RFC1105)、BGP-2(RFC1163)和BGP-3(RFC1267),1994年开始使用BGP4(RFC1771),2006年之后单播|PV4网络使用的版本是BGP4(RFC4271),其他网络(如|Pv6等)使用的版本是MP-BGP(RFC4760)。MP-BGP是对BGP4进行了扩展,来达到在不同网络中应用的目的,BGP-4原有的消息机制和路由机制并没有改变。MP-BGP在|Pv6单播网络上的应用称为BGP4+,在PV4组播网络上的应用称为MBGP( Multicast BGP)。BGP从多方面保证了网络的安全性、灵活性、稳定性、可靠性和高效性,BGP特征如下

  1. BGP采用认证和GTSM的方式,保证了网络的安全性
  2. BGP提供了丰富的路由策略,能够灵活地进行路由选路,并且能指导邻居按策略发布路由
  3. BGP提供了路由聚合和路由衰减功能用于防止路由振荡,有效提高了网络的稳定性。
  4. BGP使用TCP作为其传输层协议(端口号为179),并且支持BGP与BFD联动、 BGP Tracking和 BGP GR和NSR,提高了网络的可靠性在邻居数目多、路由量大且大部分邻居具有相同出口策略的场景下,BGP使用按组打包技术极大地提高了BGP打包发包性能。

BGP协议工作原理

BGP通过报文的交互完成邻居建立、路由更新等操作,共有Open、 Update、 Notification、 Keepalive 和 Route-refresh等5种报文类型。

  1. open报文:是TCP连接建立后发送的第一个报文,用于建立BGP邻居之间的连接关系。BGP邻居在接收到Open报文并协商成功后,将发送 Keepalive报文确认并保持连接的有效性。确认后,BGP邻居间可以进行 Update、 Notification、 Keepalive和 Route-refresh报文的交换。
  2. Update报文:用于在BGP邻居之间交换路由信息。 Update报文可以发布多条属性相同的可达路由信息,也可以撤销多条不可达路由信息。
  3. Notification报文:当BGP路由器检测到错误状态时,就向邻居发出 Notification报文,之后BGP连接会立即中断。
  4. Keepalive报文:BGP路由器会周期性地向邻居发出 Keepalive报文,用来保持连接的有效性。
  5. Route-refresh报文: Route-refresh用于在改变路由策略后请求对等体重新发送路由信息。

BGP选路规则

当到达同一目的地存在多条路由时,BGP依次对比下列属性来选择路由。

  1. 优选协议首选值( Prefva)最高的路由。协议首选值( Prefval)是华为设备的特有属性,该属性仅在本地有效。
  2. 优选本地优先级( Local Pref))最高的路由。如果路由没有本地优先级,BGP选路时将该路由按缺省的本地优先级100来处理。
  3. 依次优选手动聚合路由、自动聚合路由、 network命令引入的路由、 Import-route命令引入的路由,从对等体学习的路由。
  4. 优选AS路径( AS Path)最短的路由。
  5. 依次优选ogn类型为Gp.EGP、 Incomplete的路由。
  6. 对于来自同一AS的路由,优选MED值最低的路由。
  7. 依次优选EBGP路由、|BGP路由、 Localcross路由、 Remote Cross路由。PE上某个VPN实例的vPN4路由的ERT匹配其他VPN实例的RT后复制到该VPN实例,称为 LocalCross:从远端PE学习到的vPNw4路由的ERT匹配某个VPN实例的RT后复制到该VPN实例,称为 RemoteCross
  8. 优选到BGP下一跳GP度量值( metric最小的路由
  9. 优选 Cluster List最短的路由
  10. 优选 Router ID最小的设备发布的路由。如果路由携带 Originator ID属性,选路过程中将比较Originator ID的大小(不再比较 Router ID),并且优选 Originator ID最小的路由
  11. 优选从具有最小 IP Address I的对等体学来的路由。当到达同一目的地址存在多条等价路由时,可以通过BGP等价负载分担实现均衡流量的目的。形成BGP等价负载分担的条件是"BGP选择路由的策略”的1~8条规则中需要比较的属性完全相同。

1675881-20200316193102837-567450096.jpg

3. EBGP和IBGP

IGP(内部网关协议): 常用于同一个AS系统中主机和路由器进行路由信息交换的协议,常用的协议有RIP、OSPF、ISIS等等。

EGP(外部网关协议): 常用于各个AS系统之间路由信息交换的协议,常用的协议为BGP。

通过两个协议的字面意思就可以很清楚的明白:

在同一个AS系统的路由器使用的是内部网关协议里其中的一种协议进行路由信息的交换,每个路由器只需要清楚与自己互联的路由器的路由信息即可;

而在每个AS系统间互联时就用到外部网关协议了,用的最多的就是BGP协议,同理边界路由器只需要清楚与自己互联的其它AS系统的路由信息即可。

IBGP应用在AS内部,作为IGP的一种。一般的IGP,例如OSPF,EIGRP,用来在邻接路由器之间传递路由。而IBGP可以用来在edge router之间同步路由,edge router并不需要邻接。Edge router是指在AS边缘,用来连接其他AS的router,那么edge router肯定是运行了EBGP。同时这个edge router也会有对端AS的路由。通过IBGP,edge router会将学习到的对端AS的路由,传递给其他的edge router。这样,可以实现跨AS的连通。例如下图中,AS11111和AS33333都连接到了AS22222。AS22222的两个Edge router交换彼此的路由,这样AS11111要访问AS33333,先将包发给AS22222左边的edge router。由于交换了路由,AS22222左边的edge router会把包发给右边的edge router,右边的edge router再发给AS33333。注意,AS22222里的两个edge router不用直连,只需要彼此路由可达即可。

v2-ed1230361422448358401ba84ced39ff_720w.jpg

这里运行IBGP的好处是:

  • 路由不需要配置重分布,只需要建立好EBGP和IBGP连接,那么相应的路由会通过BGP协议传递。

  • 对于路由器来说,EBGP和IBGP只是对应的参数不太一样,但都是通过一个BGP进程来运行,这不会增加路由器的负担

  • 中介路由器(intermediate router)不需要关心AS以外的路由信息(例如AS11111和AS22222的路由都不会出现在中介路由器上),这样中介路由器的路由表可以比较小。

虽然应用在AS内部,这里的IBGP仍然起的是连接互联网的作用。

当然,IBGP也可以当成一个普通的IGP,用来在邻接路由器之间传递路由。由于基于TCP协议,当网络规模足够大的时候,IBGP相比OSPF能更加稳定可靠的传输路由信息。

技术细节

从技术细节看,EBGP和IBGP的区别不是那么明显。

EBGP和IBGP都遵循BGP协议,它们的工作流程,处理方式,甚至核心程序,都是一样的。区别在于一些细节参数,默认行为不同。

首先,EBGP的Administrative Distance默认是20。而IBGP的Administrative Distance默认是200。

其次,EBGP和IBGP在传递路由的时候,对next-hop的处理不同。EBGP会修改路由的next-hop,再转发;而IBGP默认不会修改next-hop,直接将路由转发。举个例子:R4有一条路由要发出,路由传递到R2,R5,路由的下一跳(next-hop)是R4。

v2-d5b4db1bd456012a7efc8e644e546dd6_720w.jpg

R2通过EBGP将路由传输到R1,由于是EBGP,所以路由的next-hop改为R2。

v2-addecb07b715c686906b319a42bc95da_720w.jpg

R1再通过EBGP将路由传递给R3,由于是EBGP,路由的next-hop被改为R1。到此为止,R3不用知道R2在哪,只需要将prefix匹配的IP packet发到R1。R1 也不用知道R4在哪,只需要发给R2,R2由于跟R4直连,会最终将请求发送到R4。

v2-52606b7f915427289e0b99c559c48967_720w.jpg

接下来,R3再通过IBGP将路由传递给R6,R7。由于是IBGP,默认next-hop不会变化,那么R6,R7收到的路由的next-hop仍然是R1。

v2-98675723a1203a365c82b27725c70467_720w.jpg

这个时候存在问题,由于R6,R7没有与R1直连,也就是说R6,R7不一定能找到R1,相应的路由也有可能被标成无效的。这个时候有两种方法:

  • 将R1的地址通过路由协议传到R6,R7

  • 在R3连接R6,R7时,设置next-hop-self,也就是修改IBGP的默认行为,让IBGP在传递路由的时候,将路由的next-hop改为自己

第二种方法更为常见,所以在AS的edge router上,通常对IBGP邻居会加上next-hop-self。

EBGP和IBGP在技术实现上的第三个区别在路由转发的行为上。通过IBGP学习到的路由,不能传递给其他的IBGP。这么作是为了防止路由环路(loop)。EBGP通过BGP协议里面的AS_PATH和其他元素过滤来自于自己的路由,但是IBGP运行在一个AS内部,没有AS_PATH,所以IBGP干脆不转发来自于其他IBGP的路由。

由于不能转发路由,这要求所有的IBGP router两两相连,组成一个full-mesh的网络。Full-mesh的连接数与节点的关系是n*(n-1),连接数随着节点数的增加而迅速增加,这给配置和管理带来了问题。

IBGP优化

为了避免full-mesh的连接方式,常见的IBGP优化有两种,一种是Route Reflector,一种是BGP Confederation。

Route Reflector

Route Reflector,路由反射器,这是一个特殊的IBGP router。一般的IBGP router不会传递来自其他IBGP router的路由。但路由反射器是例外,它会将学习到的IBGP路由,传递给所有连接的RR-client。这样,一个BGP router的路由可以不用与其他的BGP router建立连接,而通过路由反射器发送给其他的BGP router。路由反射器可以大大减少BGP peer的连接数,例如有5个BGP router,那么full-mesh需要管理总共10个BGP peer连接,而使用路由反射器,只需要4个BGP peer。

v2-659abb701c4c47c9acf1fb0f3d0e8f41_720w.jpg

BGP Confederation

BGP Confederation是将一个大的AS里面的BGP router,划分到多个小的sub-AS。通过这样的划分,减少IBGP peer连接数。例如,6个BGP router的full-mesh连接数是15。

v2-56d0e1c2176a5f58671d9ea5d559950e_720w.jpg

通过划分sub-AS,最终的连接数降到了8个。

v2-129eeca437b80022a2e040d1f69e4440_720w.jpg

以上就是BGP协议的两大类应用:EBGP和IBGP的区别和联系。