session 1 帧模式的MPLS的标签分发过程
MPLS的两个协议:
1、LDP 工业标准
2、TDP cisco标准
一、label分发的参数
1、自主下游:本地LSR未经下游的LSR请求就向下游LSR分发标签,类似于路由协议,一般使用这种分发方式,为了整个MPLS路径LSP更快的收敛完成。
2、按需下游:标签交换路由器LSR必须收到下游的LSR标签请求,才能向下游LSR分配标签。
3、次末跳单出标签:指倒数第二条LSR就会将发往LER(MPLS边缘路由器)的数据帧的标签pop弹出,来减少一次LER对于LFIB的查询。因为LER连接的下一跳设备已经不是MPLS的路由器了,所以没有必须去查询LFIB来进行转发了,直接使用普通的帧查询FIB表和邻接表(CEF转发)来转发就可以了。
4、MPLS的label是本地有效,和帧中继的HDLC一样。它与ip最大的区别就是在传输过程中标签会随着经过的设备接口而变化(如同mac地址一样),而ip不会,所以MPLS的标签只是本地有效,也是本质上与ip协议的区别。
二、MPLS标签的控制方式
1、独立控制方式:LSR无需等待下游LSR向其发送标签,就可直接向上游LSR发送标签信息,收敛速度快。
2、有序控制方式:LSR必须等待下游的LSR向其发送标签后才能向上游LSR发送标签信息。
下一跳路由器是上游路由器
三、标签的保持
1、liberal,自由标签保持:从LDP邻居收到标签的绑定信息后,不管这个标签是否为邻居自己的(比如是邻居转发别人的),都保留(默认的),也就是说不会去确认下一跳LSR的状态(down的也保留)
2、conservative,保守标签保持:LDP邻居必须是本地LSR的下一跳时,才会保留标签信息。也就是说这个LSP路径的下一跳时邻居时才会保留该标签(下一跳时远程路由器时就不会保留这个标签信息)
四、LSP标签交换路径 的建立
1、通过收到邻居LSR发来的标签路径来建立LSP,LSP有方向之分,同一条物理路径的2个方向构成的LSP就是两条,in和out方向。如A---B何B---A的LSP是两条,哪怕是直连的。
2、路由汇总(聚合)会终端LSP路径,因为一旦有了路由汇总,那么MPLS的FEC转发等价类就会发生改变,一旦FEC发生改变对应的标签就应该改变了,但是除了做了汇总的LSR知道FEC标签改变外其他的LSR不知道,仍会发送原来没有汇总的路由条目所对应的标签,给做了路由汇总的LSR,当然没有汇总的路由目的地址和汇总后的路由目的地址的标签信息不一样,会使做汇总的LSR将标签pop弹出,从而中断了整个LSP路径,这个做了汇总的LSP会将汇总后的路由目的网络重新分配一个标签插入向外发送的帧中给下一跳LSR路由器。就相当于LSP在汇总路由器段成了两节。
五、帧模式的MPLS标签分发过程
1、路由表的收敛
2、本地控制层面形成LDP,决策LSP。
3、本地转发执行层面形成LFIB,根据LDP的指示进行实施动作。与CEF类似
基本实验配置:
1、R1、R2、R3使用eigrp建立L3层路由路径,R1和R3分别起个loopback接口做用户网
2、R1、R2、R3的所有接口开启MPLS
3、查看配置结果
R1
router eigrp 1
network 192.168.1.0
network 1.1.1.0
no auto-summary
int f0/0
ip add 192.168.1.1 255.255.255.0
no shut
mpls ip f0/0接口开启mpls
R2、R3相同配置
show
mpsl ldp negighbor
mpls ip binding
mpls forwarding-table
session 2 帧模式MPLS的防环机制和冗余机制
1、防环使用TTL值,LSR会复制ip包头中的TTL值来使用,可以手工禁用。
2、冗余机制,当LSR去往一个FEC转发等价类(目的网络等)有两个下一跳LSR时会使用其中一条转发,在主链路故障时候通过IGP路由协议的收敛快速的进行MPLS的重收敛(因为2个下一跳的MPLS路径都在LDP表中了),类似于路由的冗余,一条失效下一跳马上进去路由表。但是在主链路恢复后会出现短暂的LSP中断现象,直到MPLS域LSP重新收敛完成为止,因为主链路down后会时LDP邻居关系失败,而主链路恢复时候又开始建立LDP邻居关系,在邻居建立完成之前LSP会出现中断现象(中断期间会执行路由转发),直到LSP重新收敛完成(LDP表和LFIB表重新更新好)才会进行标签交换。
session 3 MPLS的基本配置及查看命令
拓扑上图:R1 与 R2 使用12.0.0.0/24和12.1.1.0/24网络连接,R2与R3使用23.0.0.0/24网络
R1与R3的loop0地址分别为1.1.1.1/24和3.3.3.3/24,R1、R2、R3使用eigrp路由协议,并关闭eigrp的自动汇总。R2与R3的S1/0使用时钟频率clock rate 128000
1、mpls的基本运行条件:ip cef 和 路由协议,接口下开启mpls ip,在IOS15.0之前的老版本是tag-switching
2、MPLS中邻居LDP-ID的修改
R2(config)#mpls ldp router-id serial 1/0 修改MPLS的LDP-id为s1/0接口的ip
R2#clear mpls ldp neighbor *
刷新LDP邻居表
3、MPLS使用的协议的修改
R1(config)#mpls label protocol ?
ldp Use LDP (default)
tdp Use TDP
both 两者都用
默认是使用LDP,可以使用
4、MPLS的MTU的控制
R1(config-if)#mpls mtu 1512 mpls中的每个接口都应该修改统一的MTU,加了MPLS头部,所以要修改
高版本中
R1(config-if)#mpls mtu override 1512
5、MPLS的TTL功能控制
R1(config)#no mpls ip propagate-ttl ?
关闭全部的ttl功能
forwarded Propagate IP TTL for forwarded traffic 只关闭转发flow的ttl功能
local Propagate IP TTL for locally originated traffic 只关闭本地产生flow的ttl功能
local与forward的区别:local是本身tracert的时候不可见,而forward是其他经过的流量tracert不可见,如果是防止mpls域外我tracert应该关闭forward的ttl功能,而保留local tracert功能,因为你登录到本地LSR上可以使用traceroute来查看mpls域中的跳数信息,而在吗mpls域外tracert时候会将整个MPLS看做一跳,直接到达目标网络。
6、mpls标签分发过滤
6.1、基于出站的标签过滤,只将特定的FEC的标签绑定分发给特定的LDP邻居。
第一步、R2(config)#no mpls ldp advertise-labels 关闭标签的分发功能
第二步、在R2上使用特定标签分发功能,只将3.3.3.0/24分配标签,并只告知R1。
R2(config)#access-list 1 permit 3.3.3.0 0.0.0.255 要给那个FEC(这里是3.3.3.0/24这个网络)分发标签
R2(config)#access-list 1 permit host 12.1.1.1 允许分发给哪个LDP邻居,如果是any就是所有邻居
R2(config)#mpls ldp advertise-labels for 1 to 2
将ACL1中的FEC打标签,允许分发给AC2中的邻居
验证:
R1#show mpls forwarding-table
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
16
Untagged 23.0.0.0/24 0 Fa0/1 12.1.1.2
Untagged 23.0.0.0/24 0 Fa0/0 12.0.0.2
17 16 3.3.3.0/24 0 Fa0/0 12.0.0.2
这里在R2中给目标地址3.3.3.0/24网络分配了标签,并且只允许将标签分发给邻居12.1.1.1(R1),也就是说只有R1可以通过MPLS的交换发送数据到3.3.3.0/24网络,其他邻居只能通过路由协议发送数据包到3.3.3.0/24。其他的FEC是untag,没有被分配标签的。比如看R3就没有收到来自R2的标签信息:
R3#show mpls forwarding-table
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
16 Untagged 12.0.0.0/24 0 Se1/0 point2point
17 Untagged 12.1.1.0/24 0 Se1/0 point2point
18 Untagged 1.1.1.1/32 0 Se1/0 point2point
因为R2关闭了标签分发功能,只给R1分发了去往3.3.3.0的标签,所以除了R1中有去往3.3.3.0/24网络的标签外,其他LDP邻居所有的FEC都没有标签,显示的Untagger,都走的是路由协议流量而不是MPLS的路径,验证可以使用ping来查看:
1、R1上ping 3.3.3.3/24在R2上查看MPLS转发表是否有流量
R1#ping 3.3.3.3
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 3.3.3.3, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 28/39/48 ms
R2#show mpls forwarding-table
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
16 Pop tag 3.3.3.0/24
520 Se1/0 point2point 520byte的ping流量看到
17 Pop tag 1.1.1.1/32 0 Fa0/0 12.0.0.1
2、在R3上ping 1.1.1.1/24在R2上查看MPLS转发表是否有流量
R3#ping 1.1.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 28/37/44 ms
R2#show mpls forwarding-table
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
16 Pop tag 3.3.3.0/24 520 Se1/0 point2point
17 Pop tag 1.1.1.1/32
0 Fa0/0 12.0.0.1 看到0byte,说明流量只走了路由协议
6.2、基于入站的标签分发过滤
R3(config)#access-list 1 permit host 1.1.1.1 只接收FEC为1.1.1.1/32的标签绑定信息
R3(config)#mpls ldp neighbor 23.1.1.2 labels accept 1 从邻居23.1.1.2(R2)过滤ACL匹配的FEC标签分发信息,因为只是过滤入站标签信息,所以只需要在R3上做过滤即可,不用关闭R3的标签分发功能。
R3#show mpls forwarding-table
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
16 Untagged 12.0.0.0/24 0 Se1/0 point2point
17 Untagged 12.1.1.0/24 0 Se1/0 point2point
18 17 3.3.3.3/32 0 Se1/0 point2point
16 16 1.1.1.1/32 0 S1/0 23.0.0.2
只允许从R2收入站FEC=1.1.1.1/32的标签信息,其他的都不接收(Untag)
7、MPLS的常用查看命令
show mpls ldp neighbor 查看ldp邻居
show mpls ldp neighbor detail 查看ldp邻居详细信息,包括hello时间等
show mpls ldp bindings 查看标签与FEC的绑定信息
show mpls forwarding-table 查看MPSL的转发表
show mpls forwarding-table 1.1.1.0 255.255.255.0 detail 查看MPSL针对某网络的转发表详细,包括标签弹出信息、负载均衡方式等
show mpls interfaces 查看接口运行的MPLS协议(LDP还是TDP)