1.定位:边界网关协议(BGP)是运行于TCP上的一种自治系统的路由协议。BGP是唯一一个用来处理像因特网大小的网络的协议,也是唯一能够妥善处理好不相关路由域间的多路连接的协议。BGP构建在EGP的经验之上。BGP系统的主要功能是:
和其他的BGP系统交换网络可达信息。网络可达信息包括列出的自治系统(AS)的信息。这些信息有效地构造了AS互联的拓朴图并由此清除了路由环路,同时在AS级别上可实施策略决策。
2.BGP-4提供了一套新的机制以支持无类域间路由。这些机制包括支持网络前缀的通告、取消BGP网络中“类”的概念。BGP-4也引入机制支持路由聚合,包括AS路径的集合。这些改变为提议的超网方案提供了支持。BGP-4采用了路由向量路由协议,
在配置BGP时,每一个自治系统的管理员要选择至少一个路由器作为该自治系统的“BGP发言人”。
3.1989年发布了主要的外部网关协议:边界路由协议(BGP),新版本BGP-4是在1995年发布的。
4.BGP路由选择协议执行中使用4种分组:打开分组(open)、更新分组(update)、存活分组(keepalive)、通告分组(notification)。
5.基本介绍
尽管BGP协议是为自治系统间的路由选择而设计,但它也可以用于自治系统内部,是一类双重路由选择协议。两个可以在自治系统之间进行通信的BGP相邻结点必须存在于同一个物理链路上。位于同一个自治系统内的BGP路由器可以互相通信,
以确保它们对整个自治系统的所有信息都相同,而且通过信息交换后,它们将决定自治系统内哪个BGP路由器作为连接点来负责接收来自自治系统外部的信息。
6.有些自治系统仅仅作为一个数据传输的通道,这些自治系统既不是数据的发起端,也不是数据的接收端。BGP协议必须与存在于这些自治系统内部的路由协议打交道,以使数据能正确通过它们。BGP协议的路由刷新消息由“网络号:自治系统路径”对组成,
每一个自治系统路径都是一系列自治系统的名字字符串,它记录了通向最终目标所经过的网络。BGP协议的路由刷新消息通过传输控制协议TCP进行可靠传输。两个路由器之间最初始的数据交换就是整个BGP协议的路由选择表。随着路由表的不断变化,
发送路由选择刷新消息的次数也越来越多,与其他一些路由选择协议有所区别,BGP协议不要求对整个路由选择表进行周期性刷新,相反,运行BGP协议的路由器保持了每一个路由选择表的最新版本。尽管BGP协议保持通向特定目标的所有路径的
路由选择表,但在路由选择刷新消息中仅仅说明最佳路径。BGP协议的路由度量方法可以是一个任意单位的数,它指明某一个特定路径可供参考的程度,这些度量方法通常都是由网络管理人员通过配置文件来设置。可参考的程度可以基于任何数字准则,
例如最终系统计数(计数越小时路径越佳)、数据链路的类型。
7.BGP的两种邻居——IBGP和EBGP
8.BGP的邻居关系(或称通信对端/对等实体)是通过人工配置实现的,对等实体之间通过TCP(端口179)会话交互数据。BGP路由器会周期地发送19字节的保持存活keep-alive消息来维护连接(默认周期为30秒)。
在路由协议中,只有BGP使用TCP作为传输层协议。
9.同一个自治系统(AS)中的两个或多个对等实体之间运行的BGP被称为IBGP(Internal/InteriorBGP)。归属不同的AS的对等实体之间运行的BGP称为EBGP(External/ExteriorBGP)。在AS边界上与其他AS交换信息的路由器被称作边界路由器(border/edgerouter)。
在互联网操作系统(CiscoIOS)中,IBGP通告的路由的距离为200,优先级比EBGP和任何内部网关协议(IGP)通告的路由都低。其他的路由器实现中,优先级顺序也是EBGP高于IGP,而IGP又高于IBGP。
10. 在建立邻居关系的时,我们都采用Loopback地址来建立,但要保证Loopback地址可达,采用Loopback地址建立的邻居不会因为链路的down而断。
11. IBGP路由通告:BGP Speaker从IBGP获得的路由不会通告给它的IBGP邻居(在一定的程度上能避免AS内的环路),就会造成不是与该路由器建立邻居不能学到路由,解决方案:①采用全连接②采用RR反射器③采用联盟的方式。
12. EBGP路由通告:BGP Speaker从EBGP获得的路由会向所有的BGP对等体通告(包括IBGP和EBGP)。
13. 路由器发送关于目标网络的BGP更新消息,更新的度量值被称为路径属性。属性可以是公认的或可选的、强制的或自由决定的、传递的或非传递的。属性也可以是部分的。并非组织的和有组合的都是合法的,路径属性分为4类:
公认必遵、公认自决、可选过渡、可选非过渡。
公认属性:是公认所有BGP实现都必须识别的属性,这些属性被传递给BGP邻居。
公认强制属性必须出现在路由描述中,公认自由决定属性可以不出现在路由描述中。
可选属性:
非公认属性被称为可选的,可选属性可以是传递的或非传递的。
可选属性不要求所有的BGP实现都支持。
对于不支持的可选传递属性,路由器将其原封不动的传递给其他BGP路由器,在这种情况下,属性被标记为部分的。
对于可选非传递属性,路由器必须将其删除,而不将其传递给其他BGP路由器。
14. 公认必遵(Well-Known Mandatory)
ORIGIN(起源):这个属性说明了源路由是怎样放到BGP表中的。有三个可能的源IGP,EGP,以及INCOMPLETE。路由器在多个路由选择的处理中使用这个信息。路由器选择具有最低ORIGIN类型的路径。
AS_PATH(AS路径):指出包含在UPDATE报文中的路由信息所经过的自治系统的序列。
Next_HOP(下一跳)声明路由器所获得的BGP路由的下一跳,对EBGP会话来说,下一跳就是通告该路由的邻居路由器的源地址。
15. 公认自决(Well-Known Discretionary)
LOCAL_PREF(本地优先级):本地优先级属性是用于告诉自治系统内的路由器在有多条路径的时候,怎样离开自治系统。本地优先级越高,路由优先级越高。
ATOMIC_AGGREGATE(原子聚合):原子聚合属性指出已被丢失了的信息。
可选过渡(Optional Transitive)
AGGREGATOR(聚合者):此属性标明了实施路由聚合的BGP路由器ID和聚合路由的路由器的AS号。
COMMUNITY(团体):此属性指共享一个公共属性的一组路由器。
16. 可选非过渡(Optional Nontransitive)
MED(多出口区分):该属性通知AS以外的路由器采用哪一条路径到达AS,它也被认为是路由的外部度量,低MED值表示高的优先级。
ORIGINATOR_ID(起源ID):路由反射器会附加到这个属性上,它携带本AS路由器的路由器ID,用以防止环路。
CLUSTER_LIST(簇列表):此属性显示了采用的反射路径。
17. BGP特征
1.用属性(Attribute)描述路径,而不是用度量值;
2.使用TCP(端口179)作为传输协议,继承了TCP的可靠性和面向连接的特性;
3.通过Keepalive信息来检验TCP的连接;
4.具有丰富的属性特征,方便实现基于策略的路由;
5.拥有自己的BGP表;
6.支持VLSM和CIDR;
7.适合在大型网络中使用。
18. 协议结构
Marker(16bytes)Length(2bytes)Type(1byte)
Marker–包含信息接收端可预测值。
Length–包含协议头的信息长度。
Type–信息类型。信息可能是:Open、Update、Notification、Keepalive。
打开(Open)分组,用来与相邻的另一个BGP发言人建立联系;
更新(Update)分组,用来发送某一路由的信息,以及列出多条要撤销的路由;
保活(Keepalive)分组,用来确认打开分组和周期性地证实邻站关系;
通知(Notification)分组,用来发送检测到的差错。
在传输协议连接建立之后,各端发送的第一个信息是Open信息。如果Open信息可以接收,会返回发送确认Open信息的Keepalive信息。一旦Open信息获得确认,Update、Keepalive和Notification信息进行相互交换。
BGP MCE
19. P(Provider)提供商路由器,是核心层设备,服务提供商是不连接任何CE路由器的骨干网路由设备,它相当于标签交换路由器(LSR)。
20. PE(ProviderEdge),即Provide的边缘设备,服务提供商骨干网的边缘路由器,它相当于标签边缘路由器(LER)。PE路由器连接CE路由器和P路由器,是最重要的网络节点。用户的流量通过PE路由器流入用户网络,或者通过PE路由器流到MPLS骨干网。
21. CE(CustomerEdge),用户边缘设备,服务提供商所连接的用户端路由器。CE路由器通过连接一个或多个PE路由器,为用户提供服务接入。CE路由器通常是一台IP路由器,它与连接的PE路由器建立邻接关系。
22. 用户站点:用户端网络的总称,一个用户站点可以通过一条或多条链路连接服务提供商的骨干网络。
23. MCE概述
MCE功能是Multi-CE的简称,具有MCE功能的网络设备可以在BGP/MPLS VPN组网应用中承担多个VPN实例的CE功能,减少用户网络设备的投入。
在现有的中国电信的CN2中国网通的宽带承载网都采用了MPLS VPN的技术
24. MPLS VPN的工作过程
通过标签协议栈,在和同一个VPN相连的PE路由之间建立一条隧道,标签协议栈就是使用两层标签,PE路由器之间的标签位于底层,而PE路由器和P路由器以及两个P路由器之间的标签位于协议栈的上层,下层协议对于上层协议是透明的。
25. 当属于某一VPN的用户数据进入MPLS主干网时,在CE路由器与PE路由器连接的接口上可以识别出该CE路由器属于那一个VPN,进而到该VPN对应的VRF中去读取下一跳的标签,并将标签作为内部标签加入标签协议栈。PE路由器继续查找自己的全局路由表
获得下一跳的接口和标签后,将该标签作为外部标签加入标签协议栈并将加入两层标签的数据包从相应的接口发给P路由器。在MPLS骨干网内部,P路由器根据外层标签转发数据包直到出口PE路由器。在出口PE路由器处,PE路由器去掉数据包标签,并将它
作为一般IP数据包转发给和它相连的CE路由器。由于每个数据包包含两个标签,需要在MPLS域中实现倒数第二跳标签出栈的做法。
26. MPLS VPN有三种类型的路由器,CE路由器、PE路由器和P路由器。其中,CE路由器是客户端路由器,为用户提供到PE路由器的连接;PE路由器是运营商边缘路由器,也就是MPLS网络中的标签边缘路由器(LER),它根据存放的路由信息将来自CE路由器
或标签交换路径(LSP)的VPN数据处理后进行转发,同时负责和其他PE路由器交换路由信息;P路由器是运营商网络主干路由器,也就是MPLS网络中的标签交换路由器(LSR),它根据分组的外层标签对VPN数据进行透明转发,P路由器只维护到PE路由器
的路由信息而不维护VPN相关的路由信息。
27. BGP MCE工作原理
BGP/MPLS VPN以隧道的方式解决了在公网中传送私网数据的问题,但传统的BGP/MPLS VPN架构要求每个VPN实例单独使用一个CE与PE相连,如图所示。
28. 随着用户业务的不断细化和安全需求的提高,很多情况下一个私有网络内的用户需要划分成多个VPN,不同VPN用户间的业务需要完全隔离。此时,为每个VPN单独配置一台CE将加大用户的设备开支和维护成本;而多个VPN共用一台CE,使用同一个路由表
项,又无法保证数据的安全性。使用MCE功能,可以有效解决多VPN网络带来的用户数据安全与网络成本之间的矛盾,它使用CE设备本身的VLAN接口编号与网络内的VPN进行绑定,并为每个VPN创建和维护独立的路由转发表(Multi-VRF)。
这样不但能够隔离私网内不同VPN的报文转发路径,而且通过与PE间的配合,也能够将每个VPN的路由正确发布至对端PE,保证VPN报文在公网内的传输。
29. 下面举例介绍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,将报文在指定的隧道内传输。
30. 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进行路由的传播。