bgp协议原理高防服务器的原理


边界网关协议(英文:BorderGatewayProtocol,BGP)是互联网上一个核心的去中心化自治路由协议。它通过维护IP路由表或前缀表来实现自治系统(AS)之间的可达性,属于矢量路由协议。BGP是唯一一个用来处理像因特网大小的网络的协议,也是唯一能够妥善处理好不相关路由域间的多路连接的协议。BGP构建在EGP的经验之上,其系统的主要功能是和其他的BGP系统交换网络可达信息。网络可达信息包括列出的自治系统(AS)的信息。这些信息有效地构造了AS互联的拓朴图并由此清除了路由环路,同时在AS级别上可实施策略决策。[1]BGP不使用传统的内部网关协议(IGP)的指标,而使用基于路径、网络策略或规则集来决定路由。因此,它更适合被称为矢量性协议,而不是路由协议。

边界网关协议(BGP/BGP4:BorderGatewayProtocol,边界网关协议)

BGP-4提供了一套新的机制以支持无类域间路由。这些机制包括支持网络前缀的通告、取消BGP网络中“类”的概念。BGP-4也引入机制支持路由聚合,包括AS路径的集合。这些改变为提议的超网方案提供了支持。BGP-4采用了路由向量路由协议,在配置BGP时,每一个自治系统的管理员要选择至少一个路由器作为该自治系统的“BGP发言人”。

年发布了主要的外部网关协议:边界路由协议(BGP),新版本BGP-4是在年发布的。

BGP路由选择协议执行中使用4种分组:打开分组(open)、更新分组(update)、存活分组(keepalive)、通告分组(notification)。

边界网关协议BGP用于在不同的自治系统(AS)之间交换路由信息。当两个AS需要交换路由信息时,每个AS都必须指定一个运行BGP的节点,来代表AS与其他的AS交换路由信息。这个节点可以是一个主机。但通常是路由器来执行BGP。两个AS中利用BGP交换信息的路由器也被称为边界网关(BorderGateway)或边界路由器(BorderRouter)。

由于可能与不同的AS相连,在一个AS内部可能存在多个运行BGP的边界路由器。同一个自治系统(AS)中的两个或多个对等实体之间运行的BGP被称为IBGP(Internal/InteriorBGP)。归属不同的AS的对等实体之间运行的BGP称为EBGP(External/ExteriorBGP)。在AS边界上与其他AS交换信息的路由器被称作边界路由器(border/edgerouter)。在互联网操作系统(CiscoIOS)中,IBGP通告的路由的距离为200,优先级比EBGP和任何内部网关协议(IGP)通告的路由都低。其他的路由器实现中,优先级顺序也是EBGP高于IGP,而IGP又高于IBGP。

BGP属于外部网关路由协议,可以实现自治系统间无环路的域间路由。BGP是沟通广域网的主用路由协议,例如不同省份、不同国家之间的路由大多要依靠BGP协议。BGP可分为IBGP(InternalBGP)和EBGP(ExternalBGP)。BGP的邻居关系(或称通信对端/对等实体)是通过人工配置实现的,对等实体之间通过TCP(端口179)会话交互数据。BGP路由器会周期地发送19字节的保持存活keep-alive消息来维护连接(默认周期为30秒)。在路由协议中,只有BGP使用TCP作为传输层协议。

RFC、RFC、RFC、RFC:BGP4之前的BGP版本。

BGP属于外部或域间路由协议。BGP的主要目标是为处于不同AS中的路由器之间进行路由信息通信提供保障。BGP既不是纯粹的矢量距离协议,也不是纯粹的链路状态协议,通常被称为通路向量路由协议。这是因为BGP在发布到一个目的网络的可达性的同时,包含了在IP分组到达目的网络过程中所必须经过的AS的列表。通路向量信息时十分有用的,因为只要简单地查找一下BGP路由更新的AS编号就能有效地避免环路的出现。BGP对网络拓扑结构没有限制,其特点包括:



(1)实现自治系统间通信,传播网络的可达信息。BGP是一个外部网关协议,允许一个AS与另一个AS进行通信。BGP允许一个AS向其他AS通告其内部的网络的可达性信息,或者是通过该AS可达的其他网络的路由信息。同时,AS也能够从另一个AS中了解这些信息。与距离向量选路协议类似,BGP为每个目的网络提供的是下一跳(next-hop)结点的信息。



