简介
伪线(PW)用于在MPLS网络中提供端到端服务。它们是基本构建块,可以提供点对点服务和多点服务(例如VPLS),实际上是PW的网状结构,用于创建数据包流经的网桥域。
编辑者:Kumar Sridhar
先决条件
本文档的读者应具备以下方面的知识:
使用的组件
本文档中的信息基于Cisco®运营商数据包传输(CPT)产品系列,尤其是CPT50。
伪线概念
伪线概念上如下所示:
端到端服务由两个部分组成。连接电路(AC)部分和伪线部分。整个电路端到端在Cisco传输控制器(CTC)中仍称为伪线,但请记住此处展示的两个不同部分用于以下故障排除。
另请注意,必须已创建隧道来容纳上面配置的Pseudowire服务。隧道可能受到保护(如图所示)或未受到保护。
伪线部分实际上在隧道端点开始和停止(如果您排除此处显示的MPLS封装块)。
AC部分从隧道终点一直到面向客户端的接口(其中定义了以太网流点[EFP]),以标识通过此伪线传输的特定客户端流量。有2个AC;每端一个。
AC以本机形式传输客户流量,即带有或不带VLAN标记的以太网帧,具体取决于我们是在创建基于VLAN的伪线还是基于以太网的伪线(PW创建向导中的AC Type框)。然后,添加特定PW服务及其所承载的隧道的MPLS标签。然后,数据包通过电路的Pseudowire部分发送到MPLS云。 此过程在MPLS术语中称为标签实施。在远端,会发生反向过程,即删除标签或进行标签处置,然后数据包将返回到本地以太网帧,再通过伪线电路的远端AC部分传送到另一端。
伪线故障排除
要使伪线服务端对端工作,伪线部分和2个交流部分必须一起工作。对电路进行故障排除涉及每个部分,其中每个AC-PW-AC部分单独调试以确定问题所在。
在下面的故障排除讨论中,假设已正确配置了PW,并且已调试并排除了所有第1层或物理层问题。
首先,调试PW部分比较容易。首先通过在终端节点上的IOS窗口中运行的命令“show mpls l2 vc”识别电路。记录连接的虚电路标识符(VCID)和目的节点地址。
10.88.130.201#show mpls l2 vc
本地intf本地电路目的地址VC ID状态
------------- -------------------------- --------------- ---------- ----------
Gi36/2 Eth VLAN 200 202.202.202.202 12 UP
VFI vfi::1 VFI 202.202.202.202 124打开
VFI vfi::1 VFI 204.204.204.204 124打开
这里,所关心的PW是第一个基于接口Gi36/2配置为VLAN 200的PW。确保接口状态为UP。
show mpls l2 vc 12 detail命令为您提供了大量有关PW的信息。下面突出显示的重要字段,例如隧道id、远程节点id、标签堆栈、PWID编号和统计信息。
10.88.130.201#show mpls l2 vc 12 detail
本地接口:Gi36/2 up、line protocol up、Eth VLAN 200 up
目的地址:202.202.202.202,VC ID:12,VC状态:up
输出接口:Tp102,强加的标签堆栈{16 19}
首选路径:Tunnel-tp102、active
默认路径:就绪
下一跳:point2point
创建时间:00:32:52,上次状态更改时间:00:05:42
信令协议:手动
状态TLV支持(本地/远程):已启用/无
LDP路由监视:已启用
标签/状态机:已建立,LruRru
上次本地数据平面状态rcvd:无故障
上一个BFD数据平面状态rcvd:未发送
上次本地SSS电路状态rcvd:无故障
上次发送本地SSS电路状态:无故障
上次发送本地LDP TLV状态:无故障
上次远程LDP TLV状态rcvd:无故障
上次远程LDP ADJ状态rcvd:无故障
MPLS VC标签:本地18,远程19
PWID:7
组ID:local 0、remote 0
MTU:本地1500,远程1500 <----本地值和远程值必须匹配
排序:接收已禁用,发送已禁用
控制字:开
SSO描述符:202.202.202.202/12,本地标签:18
SSM网段/交换机ID:20513/12320(已使用),PWID:7
VC统计信息:
传输数据包总计:接收10,发送0
传输字节总数:receive 1320, send 0
传输数据包丢弃:接收0,序列错误0,发送0
如果PW关闭,则确保隧道(此处是隧道102)处于良好状态,如果不是,则排查隧道问题。排除隧道故障不属于本文的讨论范围。
确保堆栈中的标签按如上所示进行定义,即它们不是空白的。通过使用适当的PWID编号执行命令show platform mpls pseudowire pwid,确保在硬件中对PW进行编程。
10.88.130.201#show platform mpls pseudowire pwid 7
PW Id:7
PW VC密钥:7
PW AC密钥:786434
PW bind receive in HW:是
PW是否在HW中设置:是
当前处于备用状态:否
---------------------------------------------
— 交流数据 —
AC设置是否在HW中:是
AC接口:GigabitEthernet36/2
交流电路ID:2
AC — 内部VLAN:0
AC — 外部VLAN:200
AC- MPLS端口ID:0x1800000A
AC — 端口Id:31
AC — 模块ID:36
AC-Is efp:是
AC — 封装:单一标签
交流输入RW操作器:无
AC — 出口RW操作器:无
交流输入RW TPID:0
交流输入RW VLAN:0
AC-Ing RW标志:0x0
---------------------------------------------
—ATOM数据 —
互通类型:Vlan
类型4 PW 4091的对等体请求的Vlan ID
MPLS端口ID:0x1800000B
SD标记已启用:是
控制字已启用:是
---------------------------------------------
— 施加数据 —
---------------------------------------------
远程VC标签:19
传出int Num:9
BCM端口:28
BCM模块ID:4
隧道出口对象:100008
故障转移ID:1
故障切换隧道出口对象:100009
故障转移BCM端口:0
故障转移BCMModId:0
---------------------------------------------
— 处置数据 —
---------------------------------------------
本地标签:18
IF编号:12
是否为MSPW:否
---------------------------------------------
— 强制税侧 —
VLAN_XLATE表中找不到VlanId 200的条目
SOURCE_VP[10]
dvp:11
ING_DVP_TABLE[11]
nh_index:411
ING_L3_NEXT_HOP[41]
vlan_id:4095
port_num:28
module_id:4
丢弃:0
EGR_L3_NEXT_HOP[41]
mac_da_profile_index:1
vc_and_swap_index:4099
intf_num:22
dvp:11
EGR_MAC_DA_PROFILE[1]
DA Mac:1 80.C20 .0 0
EGR_MPLS_VC_AND_SWAP_LABEL_TABLE[4099]
mpls_label(VC标签):19
EGR_L3_INTF[22]
SA Mac:4055.3958.E0E1
MPLS_TUNNEL_INDEX:4
EGR_IP_TUNNEL_MPLS[4]
(lsp)MPLS_LABEL0
(lsp)MPLS_LABEL1
(lsp)MPLS_LABEL2
(lsp)MPLS_LABEL3
— 处理方 —
MPLS_ENTRY[1592]
标签:18
source_vp:11
nh_index:11
SOURCE_VP[11]
DVP:10
ING_DVP_TABLE[10]
nh_index:410
ING_L3_NEXT_HOP[410]
Port_num:31
module_id:36
丢弃:0
EGR_L3_NEXT_HOP[410]
SD_TAG:VINTF_CTR_IDX:134
SD_TAG:RESERVED_3: 0
SD_TAG:SD_TAG_DOT1P_MAPPING_PTR:0
SD_TAG:NEW_PRI:0
SD_TAG:NEW_CFI:0
SD_TAG:SD_TAG_DOT1P_PRI_SELECT:0
SD_TAG:RESERVED_2: 0
SD_TAG:SD_TAG_TPID_INDEX:0
SD_TAG:SD_TAG_ACTION_IF_NOT_PRESENT:0
SD_TAG:SD_TAG_ACTION_IF_PRESENT:3
SD_TAG:HG_L3_OVERRIDE:0
SD_TAG:HG_LEARN_OVERRIDE:1
SD_TAG:HG_MC_DST_PORT_NUM:0
SD_TAG:HG_MODIFY_ENABLE:0
SD_TAG:DVP_IS_NETWORK_PORT:0
SD_TAG:DVP:10
SD_TAG:SD_TAG_VID:0
ENTRY_TYPE:2
错误:在EGR_VLAN_XLATE表中找不到条目!
EGR_VLAN_XLATE[-1]
soc_mem_read:内存EGR_VLAN_XLATE的索引–1无效
日志表明PW已在硬件中绑定并设置,具有正确的VLAN和标签,与之前所见一致。
如果任何数据点不匹配或丢失,则问题出在驱动程序中,该驱动程序没有在硬件中设置和绑定PW。这说明存在软件或硬件缺陷。
如果目前一切正常,则可以尝试使用IOS命令“ping mpls pseudowire 202.202.202.202 12 reply mode control-channel”内部ping PW部分。 再次注意,这只会从一个隧道端点ping另一个隧道端点,而不会接触到电路的交流部分。
10.88.130.201#ping mpls pseudowire 202.202.202 12 reply mode control-channel
正在向202.202.202.202发送5个100字节的MPLS响应,
timeout为2秒,send interval为0毫秒:
代码:“!” — 成功,“Q” — 请求未发送,“。” — 超时,
“L” — 标记输出接口,“B” — 未标记输出接口,
“D” — DS映射不匹配,“F” — 无FEC映射,“f” — FEC不匹配,
“M” — 请求格式不正确,“m” — 不支持的TLV,“N” — 无标签条目,
'P' — 无rx intf标签端口, 'p' — 过早终止LSP,
'R' — 传输路由器,'I' — 未知上游索引,
“l” — 标签交换与FEC更改,“d” — 参见DDMAP了解返回代码,
'X' — 未知返回代码,'x' — 返回代码0
Type escape sequence to abort.
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/4 ms
现在检查有关PW的统计信息,如我们之前所做的那样:
10.88.130.201#show mpls l2 vc 12 det | beg statistics
VC统计信息:
传输数据包总计:接收5,发送0
传输字节总计:接收650,发送0
传输数据包丢弃:接收0,序列错误0,发送0
请注意,ping操作成功,并且5个ping回应数据包被记录为已接收。另请注意,ping请求数据包不会记录为已发送。回应请求/应答数据包似乎是CPU在计数器后发送到数据流的,因此没有记录。
如果ping不起作用,则我们应该后退并调试隧道以确保其正常运行。
如果PW部分仍然看起来良好,则请重点观察两端的AC部分。这是困难的部分,因为它没有太多的调试支持,AC路径可能包含多个卡和接口,如Cisco CPT50。
但几乎没有什么事情可以查证。
您可以从测试器发送模式,或从客户端设备执行ping,并观察CPT盒上面向客户端的接口接收的数据包。对于基于端口的PW而言,这比较容易,但对于基于VLAN的PW则不然,因为接口不显示每个VLAN的数据包。在任何情况下,面向客户端的接口的命令“show int ...”应显示数据包计数增加,至少表明数据包正正确进入,且没有其他基于VLAN的电路处于活动状态。
请记住,这些通过AC进入的数据包应该标记为MPLS,然后通过PW发送到另一端。因此,它们应在PW部分的统计信息中显示为发送的数据包。请在命令show mpls l2 vc 12 detail中查找它们 | beg statistics”
10.88.130.201#show mpls l2 vc 12 detail | beg statistic
VC统计信息:
传输数据包总计:接收0,发送232495
传输字节总数:receive 0,send 356647330
传输数据包丢弃:接收0,序列错误0,发送0
它们应在远端以同一命令显示为数据包“接收”。因此,此端的发送PW数据包和远端接收的PW数据包应该与从客户端设备发送的数据包数量匹配。使用相同的命令" show mpls l2 vc 12 detail | beg statistics”在远端显示:
10.88.130.202#show mpls l2 vc 12 detail | beg statis
VC统计信息:
传输数据包总数:receive 232495,send 0
传输字节总数:receive 356647330,send 0
传输数据包丢弃:接收0,序列错误0,发送0
您可以在一端发送和另一端接收之间的数据包中看到匹配项。
如果需要清除MPLS计数器,请使用命令“clear mpls counters”。
另一种检查统计信息的方法是使用SPAN功能将传入EFP流量复制到CPT节点上的备用端口,然后查找此端口上的统计信息以监控从客户接口接收的数据包。
最后,您可以在不同的交换矩阵和线卡上运行BCM shell命令以内部跟踪数据包,但这不属于本文的讨论范围。