一个开关的故事

一个开关的故事
在我们的本地网络聚合中,我们有六对 Arista DCS-7050CX3-32S 交换机和一对 Brocade VDX 6940-36Q 交换机。 这并不是说我们对这个网络中的博科交换机过度紧张,它们工作并执行其功能,但我们正在准备某些操作的完全自动化,而我们在这些交换机上没有这些功能。 我还想从40GE接口切换到使用100GE的可能性,以便为未来2-3年做好储备。 所以我们决定将 Brocade 更改为 Arista。

这些交换机是每个数据中心的 LAN 聚合交换机。 分布交换机(第二级聚合)直接连接到它们,它们已经将架顶式本地网络交换机组装在带有服务器的机架中。

一个开关的故事
每台服务器连接一台或两台接入交换机。 接入交换机连接到一对分布交换机(两台分布交换机以及接入交换机到不同分布交换机的两条物理链路用于冗余)。

每个服务器都可以被自己的客户端使用,因此客户端被分配一个单独的VLAN。 然后,在任意机架中该客户端的另一台服务器上注册相同的 VLAN。 数据中心由若干这样的行(POD)组成,每行机架都有自己的分配交换机。 然后这些分布交换机连接到汇聚交换机。

一个开关的故事
客户可以订购任意排的服务器;无法提前预测服务器将被分配或安装在特定机架的特定排中,这就是每个数据中心的汇聚交换机上大约有2500个VLAN的原因。

DCI(数据中心互连)设备连接到汇聚交换机。 它可用于 L2 连接(一对交换机形成通往另一个数据中心的 VXLAN 隧道)或 L3 连接(两个 MPLS 路由器)。

一个开关的故事
正如我已经写过的,为了统一一个数据中心设备上的服务配置自动化流程,有必要更换中央聚合交换机。 我们在现有交换机旁边安装了新交换机,将它们组合成 MLAG 对并开始准备工作。 它们立即连接到现有的聚合交换机,以便它们在所有客户端 VLAN 上拥有一个通用的 L2 域。

电路细节

具体来说,让我们为旧的汇聚交换机命名 A1 и A2, 新的 - N1 и N2。 让我们想象一下,在 吊舱 1 и 吊舱 4 托管一个客户端的服务器 S1,客户端 VLAN 以蓝色表示。 该客户端正在使用与另一个数据中心的 L2 连接服务,因此其 VLAN 被馈送到一对 VXLAN 交换机。

客户 S2 主机服务器在 吊舱 2 и 吊舱 3,客户端 VLAN 以深绿色表示。 该客户端还使用与另一个数据中心的连接服务,但是 L3,因此其 VLAN 被馈送到一对 L3VPN 路由器。

一个开关的故事
我们需要客户端 VLAN 来了解替换工作的哪个阶段会发生什么、通信中断发生在哪里以及中断的持续时间可能是多长。 该方案中没有使用STP协议,因为在这种情况下它的树的宽度很大,并且协议的收敛性随着设备和它们之间的链路的数量呈指数增长。

通过双链路连接的所有设备形成堆栈、MLAG 对或 VCS 以太网结构。 对于一对 L3VPN 路由器,不使用此类技术,因为不需要 L2 冗余;它们通过聚合交换机相互具有 L2 连接就足够了。

实施方案

在分析进一步事件的选项时,我们意识到有多种方法可以开展这项工作。 从整个本地网络的全局中断,到部分网络的 1-2 秒小中断。

网络,停下来! 开关,更换!

当然,最简单的方法是在所有 POD 和所有 DCI 服务上声明全局通信中断,并从交换机切换所有链路 А 至开关 N.

一个开关的故事
除了中断之外,我们无法可靠预测的时间(是的,我们知道链路数量,但我们不知道会出现多少次问题 - 从跳线损坏或连接器损坏到端口或收发器故障),我们仍然无法提前预测连接到旧交换机 A 的转接线、DAC、AOC 的长度是否足以到达新交换机 N,虽然站在它们旁边,但仍然有点距离侧面,以及相同的收发器是否适用于从 Brocade 交换机到 Arista 交换机的 /DAC/AOC。

