一、SV技术基本说明

思科Catalyst9K平台的Stackwise Virtual技术是将两个物理的交换机虚拟成一个逻辑的实体(从网络控制层面和管理的角度来看),这两个交换机合二为一之后,将共享相同的配置和转发状态。这项技术对于网络设计在如下方面都得到了强化:

  • 高可用性

  • 扩展性

  • 设备管理

  • 设备维护

由于两个设备都虚拟成了一台逻辑的设备,所以生成树(STP)将该逻辑的设备视为一个桥节点,但是和其他的SW设备协同工作,也需要注意STP的使用。另外,该技术也整合了包括SSO(Stateful Switch Over)、NSF(Non-Stop Forwarding)、MEC(Multi-chassis EtherChannel)等技术,以提升了可靠性。

从如上这个图我们可以看到,该技术消除了HSRP/VRRP等FHRP协议的使用,避免FHRP协议的一些问题。并通过LACP,PAGP等完成了的Ethernet Channel的建立,实现EMC。为了使用该技术,需要特定的硬件和软件来支持。且不同的设备,要求可能也会不一样。

二、SV技术的架构

该技术将两台配置为同一给SV domain的物理设备虚拟成为一台逻辑的设备,其中一台设备被指定为Active角色,另外一台则作为Standby角色,所有的控制平面的工作都是Active交换机来处理,这包括了我们熟知的SNMP、SSH、Telnet等管理方式;L2的协议如BPDU、PDU、LACP等;L3的路由协议;软件数据路径等。

对于数据平面和流量转发,SV域中的两台交换机都会参与,每台交换机都可以将流量从自己的物理接口转发到上行接口,不是所有的流量都需要Active交换机来转发,除非某一交换机查询到目的是在SV域中另一台交换机,那么会将该流量通过SVL(Stackwise Virtual Link)转发给那台交换机进行出口方向的处理。

1、SV MAC地址

  • 当交换机启动,作为Active交换机时,它将给所有的L3接口分配MAC地址,默认情况下,MAC地址从位于Cisco Catalyst 9000交换机本身的EEPROM存储设备派生。

  • 当选为Active角色的交换机将为SV domain提供系统MAC地址。

  • 当Standby交换机上线之后,它的MAC地址也将由Active交换机的MAC EEPROM派生。

  • 即使SV交换机的角色发生了切换,MAC地址也会保持不变。当该情况发生时,show switch查看也能看到MAC persistency wait time(MAC持久性等待时间)为“indefinite”(未定义)。此行为特别有助于减少对流量的影响,因为在意外切换期间,SV domain不必向邻居通告新的MAC地址。

SV-#show switch

Switch/Stack Mac Address : 2eaf.be84.0a12 - Local Mac Address
Mac persistency wait time: Indefinite
H/W Current
Switch#         Role         Mac Address     Priority     Version     State
-------------------------------------------------------------------------------------
          Standby        2eaf.be84.0a12                     Ready
*         Active         00b0.e1f2.                      Ready

我们可以通过命令“stack-mac persistent timer #”来修改该行为的时间,在该配置的时间内,会使用当前的Active交换机来更新系统的MAC地址。

  • 如果整个SV domain的设备被重启并再次上线之后,并且Peer交换机或其他的交换机作为了SV Active交换机,则Virtual MAC地址将由当前的Active交换机重新分配,所以虚拟MAC地址将和系统重启之前不同。
  • 如果SV domain中的其中一台交换机由于硬件问题而发生故障,并且恰好是SV MAC地址的所有者,那么系统将继续使用相同的MAC地址运行,除非SV domain重新加载或用户明确更新Stack的MAC地址。要在SV domain上更新MAC地址,可以执行命令“ stack-mac update force”。 这将使用当前Active的交换机更新Stack MAC地址。

2、Stackwise Virtual Link(SVL)

SVL是为了让两台C9K交换机形成SV的关键,相关信号或控制信息需要通过SVL来交互,为了促进信息的交互,在两台交换机之间使用的专门的链路来传输数据和控制流量,这个链路就叫做SVL。

该链路通过EthernetChannel形成,可以有1-8个物理接口组成,该链路承载正常的数据流量和SV控制流量。

