一个小配置导致的S7500E和FW插卡上的奇怪现象
一、 组网:
为了更好的理解这个问题,首先说一下FW插卡的结构,FW插卡分为两部分,一部分称作前插板,就是我们通常说的FW模块,一部分为后插板,是由S7500E产品提供用于和交换机背板相连的底板,在设备上配置的FW的万兆接口实际就是底板和FW模块连接的物理端口。
S7500E直连一台交换机,两台设备需要建立OSPF邻居关系。S7500E配置了FW插卡,配置为二层透明模式,S7500E与交换机连接的端口属于Vlan11,正常数据报文进入S7500E后经过FW转换Vlan Tag 101后在Interface Vlan 101做三层终结。S7500E的Interface Vlan 101和直连交换机的Interface Vlan 11建立邻居关系,图上S7500E与FW插卡连接的物理实际一根线配置了Trunk端口,为了便于理解,逻辑上画了两根线,一根用来进行转发的Vlan 11,一根用来转发Vlan 101的报文。
二、 问题描述:
正常情况下,从75E-2能够Ping通 Interface Vlan 101的Ip地址,并且两端的OSPF邻居为Full状态,查看FW插卡上的Session,可以看到ICMP报文、OSPF Hello报文进入S7500E 0号槽位接口板后均经过FW插卡才能到达Interface Vlan101。
用户误在设备配置Interface Vlan 11后(没有配置IP地址),从S75E-2 Ping S75E-1的Interface Vlan 101不能Ping通,查看OSPF邻居关系,S75E-1为Init,S75E-2没有邻居关系,查看ARP、MAC表项,Vlan 101均能正常学习到。取消Interface Vlan 11的配置后网络恢复正常。
三、 过程分析:
首先查看FW上Session情况,比较奇怪,ICMP报文没有通过FW,而OSPF报文在FW上两端的交互报文均可以看到,也就是说ICMP报文根本就没有到达FW插卡,而OSPF Hello报文FW插卡均正常接收并转发了。
要解释清楚这个问题,先要了解交换机接收到一个需要上送本设备CPU的报文的处理步骤。报文上送CPU有三种处理方式:
1、 寄存器上送CPU,STP协议就是此种方式
2、 ACL上CPU,就是设备检查某个报文的特征值后,通过下发ACL 重定向或COPY等方式将报文上送CPU处理。
报文上送CPU的处理过程如下(只写了与本问题相关的):交换机收到数据报文-检查报文的特征值(特征值匹配,需要上送CPU)-设备驱动层处理-以太层处理-IP层处理-协议层处理。
3、 转发上送CPU,设备走正常的转发流程,检查DMAC和DIP后上送CPU
报文走正常转发流程,检查到报文的DMAC为Vlan虚接口的MAC地址,DIP为Interface Vlan的IP地址,报文将出接口设置为CPU
理解了上面几个过程后,先来看看设备对于ICMP报文的处理。因为配置了Interface Vlan 11,那么interface vlan 11的MAC(000F-E22E-9C44)会下发至底层,即使Interface Vlan 11没有配置IP地址。ICMP报文进入0号槽位后,报文从vlan 11到达交换机后,会检查dmac是否交换机的vlan 接口mac,是接口mac那么就需要走三层转发流程,因为vlan 11的虚接口进行了配置,所以此项检查通过,然后检查dip看到是本交换机非vlan 11的另一个接口地址,确认报文需要上送cpu处理(出端口为cpu接口),也就是报文进入vlan11后需要走三层转发到interface vlan 101,但因为interface vlan11的接口地址没有配置,那么在进行转发时报文会被丢弃,此时报文不经过FW插卡,完全由S7500E自身完成以上工作,因此FW插卡上看不到任何ICMP Session,并且报文在还没有到达CPU接口时就被丢弃了。查看debug信息,首先打开Debug IP ICMP开关后,没有任何显示信息。然后打开debug IP packet的开关,仍然没有任何显示,向下继续打开debug eth packet的开关,有如下显示
*Nov 3 14:07:10:293 2011 S7502E ETH/7/eth_rcv: -Slot=2; Receive an eth packet, interface: GigabitEthernet2/0/1, format: 0, prototype: 0800, src_addr: 00e0-fc00-0003, dst_addr: 000f-e22e-9c44
很明显,驱动层接收到数据报文后进行三层转发,报文上送以太层时仍然可以正常解析,但上送IP层时 报文被丢弃了。(Interface Vlan 11没有配置IP地址的原因)
OSPF报文属于ACL重定向上CPU,先来看看上送CPU的动作,下面蓝色字体部分为OSPF报文的处理情况,可以看到动作为Copy,也就是说,OSPF报文是通过将报文拷贝一份上送CPU的,而原始的数据报文,则要在Vlan内作为普通业务报文继续转发,另外需要注意的是,在下面的ACL中,仅仅要求匹配0100-5E00-0005的Dmac,报文就上送CPU,而不区分Vlan信息,也就是说只要设备开启了三层接口,并且Dmac为0100-5E00-0005,报文就需要执行Copy的动作。
Acl-Type RX IPv4 Middle High, Stage IFP, GroupPri 14, EntryID 54, Active
Health 1, PoolFree 0, PoolID 0, Prio_Mjr 523, Prio_Sub 20,Slice 0,SliceIdx 11
Rule Match --------
Ports: 0x000ffffff, 0x01fffffff
Lookup: VLAN ID valid, STP forwarding, 0x1c, 0x1c
Dest mac: 0100-5E00-0005, FFFF-FFFF-FFFF
IP protocol: ospf
Actions --------
CAR cir 0x100, cbs 0x800, pir 0x100, pbs 0x800, mode srTCM color blind
Account mode packets, green and non-green
Copy_to_cpu : Yes
Change CPU pkt COS 5
Permit
Remark DROPPRE 0
Red Deny
Red_Copy_to_cpu : No
Yel Deny
Yel_Copy_to_cpu : No
MatchedName:11, IPV4_MC_OSPF_5
Accounting: Hi 0, LO 0
上送CPU那份报文因为Interface Vlan 11没有配置IP地址(即使配置了IP没有Network结果也一样,只是丢失在不同层面罢了),报文最终将被丢弃。而转发那份OSPF报文,因为Dmac为组播MAC,经过Vlan 11到达了FW,FW将Vlan 11改变为Vlan 101,通过Vlan 101送回给S75E-1,S75E-1接收到此报文后,经历与上面类似的Copy流程,被Interface Vlan 101接收到,因此S75E-1端OSPF状态进入Init。
再来看看S75E-1发送的Hello报文,初始携带Vlan 101的Tag到达FW,经过FW变换Vlan Tag为Vlan 11后到达FW的底板,底板上同样下发了OSPF的相关ACL,仍然要进行Copy的操作,上送CPU的报文同样原因被丢弃,转发的那份报文的Smac和Dmac分别为Interface Vlan 101的虚接口地址和 0100-5E00-0005,不幸的是,交换机对于接收到自己发送的数据报文采取的处理方式是丢弃,因此这份转发的报文也就被在FW的底板上被丢弃了。
这时可能有两个疑问
1,Vlan Interface101发送的报文封装的是自己的Smac,而在Vlan 11内进行转发的报文检查的是数据报文的Smac是否与Interface Vlan 11的Mac一致,查看Interface Vlan信息后可以看到,两个Vlan虚接口的地址其实是一样的,这其实是一种正常现象。
[S7502E]dis interface Vlan-interface 101
Vlan-interface101 current state: UP
Line protocol current state: UP
Description: Vlan-interface101 Interface
The Maximum Transmit Unit is 1500
Internet Address is 101.0.0.1/24 Primary
IP Packet Frame Type: PKTFMT_ETHNT_2, Hardware Address: 000f-e22e-9c44
[S7502E]dis interface Vlan-interface 101
Vlan-interface101 current state: UP
Line protocol current state: UP
Description: Vlan-interface101 Interface
The Maximum Transmit Unit is 1500
Internet protocol processing : disabled
IP Packet Frame Type: PKTFMT_ETHNT_2, Hardware Address: 000f-e22e-9c44
2,为什么从对端发来的Hello报文可以进行正常的二层转发到达Interface Vlan 101,看一下报文的MAC(对端设备的接口Mac Interface Vlan101的接口Mac)就明白了,因此对端发送的Hello报文是不会被丢弃的。
因此两端设备的OSPF的状态一端为Init,一端为没有任何邻居。
理解上面的原理后,查看表项后发现ARP也是采用Copy上CPU的方式进行处理,那么在Interface Vlan 101上可以学习到正常的ARP和MAC也就不难理解了。
其他的协议报文采用类似的方法也可以得出最后的结论。
目前类似配置导致问题除了在FW的二层模式上存在外,远程镜像的Probe Vlan 禁止配置虚接口也是同样的道理。
四、 解决方法:
问题本身属于误配置导致的,那么将Interface Vlan11去掉后,网络恢复正常。
该案例暂时没有网友评论
✖
案例意见反馈
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作