【转】MPLS基础

原地址:https://zhuanlan.zhihu.com/p/27232535

image.png

MPLS是什么?

从发展历史来看,MPLS并非是一个非常新的技术,最早可以追溯在1997年,相应的IETF工作组就成立。在2001年,相应的RFC3031就发布了。从字面意思来看,MPLS全称是Multi-Protocol Label Switching,直译过来就是多协议标签交换技术。维基百科是这么定义MPLS的:一种在通讯网络上的高性能数据传输技术。信息太少,没法理解,不要着急,往下看。

MPLS解决了什么问题?

传统的路由网络里面,当一个(无状态的)网络层协议数据包(例如IP协议报文)在路由器之间游荡时,每个路由器都是独立的对这个数据包做出路由决策。路由决策就是路由器决定数据包如何路由转发的过程。路由决策在后面会多次提到,在这里指,每个路由器都需要分析包头,根据网络协议层的数据进行运算,再基于这些分析和运算,独立的为数据包选择下一跳(next hop),最后通过next hop将数据包发送出去。以IP协议报文为例,路由决策是基于目的IP地址,路由器根据目的IP地址,选择路由条目,再做转发。路由决策可以认为是由两部分组成:

  • 分类,将特定的数据包归属为一个等价转发类(Forwarding Equivalence Classes,FECs)
  • 查找,查找FEC对应的next hop
image

对于同一个路由器来说,同一个FEC必然对应同一个next hop,那么属于同一个FEC的所有网络数据包必然会走同一条路径转发出去。(注,在多链路负载均衡的情况下,一个FEC也可能对应一组next hop,但是逻辑上还是能看成是一个next hop,因为殊途同归!)

具体到IP协议报文,当多个IP协议报文的目的地址都对应路由器的一条路由,且这条路由是所有路由里面最长匹配(longest match)的路由,那么对于这个路由器来说,就会认为这两个IP协议报文属于一个FEC。因此,这两个数据包就会走同一条路径出这个路由器。这就是我们最常见到的路由转发。

需要注意的是,这里的FEC是针对路由器的,而不是全局的。举个例子,目的地址为192.168.31.1和192.168.31.100的两个IP协议报文,第一个路由器具有192.168.31.0/24这条路由,那么在第一个路由器它们属于同一个FEC,都会被转发到第二个路由器。第二个路由器具有192.168.31.0/26和192.168.31.0/24两条路由,并且两条路由的next hop不一样。因为192.168.31.0/26能更精确的匹配192.168.31.1,所以192.168.31.1匹配第一条路由,而192.168.31.100匹配第二条路由,最终,这两个IP协议报文在第二个路由器被认为是不同的FEC,从不同的路径出去。这就是每个路由器都需要独立的做路由决策的原因之一。
路由器的工作原理如下图所示:

image

由于每个路由器都需要独立的路由决策(虽然会有这样那样的缓存机制加速决策),而路由器的收发队列一旦满了,就会丢包。所以在一个高流量,高容量的网络里面,无疑对每个路由器的要求都很高(否则就会丢包了!)

针对这个问题,MPLS提出了类似的,但是更简单的另外一种路由决策的方法。

传统的路由决策,路由器需要对网络数据包进行解包,再根据目的IP地址计算归属的FEC。而MPLS提出,当网络数据包进入MPLS网络时,对网络数据包进行解包,计算归属的FEC,生成标签(Label)。当网络数据包在MPLS网络中传输时,路由决策都是基于Label,路由器不再需要对网络数据包进行解包。并且Label是个整数,以整数作为key,可以达到O(1)的查找时间。大大减少了路由决策的时间。这里的Label就是MPLS里面的L。需要注意的是Label在MPLS网络里面,是作为网络数据包的一部分,随着网络数据包传输的。

image

也就是说,在MPLS网络里面,数据被封装在了盒子里,上面贴了标签,每个经手的人只需要读标签就知道盒子该送到哪。而传统的路由网络里面,每个经手的人都需要打开盒子,看看里面的内容,再决定送往哪。

这里提到了MPLS网络,这是一个由相连的,支持MPLS的设备组成的网络。打上MPLS标签的数据可以在这个网络里面传输。MPLS的核心就是,一旦进入了MPLS网络,那么网络数据包的内容就不再重要,路由决策(包括FEC归属的计算,next hop的查找)都是基于Label来进行的。

从目前看,MPLS带来的好处是,在MPLS网络里面,除了边界路由器,其他路由器可以由一些支持Label查找替换的低性能的交换机,或者路由器来完成。这一方面降低了组网的成本,另一方面提升了同样性能设备的转发效率。不过,随着路由器的发展,这方面的优势弱化了,而且,类似的问题,也不一定需要MPLS来解决。MPLS的价值更多的在于其他方面。不过初步理解MPLS,就先说这些。到目前为止,MPLS里面的M,P,L都介绍过,S其实也隐含的介绍过,S是Switching的意思,即基于Label做路由决策的意思,或者说标签交换里面的交换。相信大家也明白了为什么说MPLS是一种高效的数据传输的技术。

MPLS术语

相较于传统的路由交换技术,MPLS是一个全新的世界,因此有必要对MPLS中的一些术语和角色做一些解释。同时,为了表述简单,后面都用IP协议报文代替网络数据包来进行描述。

  • FEC(Forwarding Equivalence Class):交换等价类,前面描述过,同样的转发路径的网络数据包的集合。

  • MPLS网络:由支持MPLS的,相连的设备的构成。

  • LSH(Label Switching hop):IP协议报文从一个MPLS设备发送到另一个MPLS设备,区别于传统的路由交换,LSH是基于Label的转发。

  • NHLFE(Next Hop Label Forwarding Entry):LSR中用来转发条目,相当于路由表之于路由器。包含了:

  • 下一跳:nexthop

  • 对数据包的当前label需要做的操作,包括了:

  • 替换(SWAP)

