MPLS.docx
《MPLS.docx》由会员分享,可在线阅读,更多相关《MPLS.docx(13页珍藏版)》请在冰豆网上搜索。
MPLS
MPLS:
Multiprotocollabelswitch
如果要开启MPLS,一定要开启CEF,因为CEF交换是唯一一种可用于标记报文的IP转发模式。
关于两个平面
控制平面:
交换路由信息和标签
数据平面:
转发数据
注意:
MPLS技术是2.5层的,这里指的是报文格式,有时候我们会看到二层三层MPLS,指的是二层MPLSVPN和三层MPLSVPN
MPLS有两种模式
1.帧模式:
除ATM网络以外的其他网络--------这个是我们关心的
2.信元模式:
在ATM网络中使用
帧模式MPLS
MPLS的标签格式
其中
label字段:
20比特。
即标签值的范围是0~1048575
EXP字段:
3比特,用来做QoS的
S字段:
1比特,如果是1表示栈底(栈底表示最后一个标签),如果是0表示下面还有一个label
TTL字段:
8比特,注意:
此字段的值是从IPv4包头中的TTL字段复制下来的,就是用来防环的,因为在转发数据包的时候,不会检查IP包头,所以把这个值从IP包头里转移到MPLS包头里
标签最多打几个?
理论上是无数个,但会受到链路MTU的影响
MPLS编码
你如何知道所要转发的报文是一个MPLS报文呢?
在数据链路层协议字段中附加新的值,以说明在第2层头部后面的是一个带有MPLS标签的报文。
第2层封装类型
第2层协议标识名称
值(16进制)
PPP
PPP协议字段
0281
以太网/802.3
LLC/SNAP封装
以太类型值
8847
HDLC
协议
8847
帧中继
NLPID(网络级别协议ID)
80
LSR(LabelSwitchRouters)----标签交换路由器
LSR就是一台运行MPLS的路由器
⏹入站LSR------接受尚未打标签的报文,在报文前端打标签(标签栈)然后发送
⏹出站LSR------接收带标签的报文,移除标签后再发送报文。
入/出站LSR都是边缘LSR
⏹链路中LSR------链路中间LSR接收带标签报文,对其操作,再转发
链路中LSR执行的操作如下:
提取,添加和交换。
标签交换路径LSP
实际上,LSP是报文在穿越MPLS网络,或者部分MPLS网络时的路径。
一条LSP中的第一台LSR是入站LSR,最后一台LSR是出站LSR,其他的都是链路中LSR。
LSP是单向的,所以用箭头说明方向
入站LSR不一定是LSP上的第一台LSR,出站LSR也不一定是LSP上的最后一台LSR。
比如嵌套LSP。
转发等价类FEC
FEC是一组胡一系列沿相同路径转发,并按相同规则执行的数据流。
所有属于同一个FEC的报文都拥有相同的标签。
对于BGP而言,标签分发不是根据BGP前缀,而是根据BGP下一跳。
标签分发
标签对邻近的LSR来说是本地有效地。
在整个网络中,标签没有全局意义。
没有任何一种IGP被修改来分发标签,而是有专门的标签分发协议来完成该项任务。
而BGP是用在MPLSVPN中分发标签的。
标签分发协议
●标记分发协议TDP--------思科私有
●标签分发协议LDP--------公有
●资源预留协议RSVP---------给MPLSTE使用
●边界网关协议BGP--------给MPLSVPN使用
其中,TDP和LDP其实差不多,只是公私有的区别。
但是,现在思科上默认也是LDP。
对于IGP中的每一条前缀,LSR都会为其分配标签,同时将该标签分发给所有的LSR邻居。
接收到的标签叫远程标签。
LSR会把远程标签和本地标签储存在LIB(标签信息库)中。
路由表被用来确定IPv4前缀的下一跳是谁。
LSR会根据这样的信息来创建LFIB(标签转发信息库)。
并依据LFIB来做MPLS报文的转发。
MPLS模式
⏹标签分发模式
⏹标签保留模式
⏹LSP控制模式
标签分发模式------------------------如何分发标签
⏹下游被动(DoD)分发标签模式
⏹下游主动(UD)分发标签模式
在DoD中,每一台LSR都会向其LSP中的下一跳请求捆绑于特定FEC的标签。
在UD中,每一台LSR会主动向其邻接的LSR分发捆绑的标签。
在DoD中,LIB只显示一个远程捆绑的标签,而在UD中,可以看到很多个。
在CiscoIOS中,除LC-ATM接口,都是用UD,LC-ATM是用DoD。
标签保留模式------------------------如何保留标签
⏹自由的标签保留(LLR)模式
⏹保守的标签保留(CLR)模式
在LLR中,LSR将所有收到的远程标签保存在LIB中。
而在CLR中,运行该模式的LSR不会在LIB中保存任何远程捆绑标签,除了为特定的FEC是用的与下一跳LSR关联的远程捆绑标签以外。
LLR模式可以很快适应路由变化,CLR只保留很少的标签,提高了路由器内存的可用性。
在CiscoIOS中,LC-ATM接口是用CLR模式,其他所有接口类型是用LLR模式。
LSP控制模式------------------------如何创建标签
⏹独立于LSP的控制模式
⏹非独立于LSP的控制模式
在独立于LSP的控制模式中,每一台LSR一旦发现一个FEC,就会为其创建一个本地捆绑标签。
通常,该行为发生在发现路由表中存在某FEC前缀的时候。
会有一个问题,在于一些LSR会在LSP还未端到端创建完成之前就开始标记要转发的报文了,这样可能导致报文不能正确地转发。
在非独立于LSP的控制模式中,LSR只会在它意识到它是某FEC的出站LSR,或者该LSR从其下一跳接收到某FEC的标签绑定的时候,才会为特定FEC创建本地捆绑标签。
CiscoIOS使用独立于LSP的控制模式。
运行IOS的ATM交换机默认使用非独立于LSP的控制模式。
最后可以看出,CiscoIOS使用下游主动地标签分发,自由的标签保留和独立于LSP的标签控制模式。
标签操作:
●移除------顶部标签被移除。
报文的转发依靠标签栈中余下的标签,或者将其作为无标签的报文进行转发
●交换------顶部标签被移除,同时用一个新的标签代替被移除的标签
●添加------顶部标签被一个新的标签所代替(交换),并且在代替的标签上层会再增加(添加)一个或多个标签
●未标记/无标签------标签栈被移除,并且报文将按照无标签的方式转发
●聚合------标签栈被移除,并且对该IP报文进行IP查找
CiscoIOS对未知标签采取丢弃报文的行为
保留的标签
0~15都是保留的标签。
3----隐式空标签
出站LSR在不想为某FEC分配标签的时候就可以分配隐式空标签给该FEC。
该行为使得上游LSR执行标签移除操作。
入站LSR使用隐式空标签来告知倒数第二跳路由器,它不再发送正常的标签,而是用标签3来代替。
结果导致出站LSR只会接收到IP报文。
在一条LSP的终点使用隐式空标签的行为称为倒数第二跳移除(PHP)。
使用隐式空标签并不是必须将标签栈中的所有标签都移除,只有一个标签会被移除。
尽管隐式空标签也使用了一个标签值为3的标签,但是标签3永远不会出现在MPLS报文的标签栈中。
PHP在Cisco的IOS中是默认行为。
在IPv4-over-MPLS的环境中,CiscoIOS只为直接连接的路由和聚合的路由条目通告隐式空标签。
0----显式空标签
刚才的隐式空标签有个缺点,就是只有一个标签的时候,当这一个标签被移除的时候,标签里面的EXP字段也被移除了,那对它具有的QoS特性就无法实施了。
显式空标签就是来解决这个问题的。
出站LSR向倒数第二跳LSR通告显式空标签。
结果出站LSR就可以收到带标签的报文,并且该报文的前端标签的值为0。
LSR仅仅是移除显式空标签,不会通过LFIB进行标签查找来转发报文。
然后执行另外一种查找,但是好处是可以得到EXP位,从而获得该报文的QoS信息。
IPv6报文的显式空标签值为2
1----路由器报警标签
该标签可以出现在标签栈中任何位置,除了栈底以外。
该标签位于栈顶的时候,向LSR发出警告说该报文需要特别注意。
收到带该标签的报文的时候,报文就不会通过硬件传输,但是会通过软件进程进行传输。
一旦携带该标签的报文被转发,标签1被移除,然后LSR在LFIB中标签栈中的下一个标签进行查找,并执行相应的标签操作,然后会把标签1再添加到标签栈的顶部,完成后,报文才会被转发出去。
14----OAM报警标签
用于错误检测、定位和监控实施。
CiscoIOS不会使用标签14。
它会执行MPLSOAM,但不是通过标签14来实现的。
为保留的标签
标签值从16~1048575(202-1)。
在CiscoIOS中,默认范围是16~100000。
可以通过命令mplslabelrangeminmax修改。
showmplslabelrange
标签分发协议
路由表中所有IGP前缀的捆绑标签分发都是通过LDP来实现的,而路由表中所有BGP路由的捆绑标签分发都是BGP自身完成的。
LDP有以下4大主要功能:
⏹运行LDP的LSR发现
⏹会话的建立和维护
⏹标签映射通告
⏹使用通知来进行管理
两台运行了LDP的LSR,首先通过hello信息发现对方,接下来,通过TCP连接建立一个会话。
LDP就在这个TCP连接中在两个LDP对等体之间通告标签映射信息。
hello消息:
目的地址224.0.0.2,UDP端口646
在启用LDP的链路发送,即配置了mplsip的接口
发送间隔5s,保持间隔15s
修改mplsldpdiscovery{hello{holdtime|interval}seconds
查看:
showmplsldpdiscovery[detail]
当两个LDP对等体的LDP保持时间配置得不同的话,会选择其中较小的值。
并且,CiscoIOS可能会对已配置过的LDPhello间隔进行重写,IOS会选择较小的LDPhello间隔,而不是已经修改过的hello间隔。
LDP标识符/LDPID
6字节字段。
LDP会话是在两台LSR的IP地址之间建立起来的TCP连接。
通常这些地址都是LSR的路由器标识符的IP地址。
可以修改,使用命令
mplsldpdiscoverytransport-address{interface|ip-address}
PECE间的路由协议
⏹直连路由
在PE路由器的routerbgp进程中通过addressfamilyipvvrfvrf-name来配置通过VRF接口指向CE路由器的BGP会话以及参数。
直连路由重分布进BGP
routerbgp1
…
!
address-familyipv4vrfcust-one
redistributeconnected
neighbor10.10.2.1remote-as65001
neighbor10.10.2.1activate
exit-address-family
!
⏹静态路由
iproutevrfcust-one10.88.1.1255.255.255.25510.10.2.1
向BGP中重分布静态路由
routerbgp1
…
!
address-familyipv4vrfcust-one
redistributeconnected
redistributestatic
exit-address-family
!
⏹RIP版本2
在PE路由器上只存在一个RIPv2进程。
需要在每一个VRF的特定地址族中进行配置。
确保为RIP配置了default-metric命令。
否则,没有路由能从BGP中重分布进RIP。
ipvrfcust-one
rd1:
1
route-targetexport1:
1
route-targetimport1:
1
!
routerrip
noauto-summary
!
address-familyipv4vrfcust-one
redistributebgp1
network10.0.0.0
default-metric2
version2
exit-address-family
!
routerbgp1
…
!
address-familyipv4vrfcust-one
redistributeconnected
redistributerip
exit-address-family
!
⏹EIGRP
在PE路由器上为VRF配置的EIGRP应该在地址族IPv4vrf中进行。
因为VPN用户之间通常都是用不同的EIGRPAS号码,所以有一条新的EIGRP命令用户为特定VRF指定自治系统号码。
!
routereigrp1
noauto-summary
!
address-familyipv4vrfcust-two
redistributestaticmetric64200025511500
redistributebgp1metric3004000025511500
network10.10.0.00.0.255.255
noauto-summary
autonomous-system33
exit-address-family
!
address-familyipv4vrfcust-one
redistributebgp1metric3004000025511500
network10.0.0.0
noauto-summary
autonomous-system42
exit-address-family
!
⏹eBGP
eBGP也可以作为一种PE-CE路由协议。
在PE的地址族中routerbgp进程的ipv4vrf中,需要将CE路由器配置为eBGP邻居,并且建起激活。
routerbgp1
neighbor10.200.254.5remote-as1
neighbor10.200.254.5update-sourceLoopback0
!
address-familyvpnv4
neighbor10.200.254.5activate
neighbor10.200.254.5send-communityextended
exit-address-family
!
address-familyipv4vrfcust-one
redistributeconnected
neighbor10.10.2.1remote-as65001
neighbor10.10.2.1activate
exit-address-family
⏹OSPF
需要配置带有VRF关键字的OSPF进程命令。
确保在routerospf进程的redistributebgp命令中使用了subnets关键字。
而将ospf重分发进bgp的时候,要保证redistribute命令配置了适当的match参数,以便可以只重分布合适的ospf路由类型。
ipvrfcust-one
rd1:
1
route-targetexport1:
1
route-targetimport1:
1
!
interfaceLoopback1
ipvrfforwardingcust-one
ipaddress10.99.1.1255.255.255.255
!
routerospf42vrfcust-one
router-id10.99.1.1
log-adjacency-changes
redistributebgp1metric10subnets
network10.10.2.00.0.0.255area0
!
routerbgp1
bgplog-neighbor-changes
neighbor10.200.254.5remote-as1
neighbor10.200.254.5update-sourceLoopback0
!
address-familyvpnv4
neighbor10.200.254.5activate
neighbor10.200.254.5send-communityextended
exit-address-family
!
address-familyipv4vrfcust-one
redistributeconnected
redistributeospf42vrfcust-onemetric10matchinternalexternal1external2
exit-address-family
⏹MPLSVPN配置
需要注意的是MP-BGP的配置。
其中在address-familyvpnv4中激活bgp;在address-familyipv4vrfvrf-name中把PE-CE路由重分布进MP-BGP。
而且也需要把MP-BGP重分布进PE-CE的路由协议中。
routerospf10vrfA
router-id2.2.2.2
log-adjacency-changes
redistributebgp4444subnets
network12.1.1.20.0.0.0area0
!
routerbgp4444
bgprouter-id2.2.2.2
nobgpdefaultipv4-unicast
bgplog-neighbor-changes
neighbor4.4.4.4remote-as4444
neighbor4.4.4.4update-sourceLoopback0
!
address-familyvpnv4
neighbor4.4.4.4activate
neighbor4.4.4.4send-communityextended
exit-address-family
!
address-familyipv4vrfA
redistributeospf10vrfA
nosynchronization
exit-address-family