而这一切都是在来自客户和技术支持的巨大压力的情况下进行的(“Natasha,站起来!Natasha,一切都不起作用!Natasha,我们已经写信给技术支持,说实话!Natasha,他们已经放弃了所有东西”) !娜塔莎,还有多少还没有用?娜塔莎,什么时候有用?!”)。 尽管预先宣布了休息时间并通知了客户,但在这个时候请求的涌入是肯定的。

停下来,1-2-3-4!

如果我们不宣布全球中断,而是宣布 POD 和 DCI 服务的一系列小型通信中断,该怎么办? 第一次休息时,切换到开关 N吊舱 1,在第二个——几天后—— 吊舱 2,然后再过几天 吊舱 3进一步 POD 4…[N],然后是 VXLAN 交换机,然后是 L3VPN 路由器。

一个开关的故事
通过这种切换工作的组织方式,我们可以降低一次性工作的复杂性,并在突然出现问题时增加解决问题的时间。 切换后,POD 1 仍与其他 POD 和 DCI 保持连接。 但工作本身拖了很长一段时间;在数据中心的这项工作中,需要工程师亲自执行切换,并且在工作期间(这种工作通常在晚上进行,从 2 点开始)。到凌晨 5 点),在线网络工程师的存在需要具有相当高的资质水平。 但随后我们会遇到短暂的通信中断;通常,工作可以在半小时内完成,最多可休息 2 分钟(实际上,根据设备的预期行为,通常为 20-30 秒)。

在示例客户端中 S1 或客户 S2 您必须至少警告三次有关通信中断的工作 - 第一次在其中一个服务器所在的一个 POD 上执行工作,第二次 - 第二次,第三次 - 当DCI 服务的交换设备。

切换聚合通信通道

为什么我们要讨论设备的预期行为,以及如何在最小化通信中断的同时切换聚合通道? 让我们想象一下下面的图片:

一个开关的故事
链路的一侧有 POD 分配交换机 - D1 и D2,它们彼此形成一个 MLAG 对(堆栈、VCS 工厂、vPC 对),另一方面有两个链接 - 链接1 и 链接2 - 包含在旧聚合交换机的 MLAG 对中 А。 在开关侧 D 具有名称的聚合接口 端口通道A,在汇聚交换机一侧 А - 具有名称的聚合接口 端口通道D.

聚合接口的工作方式采用LACP协议,即两端交换机定期在两条链路上交换LACPDU报文,以保证链路:

  • 工作;
  • 包含在远程端的一对设备中。

交换报文时,报文携带值 系统 ID,指示包含这些链接的设备。 对于 MLAG 对(堆栈、工厂等),形成聚合接口的设备的 system-id 值是相同的。 转变 D1 发送至 链接1系统 ID D,并切换 D2 发送至 链接2系统 ID D.

开关 A1 и A2 分析通过一个 Po D 接口接收到的 LACPDU 数据包并检查其中的 system-id 是否匹配。 如果通过某些链接收到的系统 ID 突然不同 从目前的经营价值来看,则该链路将从聚合接口中删除,直到情况得到纠正。 现在在我们的交换机端 D 来自 LACP 合作伙伴的当前系统 ID 值 - A,并在开关侧 А — 来自 LACP 合作伙伴的当前系统 ID 值 — D.

如果我们需要切换聚合接口,我们可以通过两种不同的方式来完成:

方法 1 - 简单
禁用来自交换机 A 的两条链路。 在这种情况下,聚合通道不起作用。

一个开关的故事
将两条链路一一连接到交换机 N,然后将再次协商LACP工作参数并形成接口 波D 在开关上 N 以及在链接上传输值 系统 ID N.

一个开关的故事

方法 2 - 尽量减少干扰
断开链路 2 与交换机 A2 的连接。 同时,之间的交通 А и D 将继续仅通过其中一条链路进行传输,该链路仍将是聚合接口的一部分。

