前几天跟同事讨论了下关于ASR9k与ME3750通过Eompls互通的问题,发现ASR9k在实现上跟IOS有许多不同的地方,另外根据同事的总结,发现收益颇多,故把其中一部分整理出来(有一部分信息直接从同事的summary中拿过来的),以备日后复习。
Topology:(access 1148)(non-ESport)ME3750(ESport)—–PW—–A9K(dot1q.1148)
3750 Config:interface Vlan1148
no ip address
xconnect 2.2.2.2 23 encapsulation mpls pw-class cisco
pseudowire-class cisco
encapsulation mpls
interworking vlan
interface GigabitEthernet1/0/2
switchport access vlan 1148
switchport mode access
spanning-tree portfast
对于37来说,VLAN SVI 上起XCONNECT DATA层面可通要满足的条件:
- 连接PE的接口必须是ES-PORT (GigabitEthernet1/1/1 或 GigabitEthernet1/1/2)
- 连接CE的接口必须是非ES-PORT
ASR9k Config:ASR9000-2#show run l2vpn
Fri Aug 16 08:33:16.978 UTC
l2vpn
router-id 2.2.2.2
pw-class cisco
encapsulation mpls
transport-mode vlan passthrough >>> 从4.1.x,配上后不插入dummy tag
!
!
xconnect group Core
p2p test1
interface GigabitEthernet0/0/0/10.1148
neighbor ipv4 3.3.3.3 pw-id 23
pw-class cisco
!
!
!
interface GigabitEthernet0/0/0/10.1148 l2transport
encapsulation dot1q 1148
!
Summary:ME37默认封装是type4,ASR9k默认封装是typ5。默认type肯定协商有问题,所以更改asr9k的封装类型,可以通过transport-mode vlan,改成type4,但是transport-mode有两种option,一种是加passthrough,另一种是不加passthrough,这两种option又有非常大的区别:
1.
加passthough的,直接看端口rewrite规则就可以了2.
如果不加passthough:AC—> PW,先操作AC下的REWRITE规则,然后再PUSH一个TAG 0到PW上;
PW—> AC,先POP ANY,POP第一层,再操作AC接口下REWRITE规则的SYMMETRIC规则;
对于
”transport-mode passthrough”这里有更详细的解释:
ASR9k and 7600 (when using EVC configuration) are so-called EFP platforms. This means that dot1q tag is not stripped off by default, but you have to use ‘rewrite’ commands like: “rewrite ingress tag pop 1 symmetric”
In case of Type 4 pseudowire (Ethernet VLAN), if you strip off the tag with rewrite you’ll
be left without any tags. To facilitate this we add so-called ‘dummy tag‘.
‘transport-mode vlan passthrough‘ is special version of Type 4 PW, which doesn’t insert dummy tag. So, in this case in order to keep original dot1q tag, we should not use ‘rewrite’ command.
***封装是封装,数据是数据,两者不相干******只要两边type相同,协商就会up,不是说session up了,数据就会通,这还得再分析***现在来分析下整个的数据转发过程:
先从37这边开始:AC—> PW,默认数据带上dummy tag 1148放到PW上传送
到达ASR9K后:PW—> AC,由于用了passthrough,所以不涉及dummy tag0,直接看AC接口rewrite,发现没有任何配置,所以数据会带着1148出去,端口默认是不会去check出方向的tag的,除非配置了ethernet egress-filter strict。
ASR9k回包:AC—> PW,直接看端口的rewrite规则,这里没有rewrite,所以match后直接把带着tag(也是dummy tag)的数据放到PW上,传给37
到达37后:PW—> AC,37同样没有rewrite,所以直接把这个带着tag的数据传出去