MPLS-4 总结

session 1 
一、MPLS历史、起源
1、MPLS定义:通过在ip包中插入具体有本地意义的标签,并建立标签映射表LFIB,以此进行基于标签的转发,不再根据目标ip地址实施ip路由查找。
2、MPSL起源:理念源于ATM,98年,最早cisco的IOS11.1(17)CT开始支持MPLS

二、MPLS的优势
1、转发效率高,不用传统的路由转发(cpu计算转发)不再查找目标网络,直接根据标签进行转发(硬件转发)
2、ATOM,(L2层、L3层)网络基础架构趋向统一,可以支持多种不同的L2层、L3层协议;
3、IPOA融合,在ATM交换上启用MPLS和IPG路由即可融合ATM和ip;
4、新业务的催生;mpls-
5、降低isp核心网设备符合,isp的路由无需知道客户的路由,直接通过查看标签转发出去
6、流量工程(TE),典型的是PBR基于源地址来路由,而不是普通的基于目的的ip路由。
7、TRR快速重路由,故障切换控制在ms级别

三、MPLS的应用
1、MPLS-
2、ATOM,MPLS的任意传输,通过MPLS承载不同的L2层技术
3、VPLS,虚拟专用标签交换,用来同时承载多个L2层协议
4、MPLS TE,MPLS的流量工程

session 2 MPLS的基本架构
一、标签结构
MPLS-4 总结_第1张图片
1、标签字段:20bits,实际只是用了16bits,所以标签都是16开始的
2、试验位:3bits,对应ipp(ip头的TOS字段)和cos值(L2层TOS,对应ipp)
3、栈底位:是否为标签堆栈的最底下的标签,1表示是,0表示标签堆栈中,这个标签的底部还有标签
4、TTL位:copy自ip包头中的TTL值

二、MPLS模式(类型):
1、信元模式cell-mode:ATM采用ATM信元头信息作为标签
2、帧模式frame-mode:L2.5层
 
三、MPLS设备:
1、LSR标签交换机:根据LFIB进行报转发
2、边缘LSR(LER):对于进站mpls包插入标签,对于出站mpls包弹出(pop)标签还原成普通ip包
 
四、标签交换路径LSP:由标签交换所构成的顺序组合路径,具有方向性。两种类型:
1、单向LSP
2、LSP嵌套,多标签嵌套,多用于TE、VPN等
 
五、转发等价类FEC:转发行为相同的流量分类。
判断FEC相同的依据:
1、目标ip前缀
2、相同的组播组
3、转发动作相同,如下一跳、ipp或者dscp、cos
4、本地DLCI复用(相同的PVC)
5、ip路由表的BPG前缀相同,并且BGP下一跳相同
 
六、标签分发协议
1、ldp:用于标签转发
2、tdp:用于标签转发
3、RSVP资源预留协议:用于MPLS TE
4、BGP:用于MPLS VPN
 
七、MPLS标签空间(label space):
基于接口的还是基于平台(分类)的
1、基于接口的(per interface):可以针对不同的FEC使用相同的标签,标签+接口来区分FEC,ATM中用
2、基于平台(per plaatform):针对不同的FEC使用不同的标签
 
八、标签的控制、分发与保持:
标签的控制:
1、独立控制:标签的收敛不同步,本地LSR针对FEC和标签绑定,可以与其他LSR针对FEC和标签绑异步,ciscoIOS默认的标签控制模式。
2、有序(ordered)控制:当本地LSR收到来自下游LSR(下一跳LSR)针对FEC创建的标签绑定信息后,才开始创建标签和FEC的绑定表,按照顺序来,支持MPLS的ATM交换机默认的标签控制方式。
 
标签的分发:
1、下游按需(DoD):本地LSR向下游LSR发送需要标签与FEC绑定信息的请求,下游LSR才会分发标签,然后本地LSR根据收到的标签来完成标签与FEC的绑定信息,形成LFIB库。
2、本地LSR无需向下游LSR发送标签与FEC邦信信息的请求,即可获得标签与FEC绑定的信息(下游LSR不用等待请求就向外发送了标签与FEC的信息),来形成LFIB库,IOS默认的标签分发机制。
 