为了确保在SVL上控制流量获得最高优先级,在所有Link的控制帧上都设置了特殊位。这有助于确保这些帧始终在出口硬件队列上获得优先服务。从数据平面的角度来看,SVL用于将内部交换机数据路径扩展到相邻交换机。使用配置的EtherChannel load-balancing算法,可在SVL负载平衡发送的数据流量。

通过SVL发送的所有帧都用SV头部封装,该头部由出接口ASIC添加到数据帧,并在SVL的另一侧被入口端口ASIC剥离。该头部中包含诸如入端口索引、目标端口索引、VLAN和服务等级(CoS)之类的信息。SV头部的长度为64个字节。它被放置在以太网前导之后,并直接位于第2层头部之前,如下所示。

初始化过程必须确定哪个交换机将成为StackWise Virtual Domain的Active交换机。要确定Active角色和Standby角色,必须初始化SVL并使其联机以进行控制平面通信。由于此决策会影响每个交换机的行为,因此必须在交换机启动周期的早期就协商好角色。因此,在初始化系统的其余部分之前,系统必须使SVL及其关联的端口Online。

通过SVL发送的内部消息可促进两个交换机之间的通信。 因为该Link通过EtherChannel接口被实现,所以它可以低于单链路故障。在激活SV domain之前,系统必须使SVL Online。初始化序列包括如下所示的步骤。

初始化

交换机确定其系统本地的哪些端口是构成SVL的成员,并且预先解析配置文件以提取适当的SVL命令及其相关的接口。这样,可以快速将链路接口置于Online状态。一旦Online,就在SVL的每个Link上激活链接管理协议(Link Management Protocol,LMP)。

LMP执行以下功能:

  • 通过建立双向流量转发来验证链路完整性,并拒绝任何单向链路;
  • 周期交换Hello,以监视和维护Links的健康状况;
  • 在交换机之间协商SV Header的版本。

StackWise虚拟链接角色解析

每个交换机的冗余角色由StackWise发现协议(SDP)解决。

该协议执行以下功能:

  • 确定硬件和软件版本是否允许形成Cisco StackWise Virtual Domain;
  • 从控制平面的角度确定哪个交换机将成为Active交换机,哪个将成为Standby交换机。

HA角色确定

在角色解析期间,首先确定Active角色,然后才对具有成员角色的另一台交换机进行兼容性检查,然后进行批量配置同步。然后,交换机借助SSO机制转换为Standby角色。

*Mar  ::-BULK_CFGSYNC_SUCCEED: Bulk Sync succeeded
*Mar  ::-RF_TERMINAL_STATE: Terminal state reached for (SSO)

3、软硬件需求

从Release16.8.1开始,Stackwise Virtual在所有的Catalyst3850 XS型号和Catalyst9500系列交换机开始支持。

从Release16.9.1开始,Stackwise Virtual只在C9404和C9407支持,并且仅在两个参与Stackwise Virtual 的机箱的相同插槽号中放置单个Supervisor。如果机箱内有备引擎,将在Stackwise Virtual中处于power-off状态。如果Active要求发生了故障,需要用新的引擎或者备引擎来替换。此限制将在以后的软件版本中删除。 WS-SUP-1和WS-SUP1-XL都支持Stackwise Virtual。但是,对于SUP-1,Stackwise Virtual 配置需要额外的许可证。

从Release16.10.1开始,Stackwise Virtual也在所有的高性能C9500支持,如C9500-24Y4C, C9500-48Y4C, C9500-32QC, C9500-32C。

