客户在S9700交换机增加部分NAT规则后,反馈访问数据中心服务器X.X.21.5出现不通的现象,该故障在业务调整之前是不存在的。
处理过程
X.X.21.5 X.X.21.51、 交互过程分析:通过分析报文,得到故障业务流量,确认上行流量进行S9700时是正确的,但是一直没有收到数据中心返回的流量,故障交互过程定界为上行流量的转发处理。
2、故障点定界:通过tracert的方式对比故障机构和正常机构网络路径的差异,确定故障发生在S9700设备,引起故障的直接原因为来自故障节点的NAT流量流经S9700设备时,没有按照预期的流策略将流量引到SPU板卡做NAT,进而引起故障节点的业务不通。查看SPU板卡 NAT流表,未发现故障节点访问X.X.21.5的相关NAT流表,进一步说明流量未能引到SPU。
3、故障分析:分析当前S9700设备的流策略引流配置和近期的NAT相关业务调整,故障节点访问数据中心X.X.21.5的引流策略(ACL 3995 Rule 20)没有问题。检查近期新增流策略,发现ACL 3995中新增了匹配port-range的规则(Rule 810),由于交换机底层硬件的限制,匹配port-range的规则只能下发到L2&L3分组中,同QoS策略共分组,而一个报文在L2&L3分组中只会匹配一次策略,终导致故障节点访问总行的流量未命中NAT策略引起NAT业务异常:
变更前:
acl 3995
rule 20 permit ip source 10.0.0.0 0.255.255.255 destination X.X.21.5 0本次问题涉及的NAT引流策略,没有问题;
变更后
rule 810 permit tcp source 10.1.1.1 0 destination 10.2.2.2 0 destination-port range ftp-data ftp —— 新增port range规则,该规则需要下发到转发引擎的L2&L3分组中(和QOS策略共分组),引起部分NAT业务异常
根因
由于交换机底层硬件的限制,如果L3分组中的流策略需要同时匹配port range(指一段L4协议端口,不包括单一的L4协议端口)字段,该规则必须经过跨组刷新到L2&L3分组中,而ACL 3995 rule 20和ACL 3983存在包含关系,故而在新增port range配置后,流量命中了新增加的配置而未命中原有ACL,导致流量未做NAT。现场将ACL 3995 rule 810拆分为两条规则,故障恢复。
解决方案
由于该故障的根因是在NAT规则中匹配了port range字段导致该规则必须搬移到和优先级重标记规则相同的分组中引起业务故障,因此需要将当前的匹配port range的NAT规则进行拆分,并避免后续在NAT规则中匹配port range字段。
建议与总结
当advanced ACL rule中包含以下三种字段时需要下发到L2&L3分组中:range、gt、lt