本文来自通信人家园 作者:小雨哥
3.6 MPLS多协议标签交换
MPLS—(Multi-Protocol Label Switching)多协议标签交换,是一种用标签交换代替路由,实现数据包快速转发的技术体系,它的价值在于能够在一个无连接的网络中引入连接模式的特性;其主要优点是在提供IP业务时能确保QoS和安全性,具有流量工程能力。
举个例子,我们在某网站上下载一部几个G的电影,文件会分成至少几百万个数据包从服务器传送到你的电脑,这几百万个数据包的源地址和目的地址都是相同的。按照传统的路由方式,对于每一个数据包路由器都需要查找一次路由表,决定从哪个接口转发,一共要进行几百万次的路由,这样的方式显然是很浪费路由器的能力资源的。
这就像一百个人走到一个地方问你路,他们的目的地是同一个地方,你就没有必要给每个人都说一遍怎么走,只要给第一个人指路之后,告诉后面的人:全部跟着第一个人走就好了。对于数据包的路由,我们同样可以只对第一个数据包进行路由选择,后面的相同目的地的数据包都贴上相同的标签,按照第一次路由的结果进行转发。
MPLS技术最初就是为了提高路由器的转发效率而问世的,从另一方面我们也不难发现,对于MPLS网络来说,到相同的目的的数据包被分发相同的标签,走相同的路径,这样就在IP网中打通出一条虚拟的“路(LSP)”出来,也就是将IP网从无连接变成了有连接的网络,那真是,世界上本没有路,走的人多了,便变成了路,有了“路”之后在此基础上对数据转发路径的管理也就可以实现了。
总结一下:标签交换的效果有2个:提高了转发效率,无连接变为有连接。
MPLS相关名词、术语的解释:
多协议: MPLS不但可以支持多种网络层协议,还可以兼容第二层的多种链路层技术。
标签交换:它提供了一种方式,在MPLS边缘的路由器(LER)将IP地址映射为简单的具有固定长度的标签,将标签添加到二层和三层帧格式之间,在MPLS网络的内部标签交换路由器(LSR)使用标签快速交换代替路由。
QOS:服务质量(Quality of Service),是一种网络安全机制。当网络过载或拥塞时,QoS 能通过业务的优先级划分,确保重要业务量不受延迟或丢弃。克拉玛依火灾中“让领导先走”就是QOS在现实中的生动的例子。
流量工程:合理分配流量,保证网络资源得到充分的利用,避免网络过度闲置和拥塞。与流量工程对应的是网络工程,如果将网络工程比作道路新建、改扩建的话,流量工程就是缓堵保畅。
FEC:转发等价类,如果入口路由器收到分组都到达同一子网的,则这些分组就属于同一类,叫做转发等价类,同一FEC的分组都会转发给同样的下一跳。前面问路的例子中,那100个人就属于同一个转发等价类。
LSP:标签交换路径(Label Switched Path),一个转发等价类在MPLS网络中经过的路径。
LER:标签边缘路由器(Label Edge Router),位于MPLS域边缘连接其它用户网络的路由器,主要完成连接MPLS域和非MPLS域以及连接不同MPLS域,实现FEC划分,分发标签,剥去标签。
LSR:标签交换路由器(Label switching Router),MPLS区域内部的路由器,负责标签交换和标签分发。
MPLS的原理:
MPLS的原理概括下来就是:一次路由,多次转发(交换),具体过程如下:
MPLS根据数据包的流向的路径,按照某种方式为每个路由器分配标签,同一FEC可以对应一个或者多个标签(为了负荷分担),但是不同FEC一定对应不同的标签。
标签分发方式有两种,下游按需标签分发(DOD)和下游自主标签分发(DU),DOD就是收到上游标签分配申请才分配标签,DU是下游自主分配标签,无需上游申请。
标签分发之后LSR需要将FEC与标签映射关系向其他LSR通告,通告分为两种方式:独立LSP控制和有序LSP控制方式。独立控制是指LSR分发标签后即通告给上游LSR,有序控制是指LSR需要收到下游LSR对此LSP通告后向上游发送映射通告。
LSR对于收到的FEC映射标签,可以完全保留,也可以只选择LSP的映射标签保持,前者叫做自有保持方式,后者叫做保守保持方式。
标签的分发、通告、保持方式,涵盖了LSR对于标签处理的不同方面,假设一条LSP从上游至下游依次经过A、B、C、D、E多个LSR,分发方式DOD就是只有路径上这些路由器才会为此FEC分发标签,而DU方式是指其他非LSP上的节点也会为此FEC分配标签;独立控制方式是指ABCDE同时向上游通告,而有序通告则需要E通告给D之后,D才会给C通告,以此类推。自由保持方式是指收到的映射全部保留,保守保持是指A只保留B通告的映射,将其他的删除。
其实这些方式都是协议内部的事,我们只需要知道,大家通过一系列的流程,获得了对于一个FEC的标签分配方式。
标签全部分发通告完成之后,LSR就可以根据标签进行交换:进入MPLS网络的数据包,在LER处根据IP头部判定FEC并查找标签、出接口,将标签插入到二层头和三层头部中间,从出接口转发出去。
带有标签的MPLS包在LSR路由器处,只查找入标签对应的出标签和出口,进行标签交换(用入标签替换出标签),在出接口发送分组,标签在离开MPLS域的LER处被剥离。由于标签交换的原理类似于二层交换,都是固定字符的匹配查找,所以数据转发的效率会大大提高。
传统路由方式
MPLS标签转发
MPLS协议栈
同路由的分类一样,标签交换路径LSP分为静态LSP和动态LSP两种。静态LSP由管理员手工配置,动态LSP则利用路由协议和标签发布协议动态产生。
动态的LSP功能实现模块由两部分组成:控制单元和转发单元。
控制单元负责标签的分配、路由的选择、标签转发表的建立、标签交换路径的建立、拆除等工作,转发单元负责按照LIB(标签信息表)替换标签并转发数据包,类似于二层交换机的功能。
控制单元协议包括路由协议和信令协议。路由协议就是前面介绍的OSPF、ISIS、BGP等,路由协议通过路由器之间的信息交互形成路由表、网络拓扑,收集链路状态信息。
信令协议(标签分发协议)是MPLS的控制协议,负责FEC划分、标签的分配以及LSP的建立和维护等一系列操作,MPLS可以使用多种标签发布协议,包括专为标签发布而制定的协议,例如:LDP(标签分发协议)、CR-LDP(限制路由的标签分发协议),也包括现有协议扩展后支持标签发布的,例如: RSVP-TE(扩展资源预留协议),MP-BGP(多协议扩展BGP)。通过路由协议扩展,可以在每台路由器上维护网络的链路属性和拓朴属性,包括最大链路带宽、最大可预留带宽、当前预留带宽等,形成流量工程数据库TED,路由决策都是由IGP协议及其TE扩展和CSPF作出的。
其中LDP仅负责标签分发,不去关心链路状态,也无法指定经过的路由,仅能够实现快速转发的功能,如果需要支持显式路由、流量工程和QoS等业务时,就必须使用其他标记分发协议。CR-LDP和RSVP-TE在功能上比较相似,但在协议具体实现上不同。
MPLS利用标签在IP网中打通了有连接的隧道,但是我们传送网要承载无线、宽带、大客户专线等业务,可能在一个运营商站点下面同时下挂了某大客户CE路由器、移动基站NodeB、宽带接入网OLT等设备,从业务安全的角度,MPLS网中这些业务彼此之间是需要相互隔离的,我们需要为数据包多加一层标签---私网标签,私网标签用来区分不同的业务,比如A公司和B公司之间通过私网标签形成两个相互隔离的VPN。
举个例子,A公司在某酒店举行年终总结大会,在某酒店定了30个房间,那这个会议的所有成员就相当于一个VPN,在酒店前台就会有针对A公司会议的30个房间号对应的人员的清单,这个清单就相当于VRF表,到达酒店的客人只要报出A公司名称(相当于VPN号),就能且仅能与会议成员取得联系。虽然酒店有100个房间,但是在会议来看,可以看成一个30个房间的专用酒店。
这样用户数据包虽然在MPLS网络中在同一隧道中传送,但是在运营商网络和用户CE连接处,PE为每个VPN都维护一个单独的VRF(虚拟路由表),表中只有本VPN对应的站点,这样就达到了隔离的效果。
下面一节,我们来了解一下VPN。
--------------------------------------------------------------
3.7 VPN (虚拟专用网)
专网的概念我们都有所了解,我们国家的军队、铁路、电力等单位都有自己的专网,这些单位对业务的安全性要求非常高,这类的专网是单位自己花钱建设的一张独立的网络,物理上与公用网络是隔离的,独立建设、管理、维护,所以安全性和带宽都有很高保障,但是付出的代价无疑是最高的,不过这些土豪不在乎,有钱就是这么任性。
另外一些企业,比如各大银行系统,采取了租用运营商SDH电路等方式来搭建专网,虽然物理网络不是专用的,但是SDH的E1通道是用户独享的,也使业务的带宽和安全性能够得到保障,效果与土豪的专网也差不多。
租用SDH电路的价格也不菲,对于更多公司来讲还是难以接受,但从业务的需求来讲,公司各个分支机构之间需要一个网络来连接,需要承载视频会议系统、邮件系统、各种办公系统等需求,对网络的服务质量还有着较高的要求,这类的客户需要一个经济实惠又能够达到专网效果的办法—VPN。
VPN(虚拟专用网)是一种逻辑上的专用网络,但本身却不是一个独立的物理网络。VPN就是在利用公共网络建立虚拟私有网,就是用某种技术在公网上面建立一条条的虚拟连接,将公司的各个分部连接起来, VPN用户与其他用户互相视而不见,也就是逻辑上的隔离。
用道路举例来说:
城市交通道路就是公网,大家的车都可以在上面跑;
铁路、地铁就是专网,你再有钱也不能买个列车上人家轨道上去开;
而公交专用道就相当于VPN。公交专道是在城市道路中划出一条车道专门走公交车,在高峰期拥堵的时候其他禁止车辆行驶,利用这种专道专用的规则达到了专线的效果,从成本上来说很明显比单独修一条路要小得多。
MPLS VPN
MPLS VPN是VPN的一种实现方式,MPLS VPN通过对不同VPN用户分配两层标签,即公网标签和私网标签,其中公网标签处于外层,私网标签处于内层,私网标签用来实现不同VPN用户的隔离。公网标签用于在PE设备之间形成数据传输的隧道,而私网标签则用于PE对不同VPN用户数据的区分。
二层头部
公网标签
私网标签
IP头部
数据
要了解MPLS VPN的工作过程,先要了解几个VPN的概念:
首先,运营商网络内部的设备分为两种:P(运营商核心路由器)和PE(运营商边缘路由器)。这里说的P和PE是VPN对不同位置和功能定位的设备的叫法,P和MPLS里的LSR对应,PE和MPLS里的LER对应。就像是一个公司的老大,公司内部管理来说管他叫董事长,从法律来讲叫他法人代表,其实是一个人,强调的点不同。
PE就是和用户设备直接相连的运营商设备,而P是运营商网络内部的设备,不和用户设备相连,PE就相当于一个公司的业务员,而P就相当于内勤人员。CE是用户边缘设备,也就是用户自己的设备中和运营商相连的那个。一个PE下的一个VPN用户可能有一个或多个CE,这些CE就称之为一个site(站点);
比如我开一个公司,北京有2台路由器,上海有3台路由器,想通过运营商去开通一个VPN,将这5个路由器连接起来。这5台路由器就都是CE,北京的2台连接到运营商的一台路由器上,运营商的这个设备就是PE,上海同样也有一个PE;我北京这2台CE叫做一个site,上海那3台CE也是一个sete。而运营商在北京和上海之间除了这2个PE的其他设备就是P了。
当属于某一VPN的用户数据进入MPLS主干网时,在CE路由器与PE路由器连接的接口上可以识别出该CE路由器属于那一个VPN,进而到该VPN对应的VRF中去读取下一跳的标签,并将标签作为内部标签加入标签协议栈。PE路由器继续查找自己的全局路由表获得下一跳的接口和标签后,将该标签作为外部标签加入标签协议栈并将加入两层标签的数据包从相应的接口发给P路由器。
我公司的数据到了PE之后,首先PE分配一个内网标签,也就相当于贴上公司的名字。然后我的数据包要从北京到上海,PE再根据北京到上海的道路情况,给我分配了一个外层标签,这个标签对应一个隧道,也叫隧道标签,就是指引我的数据到达上海的“通行证“。
同样从北京到上海的还有其他公司的数据,大家都穿着同样的外衣—外层标签,P路由器根据外层标签转发数据包直到出口PE路由器,不同公司的数据走着同样的一条路到达了上海。上海的PE发现自己已经是最后一站了,将外层标签去掉,就露出了内网标签—VPN标签,PE根据这个标签,将不同公司的数据作为一般的IP包发给不同公司的CE,整个通信的过程就完成了。
数据传输过程中,内层标签只由PE设备进行处理,P设备并不理会他的存在,也就是说P设备并不知晓和关心数据包属于哪个VPN,或者说,私网标签对P来说是透明的。
------------------------------------------------------------------
3.8 PWE3和L3 VPN
根据用户业务类型的不同,MPLS VPN可以采用基于二层或者三层的解决方案,分别叫做PWE3(L2VPN)和L3 VPN。两者的区别就是MPLS标签在数据包的位置不同,当然工作原理也有很大区别,下面分别说明:
PWE3(端到端伪线仿真)
先放一段“专业”的介绍,PWE3(Pseudo-Wire Emulation Edge to Edge端到端伪线仿真)是指在分组交换网络中尽可能真实地模仿ATM、帧中继、以太网、低速TDM电路和SDH等业务的基本行为和特征的一种二层业务承载技术。
从帧结构图中可以看出,PWE3是在二层头部之前加上了隧道和PW标签之后,又加上了一个二层头部,这两个二层头是不一样的。
我们先从最常用的点到点的业务模型讲起,前面讲过二层地址就相当于一个人的姓名,假设我要去找一个叫张三的人,在要进入VPN网络之前,我的二层目的地址就是张三,这个地址在整个过程中是不变的。张三在哪里我并不知道,我只知道这个名字,而VPN网络一定预先为我铺好了一条通往张三的路,否则我和网络都不知道要去哪还怎么通信呢。
数据包从CE到达VPN的PE,PE查找预先配置好的“业务映射表”,就是这个端口上来的人要去找张三,对应的VPN通行证和隧道都是配置好的,PE根据业务映射表为数据包打上两层标签:隧道标签和PW标签之后,又加上一个二层头,这个头是在网络中每一跳的MAC地址,数据的每一次转发都会将这个地址更改为下一跳地址。
在到达目的地之后,PE将前面的二层头、两层标签都去掉之后,露出了“张三”这个地址,这时,我的面前一定站着唯一一个人,他叫“张三”。
PWE3就是在分组网络上透明传送用户的二层数据,从用户角度来看,该分组网络就是一个二层交换网络,用户CE之间就像通过网线或者交换机实现互联一样。PWE3应用上更贴近于传送网的功能,公网设备相对于私网设备来说相当于是私网的下层,是透明的,就像我们玩网络游戏的传送门一样,嗖的一声不知怎么的就到了。
如下图所示,CE1与CE2通过L2VPN互联,效果同CE1与CE2用网线直连相同。
对于每一个VPN的site,与其相连的PE都有一个其对应的业务映射表,就是一个端口和PW、隧道的对应关系,根据这个表格,PE才知道每个端口发来的数据包要去哪里、要发到哪个隧道。PE只需要配置用户端口和VPN的映射关系。
PE不需要维护VPN内部的路由信息,数据包到达PE后,PE根据PW标签转发给对应的端口,就完成了它的任务,至于数据包到达用户侧CE之后如何送达目的地是用户自己的事,。我要找的“张三”实际上是一个接口人,就像我们下了飞机有一个举着大牌子的接站人员一样,至于张三怎么带着我找到我的最终目的地,那是我们公司内部的事,与VPN网络无关。
我要找张三这个例子是一个点对点的业务模型,MPLS网络只需要建立一条PW业务就实现了连接(E-line),这是我们实际应用中最常见的情况。
实际上还有一种点对多点的业务模型,比如我要去找张三、李四……情况稍微复杂一点点,PE只要相对应的建立N条PW可以实现(E-LAN),PE根据目的MAC地址去查找对应的PW和隧道。
可是还有一种多点对多点的模型,例如LTE的X2接口业务,N基站之间都要互相通信,那我们就要建立N*(N-1)/2条PW,如果N等于100,那么就要建立4950条PW,这个工作量就是巨大的,N要是几千呢?那就不可想象。
所以PWE3比较适合点对点和点对多点的业务,而对于多点对多点业务,我们通过L3 VPN去实现更适合
MPLS L3 VPN
从帧结构图中看出,L3VPN是在IP头前面加上了隧道和VPN标签,前面加上的二层头和PWE3里的作用相同。
与PWE3的业务映射方式不同,在L3VPN中每台pe路由器为其直接相连的每个site维护一个vrf(虚拟路由转发表),ce路由器把站点的本地路由广播到pe路由器,并从pe路由器上学习远程vpn路由,也就是说,你一个公司本地的内部的路由怎么走,远端的每个分支机构都有哪些IP地址,对应的要走哪条路,PE全都要知道,很明显,L3VPN的PE更高大上了,也更忙了。
PE收到CE发来的数据包之后,根据对应的端口识别出属于哪个VPN,根据目的IP地址在VRF表中查找路由,然后打上对应的VPN和隧道标签转发出去。对端的PE接收到数据包之后,根据VPN标签知道去查找对应的VRF表。
还是上面的例子,L3VPN来讲我就不是找张三了,我要从北京出发找到我们上海分公司办事处的X号楼X层XXX室。首先我到达PE之后,PE根据端口知道了我是哪个公司的,拿出对应的VRF表一查,上海分公司在哪怎么走,给我贴上了公司名称(VPN标签)和通行证(隧道标签)之后,一路我来到了上海的PE。上海的PE撕掉我的通行证(已经到达就没用了)之后一看我是某公司的,拿出一个某公司的VRF表,对应我要找的房间号,告诉我,你去找这个CE,PE参与了一次路由之后也完成了它的使命,最后CE根据我的目的地址带领我到达了我的目的地。
L3 VPN中,公网设备和私网设备在网络层次上相当于处于同一平面,整个提供VPN公网有点像是一台路由器。L3VPN与PWE3对比来看,PWE3的PE只知道与之相连的CE的端口,只要是发往这个VPN的数据包,PE统统转发给这个端口;而L3 VPN的PE设备清楚VPN内部的IP地址,PE会根据VRF表去决定转发的下一跳。
MPLS L2 VPN与L3VPN的对比
从透传的数据单元来看:L3 VPN透传的是三层IP数据,故也只支持IP数据透传了;PWE3透传的是二层数据单元,故能支持很多种业务类型的透传,比如以太网帧,帧中继,ATM,TDM等;
从适用业务来看:PWE3主要适用于大客户专线、传统TDM业务;L3VPN适用于例如LTE NodeB承载、有L3需求的大客户。
从组网应用上来看: PWE3一般用于点对点、点对多点的简单组网形式,L3 VPN可以用于多点对多点的复杂组网形式。
比如A公司有北京、上海、深圳、南京等分部,如果通过L3 VPN组网,每个site有多个CE与PE相连, 这样A公司不同分部多个CE之间的互通都由MPLS网络的自动路由来实现,整个公司所在同一个VPN,对于新增站点,只要携带与该VPN匹配的VRF信息,就会自动加入网络,这样对于网络的开通和维护的工作量都是线性增长的,与上面PWE3的平方级增长相比小很多。
最后,为了再次说明PWE3和L3VPN的区别,我们再举个不恰当的例子,A市政府经常有领导需要前往火车站乘坐高铁,如果是直接开车前往,这就相当于IP模式,可是如果碰到晚高峰期碰见个堵车把行程耽误了,领导很生气,后果很严重。
如果A市政府给交警部门打个招呼,在公司到火车站这一路上留出一条车道,其他路段自由放行,这就相当于PWE3模式,如果经常还有领导要去机场,那就再由公司到机场再预留一条车道,还是通过PWE3实现。
可是问题是,如果政府在市区有很多个分支机构,那么留那么多条车道是不现实的,就不如所有政府的车辆都挂上政府的牌子,只要一上路大家就会自动让出车道,这种方式就是L3VPN。
------------------------------------------------------------------