2.3MPLS

高速转发设备、VPN部署、流量工程
数据量很大的单位能用到。

MPLS的思路

IP网络路由查找算法:最长匹配算法(二叉搜索树BST),很难适应高速路由器的高处理要求;MPLS:借鉴ATM短的固定长度的分组头,可以加速选路过程;(邮政编码:210003)。

原理

MPLS的主要架构概念是明确分离网络交换元件中控制平面与数据平面。数据平面由转发组件组成,这些组件根据经典标签交换范例执行简单的标签交换操作。另一方面,控制平面关注网络级协调功能,例如路由和信令,以便于在整个网络中传输流量。

Label 标签

定长、局部意义的标识,位于Link Layer和Networy Layer,用于识别某个特定的FEC
Label:20bit,标签值域。
Exp:3bit,用于扩展。现在通常用做CoS(Class of Service),当设备阻塞时,优先发送优先级高的报文。
S:1bit,栈底标识。MPLS支持多层标签,即标签嵌套。S值为1时表明为最底层标签。
TTL:8bit,和IP报文中的TTL(Time To Live)意义相同。
标签栈(Label Stack)是指标签的排序集合。靠近二层首部的标签称为栈顶MPLS标签或外层MPLS标签(Outer MPLS label);靠近IP首部的标签称为栈底MPLS标签或内层MPLS标签(Inner MPLS label)

FEC Forwarding Equivalence Class转发等价类

有共同属性的数据流。

LER label edge router 边缘标记路由器
LSR label switching 标记交换路由器
LSP label switched path 标记交换路径
LDP Label Distribution Protocol 标签分发协议

控制LSR之间交换标签与FEC绑定消息,协调LSR之间工作的一系列规程。

LFIB label forwarding information base 标记转发信息表
LIB 标签信息数据库
FIB 转发信息数据库
控制平面Control Plane

交换第三层路由信息和标记

数据平面Data Plane

基于标记转发分组



MPLS技术特点

1、简化分组转发,基于定长标签匹配
2、支持有效的显式路由explicit routing
与逐跳路由相比,显式路由最显著的优势在于能够提供定制的数据传输服务,允许将管理、运营、流量调节等方面的策略施加于数据转发的过程,允许按照各种业务的特性以及用户需求对网络资源进行灵活的配置。
3、实现流量工程(Traffic Engineering)
平衡网络负载
4、支持QoS选路
按其QoS要求来为它选择路由的方法
5、从IP分组到转发等价类的映射
6、支持多网络功能划分
核心网络则尽可能地简单,网络边缘结点承担更多工作。
7、提高了网络扩展性

标签分发方式

下游自主方式DU(Downstream Unsolicited)
对于一个特定的FEC,LSR无需从上游获得标签请求消息即进行标签分配与分发。

下游按需方式DoD(Downstream on Demand)
对于一个特定的FEC,LSR获得标签请求消息之后才进行标签分配与分发。

标签分配控制方式

有序方式:LSR必须先收到FEC下一跳的标签映射消息,或者该LSR就是此FEC的出节点时,该LSR自己才会为FEC分配标签

独立方式:任何节点,任何时候都可以进行独立的标记分发;

标签保持方式

标记保持方式指LSR对收到的但目前暂时无用的LABEL-FEC绑定的处理方式。保守、自由。采用自由的标签保持方式,则LSR会将所有的邻居发送来的标签映射都保存到标签信息库中,这样做虽然会增加设备的负担,却能够在网络拓扑发生变更的时候让LSP快速切换,

倒数第二跳弹出机制

对于出口LER,先查找LFIB表,发现要将标签弹出,于是它将标签弹出,弹出后发现是个IP报文,于是又去查FIB表,最终将这个IP数据包转发出去。C进行了两次查找。这降低了转发效率。标签可以在(倒数第二跳)上弹出,出口LER只需查找FIB表将收到的IP报文进行转发

LDP工作机制

LDP协议规定了标签分发过程中的各种消息以及相关的处理过程。通过LDP,LSR可以把网络层的路由信息映射到数据链路层的交换路径上,进而建立起LSP。
发现(Discovery)消息:用于通告和维护网络中LSR的存在,如Hello消息。
会话(Session)消息:用于建立、维护和终止LDP对等体之间的会话,如Initialization消息、Keepalive消息。
通告(Advertisement)消息:用于创建、改变和删除FEC的标签映射。
通知(Notification)消息:用于提供建议性的消息和差错通知。

LSP建立过程

将FEC转发等价类与标签绑定,并通告相邻的LSR,在分组转发路径上,数据分组的发送方路由器是一条LSP的上游LSR,接收方路由器是下游LSR。下游LSR将特定标签分配给特定FEC(即标签绑定)后,将标签发布给上游LSR;上游LSR保存标签和FEC的绑定关系。