(2)多个BGP路由器之间的协调。如果在一个自治系统内部有多个路由器分别使用BGP与其他自治系统中对等路由器进行通信,BGP可以协调者一系列路由器,使这些路由器保持路由信息的一致性。



(3)BGP支持基于策略的选路(policy-baserouting)。一般的距离向量选路协议确切通告本地选路中的路由。而BGP则可以实现由本地管理员选择的策略。BGP路由器可以为域内和域间的网络可达性配置不同的策略。



(5)路径信息。在BGP通告目的网络的可达性信息时,处理指定目的网络的下一跳信息之外,通告中还包括了通路向量(pathvector),即去往该目的网络时需要经过的AS的列表,使接受者能够了解去往目的网络的通路信息。



(6)增量更新。BGP不需要再所有路由更新报文中传送完整的路由数据库信息,只需要在启动时交换一次完整信息。后续的路由更新报文只通告网络的变化信息。这种网络变化的信息称为增量(delta)。



(7)BGP支持无类型编制(CIDR)及VLSM方式。通告的所有网络都以网络前缀加子网掩码的方式表示。



(8)路由聚集。BGP允许发送方把路由信息聚集在一起,用一个条目来表示多个相关的目的网络,以节约网络带宽。

边界网关协议路由器发送关于目标网络的BGP更新消息,更新的度量值被称为路径属性。属性可以是公认的或可选的、强制的或自由决定的、传递的或非传递的。属性也可以是部分的。并非组织的和有组合的都是合法的,路径属性分为4类:公认必遵、公认自决、可选过渡、可选非过渡。

ORIGIN(起源):这个属性说明了源路由是怎样放到BGP表中的。有三个可能的源IGP,EGP,以及INCOMPLETE.路由器在多个路由选择的处理中使用这个信息。路由器选择具有最低ORIGIN类型的路径。

AS_PATH(AS路径):指出包含在UPDATE报文中的路由信息所经过的自治系统的序列。

LOCAL_PREF(本地优先级):本地优先级属性是用于告诉自治系统内的路由器在有多条路径的时候,怎样离开自治系统。本地优先级越高,路由优先级越高。

AGGREGATOR(聚合者):此属性标明了实施路由聚合的BGP路由器ID和聚合路由的路由器的AS号。

MED(多出口区分):该属性通知AS以外的路由器采用哪一条路径到达AS,它也被认为是路由的外部度量,低MED值表示高的优先级。

ORIGINATOR_ID(起源ID):路由反射器会附加到这个属性上,它携带本AS路由器的路由器ID,用以防止环路。

边界网关协议Marker(16bytes)Length(2bytes)Type(1byte)

Type–信息类型。信息可能是:Open、Update、Notification、Keepalive。

在传输协议连接建立之后,各端发送的第一个信息是OPEN信息。如果OPEN信息可以接收,会返回发送确认OPEN信息的KEEPALIVE信息。一旦OPEN信息获得确认,UPDATE、KEEPALIVE和NOTIFICATION信息进行相互交换。

BGP的报文分成报文与报文数据两部分,其中,BGP报文数据根据不同的报文类型有所不同,报文头由以下3个字段构成:



(1)标记(Marker)字段。标记字段由16个字节构成。标记字段的值是一个通信双方(对等路由器)都可认可的字节串,双方都统一使用改制来标识一个合法的BGP报文的开始。通常,标记字段用于承载鉴别信息。对于通信双方,在任何情况下标记的值都必须保持一致。标记字段用于报文接收的同步。由于BGP报文用过TCP来简化,而TCP协议是一个无结构的流(stream)传输协议。在TCP协议上部位高层提供数据流的结构识别,因此也无法为BGP标识两个报文之间的边界。由于传输协议不指定报文边界,因此,为了确保发送方和接收方的报文边界准确保持同步,BGO要求在每个报文的开头放置了一个双方已知的序列,接收方通过该序列来检验报文头的正确性。



(2)报文长度,16比特,制定了以字节为单位计算的报文总长度。最小的报文为19i节,最大允许报文长度为字节。

BGP的路由更新消息一BGP报文形式在路由器间交换,BGP为了实现其功能定义了4种报文类型。