一个开关的故事
将 Link 2 连接到交换机 N2。 在开关上 N 聚合接口已经配置 波DN,并切换 N2 将开始传输到 LACPDU 系统 ID N。 在这个阶段我们已经可以检查开关 N2 与用于的收发器正常工作 链接2,表示连接端口已进入状态 Up,并且连接端口在传输LACPDU时不会出现错误。

一个开关的故事
但事实是开关 D2 用于聚合接口 波A 从侧面看 链路 2 收到与当前操作系统 ID A 值不同的系统 ID N 值, 不允许切换 D 进入 链接2 聚合接口的一部分 波A。 转变 N 无法进入 链接2 投入运行,因为它没有收到交换机 LACP 伙伴的可操作性确认 D2。 得到的流量是 链接2 没有通过。

现在我们从开关 A1 关闭链路 1,从而剥夺开关 А и D 工作聚合接口。 所以在开关侧 D 接口的当前工作系统 ID 值消失 波A.

一个开关的故事
这允许开关 D и N 同意交换系统 ID 一个 在接口上 波A и 波DN,这样流量就开始沿着链路传输 链接2。 实际上,这种情况下的休息时间最多为 2 秒。

一个开关的故事
现在我们可以轻松地将 Link 1 切换到 N1、恢复接口冗余的容量和级别 波A и 波DN。 由于当该链路连接时,当前的 system-id 值在任何一方都不会改变,因此不会出现中断。

一个开关的故事

附加链接

但切换时可以在没有工程师在场的情况下进行切换。 为此,我们需要提前在分配交换机之间铺设额外的链路 D 和新的聚合交换机 N.

一个开关的故事
我们正在聚合交换机之间铺设新链路 N 以及所有 POD 的分配交换机。 这需要订购和铺设额外的跳线,并安装额外的收发器,如下所示 N和在 D。 我们可以做到这一点,因为在我们的交换机中 D 每个 POD 都有可用端口(或者我们预先释放它们)。 因此,每个 POD 通过两条链路物理连接到旧交换机 A 和新交换机 N。

一个开关的故事
在开关上 D 已形成两个聚合接口 - 波A 有链接 链接1 и 链接2磷氮 - 有链接 链接N1 и 链接N2。 在这个阶段,我们检查接口和链路的连接是否正确,链路两端的光信号电平(通过交换机的DDM信息),甚至可以检查负载下链路的性能或监控链路的状态。光信号和收发器温度几天。

流量仍然通过接口发送 波A,以及接口 磷氮 不花费流量。 界面上的设置是这样的:

Interface Port-channel A
Switchport mode trunk
Switchport allowed vlan C1, C2

Interface Port-channel N
Switchport mode trunk
Switchport allowed vlan none

通常,D 交换机支持基于会话的配置更改;使用具有此功能的交换机型号。 所以我们可以一步更改Po A和Po N接口的设置:

Configure session
Interface Port-channel A
Switchport allowed vlan none
Interface Port-channel N
Switchport allowed vlan C1, C2
Commit

然后配置更改将发生得足够快,并且实际上中断时间不会超过 5 秒。

这种方法使我们能够提前完成所有准备工作,进行所有必要的检查,与过程中的参与者协调工作,详细预测作品制作的动作,而不会在“一切都出了问题”时失去创造力。 ,”并手头有一个恢复到之前配置的计划。 根据此计划的工作由网络工程师执行,而现场没有实际执行交换的数据中心工程师。

这种切换方法的另一个重要之处是所有新链路都已提前受到监控。 错误、在单元中包含链接、加载链接 - 所有必要的信息都已经在监控系统中,并且已经绘制在地图上。

D日

POD

我们为客户选择了最不痛苦的切换路径,并且通过附加链接最不容易出现“出现问题”的情况。 因此,我们在几个晚上将所有 POD 更换为新的聚合交换机。

一个开关的故事
但剩下的就是切换提供DCI服务的设备了。

L2

对于提供 L2 连接的设备,我们无法使用额外的链路进行类似的工作。 至少有两个原因:

  • VXLAN 交换机上缺乏所需速度的空闲端口。
  • VXLAN 交换机上缺乏会话配置更改功能。

