IPRAN中BGP的概念与原理(上)

  1. IPRAN中BGP的概念与原理(上)
    1. 一、自治系统AS
    2. 二、IBGP和EBGP
    3. 三、BGP消息
    4. 四、BGP有限状态机

IPRAN中BGP的概念与原理(上)

本文介绍IPRAN网络中BGP的概念和原理,覆盖自治系统AS、IBGP和EBGP、BGP消息、BGP有限状态机、BGP属性、BGP路由选择和发布策略、路由反射器、BGP Auto FRR等。

一、自治系统AS

自治系统AS指由同一个技术管理机构(例如各大运营商)管理、使用内部路由策略的一些路由器的集合。自治系统AS分为单口AS(stub AS)、多归属AS(multihomed AS)和过渡AS(transit AS)。

自治系统AS指由同一个技术管理机构(例如各大运营商)管理、使用内部路由策略的一些路由器的集合。我们熟悉的Internet,就是由若干这样的AS组成的。

每个AS都有唯一的编号,称为自治系统号(ASN,Autonomous System Number)。ASN的编号范围是1到65535,其中1到64511是注册的因特网编号,由Internet地址授权委员会(IANA)统一负责分配,而64512到65535则是专用网络编号。

自治系统AS分为:

  • 单口AS(stub AS),如下图中的AS1、AS6和AS7。这种AS内只有一个自治系统边界路由器(ASBR)通过EBGP连接外部,同外部其他AS的通信要靠过渡AS来转接。
  • 多归属AS(multihomed AS),如下图中的AS3。AS2和AS4之间可以直接连接,也可以通过AS3作为过渡AS连接,即AS3可以在多链路情况下实现负载分担或互为备份。在实际网络中,这种类型的AS是最多的。
  • 过渡AS(transit AS),如下图中的AS5。需要AS5提供相应的连接,AS6才能正常接入到网络中。

二、IBGP和EBGP

根据两个BGP对等体之间所处的位置,BGP分为IBGP和EBGP两种运行方式。IBGP和IGP之间需要进行同步,其目的是避免误导外部AS的路由器。

运行BGP的路由器,自身通常叫做BGP Speaker,而与其建立BGP邻居关系的路由器,叫做BGP peer(BGP对等体)。前文已经提到,对等体之间使用TCP作为邻接关系的传输协议,端口号为179。

BGP在路由器上以下列两种方式运行:

  • 如果与邻居在同一个AS域内,那么该邻居就是一个内部对等体,相应的BGP被称为IBGP(Internal BGP),如下图中的B和D。换句话讲,虽然BGP是运行于AS之间的外部协议,但同一个AS的不同边界路由器之间也要建立BGP连接,即IBGP,以此实现路由信息在全网的传递。IBGP对等体之间不一定是物理相连,但一定要是逻辑相连的,可以完成TCP握手。
  • 如果与邻居在不同的AS域中,那么该邻居就是一个外部对等体,相应的BGP被称为EBGP(External BGP),如下图中的A和B。EBGP对等体之间通常要求能够物理相连。

BGP同步是指IBGP和IGP之间的同步,其目的是避免误导外部AS的路由器。

如果一个AS中有非BGP路由器提供转发服务,经该AS转发的IP报文将可能因为目的地址不可达而被丢弃,也就是形成路由黑洞。如下图所示,AS200内部运行IGP路由协议,由于B只与D建立了BGP关系,C并没有BGP路由,在C处就会形成一个BGP路由黑洞。E通过BGP从D学到A的一条路由8.0.0.0/8,于是将到这个目的地址的报文转发给D,D查询路由表,发现下一跳是B。由于D从IGP学到目的为B的路由,所以通过路由迭代,D将报文转发给C。但C并不知道去8.0.0.0/8的路由,于是将报文丢弃。

如果设置了同步特性,在IBGP路由加入路由表并发布给EBGP对等体之前,会先检查IGP路由表。只有在IGP也知道这条IBGP路由时,它才会被加入到路由表,并发布给EBGP对等体。

在下面的情况中,可以安全地关闭同步特性。

  • 本AS不是过渡AS,例如上图中的AS200就属于一个过渡AS,不能安全地关闭同步特性。
  • 本AS内所有路由器建立IBGP全连接。

三、BGP消息

BGP的运行过程是通过各种消息的交互来实现的,共有Open、Update、Notification和Keepalive四种消息类型。

BGP的运行是通过消息驱动的,共有Open、Update、Notification和Keepalive四种消息类型。

  • Open消息:在BGP对等体建立之前,对等体之间首先进行TCP连接。Open消息是TCP连接建立后发送的第一个消息,用于建立BGP对等体之间的连接关系。对等体在接收到Open消息并协商成功后,将发送Keepalive消息确认并保持连接的有效性。确认后,对等体间可以进行Update、Notification和Keepalive消息的交换。
  • Update消息:用于建立连接后,在对等体之间交换路由信息。BGP协议不会定期更新路由表,但当BGP路由发生变化时,会通过Update消息增量地更新路由表。Update消息可以发布多条属性相同的可达路由信息,也可以撤销多条不可达路由信息。
    • 一条Update消息可以发布多条具有相同路由属性的可达路由,这些路由可共享一组路由属性。所有包含在一个给定的Update消息里的路由属性适用于该Update消息中的NLRI(Network Layer Reachability Information)字段里的所有目的地(用IP前缀表示)。
    • 一条Update消息可以撤销多条不可达路由。每一个路由通过目的地(用IP前缀表示),清楚的定义了BGP Speaker之间先前通告过的路由。
    • 一条Update消息可以只用于撤销路由,这样就不需要包括路径属性或者NLRI。相反,也可以只用于通告可达路由,这样就不需要携带撤销路由信息。
  • Notification消息:当BGP检测到错误状态时(例如:收到不支持的协商能力或者收到错误报文),就向对等体发出Notification消息,之后BGP连接会立即中断。
  • Keepalive消息:BGP会周期性的向对等体发出Keepalive消息,用来保持连接的有效性。

四、BGP有限状态机

BGP有限状态机共有六种状态,分别是Idle、Connect、Active、OpenSent、OpenConfirm和Established。 BGP对等体双方的状态必须都为Established,BGP邻居关系才能成立,双方通过Update报文交换路由信息。

如下图所示:

  • Idle状态下,BGP拒绝任何进入的连接请求,是BGP的初始状态。
  • Connect状态下,BGP等待TCP连接的建立完成后再决定后续操作。
  • Active状态下,BGP将尝试进行TCP连接的建立,是BGP的中间状态。
  • OpenSent状态下,BGP等待对等体的Open消息。
  • OpenConfirm状态下,BGP等待一个Notification报文或Keepalive报文。
  • Established状态下,BGP对等体间可以交换Update报文、Keepalive报文和Notification报文。

在BGP对等体建立的过程中,通常可见的三个状态是:Idle、Active、Established。

BGP对等体双方的状态必须都为Established,BGP邻居关系才能成立,双方通过Update报文交换路由信息。


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 xumeng32@126.com

文章标题:IPRAN中BGP的概念与原理(上)

文章字数:1.9k

本文作者:F_numen

发布时间:2020-03-21, 14:25:55

最后更新:2020-03-21, 15:15:31

原始链接:https://netheroone.cn/archives/4c66b45c.html

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
/*baidu统计*/