路由器接受到来自对等路由器的OPEN报文时,BGP将发送一个KEEPALIVE报文。在路由器之间交换选路信息之前,通信双方都必须发送一个OPEN报文,并接受一个KEEPALIVE报文。KEEPALIVE报文可以用作对OPEN报文的确认。

对等的BGP路由器之间创建了TCP连接,并成功接收到对OPEN报文的KEEPALIVE确定报文,对等路由器之间就可以使用路由更新消息报文来通告网络的可达性信息。通告的的内容可以是新的可达的目的网络,也可以是通告撤销原来的某些目的网络的可达性。

保持激活报文用于在两个BGP对等路由器之间定期测试网络连接性,并证实对等路由器的正常工作。由于TCP协议本身没有提供自动的连接状态的通知机制,对等路由器之间定制交换KEEPALIVE报文可以使BGP实体能够检测TCP连接是否工作正常。保持激活报文仅包含标准的BGP报文头(类型4),报文长度为19字节。

BGP在发现错误时(或需要进行控制时),可以利用通知报文来通知对等路由器。一旦通知报文,路由器检测来检查到了出现的错误,BGP就会向对等路由器发送一个通知报文,然后关闭TCP连接终止通信。

MCE功能是Multi-CE的简称,具有MCE功能的网络设备可以在BGP/MPLSVPN组网应用中承担多个VPN实例的CE功能,减少用户网络设备的投入。

边界网关协议BGP/MPLSVPN以隧道的方式解决了在公网中传送私网数据的问题,但传统的BGP/MPLSVPN架构要求每个VPN实例单独使用一个CE与PE相连,如图所示。

随着用户业务的不断细化和安全需求的提高,很多情况下一个私有网络内的用户需要划分成多个VPN,不同VPN用户间的业务需要完全隔离。此时,为每个VPN单独配置一台CE将加大用户的设备开支和维护成本;而多个VPN共用一台CE,使用同一个路由表项,又无法保证数据的安全性。使用MCE功能,可以有效解决多VPN网络带来的用户数据安全与网络成本之间的矛盾,它使用CE设备本身的VLAN接口编号与网络内的VPN进行绑定,并为每个VPN创建和维护独立的路由转发表(Multi-VRF)。这样不但能够隔离私网内不同VPN的报文转发路径,而且通过与PE间的配合,也能够将每个VPN的路由正确发布至对端PE,保证VPN报文在公网内的传输。

边界网关协议下面举例介绍MCE对多个VPN的路由表项进行维护,并与PE交互VPN路由的过程:

如右图所示,左侧私网内有两个VPN站点:VPN1和VPN2,分别通过MCE设备接入MPLS骨干网,其中VPN1和VPN2的用户,需要分别与远端VPN1用户和VPN2用户建立VPN隧道。通过配置MCE功能,可以在MCE设备上为VPN1和VPN2创建各自的路由转发表,并使用VLAN2接口与VPN1进行绑定、VLAN3与VPN2进行绑定。在接收路由信息时,MCE设备根据接收接口的编号,即可判断该路由信息的来源,并将其维护到对应VPN的路由转发表中。同时,在PE1上也需要将连接MCE的接口与VPN进行绑定,绑定的方式与MCE设备一致。MCE与PE1之间通过Trunk链路连接,并允许VLAN2和VLAN3的报文携带VLANTag传输,从而使PE1在接收时可以根据报文所属VLAN判别该报文属于哪一个VPN,将报文在指定的隧道内传输。

MCE设备是如何将多个VPN实例的私网路由信息准确传播到PE设备?这包括两部分:MCE与VPN站点的路由信息交换,MCE与PE之间的路由信息交换。这些路由信息的交换都有很多种方法,如静态路由、RIP、OSPF、ISIS、BGP路由协议。如果使用BGP路由协议来实现路由信息交换,则就是使用BGPMCE功能,因此BGPMCE功能就是BGP协议支持VRF,能够实现VRF下BGP路由信息的交换。需要在MCE上为每个VRF实例配置BGP对等体,并引入相应VPN内的IGP路由信息。由于各个VPN间正常情况下是处在不同的AS内,因此使用EBGP进行路由的传播。

百科词条内容由用户共同创建和维护,不代表百科立场。如果您需要医学、法律、投资理财等专业领域的建议,我们强烈建议您独自对内容的可信性进行评估,并咨询相关专业人士。