一、BGP/MPLS隧道技术
1、各种隧道技术的优缺点
随着商业模式下分公司分支机构的快速增长,总公司与分公司之间使用大带宽、高安全性的"专线"网络互联需求日益增长。隧道技术得到广泛应用。隧道技术节省了用户建立私有网络的成本,个人用户和分支机构只需要与公共网络的Internet网络连接,通过隧道技术建立起不同个用户、分支和总部之间的管道,就能实现它们之间的私网互通。
隧道技术能够节省用户建立私有网络的成本,作为用户建立私有网络方式有很多种,前面写得有GRE、IPSec、L2 TP这些传统的隧道技术。
1.1、传统隧道技术-隧道建立在CE上。
CE(Custom Edge):直接与服务提供商相连的用户设备。 PE(Provider Edge Router):指骨干网上的边缘路由器,与CE相连,主要负责VPN业务的接入。 P (Provider Router):指骨干网上的核心路由器,主要完成路由和快速转发功能。由于网络规模不同,网络中可能不存在P路由器。PE路由器也可能同时是P路由器。
在CE与CE之间建立隧道,并直接传递路由信息,路由协议数据总是在客户设备之间交换,服务商对客户网络结构一无所知。典型代表是GRE、IPSec。 优点: 不同的客户地址空间可以重叠,保密性、安全性非常好。 缺点: 需要客户自己创建并维护隧道。通常客户不愿意,也没有这个能力。
1.2、传统隧道技术-隧道建立在PE上。
特点: 在PE上为每一个隧道用户建立相应的GRE隧道,路由信息在PE与PE之间传递,公网中的P设备不知道私网的路由信息。 优点: 客户把隧道的创建及维护完全交给服务商,保密性、安全性比较好。 缺点: 不同的隧道用户不能共享相同的地址空间,即使可以共享,则PE与CE之间的地址、tunnel之间的地址一定不能相同,并且必须使用大量的ACL和策略路由。在实际中不具备可行性。
总结: 传统隧道技术的本质是一种静态隧道,这好比是静态路由,所以他具有类似静态路由的全部缺陷:
- 所有的配置与部署都需要手工完成,而且具有N2问题:如果某个客户的隧道中新增了一个结点,则需要完成如下工作
- 在这个新增结点上建立与所有已存在的N个结点的隧道及相关的路由。
- 对于已存在的N个结点,需要在每个结点上都建立一个与新增结点之间的隧道及相关的路由。
- 由于是“静态”隧道,则无法反应网络的实时变化。
而且,如果隧道建立在CE上,则必须由用户维护,如果建立在PE上,则又无法解决地址冲突问题。
1.3、Peer-to-Peer虚拟专用网络
1、如同静态路由一样,所有具有“静态”性质的东西都不太适合大规模的应用和部署。所以,首先要解决的问题就是将虚拟专用网络的部署及路由发布变为动态性。Peer-to-Peer 虚拟专用网络的产生就是源于这种思想。 2、这里的Peer-to-Peer是指CE-to-PE,也就是要在CE与PE之间交换私网路由信息,然后由PE将这些私网路由在P-Network中传播这样这些私网路由会自动的传播到其他的PE上。 3、这种虚拟专用网络由于私网路由会泄露到公网上,所以必须严格的通过路由来控制,即:要确保同一个VPN的CE路由器上只能有本虚拟专用网络的路由。所以,通常CE与PE之间运行的路由协议,与P-Network上运行的路由协议是不同的,即使相同,也要有很好的路由过滤和选择的机制。
1.3.1、共享PE方式
所有虚拟专用网络用户的CE都连到同一台PE上,PE与不同的CE之间运行不同的路由协议(或者是相同路由协议的不同进程,比如OSPF)。由路由始发PE将这些路由发布到公网上,在接收端的PE上将这些路由过滤后再发给相应的CE设备。
缺点:为了防止连接在同一台PE上的不同CE之间互通,必须在PE上配置大量的ACL。
1.3.2、专用PE方式
为每一个虚拟专用网络单独准备一台PE路由器,PE和CE之间可以运行任意的路由协议,与其他虚拟专用网络无关。PE之间运行BGP,并使用路由属性进行过滤。 优点:无需配置任何的ACL了。 缺点:每一个虚拟专用网络用户都有新增一台专用的PE,代价过于昂贵了。
总结: Peer-to-Peer虚拟专用网络没有使用隧道技术,导致私网路由泄露到公网上,安全性很差。仍旧存在所有的设备无法共享相同的地址空间问题。
1.3.3、MPLS隧道技术
MPLS中的LSP正是一种天然的隧道,而且这种隧道的建立是基于LDP协议,又恰恰是一种动态的标签生成协议。解决了Peer-to-Peer虚拟专用网络没有隧道技术的问题。
BGP解决了地址冲突问题。 (1)、BGP是唯一支持大量路由的路由协议; (2)、BGP是基于TCP来建立连接,可以在不直接相连的路由器间交换信息,这使得P路由器中无须包含VPN路由信息; (3)、BGP可以运载附加在路由后的任何信息,作为可选的BGP属性,任何不了解这些属性的BGP路由器都将透明的转发它们,这使在PE路由器间传播路由非常简单。
BGP/MPLS隧道技术相比传统隧道技术解决了3个重大问题
- 实现隧道的动态建立;
- 解决了本地地址冲突问题;
- 私网路由易于控制。
MPLS隧道技术最大的优势在速度和QOS支持上。MPLS是目前唯一能够实现IP网中的Qos与流量工程的网络技术。
2、MPLS隧道
2.1、MPLS隧道的网络结构
CE(Custom Edge):直接与服务提供商相连的用户设备。 PE(Provider Edge Router):指骨干网上的边缘路由器,与CE相连,主要负责VPN业务的接入。 P (Provider Router):指骨干网上的核心路由器,主要完成路由和快速转发功能。由于网络规模不同,网络中可能不存在P路由器。PE路由器也可能同时是P路由器。
MPLS隧道的网络构造由服务提供商来完成。在这种网络构造中,由服务提供商向用户提供虚拟专用网络服务,用户感觉不到公共网络的存在,就好像拥有独立的网络资源一样。同样对于服务提供商骨干网络内部的P路由器,也就是不与CE直接相连的路由器而言,也不知道有虚拟专用网络的存在,而仅仅负责骨干网内部的数据传输。所有的虚拟专用网络的构建、连接和管理工作都是在PE上进行的。PE位于服务提供商网络的边缘,从PE的角度来看,用户的一个连通的IP系统被视为一个site,每一个site通过CE与PE相连,site是构成虚拟专用网络的基本单元。一个虚拟专用网络是由多个site组成的,一个site也可以同时属于不同的虚拟专用网络。属于同一个虚拟专用网络的两个site通过服务提供商的公共网络相连,虚拟专用网络数据在公共网络上传播,必须要保证数据传输的私有性和安全性。也就是说,从属于某个虚拟专用网络的site发送出来的报文只能转发到同样属于这个虚拟专用网络的site里去,而不能被转发到其他site中去。同时,任何两个没有共同的site的虚拟专用网络都可以使用重叠的地址空间,即在用户的私有网络中使用自己独立的地址空间,而不用考虑是否与其他虚拟专用网络或公网的地址空间冲突。所有这些就都需要依赖于VRF(VPN Routing & Forwarding Instance,虚拟路由与转发)。
2.2、MPLS隧道转发
(1)、根据用户2的具体IP地址通过MPLS转发。 R1、R2、R3、R4路由器运行MPLS协议,并建立起了R1到R4之间的标签访问路径。用户1访问用户2,报文的目的地址是22.1.1.1从R1进入,该报文将进行MPLS转发,在LSP上的LSR只检查MPLS标签,在R1设备为入节点,通过标签压入将报文封装在MPLS标签里。
(2)、根据出节点的Loopback地址进行MPLS转发,MPLS隧道建立。 入节点上的匹配,入节点通过接收到IP地址匹配出该报文的出节点是哪台设备,先查RIB(路由信息表)并发现对应路由表项有与之关联的LIB(标签信息表)获知出节点是R4设备。在入节点和出节点上配置一个Loopback地址,作为入节点和出节点设备的标识,这样就在入节点和出节点之间建立了一条MPLS网络,在这条网络中建立起了R1到R4之间的标签访问路径。这时就会形成到R4的Loopback地址44.1.1.1/32标签转发表。
私网报文在MPLS网络内部按照MPLS转发,到达R3设备,标签弹出,普通IP报文到达R4设备,通过查询路由表传送到用户2。R1到R4之间形成一条隧道,隧道内的所有LSR设备直接根据报文的MPLS标签进行数据转发,无须识别封装在MPLS标签内部IP报文。从此可发现只须在入节点、出节点上进行配置,私网报文就能成功穿越公共网络。 MPLS隧道技术只需要在公共网络上运行MPLS协议,就可以依靠MPLS的动态标签分配原理,在所有的用户公网出口设备之间建立连接对方的标签转发协议。
3、VRF虚拟网络路由转发实例
上图中公网中同一台PE连接的用户都使用了192.168.0.0/24网段的IP地址,这时会造成PE设备无法区分接收到的数据流,到底传给谁?同样另一台PE连接的用户都使用了172.16.10.0/24网段。
BGP解决了地址冲突问题。是如何解决的?是通过多VRF(Virtual Routing and Forwarding,虚拟路由与转发)技术可以解决。
3.1、什么是VRF?
如何理解VRF?VRF(Virtual Routing and Forwarding,虚拟路由与转发),每一个VRF可以看作虚拟的路由器,好像是一台专用的PE设备。该虚拟路由器包括如下元素:
- 一张独立的路由表,当然也包括了独立的地址空间。
- 一组归属于这个VRF的接口的集合。
- 一组只用于本VRF的路由协议。
对于每个PE,可以维护一个或多个VRF,同时维护一个公网的路由表(也叫全局路由表),多个VRF实例相互分离独立。也就是一台路由器分成多个VRF,每个VRF之间互相独立,互相不可见。各自拥有独立的路由表项、端口、路由协议等。
PE设备:针对每一个CE(直接与服务提供商相连的用户设备),创建一个与之对应的VRF。一个VRF包括一张路由表和一张转发表、一组使用这个VRF的接口集合以及一组与之相关的策略。VRF为每个CE维护逻辑上分离的路由表。每一个VRF维护独立的地址空间,在VRF中应当包含了到达所有与本CE属于同一个虚拟专用网络的CE路由信息。这样,在PE上,来自CE的报文就可以根据相应的VRF来进行转发,而不用担心不同VPN之间地址空间的冲突。
在CE和PE之间:通过静态路由、RIP、OSPF、EBGP等来传播路由信息,在骨干网内通过运行IGP(内部路由协议)来保证内部的连通性,通过IBGP来传播虚拟专用网络组成信息和路由。分离的路由表防止了数据泄漏出虚拟专用网络之外,同时防止了虚拟专用网络之外的数据进入。
VRF接口:VRF可以与任何类型的接口关联起来,不管是物理接口还是逻辑接口(例如以太网口,子接口,虚接口等)。这样,当报文直接通过一个与VRF关联的接口到达时,只需在该VRF中查找报文的目的地址。一个VRF接口,即当一个接口与一个VRF关联起来,这个接口不再是传统意义上的公用网络的接口,而是一个私有网络的接口。VRF可以与任何类型的接口关联起来,不管是物理接口还是逻辑接口。
二、MP-BGP路由协议
MPLS的标签分两层,外层是LDP分配的,内层是多协议MP-BGP分配的。外层标签是转发层面。虚拟专用网络(VPN)是内层标签,是控制层面是BGP、IGP的重分布。MPLS是一种3层的虚拟专用网络技术。MPLS 虚拟专用网络使用BGP在服务提供商骨干网上发布虚拟专用网络路由,使用MPLS在服务提供商骨干网上转发虚拟专用网络报文。
1、MP-BGP技术
1.1、MP-BGP路由协议的产生
BGP路由协议更适用于隧道技术有两个特点具体如下: (1)、BGP路由协议是基于TCP连接建立路由邻居的,可以实现跨越多台路由器建立BGP邻居,直接交互路由信息。这样在组网中,就无须经过中间的P设备转达,隧道中间的P设备,不须要了解虚拟专用网络的信息;另外,不同的虚拟专用网络间地址空间会有重叠,如果这些虚拟专用网络都经过P设备转达,P设备上将无法区分。
(2)、BGP路由协议的协议报文是基于TLV结构的,具有扩展属性位,便于携带更多的表明由特征的信息。三元组TLV(attribute type, attribute length, attribute value)。
正因为这两个特性,BGP路由协议被BGP/MPLS技术选用于穿越公网传递私网路由的路由协议。为适应虚拟专用网络技术的需要,BGP路由协议进行了相应的扩展,扩展后的BGP路由协议称为MP-BGP(Multiprotocol BGP,多协议BGP路由协议)。
普通BGP路由协议里,BGP路由协议通过BGP更新消息发布和删除路由。
BGP更新消息主要包括三部分:
- Withdrawn Routes:之前发布过的,现在不再有效的路由信息。
- Path Attributes:路由信息的属性,是BGP用以进行路由控制和决策的信息,如LP属性、MED属性等。
- NLRI:路由信息,由一个或者多个IPv4地址前缀组成,这个就是需要发布给邻居的新生效的路由信息。
传统的BGP-4只能管理IPv4单播路由信息,对于使用其它网络层协议(如IPv6、组播等)的应用,在跨AS传播时就受到一定限制。RFC2858对BGP进行了扩展,扩展后的路由协议称为MP-BGP。现在MP-BGP标准为RFC4760。
MP-BGP对IPv6单播网络的支持特性称为BGP4+,对IPv4组播网络的支持特性称为MBGP(Multicast BGP)。MP-BGP为IPv6单播网络和IPv4组播网络建立独立的拓扑结构,并将路由信息储存在独立的路由表中,保持单播IPv4网络、单播IPv6网络和组播网络之间路由信息相互隔离,也就实现了用单独的路由策略维护各自网络的路由。
1.2、MP-BGP对比BGP的主要变化。
1、MP-BGP新增路径属性(MP_REACH_NLRI、MP_UNREACH_NLRI)和地址族(address family(AFI))实现对 IPv6、组播、VPN功能的支持,并且对BGP协议原有的团体属性进行了扩展,新增了扩展团体属性。
Path Attributes(路由信息的属性)中增加的两项: MP_REACH_NLRI:多协议可达NLRI。用于发布可达路由及下一跳信息。 MP_UNREACH_NLRI:多协议不可达NLRI。用于撤销不可达路由。
属性编号 | 属性名称 | 类别/类型代码 |
---|
1 | Origin | 公认必遵/代码1 | 2 | AS_PATH | 公认必遵/代码2 | 3 | Next_Hop | 公认必遵/代码3 | 4 | MED | 可选非过度属性/代码4 | 5 | Local-Pref | 公认任意属性/代码5 | 6 | Atomic-aggregate | 公认任意属性/代码6 | 7 | Aggregator | 可选过渡属性/代码7 | 8 | Community | 可选过渡属性/代码8 | 9 | Originator-ID | 可选过渡属性/代码9 | 10 | Cluster_List | 可选过渡属性/代码10 | 11 | DPA | BGP的目的点属性 | 12 | 通告者 | BGP/IDRP路由服务属性 | 13 | RCIP_PATH/Cluster_ID | BGP/IDRP路由服务属性 | 14 | MP_REACH_NLRI | 可选非过渡属性/代码14 | 15 | MP_UNREACH_NLRI | 可选非过渡属性/代码15 | 16 | Extended_CommunitiesI | |
注意: (1)、携带了MP_REACH_NLRI属性的Update消息必须携带用于EBGP和IBGP信息交换的Origin属性和AS_Path属性。MP_REACH_NLRI+Origin属性+AS_Path属性 (2)、这个Update消息在IBGP对等体之间传播,还要携带Local_Pref属性。 (3)、这条消息是从EBGP对等体接收的,本地系统需要检查AS_Path列表最左侧的AS号是否与发送该信息的AS号一致。如果不一致,本地系统会发送Notification消息(携带Update消息错误码)给对端。 (4)、Update消息中MP_REACH_NLRI属性没有携带NLRI,则该消息也不允许携带Next_Hop属性。 (5)、这条消息中包含了Next_Hop属性,Next_Hop属性将被忽略。多协议不可达NLRI用于撤销一条或多条不可达路由。 (6)、携带了MP_UNREACH_NLRI属性的Update消息不再需要携带其他的属性。
MP-BGP协议通过对BGP的扩展,不仅可以用于BGP/MPLS虚拟专用网络技术中传递私网路由,还可以用在IPv6、6PE、L2VPN等技术中,从而有更广泛的应用。
2、MP-BGP协议对比原BGP改动分为三点: (1)、新增的MP_REACH_NLRI属性代替了原BGP更新消息的NLRI及Next-hop属性。 (2)、新增的MP_UNREACH_NLRI属性代替了原BGP更新消息里面的Withdrawn Routes(撤销路由)。 (3)、在BGP属性部分增加的一种新的属性Extended_Communities属性。
原BGP新增路由:
MP-BGP新增路由: 注意:Path Attributes路径属性 Path Attributes 是个变长字段,它是一个 list,包含 N 个三元组(attribute type, attribute length, attribute value)。也就是TLV结构。
Address Family Identifier和Subsequent Address Family Identifier一起用于指示该属性通告的可达性信息所属的地址族。
Address-family:说明下面路由前缀将采用的地址类型,不仅包含原先的普通IPv4地址,可能是IPv6地址,或者是用于BGP/MPLS 虚拟专用网络中传递私网路由所要用到的VPNv4地址。
NLRI(Network Layer Reachability Information):表示的是新增路由的目的网段信息,如果在Address-family区域中指明采用的地址簇是VPNv4地址簇,那么该处格式将包含两个部分,第一部分是私网标签,是一个MPLS标签值;第二部分是一个VPNv4地址,其格式是RD+IPv4地址。VPNv4地址格式是BGP/MPLS 虚拟专用网络传递私网路由所需要的。
这里可以携带多个Label,每个Label的前20位是标签,后4位的前3位是EXP域,最后一位用于指示是否是栈底。 这个标签必须是MP_REACH_NLRI属性中Next_Hop属性所指的LSR所分配。
MP_UNREACH_NLRI属性代替了原BGP更新消息里面的Withdrawn Routes(撤销路由)。
1.3、Route Target属性
MP-BGP的最后一个改动是增加了一个扩展团体属性(Extended_CommunitiesI),并且起了一个新名字:RT(Route Target)。这个翻译过来就是路由目标,通常被称为RT属性。
扩展的community有如下两种格式:其中type字段为0x0002或者0x0102时表示RT。通常由用户根据自己的使用习惯来决定使用哪种格式。 0x0002类型的RT格式为2字节的AS号加上4字节的用户自定义数字,如100:1、200:1等,100、200通常为BGP的AS号,AS号不是必须配置,也可不配置;后面的1、2通常为VPN编号,表示不同的虚拟专用网络。
0x0102类型的RT格式为4字节的IP地址加上2字节的用户自定义数字,如192.168.0.1:1、10.10.10.1:2等,前面的IP地址通常为PE设备的Router ID,与上而一样也可不配置;后面的1、2通常为VPN编号,表示不同的虚拟专用网络。
0x0202类型的RT格式为4字节的AS号加上2字节的用户自定义数字,如65538:1、65540:2等,自治系统号最小值为65536;后面的1、2通常为VPN编号,表示不同的虚拟专用网络。
RT的本质是每个VRF表达自己的路由取舍及喜好的方式。可以分为两部分:Export Target与Import Target。
- 在一个VRF中,在发布路由时使用RT的export规则。直接发送给其他的PE设备;
- 在接收端的PE上,接收所有的路由,并根据每个VRF配置的RT的import规则进行检查,如果与路由中的RT属性匹配(“或”方式比较,有交集就接收。),则将该路由加入到相应的VRF中。
RT实际上是一个属性列表,可以配置一个或多个Export Target与import Target属性值。举例:PE1设备接收到一台CE设备的路由时,会将该接口所属的VRF的export值加入到该路由的target属性中。
PE1发送时,MP-BGP会携带所有的Export Target值,在同一个虚拟专用网络的PE接收到路由信息中携带有RT Export Targe值,接收PE将此值与本地虚拟专用网络的import Target属性值进行比较,从而决定是否加入到VRF路由表,以及加入到哪个VRF路由表中。
RT的灵活应用:
- Intranet模式
一个VPN中的所有用户形成闭合用户群,相互之间能够进行流量转发,VPN中的用户不能与任何本VPN以外的用户通信。这种组网方式叫做Intranet模式,其站点通常是属于同一个组织。 - Hub-spoke模式
中心访问控制设备所在站点称为Hub站点,其他用户站点称为Spoke站点。用户Hub站点可以与每一Spoke站点进行互通,而每一Spoke站点之间禁止相互访问。简单来说就是分部如果需要互访,都通过总部来进行。 - Extrance模式
外联网模式,各分部实现互相访问。
由于每个RT Export Target与import Target都可以配置多个属性,可以实现非常灵活的虚拟专用网络(VPN)访问控制。以上图为例设置总部PE的Import Target的值为100:2,Export Target的值为100:1,设置分部的PEImport Target的值为100:1,Export Target的值为100:2,当分部发送路由时,会在MP-BGP路由信息中携带RT属性值100:2,当总部收到路由后,对比发现本地的Import Target的属性值是100:2,相同则接收该路由,将此路由收录到虚拟专用网络路由表中。
|