交换机端口聚合功能使用广泛,既能增加带宽,又能提供冗余链路功能,深受网络工程师的喜爱,在一些大型网络环境,配合集群或虚拟化,可以对网络的高可靠性提供更进一步的链路保障。
最近笔者单位为提高网络安全,新增安全设备,在实施过程中,因为单位机房设备众多,且安全设备主要是对机房核心设备进行防护,又不想更改现有网络拓扑结构,安全设备就安装在了用户核心交换机与服务器核心交换机之间,做透明方式接入,拓扑图如图1所示。
两台交换机之间使用千兆电口做聚合、使用相同的聚合组(聚合组只具有本地有效性,此处是方便记忆)。两台防火墙独立运行,没有使用HA(此次使用的防火墙不支持HA双活,不支持跨设备端口聚合,防火墙使用透明模式接入,每台防火墙使用三个电口,两个电口做桥接,接入网络,一个电口做为管理口,用来管理安全设备)。两台交换机配置如下(部分)。
图1 单位网络拓扑图
服务器核心交换机、用户接入核心交换机:
使用intface vlan2作为路由接口,用户网段与服务器网段使用VLAN2虚拟接口路由。
以上配置完毕,用户反映内网服务器使用正常,在运行了一段时间后,突然有人反映,应用出现访问缓慢,甚至打不开的情况。在用户网段使用ping命令测试与服务器的链接情况,出现丢包现象。
当时认为是服务器出现问题,但在服务器网段访问应用服务器时,应用打开速度正常,使用ping命令测试延时也在正常范围内,且未出现丢包现象,通过与更多内网办公用户沟通,出现应用缓慢,甚至打不开的情况非常普遍。
当时认为是防火墙出现了问题,登录防火墙查看情况,咨询了防火墙厂家技术人员,都没有找到防火墙策略出现了什么问题。
正在非常苦闷时,突然发现防火墙的一个桥接端口显示状态为“down”。当时第一想法是,“我做的端口聚合,即便有口‘down’掉了,链路是冗余的,所有流量都应自动切换到另外一条链路上,不应该出现丢包的问题的”。然后顺便查看了接口上有没有收到错误的数据包等工作,都没有找到相关的问题。
无意中使用“dis linkaggregation ver”查看了服务器核心交换机聚合口的状态,发现如图2所示情况。
图2 查看服务器核心交换机聚合口的状态
图3 在另外一台交换机查看相关状态
当然,有接口“down”掉,此接口变成了“U”状态,也是正常的。但当在另外一台交换机使用“dis linkaggregation ver”查看相关状态时,瞬间明白了丢包的原因,如图3所示。
两台交换机使用的都是1/0/1口跟1/0/2口,但是用户核心交换机两个口都是“S”状态,然而服务器核心交换机1/0/1的状态为“U”,1/0/2的状态为“S”。
在使用静态端口聚合时,端口在聚合组中是否传输数据的标准是:1.端口的状态是否为“UP”状态;2.端口是否为“选中”装态,即“S”状态。如果某个端口状态为“UP”,但在聚合组中状态为“U”,那么这个端口也不传输数据。
在此次问题中,因为服务器核心交换机的1/0/1接口连接的线缆脱落,接口的状态为“down”,接口在聚合组中的状态为“U”,因此这个接口不参与数据的转发;但是用户核心交换机1/0/1端口状态为“UP”,在聚合组中的状态却为“S”,所以此接口参与数据转发。
由于以上情况的发生,从而造成用户核心交换机通过GE1/0/1与GE1/0/2两个接口发送数据,而服务器核心交换机只能通过GE1/0/2接收数据,数据链路层接收到的数据不完整,导致应用层数据包也不完整,所以表现为应用打开缓慢或无法打开。
导致此次问题的根本原因是接口线缆的松动,但是也由此次问题让笔者更深刻的认识静态端口聚合所存在的问题,以及以后使用端口聚合时需要注意的问题,从而避免静态端口聚合出现类似“接口分裂”的情况。