袁鸣骁,戴锦友
(1.光纤通信技术和网络国家重点实验室,湖北武汉430074;2.武汉烽火网络有限责任公司,湖北武汉430074)
虚拟化堆叠系统实时数据同步实现方法
袁鸣骁1,2,戴锦友1,2
(1.光纤通信技术和网络国家重点实验室,湖北武汉430074;2.武汉烽火网络有限责任公司,湖北武汉430074)
堆叠是一种将多台设备虚拟成一台设备来管理和使用的技术,它能够简化交换机管理,提高其可用性和性能。在堆叠技术的实现过程中,堆叠各成员在实时运行过程中动态表项、协议状态、实时配置、链路变化等事件的同步是一个亟待解决的问题。提出了一种在堆叠成员间建立同步通道来实现实时信息同步,从而解决了上述问题。
堆叠;虚拟化;网络设备;数据同步
固定端口交换机配置简单、成本低,在网络边缘和企业中得到越来越广泛的应用,因此对交换机运营维护管理所需的工作量也越来越大,交换机的OAM能力越来越受重视,在此背景之下,ISS(Intellectual Switch Stack,智能交换机堆叠)技术被提出,将多台交换机虚拟化成一个逻辑上的单台高密度端口交换机,改善了对单个交换机运营维护的时候需要逐台配置和调试的问题的同时,提升了交换机的可用性、性能以及端口密度,使原本没有高可用性支持,无法应用于重要场合的盒式交换机具备了框式交换机的高可靠性和高性能[1]。
堆叠系统由多台分布设备虚拟而成,为了其自身能够在网络中稳定运行,通常在此系统中选举出一台主设备作为Master管理整个堆叠系统的运行,而堆叠系统在实际应用中可能存在Master设备脱离原堆叠系统的情况出现,为了使新形成的堆叠系统能接替原堆叠系统在网络中的任务,则要求堆叠系统各成员有相同的实时配置和动态表项以及状态,因此堆叠成员之间的信息同步是堆叠功能实现过程必须解决的问题。
堆叠角色分为Master与Slave,其中Master负责管理整个堆叠,而Slave则作为Master的备份设备运行,当Master故障时,系统会自动从Slave中选举一个新的Master接替原Master工作,堆叠中的Master和Slave均由角色选举产生,一个堆叠系统中同时只能存在一台Master,其他成员设备都是Slave。堆叠成员具有堆叠域、成员编号、成员优先级、是否指定Master等属性,只有域ID相同的成员设备才能组成堆叠;而同一个域中的每一个堆叠成员具有惟一的成员编号;成员优先级用于角色选举过程中确定成员设备的角色,优先级越高当选为Master的可能性更大[2]。
堆叠系统中成员通过专用堆叠端口进行连接,每个堆叠成员至少使能一个堆叠口。堆叠成员的运行状态有:Init(设备的缺省值状态),Collection(拓扑收集状态),Election(选举状态),Loading(配置文件同步状态)和Done(站点稳定运行状态)[3]。在多台交换机使能堆叠协议连接成环形或者链型拓扑后(见图1),首先需建
立堆叠端口的协议状态,在堆叠设备通过堆叠口相连后,会互通keepalive报文,只有两端同时收到了对端的keepalive报文后,各堆叠口的协议状态才为up,才能进行hello报文的发送,进入collection阶段。在collection状态中,堆叠中每个成员设备都周期性地通过堆叠端口向所有堆叠成员发送hello报文,每个成员设备都根据收到的hello报文在本地记录收到的拓扑信息,hello报文中只携带自己的信息(域编号、成员编号、是否指定Master、优先级、运行时间和MAC地址等),发送hello报文时跳数设定为1,hello报文每经过一个成员跳数加1,每个成员收到hello报文后判断其源是否自己,如果是自己则终结,如果源不是自己则接收并更新自己的拓扑成员表,然后从另一个堆叠端口转发hello报文并增加报文中的跳数。在堆叠系统初始启动后,经过一段时间的拓扑收集,每个成员都可以得到整个拓扑结构的信息。堆叠系统在完成拓扑收集后进入角色选举阶段,根据角色选举原则选出一个Master,其他成员设备都是Slave。选举完成后,Master设备在选举完成后,直接执行本地配置文件,进入站点稳定运行的Done状态,而Slave设备则需要从Master站点Load配置文件进行同步,在同步完成之前,站点一直处于Loading状态。各Slave站点配置文件同步完成后依次进入Done状态。当堆叠系统中所有的站点均进入了Done状态后,整个堆叠系统进入稳定运行状态[4],如图2所示。
图1 ISS拓扑示意图
为了保证堆叠系统能作为单台站点在网络中进行配置和管理,以及当Master出现故障时新Master被选举出来后能接替原Master管理整个堆叠。要求堆叠各个子系统在实时运行过程中具有相同的配置、协议状态和动态表项,能够协商处理普通业务报文的转发以及外部事件。对此,堆叠系统分批量同步和实时同步两种方案解决堆叠子系统间的同步问题,批量同步即如图3表示的配置文件同步,而实时配置同步则依赖于同步通道的建立。
堆叠成员配置文件同步的方式如图3所示,在堆叠系统选举结束后,Slave向Master发出同步请求申请同步配置文件,Master收到了该请求后向Slave发出同步请求应答,在Slave收到此应答后Master和Slave即可进行配置文件同步的相关处理,最终Slave会获得Master提供的一份配置文件,并替换掉自己本地配置文件后执行,实现批量配置的同步。
图2 堆叠状态机
图3 成员配置文件同步过程图
堆叠成员间实时同步方式如图4所示,堆叠系统在堆叠成员间建立了同步通道,当成员1上有收包,命令字、协议表项需同步以及链路linkup/down等外部事件发生时,成员1均会将所需同步的内容填入buffer并封装上堆叠包头后利用同步通道发送至目的成员,目的成员根据堆叠包头中的子类型选择对应的函数解包并处理。
图4 同步通道示意图
堆叠同步通道报文格式如图5所示。
图5 报文格式
同步通道包头:
SessionID:4 b字段,整数值,Socket服务器通过此标识寻找相应会话文件。
pktType:2 b字段,整数值,标识同步通道报文的子类型,分为L2DATA_REQUEST_PKT,L2DATA⁃SYNC_TYPE,L2DATA_MAX_TYPE三种类型,其中类型为L2DATASYNC_TYPE的报文装载同步信息。
destMemberID:1 b字段,整数值,标识目的成员编号。
srcMemberID:1 b字段,整数值,标识源成员号。
cmdType:2 b字段,整数值,标识堆叠同步包的子类型,分为STACK_L2PKT_IFNOTIFY,STACK_L2PKT_ RECVPKT,STACK_L2PKT_SENDPKT,STACK_L2PKT_ SENDPKT,STACK_L2PKT_SENDPKT,STACK_L2PKT_ SYNCAPI,STACK_L2PKT_SYNCAPI等类型,其中STACK_L2PKT_SYNCAPI类型标识命令字同步[5]。
dataLen:2 b字段,整数值,标识同步包净荷部分长度。
填充内容:
SyncType:1 b字段,整数值,标识需同步的命令字子类型,分为FUNC_HWIFSET,FUNC_HWSYSTEMSET等类型,其中FUNC_HWIFSET标识对接口下硬件设置。
cmd:4 b字段,整数值,标识硬件适配层命令字子类型。
mark:1 b字段,整数值,标识instanceRef参数的类型,1标识指针,0表示整数。
size:2 b字段,整数值,标明cmd参数大小。
instanceRef:4 b字段,整数值,标识交换机端口索引号。
flag:4 b字段,整数值,标识同步local或remote,其中同步remote表明此配置需要同步到堆叠子系统。
len:4 b字段,整数值。标明instanceRef参数长度。
堆叠在实际中的应用如图6所示,3台交换机通过堆叠端口互联,在堆叠同步的支持下,等效为一台设备在网络中运行。现以在成员1(Master)上配置成员2的接口shutdown为例说明堆叠成员间是如何通过同步通道同步实时配置的。如图7所示,当用户通过console口或Telnet登陆成员1并对成员2的接口配下“shutdown”时,网管层会记下用户shutdown接口的接口号并将此参数传入USP层,USP作为软件平台,提供了统一的事件通告、接口管理、数据状态配置同步、协议管理等功能,此时平台识别用户对成员2接口进行配置,于是交给USP内接口管理模块并标明flag参数为remote,接着下HwApi层接口对上层传入的syncType,cmd,instanceRef,flag等信息封装入buffer并传给同步通道接口,同步通道再将SessionID,pktType,destMemberID,srcMemberID等信息装入包头后加在buffer前封装成同步包通过Socket发送至成员2。
图6 ISS实际应用图
成员2搜到成员1发来的同步包后,由HwApi层先从同步包头中解析出pktType,若确定是L2DATA⁃SYNC_TYPE再解析出cmdType,根据cmdType的子类型,选择相应的函数解析出同步包净荷中的SyncType、cmd、instanceRef、flag等信息,再根据SyncTpe和cmd子类型,调用相应的驱动层接口并传入上层交托的instan⁃ceRef信息等下硬件设置,于是成员1上的配置成功同步到成员2,到此配置同步结束。
图7 函数层次调用关系
现有烽火网络S4800⁃S⁃E交换机3台组成堆叠系统,并在其中的站点1上对站点2的5号接口配置shutdown以验证此配置是否能生效并同步至堆叠成员2和3。
如图8所示,堆叠系统形成。
图8 堆叠系统稳定示意图
在站点1上对站点2的2/1/0/5口配置“shutdown”之前show interface,如图9所示。
图9 “shutdown”配置前接口状态示意图
可以看到成员2的2/1/0/5口的管理(a)和链路状态(o)均为up态。
在站点1上对站点2的5号口“shutdown”,如图10所示。
图10 Linkdown信息打印示意图
站点1立即打印链路断开信息。
在站点2和站点3上show interface,查看接口均如图11所示。
发现2/1/0/5接口为down状态,站点1的配置成功生效并同步到站点2和3。
堆叠成员间通过配置文件的同步可以有效地批量同步配置,但是却无法解决交换机在实时运行过程中变化的动态表项、协议状态、实时配置,链路变化等事件的同步。本文提出了在堆叠成员间建立同步通道的方法,使得堆叠成员间能通过收发同步包来及时有效地获取其他设备上变化的信息,解决了堆叠成员间实时信息同步的问题,经过实验测试证实,该方法切实可行。
图11 “shutdown”配置后接口状态示意图
[1]王隆杰.虚拟网络交换技术[J].通信技术,2009(4):82⁃87.
[2]杨续波.交换机的级联与堆叠[J].企业技术开发,2006(6):17⁃19.
[3]钱欢.虚拟化堆叠技术研究与实现[J].虚拟仪器技术,2013(18):70⁃71.
[4]马博峰.VMware,Citrix和Microsoft虚拟化技术详解与应用实践[M].北京:机械工业出版社,2012.
[5]ANDERSON T,PETERSON L,SHENKER S,et al.Overcoming the Internet impasse through virtalization[J].Computer,2005,38(4):34⁃41.
[6]朱伟,李纪云,江慧,等.基于分布式内存数据的数据同步设计与实现[J].现代电子技术,2014,37(2):77⁃79.
Method of real⁃time data synchronization for virtual stack system
YUAN Ming⁃xiao1,2,DAI Jin⁃you1,2
(1.State Key Laboratory of Fibre Optic Communication Technologies and Networks,Wuhan 430074,China;2.Wuhan FiberHome Networks Co.,Ltd.,Wuhan 430074,China)
Stack is a kind of technology that virtualizes multiple devices into a single device for management and use.It can simplify the management of exchanger,and improve its availability and performance.Synchronization of dynamic entry,real⁃time configuration,protocol state,link change of the stacked devices is an urgent thing to be solved during the process of reali⁃zing the stacking technology.That′s why a method is presented in this paper to solve the above problem by establishing a syn⁃chronization channel among stacked devices to achieve real⁃time information synchronization.
stack;virtualization;network device;data synchronization
TN911⁃34
A
1004⁃373X(2015)03⁃0009⁃04
袁鸣骁(1990—),男,硕士生。主要研究方向为数字通信。
2014⁃08⁃08