我们没有仅在同意新的系统 ID 对时“一次一个”地切换链接,因为我们没有 100% 的信心相信该过程会正确进行,并且实验室的测试表明,在如果“出现问题”,我们仍然会遇到连接中断,最糟糕的情况不仅是与其他数据中心有 L2 连接的客户端,而且通常是该数据中心的所有客户端。

我们提前做好了L2通道过渡的宣传工作,因此VXLAN交换机受影响的客户端数量已经比一年前少了好几倍。 因此,我们决定中断二层连接服务的通信,前提是保持一个数据中心本地网络服务的正常运行。 此外,该服务的 SLA 还提供了在中断的情况下执行预定工作的可能性。

L3

为什么我们在组织DCI业务时建议大家改用L3VPN? 原因之一是能够在提供此服务的路由器之一上执行工作,只需将冗余级别降低到 N+0,而无需中断通信。

让我们仔细看看服务交付方案。 在此服务中,L2 网段仅从客户端服务器到达 L3VPN Selectel 路由器。 客户端网络在路由器上终止。

每个客户端服务器,例如 S2 и S3 在上图中,有自己的私有IP地址 - 服务器 S10.0.0.2 上的 24/2 и 服务器 S10.0.0.3 上的 24/3。 地址 10.0.0.252/24 и 10.0.0.253/24 由 Selectel 分配给路由器 L3VPN-1 и L3VPN-2, 分别。 IP地址 10.0.0.254/24 是 VRRP VIP 地址 在 Selectel 路由器上。

您可以了解更多有关L3VPN服务的信息 阅读 在我们的博客中。

在切换之前,一切看起来大致如图所示:

一个开关的故事
两个路由器 L3VPN-1 и L3VPN-2 连接到旧的聚合交换机 А。 VRRP VIP 地址 10.0.0.254 的主设备是路由器 L3VPN-1。 该地址比路由器具有更高的优先级 L3VPN-2.

unit 1006 {
    description C2;
    vlan-id 1006;
    family inet {       
        address 10.0.0.252/24 {
            vrrp-group 1 {
                priority 200;
                virtual-address 10.100.0.254;
                preempt {
                    hold-time 120;
                }
                accept-data;
            }
        }
    }
}

S2服务器使用网关10.0.0.254与其他位置的服务器通信。 因此,断开 L3VPN-2 路由器与网络的连接(当然,如果它首先与 MPLS 域断开连接)不会影响客户端服务器的连接。 此时,电路的冗余级别就被简单地降低了。

一个开关的故事
之后我们就可以安全地重新连接路由器了 L3VPN-2 到一对开关 N。 铺设链路,更换收发器。 客户端服务运行所依赖的路由器逻辑接口将被禁用,直到确认一切正常运行为止。

检查完接口上的链路、收发器、信号级别和错误级别后,路由器投入运行,但已连接到一对新交换机。

一个开关的故事
接下来,我们降低 L3VPN-1 路由器的 VRRP 优先级,并将 VIP 地址 10.0.0.254 移动到 L3VPN-2 路由器。 这些工作也是在不中断通讯的情况下进行的。

一个开关的故事
将 VIP 地址 10.0.0.254 传输到路由器 L3VPN-2 允许您禁用路由器 L3VPN-1 不中断客户端的通信并将其连接到一对新的聚合交换机 N.

一个开关的故事
是否将 VRRP VIP 返回给 L3VPN-1 路由器是另一个问题,即使返回,也是在不中断连接的情况下完成的。

在总

经过所有这些步骤后,我们实际上更换了其中一个数据中心的聚合交换机,同时最大限度地减少对客户的干扰。

一个开关的故事
剩下的就是拆除了。 拆除旧交换机、拆除交换机 A 和 D 之间的旧链路、拆除这些链路的收发器、校正监控、校正文档和监控中的网络图。

我们可以使用其他项目中切换后留下的交换机、收发器、跳线、AOC、DAC或进行其他类似的切换。

“娜塔莎,我们改变了一切!”

来源: habr.com

添加评论