标签的保持:
1、自由保持LLR:LSR把所有的标签信息存储在LFIB中,即使本次失效也不会删除。加速收敛但消耗内存,IOS默认的保持机制。
2、保守保持CLR:仅保存LSR当前活着的下一跳分发过来的标签信息,LC-ATM默认的模式。
 
session 3 MPLS标签报文转发
一、标签操作类型
1、交换(swap):本地LSR用下游LSR分发的标签去替换进站标签堆栈中最顶部的标签(最靠近L2层的标签)
2、推送(push):标签堆栈的顶部标签被交换后,在新的标签堆栈上面再增加一个或多个标签,用于
3、弹出(pop):弹出标签堆栈中最顶部的标签
4、移除(untagged/No label):去掉整个标签堆栈(包括堆栈中每一个标签)
5、聚合(aggregate):去掉整个标签堆栈
 
二、LSR路由查找方式
1、LSR:只根据LFIB转发标签报文
2、边缘LSR:同时用到FIB(标签插入和弹出用)和LFIB 
三、特殊标签
1、隐性空标签(implicit Null):值为3,出站边缘LSR会为FEC分配隐性空标签,通知上游LSR执行php行为 
2、显性空标签(explicit Null):ipv4值为0(ipv6是2),出站边缘LSR会为FEC分配显性空标签,但可以保留标签中的EXP实验位,让上游LSR使用值为0的显性空标签(发给边缘LSR,边缘LSR在pop标签,而不是次末跳pop),实现MPLS服务质量。
3、路由器警告标签(Alert):值为1,做标签操作用。可以位于除了标签堆栈底部的任意位置,表示该MPLS标签报文应先经过CPU处理完成后(而不知直接查看LFIB转发掉),pop掉标签,再采用LFIB转发标签报文,用于MPLS OAM。
4、OAM警告标签:值14(cisco的tdp不是14),用于MPLS的故障检测
5、保留标签:0~15都是保留标签
 
四、标签范围:默认是16-100000
 mpls label rang  x   可以修改标签范围
 
五、MPLS MTU和MRU
避免MPLS报文被分片的两种方法:
1、修改MPLS的MTU值 show mpls int f0/0 detail 查看mpls的默认mtu
mpls mtu 1512 或mpls mtu override 1512(高版本命令)
MRU是,在不经过分片处理情况下,当前LSR能够转发的mpls标签报文的最大数据量
show mpls forwarding-table 3.3.3.3 detail  查看MRU(修改MTU自动改变MRU)
2、使用路径MTU发现功能(BGP中)
 
六、TTL的处理情况:
1、ip包到MPLS标签报文:(LSR)将ip包中TTL-1拷贝至MPLS报文中(254),mpls每经过一跳ttl-1,但是MPLS报文中ip头部的ttl不会再变化了,出mpls域的时标签被pop转为普通ip包时候ip头的ttl才会变化-1
2、MPLS标签报文到标签报文:对于标签堆栈顶部标签TTL值减1,其他标签TTL值不变;
如果发生标签推送(push)行为,进站的顶部标签的TTL-1后copy进经过交换和推送之后的标签堆栈;
如果发生标签pop行为:进站顶部标签TTL-1后,copy进弹出之后的其他标签(是边缘LSR就copy进普通ip包)
在MPLS中TTL只可能在边缘LSR被丢弃,哪怕值为0。

 

session 4 CEF回顾

一、IOS ip报文交换机制:

1、进程交换process switching

2、快速交换fast switching

3、思科快速交换ip cef

       mpls需要开启cef的原因是mpls需要根据fib转发表来对收到的数据插入标签,但是cef又是cisco私有的技术,而mpls是公有的技术,所以其他厂商的设备要支持mpls只需要有能够将标签插入数据包能力就可以了,至于使用说明表项来查看数据包的路由每个厂商应该都不同。

 