C9K Stackwise Virtual(一)的更多相关文章

  1. Catalyst9K设备介绍

    Catalyst9K系列的里面包含了多款交换机,以及无线控制器,甚至包含了无线AP,如下将简单的介绍这几款产品的情况: 首先,这是一种总体的对应关系: 1.Catalyst9200 Series 主要 ...

  2. Virtual Box配置CentOS7网络(图文教程)

    之前很多次安装CentOS7虚拟机,每次配置网络在网上找教程,今天总结一下,全图文配置,方便以后查看. Virtual Box可选的网络接入方式包括: NAT 网络地址转换模式(NAT,Network ...

  3. 窥探Vue.js 2.0 - Virtual DOM到底是个什么鬼?

    引言 你可能听说在Vue.js 2.0已经发布,并且在其中新添加如了一些新功能.其中一个功能就是"Virtual DOM". Virtual DOM是什么 在之前,React和Em ...

  4. VR ( Virtual Reality )、AR(Augmented Reality)、MR(Mix Reality)和CR(Cinematic Reality)是什么鬼?

    整个社会对虚拟现实的研究和开发源于上个世纪六十年代,计算机图形学.人机接口技术.图像处理与模式识别.多传感技术.语音处理与音响技术.高性能计算机系统.人工智能等领域在之后半个世纪取得了长足的发展为虚拟 ...

  5. C#中Abstract和Virtual的区别

    c# 中 Abstract和Virtual比较容易混淆,都与继承有关,并且涉及override的使用.下面讨论一下二者的区别: 一.Virtual方法(虚方法) virtual 关键字用于在基类中修饰 ...

  6. Java/C++之 public、protected、private ; virtual & abstract

    一.绪 Java/C++都是面向对象的第三代计算机高级编程语言,其本质雷同,而语法确有差异,稍不注意容易引起混淆.本文总结了一些这两门语言的差异之处,仅供参考. 二.C++ 对于C++这门语言,就其类 ...

  7. 初识virtual memory

    一.先谈几个重要的东西 virtual memory是一个抽象概念,书上的原文是"an abstraction of main memory known as virtual memory& ...

  8. php编译 :virtual memory exhausted: Cannot allocate memory

    有时候用vps建站时需要通过编译的方式来安装主机控制面板.对于大内存的VPS来说一般问题不大,但是对于小内存,比如512MB内存的VPS来说,很有可能会出现问题,因为编译过程是一个内存消耗较大的动作. ...

  9. Delphi之静态方法,虚方法virtual,动态dynamic,抽象abstract,消息

    Delphi之静态方法,虚方法virtual,动态dynamic,抽象abstract,消息 http://www.cnblogs.com/zhwx/archive/2012/08/28/266055 ...

随机推荐

  1. 浅谈Java开发三层架构

    三层架构,一般来说就是将整个业务应用划分为:表现层(UI).业务逻辑层(BLL).数据访问层(DAL).区分层次的目的即为了“高内聚,低耦合”的思想. 概念简介 1.表现层(UI):简单来说,就是展现 ...

  2. 蓝牙技术 A2DP AVRCP BlueZ

    BlueZ 做为 linux 标准的协议栈,提供非常多的 profile ,各种的支持,ble , 蓝牙网络,文件传输,a2dp 音频传输. A2DP——Advanced Audio Distribu ...

  3. C语言程序设计(十一) 指针和数组

    第十一章 指针和数组 一旦给出数组的定义,编译系统就会为其在内存中分配固定的存储单元,相应的,数组的首地址也就确定了 C语言中的数组名有特殊的含义,它代表存放数组元素的连续存储空间的首地址 //L11 ...

  4. MySQL记录操作(增删改)

    概览 MySQL数据操作: DML 在MySQL管理软件中,可以通过SQL语句中的DML语言来实现数据的操作,包括 使用INSERT实现数据的插入 UPDATE实现数据的更新 使用DELETE实现数据 ...

  5. 利用mnist数据集进行深度神经网络

    初始神经网络 这里要解决的问题是,将手写数字的灰度图像(28 像素 x28 像素)划分到 10 个类别中(0~9).我们将使用 MINST 数据集,它是机器学习领域的一个经典数据集,其历史几乎和这个领 ...

  6. markdown从入门到放弃word和PDF

    Markdown是一个「轻量级」的「标记语言」. 淡定!!!我知道很多"编外人员"看到这句话之后已经没有兴趣再看下去了. 但是请不要关掉这个页面!!! Markdown很简单!!! ...

  7. Jenkins+Ant+JMeter报告自动化

    1.参考Jenkins+Ant+JMeter集成,安装Jenkins(不需要安装Performance Plugin插件),建立Slave节点,连接Slave节点,创建任务等. 2.将Jenkins+ ...

  8. shell编程之变量赋值

    1.变量赋值: name=lbg 等号前后不能有空格 name="Lebron James" 变量值中有空格要用双引号 echo ${name} 用${}更保险 shopt -s ...

  9. vue 拖拽框架 draggable

    直接使用  npm i -S vuedraggable  页面使用 <template> <div class="addProduct"> <el-d ...

  10. Requests库发送post请求,传入接口参数后报JSON parse error

    报错信息: {"timestamp":"2020-01-08T14:42:40.894+0000","status":400,"e ...