近期在执行常规切换演练过程中,常有工程师咨询演练方案的可行性;
其中有个方案为:“在关闭思科NexusN7K交换机电源模拟设备故障时,清理F5的session”;
这种方案的说法,其实并不完全准确,至于需要清理“F5的session”的原理却不清楚,那么就对该问题进行一个大概的分析,分析中包含了思科Nexus系列一些专业词汇,笔者可能用词不当,理解意思即可,勿喷。
首先;预设一下不同的网络设备对于相同技术词语的称呼:
防火墙FW | session | / |
F5负载均衡 | TCP connect | 会话保持 |
服务器 | TCP | session |
表中举例说明,关于TCP连接,在F5负载均衡设备上称为TCP connect,而在防火墙FW上称为session,这里的session并不是服务器上所说的session会话,而是TCP连接。
复说标题的概念,在思科Nexus系列交换机启用VPC技术,在两台交换机中配置port group,成为链路汇聚某个port channel的成员端口,典型的物理连接方式如下图:
F5负载均衡设备两个端口绑定trunk(这里的trunk名称不是交换机所指的trunk,可以理解为端口绑定)分别连接N7K-A和B两台交换设备,交换机端启用port channel,两条物理线路起到冗余作用。
F5负载均衡设备在绑定物理端口时候,默认使用四源组HASH算法(源IP,源port,目的IP,目的port)对两个物理端口的流量进行负载发送至N7K-A或B。
思科Nexus系列交换机在VPC技术下开启peer-gateway,即:N7K-A和B虚拟出一个MAC(简称:MAC虚,N7K-A简称MAC-A,N7K-B简称MAC-B,),当N7K-A和B两台交换机都存活状态下,N7K-B可以转发带有MAC-A的流量。
F5负载均衡设备中默认会开启Auto-lasthop;(即:记录上一跳的MAC地址)
假设流量通过N7K-A转发至负载均衡F5LTM-A机,按照Auto-lasthop原理F5LTM-A就会记录N7K-A的实际MAC-A;
负载均衡转发至后端服务器并交互后返回客户端,按照负载均衡设备绑定端口的HASH算法,可能被负载至连接N7K-B的端口上,返回的数据包会封装Auto-lasthop记录MAC-A,由于Nexus系列交换机的peer-gateway功能,该数据包可以被N7K-B交换机转发。
如在返回交互数据包时N7K-A恰好断电或宕机,peer-gateway功能的失效,N7K-B将不再转发带有MAC-A的流量。
在切换演练中关闭一台交换机A或B,或实际环境中A或B某一台交换机故障时,理论上是需要清理“F5LTM设备上带有故障交换机MAC的连接表“,但因实际操作的困难性,所以一般会清理F5LTM设备的所有连接,不应该说:“清理F5的session”,按照概念的严谨说法,应改为:清理负载均衡F5LTM上的TCP连接表。