二、CEF组件

1、转发信息库FIB

2、邻接表adj-table

 

三、CEF的负载均衡:

1、基于目标地址的(per-destination):默认的负载方式,把源、目标ip地址做hash计算,在不同的链路上转发流量。

2、基于包的(per-packet):轮循,流量平分在每一条冗余链路,但会使一个flow流中的数据包到达对端后重新排序,在语音流量中会造成数据包重新排序的时候在成延迟不一,产生抖动。

show ip cef x.x.x.x internal 查看ip cef的负载路径,show ip route x.x.x.x 中的“traffic share count is 1”表示流量分布的是1:1的负载。

show ip cef exact-route 源ip 目标ip 可以看到这条路径走的哪一个路径

 

 session 5 MPLS LDP协议

       标签信息库LFIB是基于FIB的,因为在LSR收到普通数据包:先要查看FIB才能知道目标网络对应的下一跳、L2层封装、arp等信息,然后在这个数据包中插入标签,将对应的标签和这个目的路径进行绑定,从而才能形成LFIB信息转发库,形成LFIB后,标签如何分配、通知其他LSR和分发这些工作就需要一种协议来做,从而有了LDP标签分发协议(公有,cisco私有的是TDP)。

 一、标签分发协议类型:

1、LDP/TDP:针对IGP路由

2、MP-BGP:针对BGP路由

3、RSVP:针对MPLS TE流量工程

 

二、LDP的承载协议

1、UDP(646):组播 LDP hello包,视图发现LDP邻居,为了维持LDP会话关系。第一个hello包是upd发往mpls的组播地址224.0.0.2的,用于看看有没有其他LSR在组里面,如果得到回应则开始建立邻居会话,在建立邻居的过程中会协商一系列的参数,比如标签的分发方式、保持的时间等,如果协商不成功则在一个规定的时间内双方会再次尝试协商(退避算法),如果超过了最大协商时间则ldp邻居关系建立失败不再尝试建立邻居关系了。查看尝试建立邻居的时间范围的命令是 show mpls ldp parameters,修改命令为mpls ldp backoff 30 120(在120s内每隔30s尝试协商一次,超过120s协商还未成功则放弃协商不能成为ldp邻居)

2、TCP(646):建立LDP会话

upd用于发现ldp邻居,而tcp用于发现后的ldp邻居之间session的建立。

show mpls discovery detail

mpls ldp discovery hello holdtime 15  修改ldp的hlodtime为15秒,hello包的时间自动为5秒(hello包的时间是holdtime的1/3)

mpls ldp router-id interface 0/0 修改mpld的R-ID为f0/0接口的ip,不会立即成效,需要清除一次ldp邻居关系,或者在后面加force参数让命令立即生效。这里注意:该接口与邻居必须有路由可达的,不然邻居关系会down掉。比如一个LSR的回环口的网络在另一个LSR上没有路由,那么将本LSR的R-ID改为回环口的ip的时候会因为路由不可达而使邻居down掉(因为ldp会话的建立是依靠tcp646端口的),只有将这个R-ID在IGP路由中宣告出去,那么邻居才能正常建立。

show mpls ldp discovery detail 中显示的“Transport ip add”是指的是邻居之间交换hello信息使用的接口的ip地址。可以用(config-if)#mpls ldp discovery transport-address interface来修改。

 

三、标签的宣告:

       通过LDP邻居绑定地址(bound address)确定出该ip前缀的出站标签,并在LDP ip里的RID和下一跳LSR的接口地址建立映射(绑定)信息。标签的宣告不存在水平分和的行为,使用隐性的空标签来防止环路。

 

四、标签的控制和过滤

1、基于出站选择性的宣告

在R的出方向过滤FEC标签信息

R2(config)#access-list 1 permit host 3.3.3.3                             允许出站的FEC:3.3.3.3/32标签信息