在转发数据包之前,MPLS网络路由器根据路由协议生成路由表RIB;路由器的硬件CEF会生成FIB表,用作硬件转发(此表类似路由表);然后路由器会通过LDP协议生成标签数据库LIB表,然后LDP协议会根据LIB表和原有的FIB表,生成标签转发表LFIB。
下面是一个例子
GNS3 c3640

A
f0/0 12.1.1.1 255.255.255.0
loopback0 1.1.1.1 255.255.255.255
B
f0/0 12.1.1.2 255.255.255.0
f1/0 23.1.1.2 255.255.255.0
loopback0 2.2.2.2 255.255.255.255
C
f0/0 23.1.1.3 255.255.255.0
f1/0 34.1.1.3 255.255.255.0
loopback0 3.3.3.3 255.255.255.255
D
f0/0 34.1.1.4 255.255.255.0
f1/0 45.1.1.4 255.255.255.0
loopback0 4.4.4.4 255.255.255.255
E
f0/0 45.1.1.5 255.255.255.0
loopback0 5.5.5.5 255.255.255.255

C#config t
C(config)#int f0/0
C(config-if)#ip address 23.1.1.3 255.255.255.0
C(config-if)#no shutdown
C(config-if)#exit
C(config)#int f1/0
C(config-if)#ip address 34.1.1.3 255.255.255.0
C(config-if)#no shutdown
C(config-if)#exit
C(config)#int loop
C(config)#int loopback0
C(config-if)#ip address 3.3.3.3 255.255.255.255
C(config-if)#end
C#ip add
C#show ip int b
Interface                  IP-Address      OK? Method Status                Protocol
FastEthernet0/0            23.1.1.3        YES manual up                    up
FastEthernet1/0            34.1.1.3        YES manual up                    up
Loopback0                  3.3.3.3         YES manual up                    up
C#write
Building configuration...
[OK]

OSPF

A#config t
A(config)#router ospf 110
A(config-router)#router-id 1.1.1.1
A(config-router)#network 1.1.1.1 0.0.0.0 area 0
A(config-router)#network 12.1.1.1 0.0.0.0 area 0
A(config-router)#exit
A(config)#exit
A#write
Building configuration...
[OK]

A#show ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is not set

     34.0.0.0/24 is subnetted, 1 subnets
O       34.1.1.0 [110/3] via 12.1.1.2, 00:00:16, FastEthernet0/0
     1.0.0.0/32 is subnetted, 1 subnets
C       1.1.1.1 is directly connected, Loopback0
     2.0.0.0/32 is subnetted, 1 subnets
O       2.2.2.2 [110/2] via 12.1.1.2, 00:00:16, FastEthernet0/0
     3.0.0.0/32 is subnetted, 1 subnets
O       3.3.3.3 [110/3] via 12.1.1.2, 00:00:16, FastEthernet0/0
     4.0.0.0/32 is subnetted, 1 subnets
O       4.4.4.4 [110/4] via 12.1.1.2, 00:00:16, FastEthernet0/0
     5.0.0.0/32 is subnetted, 1 subnets
O       5.5.5.5 [110/5] via 12.1.1.2, 00:00:20, FastEthernet0/0
     23.0.0.0/24 is subnetted, 1 subnets

MPLS

D#config t
D(config)#ip cef
D(config)#int f0/0
D(config-if)#mpls ip
D(config-if)#mpls label protocol mpls
D(config-if)#mpls label protocol ldp
D(config-if)#tag-switching ip
D(config-if)#exit
D(config)#ip cef
D(config)#int f1/0
D(config-if)#mpls ip
D(config-if)#mpls label protocol ldp
D(config-if)#tag-switching ip
D(config-if)#end
D#write
Building configuration...
[OK]
归纳

在上述基于OSPF的局域网中,各路由器使用LDP Label Distribution Protocol 标签分发协议生成管理标签。假设需要一条1.1.1.1到5.5.5.5的虚连接,在LSP建立时,ABCD先在LFIB表为:



之后发送本地绑定标签给其他LSR,如D向C发送local tag为19,所以C把outgong tag记为19。



在A路由器使用traceroute 5.5.5.5命令时,可以看到由A发往B的报文中label为20,B接收到报文,弹出标签,根据标签查找LFIB表找到了local tag为20对应项,再把19压入标签栈发送给C。C也是收到标签为19更具LFIB表压入19标签。D根据LFIB表直接转发,所以没有outgoing tag,没有mpls标签了。
Tracing the route to 5.5.5.5

  1 12.1.1.2 [MPLS: Label 20 Exp 0] 180 msec 292 msec 264 msec
  2 23.1.1.3 [MPLS: Label 19 Exp 0] 336 msec 268 msec 280 msec
  3 34.1.1.4 [MPLS: Label 19 Exp 0] 308 msec 288 msec 268 msec
  4 45.1.1.5 292 msec 316 msec 224 msec
