MPLS:多协议标签交换---ISP应用
包交换:基于数据包中的IP地址进行路由;
标签交换:基于2.5层的标签进行数据转发; 多协议:无论网络层运行什么协议;
当下的主要应用:
使用MPLS首先需要开启CEF:
控制层面:交换路由信息;标签的分发(MPLS不为BGP的路由进行标签分发)
数据层面:根据路由转发用户数据;标签的压入和弹出,基于标签号进行数据的转发
控制层面:通过IGP或者EGP交互路由信息,在交互路由信息基础上,通过TDP/LDP为所学习到的路由条目生成标签号,同时将标签告知邻居;
该层面工作完成后------生成:
数据层面:普通的IP数据包,基于FIB表转发;若存在标签号基于LFIB转发流量;
MPLS的数据包封装于2层和3层之间,称为2.5层
标签数据格式:32位
前20位为标签号:存在2^20个号码,其中0-15号被保留;故正常分发第一个号码为16号
20-22位:8个优先级,可用于进行QOS
第23位:栈底位,为1,标示本层标签为最后一层;最多可以存在3层标签信息;
TTL:当标签压入时,复制IP报头中的TTL值到标签中,当标签被弹出时复制TTL值到IP包头中;
一层标签:普通的MPLS流量
二层标签:MPLS VPN
三层标签:MPLS TE
使用MPLS后,二层若为以太网,其type 字段:
0X8847 MPLS单播
0X8848 MPLS 多播
名词注解:
? 的压入,最后一跳路由器负责标签的弹出;
MPLS工作原理:
在控制层面传递路由条目的同时,MPLS的TDP/LDP将基于每条条目进行标签号的分发,然后传递给邻居;上游设备传输流量时,压入下游设备分发的标签号;
MPLS的优化:PHP次末跳 倒数第二跳;默认执行
最后一跳路由器在默认情况下需要查看LFIB后再查看FIB表,然后转发数据;PHP可以使倒数第二跳路由器在已知出接口等信息时,将标签弹出,就流量转发给最后一跳路由器;使最后一跳仅查看FIB表;
最后一跳,到达某个目标为本地直连时,及视为本地是该目标的最后一跳路由器;基于该网段分配给上游路由器标签号3;来告知对端为倒数第二跳;
注:PHP仅弹出最上层标签;?? pop 标示仅弹最上层标签
???????????????????????????? Untagged MPLS域标记,弹出所有标签;
配置:
r1(config)#int s1/1
r1(config-if)#mtu 1504? 直连两端必须配置为一致
r2(config)#interface s1/1
r2(config-if)#mpls ip 开启某个接口的MPLS
华为
四、MPLS的配置
1、IP可达--- 使用路由协议全网可达
2、配置MPLS – LDP
[r2]mpls lsr-id 2.2.2.2??? 必须先定义mpls的router-id,要为本地设备的真实ip地址,且邻居可达,因为?
????????????????????? 该地址将用于建立TCP会话,建议使用环回地址
[r2]mpls???????????? 再开启mpls协议
[r2-mpls]mpls ldp????? 再激活LDP协议
[r2-mpls-ldp]q
之后需要在所有标签经过的接口上开启协议
[r2]interface GigabitEthernet 0/0/1
[r2-GigabitEthernet0/0/1]mpls??? 先开启MPLS
[r2-GigabitEthernet0/0/1]mpls ldp?? 再激活LDP协议
开启隧道递归[r2]route recursive-lookup tunnel?
当启动配置完成后,邻居间使用UDP报文组播收发hello包;之后基于hello包中的router-id地址进行TCP会话的建立;
[r3]display tcp status
TCPCB??? Tid/Soid Local Add:port??????? Foreign Add:port????? VPNID? State
b4cf3d64 167/6??? 3.3.3.3:646?????????? 4.4.4.4:50858???????? 0????? Established
b4cf3adc 167/3??? 3.3.3.3:50806???????? 2.2.2.2:646?????????? 0????? Established
当tcp会话建立后,邻居间基于TCP会话再建立邻居关系,生成邻居表:
[r3]display? mpls ldp peer
开启[r2]route recursive-lookup tunnel?
再然后基于本地的FIB表,默认华为仅针对32位的主机路由生成标签号;存储于LIB表中,之后邻居间共享LIB表;
[r3]display? fib? 查看FIB表
[r4]display? mpls ldp? lsp??? 查看LIB表,装载本地和邻居为各条路由分配的标签号
最后路由器将LIB和FIB集合,生成最佳路径的标签转发规则—LFIB
[r4]display mpls lsp? 查看LFIB表
注:默认华为仅针对32位主机路由分配标签
[r3]mpls
[r3-mpls]lsp-trigger all?? 开启功能,将针对fib表中所有路由进行标签号的分配
分发的协议存在两种:
Cisco ios版本12.4(3)以下设备默认使用TDP,以上默认LDP
设置mpls标签范围
R2(config)#mpls label range 200 1044
r2(config)#mpls label protocol ?? 修改工作协议
? ldp? Use LDP
? tdp? Use TDP (default)
协议开启后,邻居间使用hello包建立邻居关系,生成邻居表;
r2#show mpls ldp neighbor??? 存在RID,RID的选举规则同OSPF一致;
????????????????????????? 注:RID也是数据包发送的目标ip地址,故若RID不能被访
????????????????????????? 问到,那么邻居关系将不能建立;若配置了环回,那么环回需
????????????????????????? 要宣告到单播路由协议中;
也可以修改RID为本地物理接口;
r2(config)#mpls ldp router-id serial 1/1 ??? 修改该接口ip地址为RID
? force? Forcibly change the LDP router id? 即可生效
? <cr>??????????????????????????????? 重启后生效
当邻居关系建立后,基于FIB表,生成LIB表:
MPLS将基于本地所有学习到的路由条目分发一个标签号,FIB中基于本地和邻居分配给每条条目的所有编号;
当LIB生成后,将LIB和FIB表进行结合,生成LFIB表来转发流量;
r2#show mpls forwarding-table
入标签为本地分配
出标签标签为下游分配
普通的MPLS解决BGP的路由黑洞问题:
MPLS将不为通过BGP学习到的路由条目分发标签号;
但是在访问BGP学习的目标时,封装该目标BGP下一跳地址所在网段的标签号;
使中间未运行BGP协议的路由器,基于标签号将流量转发到BGP的下一跳处,来避免路由黑洞;
MPLS VPN:
通过公网来传递私网的路由条目,由ISP负责;
?? RD---路由区分器----一个64位16进制的数值?? X:X 1:1
?? VRF:虚拟路由转发----在PE上配置,基于不同的CE端生成各种的路由表
VPNV4路由===IPV4路由+RD+RT值
配置:
[1]单播路由
[2]CEF
[3]MPLS
[4]定义VRF空间,同时关联所连接的CE端接口,再同时定义RD/RT
r2(config)#ip vrf openlabxian??? 创建空间名为openlabxian
r2(config-vrf)#rd 1:1???????????? RD值
r2(config-vrf)#route-target 1:1???? RT值
r2(config-vrf)#exit
r2(config)#interface s1/0?? 进入关联接口
r2(config-if)#no ip address 因为该接口将归属于VRF空间,故原IPV4地址需要排除
r2(config-if)#ip vrf forwarding openlabxian?? 关联空间
r2(config-if)#ip address 12.1.1.2 255.255.255.0? 配置该接口ip地址,该接口所在路由将转移
??????????????????????????????????????? 到VRF空间内
r2#show ip route vrf openlabxian? 查看该空间内的路由条目
r2#ping vrf openlabxian 12.1.1.1?? 使用该空间的路由来进行通信
注:当流量从某VRF空间所关联接口进入,那么将查询该VRF内的路由条目;
非VRF空间所关联接口进入,查看普通IPV4路由表
【5】MP-BGP---两个PE上配置
使用MP-BGP来传递VRF空间内的路由条目
先建立IPV4的BGP邻居关系,再建立MP-BPG关系
r2(config)#router bgp 1
r2(config-router)#b router-id 2.2.2.2
r2(config-router)#neighbor 4.4.4.4 remote-as 1
r2(config-router)#neighbor 4.4.4.4 update-source loopback 0
r2(config-router)#address-family vpnv4?? 进入家族模式
r2(config-router-af)#neighbor 4.4.4.4 activate???? 建立MP-BGP邻居关系
r2(config-router-af)#neighbor 4.4.4.4 send-community? 开启社团属性传递性, 否则RT将不
????????????????????????????????????????????? 能被传递
【1】静态
CE端,配置缺省静态指向ISP即可
PE端配置到CE端私网的静态路由
r2(config)#ip route vrf openlabxian 192.168.1.0 255.255.255.0? serial 1/0 12.1.1.1
出接口和下一跳必须同时存在;
r2(config)#router bgp 1? 再将本地VRF空间内的直连和静态路由重发布到BGP协议中
r2(config-router)#address-family ipv4 vrf openlabxian
r2(config-router-af)#redistribute static
r2(config-router-af)#redistribute connected
r2#show ip bgp vpnv4 vrf openlabxian
?? Network????????? Next Hop??????????? Metric LocPrf Weight Path
Route Distinguisher: 1:1 (default for vrf openlabxian)
*> 12.1.1.0/24??????? 0.0.0.0????????????????? 0???????? 32768 ?
*> 192.168.1.0??????? 12.1.1.1???????????????? 0???????? 32768 ?
【2】RIPV2
CE端正常启动和配置RIPV2
PE端配置:
r2(config)#router rip
r2(config-router)#version 2
r2(config-router)#no auto-summary
r2(config-router)#address-family ipv4 vrf openlabxian
r2(config-router-af)#network 12.0.0.0
r2(config-router-af)#redistribute bgp 1 metric 1
r2(config)#router bgp 1
r2(config-router)#address-family ipv4 vrf openlabxian
r2(config-router-af)#redistribute rip
【3】EIGRP
CE端正常配置EIGRP协议
PE端配置:
r4(config)#router eigrp 1?? 启动时,需要使用本地真实的AS号
r4(config-router)#no auto-summary
r4(config-router)#address-family ipv4 vrf openlabwu
r4(config-router-af)#autonomous-system 90 ??在VRF内建邻时告知CE端所使用AS号
r4(config-router-af)#network 45.0.0.0
r4(config-router-af)#redistribute bgp 1 metric 1544 100 255 1 1500
r4(config)#router bgp 1
r4(config-router)#address-family ipv4 vrf openlabwu
r4(config-router-af)#redistribute eigrp 90? 导入时使用私有AS号
【4】OSPF
CE端正常配置
PE端
r2(config)#router ospf 1 vrf openlabxian
r2(config-router)#router-id 2.2.2.2
r2(config-router)#network 12.1.1.2 0.0.0.0 a 0
r2(config-router)#redistribute bgp 1 subnets
r2(config-router)#exit
r2(config)#router bgp 1
r2(config-router)#address-family ipv4 vrf openlabxian
r2(config-router-af)#redistribute ospf 1
注:若两端的PE上实施不同的OSPF虚拟进程号,那么路由条目显示5类学习;
若两端均为OSPFI协议,且虚拟进程号相同,那么路由条目为1类、3类
Show ip bgp vpnv4 all summaryv展示vpnv4的邻居
先在全局下 MPLS label? rang 100 199 控制标签范围
华为
[r2]bgp 100
[r2-bgp]ipv4-family vpnv4
[r2-bgp-af-vpnv4]peer 4.4.4.4 enable
[r2-bgp-af-vpnv4]peer 4.4.4.4 next-hop-local
[r2]ip vpn-instance 1
[r2-vpn-instance-1]route-distinguisher 1:1
[r2-vpn-instance-1-af-ipv4]vpn-target 1:1 export-extcommunity
?EVT Assignment result:
Info: VPN-Target assignment is successful.
[r2-vpn-instance-1-af-ipv4]vpn-target 2:2 import-extcommunity
?IVT Assignment result:
Info: VPN-Target assignment is successful.
绑定在连接ce的接口
[r2]interface g0/0/0
[r2-GigabitEthernet0/0/0]undo ip address
[r2-GigabitEthernet0/0/0]ip binding vpn-instance 1
[r2-GigabitEthernet0/0/0]ip address 12.1.1.2 24
pe上进行rip宣告
[r2]rip 1 vpn-instance 1
[r2-rip-1]verify-source 2
[r2-rip-1]version 2
[r2-rip-1]network 12.0.0.0
在ce端正常启动rip
ospf
[r4]ospf 2 vpn-instance 2
[r4-ospf-2]area? 0
[r4-ospf-2-area-0.0.0.0]network 45.1.1.1 0.0.0.0
双向重发布
[r2]bgp 100
[r2-bgp]ipv4-family vpn-instance 1
[r2-bgp-1]import-route rip? 1
[r2]rip 1 vpn-instance 1
[r2-rip-1]version 2
[r2-rip-1]network 12.0.0.0
[r2-rip-1]import-route? bgp