R2(config)#access-list 1 permit host 192.168.1.2                     允许出站方向分发给哪个邻居(LDP-ID)

R2(config)#no mpls ldp advertise-labels                                  关闭标签分发功能

R2(config)#mpls ldp advertise-labels for 1 to 2                       调用标签出站过滤,允许3.3.3.3/32的FEC标签信息分发给邻居192.168.1.2

2、基于进站对标签绑定信息进行过滤

在R的入方向过滤FEC标签信息 

R3(config)#access-list 1 permit host 1.1.1.1                               只允许进站FEC1:1.1.1.1/32标签信息

R3(config)#mpls ldp neighbor 192.168.1.2 labels accept 1       调用标签进站过滤,只允许ACL1中匹配的

 

五、LDP与IGP同步

1、技术的价值:解决由LDP收敛速度慢于IGP的收敛(收敛时间不同步),导致标签报文在传输过程中,标签信息被pop弹出还原成普通的ip报文转发,对于类似MPLS-VPN的应用,P路由器(ISP边界路由器)就会丢弃普通ip报文(因为P路由器在MPLS-VPN的交换中只看标签信息库而不查看路由表来转发),产生路由黑洞。

2、解决方案:LDP与IGP收敛同步

目前只有OSPF一种IGP支持这种同步,原理是利用延迟。

方法:OSPF把链路开销设置为最大值65536,这时候OSPF就不会自动建立IGP邻接关系了(已经建立好的不会删除),直到LDP会话建立之后再以正常的开销对链路进行宣告,再建立OSPF邻接关系。命令如下:

R1(config)#router ospf 1

R1(config-router)#mpls ldp sync         分别在R1、R2、R3的ospf中开启与mpls的同步即可

R2(config)#router ospf 1

R2(config-router)#mpls ldp sync

R3(config)#router ospf 1

R3(config-router)#mpls ldp sync

       但是当LDP不能建立邻居关系时(单链路时候因为ospf开启同步把链路开销设置为最大值65535,所以这条链路基本就不在写入路由了变为不可达了,虽然是直连的也不行)OSPF也就不会建立邻居关系,所以为了避免LDP邻居无法建立的情况下连累OSPF也无法建立邻居关系。可以通过以下几种解决方法:

1、可以设置一个计时器计时(holdtime计时器),超过这个时间限制后不管LDP能否建立邻居OSPF都会正常的自动建立邻居关系。

R1#show ip ospf mpls ldp interface f1/0
FastEthernet1/0
  Process ID 1, Area 0
  LDP is not configured through LDP autoconfig
  LDP-IGP Synchronization : Required                                Required表示开启IGP同步
  Holddown timer is not configured                                   设置这个holddown时间
  Interface is up

2、在无法建立邻居的路由器接口下no mpls ip,然后等ospf邻居建立后在mpls ip开启mpls,或者先关闭同步,等ospf邻居建立在开启同步。同时要重置一下ospf进程

R2#clear ip ospf process                         重置OSPF的进程信息,包括邻接关系、计时器等
Reset ALL OSPF processes? [no]: y

3、无需关闭ospf同步或者mpls,只需要在邻居之中的一个R上面配置一个回环接口地址,并且配置为这台路由器通信的LDP-ID,并且将这个还回地址所在的网络在ospf中宣告出去,就可以了。因为这个回环地址是一条虚拟的路由不会被同步命令自动设置成最大开销65535,所以在ospf中宣告后就可以被ospf加入到路由表中,并且被设置成LDP-ID也保证了LDP可以正常通信。

R2(config)#interface loopback 0

R2(config-if)#ip address 2.2.2.2 255.255.255.255

R2(config-if)#no shutdown

R2(config-if)#exit

R2(config)#mpls ldp router-id loopback 0 force                     配置环回地址为LDP-ID

R2(config-router)#network 2.2.2.0 0.0.0.255 area 0                               宣告环回地址

R2(config-router)#mpls ldp sync                                             开启同步


你可能感兴趣的:(思科-router,and,switch)