MPLS技术精讲总结!快来看!
MPLS技术精讲总结!快来看!
MPLS VPN的出现主要是为了要解决传统VPN技术的一些固有缺陷,这有很多技术问题需要解决的,其中最重要的是地址重叠的问题。
要解决地址空间重叠的问题主要有以下几个问题:
1.本地路由冲突问题;
2.路由在网络中的传播问题;
3.报文的转发问题;
从上述这些技术难点来看,主要问题都存在于和路由相关的特性,所以要解决这些问题必须从路由协议上进行考虑。BGP具备很多特点使其十分适合改造以满足VPN网络上地址重叠的问题,它的特点如下:
1.公共网络中VPN路由数目非常大,BGP是目前唯一支持大量路由的路由协议;
2.BGP也是为在不直接相连的路由器间交换信息而设计的,这使得P路由器中无需包含VPN路由信息;
3.BGP可以运载附加在路由后的任何信息,作为可选的BGP属性,任何不了解这些属性的BGP路由器都将透明的转发它们(当然这些属性都是可传递的),这使在PE路由器间传播路由非常简单。
解决思路如下:
1.本地路由冲突问题,可以通过在同一台路由器上创建不同的路由表解决,而不同的接口可以分属不同的路由表中,这就相当于将一台共享PE模拟成多台专用PE。
2.可以在路由传递的过程中为这条路由再添加一个标识,用以区别不同的VPN。
3.由于IP报文的格式不可更改,但可以在IP头之外加上一些信息,由始发的VPN打上标记,这样PE在接收报文时可以根据这个标记进行转发。
具体操作是在PE设备上划分不同的VRF(VPN路由转发实例-VPN Routing & Forwarding Instance,我司称之为VPN Instance),每一个VRF可以看作虚拟的路由器,好像是一台专用的PE设备。这样每个VRF拥有自己独立的路由表、接口集合以及只用于本VRF的路由协议。
实现VRF本地路由区分并不困难,但是解决远端路由区分就要在PE上使用特定的策略规则来协调各VRF和全局路由表之间的关系。这个主要是指PE设备如何分辨收到的路由是属于VPN的路由还是公共网络上的全局路由。
解决的办法是给VPN路由加上一个标记信息,由不同的标记来标示不同的路由,并由PE设备根据这个标记来判断该路由应该被写入哪个VRF中。这个标记信息称为RT属性,也是BGP中改造后的团体属性。这样PE设备就可以通过在特定路由条目中加入RT属性来区分不同VRF的路由。
来看一下团体属性是如何改造使之成为RT属性的:传统的团体属性格式如下:
扩展后的团体属性(也就是RT)格式如下:
扩展的community有如下两种格式:其中type字段为0x0002或者0x0102时表示RT。RT是作为BGP路由的属性进行传递的,并且它是任选可传递的属性。扩展的团体属性值是32bit的,可以提供更多的路由区分。
RT的本质是每个VRF表达自己的路由取舍及喜好的方式。可以分为两部分:Export Target与Import Target;前者表示了我发出的路由的属性,而后者表示了我对哪些路由感兴趣。具体例子不再详细说明了,原理比较简单。
标准的BGP只能处理IPv4路由,所以如果不同的VPN使用相同的IPv4地址前缀,在接收端就无法分辨不同VPN的路由。使用RT属性是可以部分解决这个问题的,但同时也存在一定的局限性。我们来分析一下通过RT如何解决这个问题及它的局限性。
1.当PE收到不同VPN发过来的路由后,根据RT属性决定路由进入哪个VRF,这样就可以保证不同VPN的路由不具备可比性,操作可以正常进行。
2.路由撤销的时候BGP报文是不带属性的,RT肯定也就不起作用了,会导致所有VPN中的相同路由都被撤销掉。
所以RT虽然具备了这个功能但并不是所有的时候都好用,必须有一种标记可以和IPv4地址绑定到一起来从根本上解决这个问题——这个标记我们称之为RD。RD是附加在IPv4地址前面的一种标记,它的格式如下所示:
图6 RD格式示意图
其中类型字段定义了两个值:0和1。
① 对于类型0,管理器子区域包括2字节,分配数值字段包括4字节。管理器子区域使用自治系统号码(ASN),分配数值子区域为服务提供商管理的数值空间。类型0不能使用私有自治系统号码,可能会造成冲突。如果要使用私有的自治系统,可以使用类型1;
② 对于类型1,管理器子区域包括4字节,分配数值字段包括2字节。管理器子区域使用IPv4地址,分配数值子区域为服务提供商管理的数值空间;
RD的结构和RT相似,但它们是有本质区别的,RT是BGP路由的扩展属性,而RD是附加在IPv4地址前的作为地址的一部分存在,这点需要大家注意。
关于RD的一些应用上的特点如下:
① 在IPv4地址加上RD之后,就变成VPN-IPv4地址族了。
② 理论上可以为每个VRF配置一个RD,但要保证这个RD全球唯一。
③ 通常建议为每个VPN都配置相同的RD。
④ VPN-IPv4地址仅用于服务供应商网络内部。在PE发布路由时添加,在PE接收路由后放在本地路由表中,用来与后来接收到的路由进行比较。CE不知道使用的是VPN-IPv4地址。
⑤ 在其穿越供应商骨干时,在VPN数据流量的包头中没有携带VPN-IPv4地址。RD只在骨干网路由协议交换路由时使用。并且PE从CE接收的标准的路由是IPv4路由,如果需要发布给其它的PE路由器,此时需要为这条路由附加一个RD。
正因为RD具有这些特点,所以如果两个VRF中存在相同的地址,但是RD不同,则两个VRF一定不能互访,间接互访也不行。这是因为在数据转发时数据报文中并不携带RD,这样数据到达目的地时PE就会在不同的VRF中查找到去往相同目的地的路由条目,从而造成错误的转发。虽然RD是在PE设备路由交换的过程中携带,但是RD并不会影响不同VRF之间的路由选择以及VPN的形成,这些事情是由RT搞定的。
前面两个问题:在PE本地的路由冲突和路由网络传播过程中的冲突问题都已解决。但是在数据转发时如果接收端PE的两个本地VRF中同时存在10.0.0.0/24的路由,当它接收到一个目的地址为10.0.0.1的报文时,它如何知道该把这个报文发给与哪个VRF相连的CE?
解决办法是通过对BGP协议的改造,改造后的MP-IBGP进行NLRI信息交换时会附加RD、标签等各种信息,不同的数据报文到PE时根据MP-IBGP给不同VRF分配的私网标签进行内层标签标记,到对端PE后,根据对应该VRF的标签从而来转发给对应的VRF。和LDP协议类似,标签的分配是在数据转发发生之前完成的。不同的是MP-IBGP分配标签是和路由交换同时进行的。格式如下:
图7 MP-IBGP NLRI报文格式
在这之后是RT信息,如下图所示↓:
图8 MP-IBGP NLRI报文RT列表
这样,整个MPLS VPN的路由交换及数据转发问题就都解决了。下面我们来介绍一下MPLS L3 VPN的路由交换及数据转发的流程。
MPLS L3 VPN的路由交换时,PE路由器运行单个路由协议(MP-IBGP),来交换所有的VPN路由。为支持VPN客户空间重叠的情况,给VPN地址空间加上RD,使其是唯一的。并使用RT属性来标示路由所属的VRF。
MPLS/VPN的路由交换过程主要分为四部分:
1.CE与PE之间的路由交换;
2.VRF路由注入到MP-IBGP的过程;
3.公网标签分配过程;
4.MP-IBGP路由注入到VRF的过程。
图9 CE与PE之间路由交换示意图
如图所示,交换过程如下:
在PE上为不同的VPN站点配置VRF。PE上维护多个独立的路由表,包括公网和私网(VRF)路由表,其中:
1.公网路由表:包含全部PE和P路由器之间的路由,由骨干网IGP产生。
2.私网路由表:包含本VPN用户可达信息的路由和转发表。
PE和CE之间通过标准的EBGP、OSPF、RIP或者静态路由交换路由信息。在这个过程中,除PE设备需要将CE设备传来的路由分别存储在不同的VRF外(这只和路由接收的接口有关,和其它MPLS VPN特性无关)其它操作和普通的路由交换没有区别。
静态路由、RIP都是标准的协议,所有的CE端都可以使用相同的路由协议,但是需要在PE端的每个VRF运行不同的实例,相互之间没有干扰,与PE的MP-IBGP之间只是简单的互相引入操作。EBGP的情况与RIP类似,也是普通的EBGP而非MP-EBPG,只交换经过PE过滤后的本VPN路由。
但选择OSPF作为PE与CE之间的路由协议,情况相对复杂。需要对OSPF做很多修改,以将本site的LSA放在BGP的扩展community属性中携带,与远端VPN中的OSPF之间交换LSA,区域的划分也会复杂许多,此处不再展开讲了。
图10 VRF路由注入到MP-IBGP及PE间路由交换示意图
在从CE端接收到路由信息后,PE路由器需要对该路由加上RD(RD为手工配置),使其变为一条VPN-IPv4路由。然后在路由通告中更改下一跳属性为自己(通常是自己的loopback地址),为这条路由加上私网标签(由MP-IBGP协议随机自动生成,无需配置)、加上RT属性(RT需手工配置)。这一系列工作完成后,由PE发给其它所有的PE邻居。其它的PE邻居也进行同样的操作用于交换不同CE端的路由。
图11 公网标签分配过程示意图
如图所示,公网标签分配的过程如下:
首先PE和P路由器通过骨干网IGP学习到BGP邻居下一跳的地址。通过运行LDP协议,分配标签,建立LSP通道。标签栈用于报文转发,外层标签用来指示如何到达BGP下一跳 ,内层标签表示报文的出接口或者属于哪个VRF(属于哪个VPN)。MPLS节点转发是基于外层标签,而不管内层标签是多少。此时通过MPLS的外层标签空间,PE设备间就可以进行正常的路由交换了。
图12 MP-IBGP路由注入到VRF的过程示意图
接收端PE在接收到发送端PE发送的路由后,将VPN-v4路由变为IPv4路由,并且根据本地VRF的import RT属性将路由条目加入到相应的VRF中,私网标签保留,记录到转发表中,留做转发时使用。再由本VRF的路由协议引入并传递给相应的CE。发给CE时下一跳为接收端PE自己的接口地址。这样就完成了从MP-IBGP路由注入到VRF的过程。
经过以上四个步骤,整个MPLS VPN网络的路由交换就完成了。此时VPN构建完成,可以进行正常的业务数据转发了。
MPLS/VPN的数据转发过程也需要分为两部分来进行处理:
1.从CE到Ingress PE。
2.Ingress PE->Egress PE->CE。
图13 数据转发--从CE到IngressPE过程示意图
CE将报文发给与其相连的VRF接口,PE在本VRF的路由表中进行查找,得到了该路由的公网下一跳地址(即:对端PE的loopback地址)和私网标签。在把该报文封装一层私网标签后,在公网的标签转发表中查找下一跳地址,再封装一层公网标签,交与MPLS转发。
图14 数据转发--Ingress PE->Egress PE->CE
如前一部分所述,交由MPLS转发的报文在公网上沿着LSP转发,并根据途径的每一台P设备的标签转发表进行标签交换。在倒数第二跳P设备处,将外层的公网标签弹出,并由该P设备交给目的PE设备,PE设备根据内层的私网标签判断该报文属于哪个VRF。然后弹出内层的私网标签,在目的VRF中查找路由表,根据下一跳发给相应的CE。这样VPN站点间的一次数据交换就完成了。
SOO的概念:扩展团体路由源,SOO用于当站点与MPLS/VPN主干中的多个PE路由器相连并且使用了AS覆盖特性时防止路由环路。根据路由的SOO,PE路由器确定它从哪个站点获得,这样其它的PE路由器便不会将该路由重新通告给该站点。各台相关PE都需要配置,是扩展团体属性的一部分。
图15 SOO特性示意图
位于HANGZHOU的PE收到来自BEIJING PE的关于192.1.1.0/24的路由更新。更新中包含一个值为100:28的SOO,它是位于HANGZHOU PE路由器上配置的VRF SOO之一,因此该路由不会再被通告到客户站点。(实际情况是应该通告呢?)
AS覆盖特性:当客户站点和PE间运行EBGP时,客户在其不同站点使用相同的AS号,通过在PE上重写VPN站点路由中的AS_PATH,使得路径中只包含MPLS/VPN主干的自治系统号,以避免对端站点不接受该路由。该特性与SOO特性一起使用以避免出现路由环路。在配置了AS覆盖特性后,PE路由器在将路由通告给CE时对路由进行检查,相关操作如下:
1.如果AS_PATH中的最后一个AS号与邻居的AS号相同,则PE将其替换为自己的AS号。
2.如果AS_PATH中有多个AS号与最后的AS号相同,PE将这些AS号都替换为自己的AS号。
图16 AS覆盖特性示意图
从HANGZHOU PE传递到BEIJING PE的关于196.7.25.0/24的更新消息中,AS-PATH与BEIJING CE的AS号相同,在BEIJING PE上将该路由传递给BEIJING CE时会更改AS-PATH属性为1,1,这样这条路由会被BEIJING CE正常接收。
自动路由过滤技术(ARF)特性:目前MPLS/VPN进行路由交换时存在一个问题是:所有的VPN路由都会存放在一个全局的BGP路由表中,不管该PE的VRF是否需要该路由,该路由条目都会存放,这样对PE的内存和链路带宽都是一种浪费。
自动路由过滤技术可以满足这种过滤的需求,该功能在所有的PE路由器上都可用。它的特点是将包含的RT与PE配置的任何一个VRF都不匹配的路由条目自动过滤掉,以减少PE必须存储到内存中的信息量。
图17 自动路由过滤技术(ARF)特性示意图
从SHANGHAI来的路由条目携带的RT与BEIJING的PE路由器中所配置的不相匹配,导致在该PE上更新被拒绝。
路由刷新特性:当使用了自动路由过滤技术将PE上不需要的路由过滤掉以后,此时PE的策略发生了变化,如添加了新的VRF或修改了已有的VRF,则PE路由器需要获得以前被丢弃的路由。此时需要更改过滤特性的配置使其接受该路由,但是按照BGP的处理机制,路由始发者只会发送更新的路由信息给邻居而不会重传路由表,所以需要有一种机制来保证路由的正常学习。
路由刷新特性用来解决这个问题。使用这个特性后,PE路由器将在其配置被修改后的一段时间后,请求其邻居重传路由选择信息,以获得前面丢弃掉的路由。延时是必要的,因为在PE上可能要做多处修改,而我们希望只发一次刷新。路由刷新特性是默认开启的不需要额外的配置。
图18 路由刷新特性示意图
1.BEIJING PE新添加了一个站点,该站点属于VPN B。
2.BEIJING的PE给其邻居发送一条路由刷新消息要求重传VPN路由。
3.其PE邻居将VPN路由重传给BEIJING的PE,使其学习到该VPN的路由。当然前期必须把过滤策略去掉。
4.我们也可以手工的reset BGP来实现路由刷新,但效率较低。
——————————————————
网工界市场认可度极高的华为认证,你考了吗?
拿下华为HCIE认证之后,你可以:
跨越90%企业的招聘硬门槛
增加70%就业机会
拿下BAT全国TOP100大厂敲门砖
体系化得到网络技术硬实力
技术大佬年薪可达30w+