A#show mpls forwarding-table
Local  Outgoing    Prefix            Bytes tag  Outgoing   Next Hop
tag    tag or VC   or Tunnel Id      switched   interface
16     16          34.1.1.0/24       0          Fa0/0      12.1.1.2
17     Pop tag     2.2.2.2/32        0          Fa0/0      12.1.1.2
18     18          3.3.3.3/32        0          Fa0/0      12.1.1.2
19     19          4.4.4.4/32        0          Fa0/0      12.1.1.2
20     20          5.5.5.5/32        0          Fa0/0      12.1.1.2
21     Pop tag     23.1.1.0/24       0          Fa0/0      12.1.1.2
22     21          45.1.1.0/24       0          Fa0/0      12.1.1.2
B#show mpls forwarding-table
Local  Outgoing    Prefix            Bytes tag  Outgoing   Next Hop
tag    tag or VC   or Tunnel Id      switched   interface
16     Pop tag     34.1.1.0/24       0          Fa1/0      23.1.1.3
17     Pop tag     1.1.1.1/32        3150       Fa0/0      12.1.1.1
18     Pop tag     3.3.3.3/32        0          Fa1/0      23.1.1.3
19     18          4.4.4.4/32        950        Fa1/0      23.1.1.3
20     19          5.5.5.5/32        1130       Fa1/0      23.1.1.3
21     21          45.1.1.0/24       0          Fa1/0      23.1.1.3
C#show mpls forwarding-table
Local  Outgoing    Prefix            Bytes tag  Outgoing   Next Hop
tag    tag or VC   or Tunnel Id      switched   interface
16     17          1.1.1.1/32        3234       Fa0/0      23.1.1.2
17     Pop tag     2.2.2.2/32        0          Fa0/0      23.1.1.2
18     Pop tag     4.4.4.4/32        1242       Fa1/0      34.1.1.4
19     19          5.5.5.5/32        1508       Fa1/0      34.1.1.4
20     Pop tag     12.1.1.0/24       1140       Fa0/0      23.1.1.2
21     Pop tag     45.1.1.0/24       0          Fa1/0      34.1.1.4
D#show mpls forwarding-table
Local  Outgoing    Prefix            Bytes tag  Outgoing   Next Hop
tag    tag or VC   or Tunnel Id      switched   interface
16     16          1.1.1.1/32        1896       Fa0/0      34.1.1.3
17     17          2.2.2.2/32        0          Fa0/0      34.1.1.3
18     Pop tag     3.3.3.3/32        0          Fa0/0      34.1.1.3
19     Pop tag     5.5.5.5/32        1788       Fa1/0      45.1.1.5
20     Pop tag     23.1.1.0/24       0          Fa0/0      34.1.1.3
21     20          12.1.1.0/24       590        Fa0/0      34.1.1.3
E#show mpls forwarding-table
Local  Outgoing    Prefix            Bytes tag  Outgoing   Next Hop
tag    tag or VC   or Tunnel Id      switched   interface
16     Pop tag     34.1.1.0/24       0          Fa0/0      45.1.1.4
17     16          1.1.1.1/32        0          Fa0/0      45.1.1.4
18     17          2.2.2.2/32        0          Fa0/0      45.1.1.4
19     18          3.3.3.3/32        0          Fa0/0      45.1.1.4
20     Pop tag     4.4.4.4/32        0          Fa0/0      45.1.1.4
21     20          23.1.1.0/24       0          Fa0/0      45.1.1.4
22     21          12.1.1.0/24       0          Fa0/0      45.1.1.4

MPLS VPN

虚拟专用网Virture Private Network
使用IP机制仿真出一个专用的广域网,通过专用的 “隧道Tunnel技术”,在公共数据网中仿真出点到点的专线技术。隧道技术(Tunneling)、加解密技术、密钥管理技术、使用者与设备身份认证技术。


MPLS/BGP VPN的模型

MPLS/BGP VPN: 三层VPN。
在MPLS/BGP VPN的模型中,网络由运营商的骨干网与用户的各个Site组成,所谓VPN就是对site集合的划分,一个VPN就对应一个由若干site组成的集合。如MPLS/BGP VPN的实现如图所示;
利用标记堆叠来实现VPN,在一个IP分组上叠加两个MPLS标记头标进行转发,外侧标记用于转发,内侧标记用于VPN。

基本组件

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

推荐阅读更多精彩内容

  • 原地址:https://zhuanlan.zhihu.com/p/27232535 MPLS是什么? 从发展历史来...
    狗达Da阅读 871评论 1 5
  • Index 1.Preface:Why & How 2.MPLS 基本概念 3.MPLS用到的协议 Preface...
    数亩荒园阅读 692评论 0 3
  • 配置思路: 1.首先配置ISP内部的IGP协议,一般使用OSPF、ISIS路由协议。 2.配置ISP内部的mpls...
    Sec小玖阅读 1,571评论 0 0
  • 一、题库介绍 页数:154P 题目:272道 题型:单选、多选、判断 二、题目分类 防火墙Agile Contro...
    狗达Da阅读 2,626评论 0 8
  • Python客户端redis-py 因为本书主要使用Java语言作为编程语言,所以对Python的客户端redis...
    linuxzw阅读 541评论 0 5