image
  • 删除(POP)
image
  • 添加(PUSH)
image
  • LER(Label Edge Router):有的地方也叫做 MPLS edge node。顾名思义,MPLS网络的边缘设备。

  • MPLS ingress node:进入MPLS网络的节点,也就是MPLS网络的入口路由器。该设备计算出IP协议报文归属的FEC,并把相应的Label放入IP协议报文。

  • MPLS egress node:出MPLS网络的节点,也就是MPLS的出口路由器。IP协议报文在这里回到传统的路由系统中。

  • LSR(Label Switching Router):支持MPLS转发的路由器。如果一个LSR有一个邻接的节点在MPLS网络之外,那么这个LSR就是LER。注意,这里的MPLS网络之外可以是:1.传统路由网络,2.另一个MPLS网络。

  • LSP(Label Switching Path):特定的FEC中的IP协议报文所经过的LSR的集合。LSP通常也被称为MPLS tunnel。

image

MPLS协议格式

前面说了,MPLS把Label作为IP协议报文的一部分,存储在IP协议报文中。通常情况下,MPLS操作在OSI的2层(数据链路层)和3层(网络层)之间,因此也常常被认为是2.5层协议。这也就是MPLS能支持Multiprotocol的原因。Label不依赖于任何协议,直接定义在2-3层之间。当然,老司机们会说MPLS也可以在2层,例如MPLS-ATM和MPLS-FRMRLY。这种情况现在用的比较少,这里就不考虑。
MPLS的Label格式定义如下:

image
  • Label:前面提到过多次的Label,20bit的整数,也就是说Labe的容量是百万级的。虽然不是无限的,但是也很多了。
  • TC:之前的EXP,改名成TC,由RFC5462定义。
  • S:bottom of stack。什么是stack,一种常见的数据结构类型,特点是后进先出。S为1表明这已经是栈底了,即当前Label是IP协议报文最后一个MPLS标签。再执行一个POP操作,就能变成正常的IP协议报文了。
  • TTL:TTL在IP协议里面的作用主要是防止环路和用于traceroute等工具。在之前的文章Traceroute里详细介绍过。MPLS里面的TTL作用是一样的。当数据包进入MPLS网络,网络层中的TTL会被拷贝至MPLS的TTL,每一次LSH,TTL减1,数据包出MPLS网络,MPLS中的TTL会拷贝至网络层。

刚刚提到了stack,MPLS中的Label不是指一个Label,而是由多个Label构成的Label Stack。

image

为什么要Label Stack?
从前面的描述看,MPLS似乎用一个Label就可以满足要求了。多Label的一个应用场景就是嵌套的LSP。直接看图吧:

image

对于IP1的报文来说,上层LSP就是由A->B组成。但是A并非直接转发给B的,而是通过另一个子LSP C1->C2->C3转发给的B。这么做,首先是因为A和B没有直接相连,没有办法直接转发。另一方面,因为IP1和IP2有一部分重合的路径,通过定义子LSP可以复用这部分路径。对于IP1和IP2来说,C1,C2,C3只需要存储一套NHLFE即可。

MPLS网络拓扑

看一个简单的MPLS网络:

image

这个图里面的术语跟之前描述的不一样,不过其实这个图里的术语更常见。可以简单的翻译一下。
CE:前面没有介绍过,其实就是传统路由网络中与LER连接的路由器,可以理解成客户网络的边缘路由器。
PE:服务提供商的边缘路由器,对应LER。
P:服务提供商的路由器,对应LSR。
为什么会有这些术语上的不同,MPLS的提出本身是中立的,但是随着发展,现在应用最多的是电信网络,所以才有了customer provider这些概念,其实都是对应电信运营商网络中的设备。上图中间部分就是个MPLS网络,前面介绍过,MPLS网络中的IP报文都是带有MPLS标签的。下面来过一下工作过程:

  1. 在所有的网络流量之前,PE路由器需要通过MPLS网络与远端PE路由器建立LSP。
  2. 客户网络从CE发来的非MPLS 报文,发送到了ingress PE路由器,也就是MPLS ingress edge node。
  3. ingress PE 路由器通过运算得出IP协议报文归属于哪个FEC,并把相应的Label加到了IP协议报文。
  4. IP协议报文沿着LSP传输,每个P路由器都根据自身的NHLFE,替换Label,再把报文传给下一跳。
  5. 在egress PE路由器,Label被从IP协议报文中删除,一个传统的IP协议报文又产生了。
  6. IP协议报文被发送到了对端的CE路由器,最终进入了另一个客户网络。

到此为止,MPLS的data plane描述完了。MPLS是个很大话题,如果还有下次的话,应该会说说LSP的建立过程,也就是LDP(Label Distribution Protocol)。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容

  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 13,037评论 6 174
  • 简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者...
    保川阅读 5,941评论 1 13
  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 5,051评论 0 8
  • 一、网络基础知识 1. OSI 参考模型 OSI 模型中,每个分层都接受由它下一层所提供的特定服务,并且负责为自己...
    SeanCST阅读 1,642评论 0 6
  • 不同国家有不同国家的风俗,在餐桌礼仪上更是如此。在一个国家被视为是文明的用餐习惯,在另一个国家却可能被当作是野蛮人...
    美时购阅读 352评论 0 0