管理交换机的网络连接的方法和装置
技术领域
本发明涉及网络管理,更具体而言,涉及管理交换机的网络连接的方法和装置。
背景技术
当今网络化电子商务中各种信息的爆炸式增长对提供服务的数据中心提出了极大的挑战。相应地,数据中心规模日益增大,网络也愈加复杂。为了使得数据中心网络易于管理、维护甚至扩展,主机模式连接逐渐成为一种主流的数据中心网络解决方案。在该模式下,数据中心网络对于用户呈现为终端主机系统以移除网络复杂性。
图1示出一个典型的数据中心网络的结构图。在图1中示出了数据中心网络中包含的三个物理平台,例如分别为服务器1,2,3。在每一物理平台的最底层,运行有虚拟机管理程序(hypervisor);在该管理程序之上,可以根据需要安装一个或多个虚拟机。这些虚拟机如同真实的、独立的终端主机一样,彼此独立而隔绝地并行运行,提供各种应用和服务。当然,也可以将一个物理平台直接作为一个终端主机。在典型的网络连接结构中,包括虚拟机在内的各个终端主机连接到(以太网)交换机,经由交换机连接到上游网络。具体而言,交换机在一侧具有若干终端端口,例如图1所示的端口1、2、3,用于连接各个终端主机;在另一侧具有用于上行链路的链路端口,例如端口A和B,来自终端主机的数据经由上行链路传输到上游网络,例如上游交换机或上游因特网。一般地,交换机根据预定方式,例如主机的MAC地址,将所连接的终端主机划分为虚拟局域网VLAN,以VLAN为单位管理终端设备的网络连接。在图1的示例中,来自三个物理平台的虚拟机分别被划分为三组VLAN,并对应地连接到三个终端端口,然后经由上行链路A、B连接到上游网络。
为了确保数据中心网络的稳定性,往往需要为网络提供一定的冗余度,例如提供备用的、冗余的上行链路。根据现有的hot-link方案,为数据中心网络提供冗余的双重上行链路,并使得其中一个上行链路处于活动状态(active)或称为工作状态,另一个上行链路处于非活动状态(passive)或称为备用状态。例如,可以将图1所示的上行链路A设置为活动状态,将上行链路B设置为非活动状态。一旦处于活动状态的上行链路出现故障,就启用原本处于备用状态的另一上行链路。然而,在这样的方案下,总是有一个上行链路处于备用状态,因此对上行链路的资源造成浪费。
另一方面,在同时启用多条上行链路的情况下,很容易在交换机中形成环路。如本领域技术人员所知,在交换网络中,当交换机接收到一个目的地址未知的数据帧时,交换机会将这个数据帧广播出去。这样,在存在物理环路的交换网络中,就会产生双向的广播环,甚至产生广播风暴,导致交换机资源耗尽而宕机。为此,提出了生成树协议STP(Spanning Tree Protocol)来解决这一问题。然而,执行STP仍然增加了网络的复杂性。
此外,现有技术中还提出了其他方案来提供双活动状态的上行链路,例如虚拟端口通道vPC方案,虚拟链路聚合组vLAG方案,多链接半透明互联Trill方案等。然而,在这些方案中,vPC方案和vLAG方案要求上游网络必须是支持vPC或vLAG的对等网络,这就需要对用户的已有网络进行修改。Trill方案是一种新提出的方案,目前正在开发阶段,它对软件和硬件都有非常特殊的要求。上述的已有方案都难以在现有的网络结构中进行实施。因此,希望能提出改进的方案,能够基于现有网络结构,为数据中心交换机提供具有冗余度的双活动状态的上行链路。
发明内容
考虑到现有技术中的不足,本发明提出一种方案,通过管理交换机的网络连接,提供具有冗余度的多活动状态的上行链路。
根据本发明的一个方面,提供了一种管理交换机的网络连接的方法,包括:获取与所述交换机的网络连接相关的软件配置信息,所述软件配置信息指定所述交换机所连接的至少一个虚拟局域网VLAN和所述至少一个VALN将要共享使用的多个上行链路;根据所述软件配置信息,将所述多个上行链路分配给所述至少一个VLAN以形成对应连接关系,在该对应连接关系中,所述至少一个VLAN中的每个VLAN唯一地对应所述多个上行链路中的一个;根据所述对应连接关系在所述交换机的硬件层设置所述至少一个VLAN与所述多个上行链路之间的硬件连接。
根据本发明另一方面,提供了一种管理交换机的网络连接的装置,包括:软件配置信息获取单元,配置为获取与所述交换机的网络连接相关的软件配置信息,所述软件配置信息指定所述交换机所连接的至少一个虚拟局域网VLAN和所述至少一个VLAN将要共享使用的多个上行链路;连接关系形成单元,配置为根据所述软件配置信息,将所述多个上行链路分配给所述至少一个VLAN以形成对应连接关系,在该对应连接关系中,所述至少一个VLAN中的每个VLAN唯一地对应所述多个上行链路中的一个;硬件设置单元,配置为根据所述对应连接关系在所述交换机的硬件层设置所述至少一个VLAN与所述多个上行链路之间的硬件连接。
利用本发明实施例的方法和装置,在交换机中形成共享链路,该共享链路具有冗余的、均处于活动状态的多个上行链路。并且所形成的共享链路可以灵活地适应于运行时状态的改变以及配置的改变,改善网络的可用性。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1示出一个典型的数据中心网络的结构图;
图2示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图;
图3示出根据一个实施例的方法的流程图;
图4A和4B分别示出根据现有技术和根据本发明一个实施例所形成的共享链路的示意图;以及
图5示出根据本发明一个实施例的装置的示意框图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
所属技术领域的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instruction means)的制造品(manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
图2示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图。图2显示的计算机系统/服务器12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图2所示,计算机系统/服务器12以通用计算设备的形式表现。计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机系统/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图3未显示,通常称为“硬盘驱动器”)。尽管图3中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机系统/服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机系统/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机系统/服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
以下结合附图和具体例子描述本发明的实施方式。在本发明的实施例中,允许用户在交换机的软件配置层为单个VLAN配置多个上行链路端口,然而在硬件层,仅为每个VLAN选择一个上行链路端口,由此在避免物理环路的情况下形成共享链路,从而提供简单的、具有冗余度的、高可用性上行链路连接。下面结合附图描述上述发明构思的实现。
图3示出根据一个实施例的方法的流程图。如图3所示,根据一个实施例的管理交换机的网络连接的方法包括以下步骤:首先,在步骤302,获取与所述交换机的网络连接相关的软件配置信息,所述软件配置信息指定所述交换机所连接的至少一个虚拟局域网VLAN和所述至少一个VALN将要共享使用的多个上行链路;接着,在步骤304,根据所述软件配置信息将所述多个上行链路分配给所述至少一个VLAN以形成对应连接关系,在该对应连接关系中,所述至少一个VLAN中的每个VLAN唯一地对应所述多个上行链路中的一个;然后,在步骤306,根据所述对应连接关系在交换机硬件层设置所述至少一个VLAN与所述多个上行链路之间的硬件连接。下面结合例子描述上述各个步骤的具体执行方式。
具体地,首先,在步骤302,获取与交换机的网络连接相关的软件配置信息。如本领域技术人员所知,交换机具有软件配置层,用于接受用户的配置指令,并根据配置指令对交换机的网络连接进行配置。一般地,用户可以在配置指令中指定,连接哪些VLAN,使用交换机的哪些上行链路端口等。由于上行链路端口与上行链路具有对应关系,因此,根据本领域技术人员的使用习惯,在本文的一些语境下,用上行链路指代其对应的上行链路端口。
在用户对交换机的网络连接进行配置的情况下,在步骤302,通过读取用户的配置指令可以获取上述软件配置信息。相应地,软件配置信息至少包括,交换机所连接的至少一个VLAN的配置信息,以及要使用的上行链路的配置信息。可以理解,为了提供冗余度,在下文描述中,假定软件配置信息中指定共享使用多条上行链路。这些上行链路可以是不同类型的链路,具有不同类型的端口,例如独立端口、汇聚端口(trunk),甚至是混合型端口。上述多条上行链路的最大数目不受限制。典型地,软件配置信息指定,上述至少一个VLAN共享使用上述多个上行链路。因此,可以认为上述多个上行链路构成共享链路。此外,在一些实施例中,软件配置信息还包括用户对共享链路的特殊设定,例如偏好设定,端口设定等,这会在稍后进行具体描述。
在获取到软件配置信息的基础上,在步骤304,根据上述软件配置信息,将共享链路中的多个上行链路分配给各个VLAN以形成对应连接关系,使得每个VLAN唯一地分配获得一个上行链路。如稍后将详细描述的,该对应连接关系用于交换机硬件层的设置。因此,在该对应连接关系中确保每个VLAN被分配一条上行链路,从而避免物理环路的产生。
根据一个实施例,采用随机选择方式形成上述对应连接关系。具体地,对于每个VLAN,从共享链路中的多个上行链路中随机选择一个上行链路分配给该VLAN。于是,每个VLAN唯一地分配获得一个上行链路。
根据另一实施例中,采用轮叫(round-robin)方式形成上述对应连接关系。具体地,假定软件配置信息中指定了m个VLAN共享使用n个上行链路。那么,可以将m个VLAN和n个上行链路分别排成队列,依次轮流地将n个上行链路一一分配给m个VLAN。在典型情况下,VLAN的数目m大于甚至远大于上行链路的数目n。此时,在将n个上行链路分别对应地分配给位于队列前面的n个VLAN之后,再次返回上行链路队列的队首,继续为剩余的(m-n)个VLAN分配上行链路,直到每个VLAN都获得一个上行链路。在这样的情况下,对于VLAN来说,每个VLAN唯一地获得一条上行链路,而对于上行链路来说,则有可能一条上行链路被分配给多个VLAN,从而被该多个VLAN所共享,或者说,该条上行链路承载多个VLAN。在另一种情况下,上行链路的数目n大于VLAN的数目m。在这样的情况下,仅仅将队列前面的m个上行链路对应分配给m个VLAN,剩余的(n-m)个上行链路则不必分配。此时,对于VLAN来说,每个VLAN仍然唯一地获得一条上行链路,而对于上行链路来说,则有一部分上行链路,例如上述剩余的(n-m)条上行链路,没有被分配给任何VLAN,从而处于空闲状态,又称为“飞行模式”。
在一个实施例中,进一步考虑各个VLAN和上行链路的特性来形成上述对应连接关系。例如,在一个例子中,可以考虑VLAN的特性,例如传输的数据类型,对应的主机性能等,为各个VLAN分配一定的权重。在此情况下,可以在上述轮叫方法的基础上,利用加权轮叫的方式,考虑各个VLAN的权重来分配共享链路中的各个上行链路。例如,可以根据VLAN的权重来形成队列,优先为权重较大的VLAN分配上行链路。在另一例子中,可以考虑上行链路的特性,例如传输速率、带宽等,为各个上行链路分配一定的权重。类似地,采用加权轮叫的方式,考虑各个链路的权重来分配各个上行链路。例如,可以为带宽较大的上行链路分配较大的权重,并使得权重较大的上行链路承载较多数目的VLAN。在一个实施例中,还可以将上述两个例子结合在一起,为VLAN和上行链路均分配权重,并基于分配的权重采用加权轮叫方式来分配上行链路,形成对应连接关系。
在一个实施例中,上述VLAN的权重和上行链路的权重的至少一部分可以由用户指定,从而包含在软件配置信息中。于是,在步骤304,考虑软件配置信息中包含VLAN权重和上行链路权重中的至少一部分,来分配上行链路,以形成对应连接关系。
在一个实施例中,还可以考虑软件配置信息中对共享链路的特殊设定来进行上行链路的分配。在一个例子中,软件配置信息包括用户的偏好设定,例如用户倾向于用什么类型的上行链路承载更多VLAN,倾向于将哪些VLAN分组在一起共享同一上行链路等等,用户甚至可以在偏好设定中直接指定一部分甚至全部VLAN与上行链路的对应关系。相应地,在步骤304,考虑上述偏好设定来形成对应连接关系,使得形成的对应连接关系符合用户的偏好设定。
在一个例子中,软件配置信息包括用户对各个端口的设定,例如,将特定上行链路端口设定为保留端口,专用于向上游网络传输特殊类型的数据。此时,考虑上述端口设定,将除保留端口之外的上行链路端口分配给各个VAN来形成对应连接关系,而将指定的保留端口设置为飞行模式。这特别适用于上行链路的数目n大于VLAN的数目m的情况。在此情况下,用户可以通过软件配置信息将多余的上行链路端口设定为保留端口。当然,即使在上行链路n小于或等于VLAN数目m的情况下,用户依然可以根据某种需要,选择一些端口作为保留端口。相应地,在步骤304,根据上述端口设定来形成对应连接关系,使得形成的对应连接关系符合用户的端口设定。
除此之外,用户还可以通过软件配置信息对共享链路进行其他设定。相应地,在步骤304,需要根据软件配置信息中的其他用户设定来形成对应连接关系,使得对应连接关系在满足用户设定的同时,确保每个VLAN分配获得一条上行链路。
在如上所述形成对应连接关系的基础上,在步骤306,根据形成的对应连接关系在硬件层设置各个VLAN与各个上行链路之间的硬件连接。具体地,在硬件层设置中,针对每个VLAN,将对应连接关系中分配给该VLAN的上行链路添加到该VLAN的硬件连接。在一个实施例中,硬件层提供有接口函数API,用于操作硬件层中与连接设定相关的寄存器。通过调用这些API,可以根据对应连接关系自动设置各个VLAN与各个上行链路之间的硬件连接。在一个实施例中,也可以在硬件层根据对应连接关系手动设置各个VLAN与上行链路之间的硬件连接。由于在对应连接关系中每个VLAN唯一地分配获得一条上行链路,通过步骤306的硬件层设置,每个VLAN仅具有一条活动的物理链路。从而,在不需要执行生成树协议STP的情况下避免了物理环路的形成,简化了网络连接。
图4A和4B分别示出根据现有技术和根据本发明一个实施例所形成的共享链路的示意图。在图4A和4B的例子中,在交换机的软件配置层,用户将软件配置信息设置为,使得交换机所连接的10个VLAN(分别标记为VLAN1至VLAN10)共享使用由3个上行链路A,B和C形成的共享链路。
图4A示出现有技术中形成的共享链路。在现有技术中,完全根据软件配置层的配置信息来进行硬件层的配置。也就是说,在硬件层,同样将连接关系设定为10个VLAN共享使用3个上行链路。于是,在同时激活3个上行链路的情况下,容易出现物理环路等其他问题。
图4B示出根据本发明一个实施例形成的共享链路。如图4B所示,通过执行图3所示的方法,将3个上行链路分配给10个VLAN以形成对应连接关系,其中每个VLAN仅获得一条上行链路,然后在交换机的硬件层根据该对应连接关系来设置各个VLAN和上行链路的连接。具体地,在图4B的例子中,在所形成的对应连接关系中,上行链路A被分配给VLAN1-4,上行链路B被分配给VLAN5-7,上行链路C被分配给VLAN8-10。由此,每个VLAN分配获得一条上行链路作为活动链路。可以看到,根据本发明实施例的方法,对应连接关系是在软件配置信息的基础上执行进一步的分配而形成,它符合软件配置信息中指定的共享关系,但是却并不与之完全相同。也就是说,根据图3的方法,在交换机的软件配置层和硬件层对VLAN与上行链路的连接关系进行了不同的设定。在硬件层,每个VLAN仅具有一条活动的上行链路,而在软件配置层,仍然可以获得多个VLAN共享使用多个上行链路的配置结果。由此,在避免物理环路的情况下提供了多个活动状态的上行链路。
在软件配置层和硬件层进行不同的配置的另一项优势是,可以基于运行时的状态,动态而灵活地调整VLAN和上行链路之间的对应连接关系而不需要重新在软件配置层进行配置。相应地,根据一个实施例,本发明的方法还包括,响应于交换机运行时的状态改变,更新VLAN和上行链路之间的对应连接关系。
具体地,在一个例子中,运行时的状态改变包括上行链路负载的改变。可以理解,在数据中心运行过程中,各个VLAN所包括的主机的运行状态和数据传输状态常常发生改变,使得承载这些VLAN的上行链路的负载发生改变。根据一个实施例,在上行链路负载发生改变时,通过转移部分VLAN来更新上述对应连接关系,以此平衡各个上行链路的负载。例如,响应于特定上行链路负载的增加,例如负载增加到第一负载阈值,将至少一部分VLAN从负载高于第一负载阈值的特定上行链路转移到除该特定上行链路之外的上行链路。可选择地,也可以响应于某个上行链路的负载的减小,例如减小到第二负载阈值,将至少一部分VLAN从其他上行链路转移到负载低于第二负载阈值的上行链路。上述第一负载阈值和第二负载阈值可以预先设定,分别表示上行链路承载较大负载和较小负载的情况。通过以上方式,动态更新对应连接关系来平衡各个上行链路的负载。
根据一个实施例,运行时的状态改变包括上行链路故障。可以理解,为交换机网络提供冗余上行链路的目的之一就是在活动的上行链路出现故障时,利用冗余的上行链路确保网络的可用性。因此,对上行链路故障的应对和处理直接影响网络的稳定性。根据本发明的实施例,在上行链路出现故障的情况下,通过更新VLAN和上行链路之间的对应连接关系来转移受到故障影响的VLAN,确保网络的可用性。具体地,响应于上行链路故障,在对应连接关系中将故障上行链路所承载的VLAN转移到处于正常活动状态的其他上行链路。在一个具体例子中,从其他上行链路中确定出目标链路,从而将故障上行链路承载的VLAN转移到该目标链路。目标链路可以是从处于正常活动状态的其他上行链路中随机选择出的上行链路。更特别地,可以从处于正常活动状态的其他上行链路中选择带宽较大(例如高于第一带宽阈值)的上行链路,或者当前负载较小(例如低于负载下限阈值,该负载下限阈值可以等于前述预先设定的第二负载阈值,可以为预先设定的其他较低阈值)的上行链路作为目标链路。也可以基于其他因素来确定目标链路。在另一例子中,直接将分配获得故障上行链路的VLAN随机地或者平均地转移到其他上行链路,以实现上行链路的快速切换。由此,通过更新VLAN和上行链路之间的对应连接关系,转移可能受到故障影响的VLAN,使得VLAN数据正常传输到上游网络。
与上行链路故障相对地,运行时的状态改变还包括上行链路故障的恢复。相应地,响应于上行链路故障的恢复,为恢复的上行链路分配VLAN。在一个实施例中,通过更新VLAN和上行链路之间的对应连接关系,将其他上行链路所承载的至少一部分VLAN转移到恢复的上行链路,从而为恢复的上行链路分配VLAN。具体地,在一个例子中,从其他上行链路中确定出源链路,进而将源链路承载的VLAN的至少一部分转移到恢复的上行链路。源链路可以是从其他上行链路中随机选择出的上行链路。更特别地,可以从其他上行链路中选择带宽较小(例如低于第二带宽阈值)的上行链路,或者当前负载较大(例如高于负载上限阈值,该负载上限阈值可以等于前述预先设定的第一负载阈值,也可以为预先设定的其他较大阈值)的上行链路作为源链路。也可以基于其他因素来确定源链路。这与进行负载均衡时的考虑是相似的。在另一例子中,随机地或者平均地将其他上行链路承载的VLAN的至少一部分转移到该恢复的上行链路,以重新利用恢复的上行链路。
在另一实施例中,基于恢复的上行链路重新形成新的对应连接关系,从而为恢复的上行链路分配VLAN。具体地,响应于上行链路故障的恢复,清除各个VLAN与上行链路之间的原对应连接关系,将恢复的上行链路和其他上行链路重新分配给各个VLAN,从而形成新的对应连接关系。这类似地于再次执行图3的步骤304,因此不再详细描述具体分配过程。
可以理解,在上行链路出现故障的情况下,需要立即将故障上行链路承载的VLAN进行转移,以保持网络的可用性。然而,在上行链路故障得到恢复时,为恢复的上行链路分配VLAN的操作却不必立即执行,而是可以选择适当的时机来执行,以保持网络的稳定性。在一个实施例中,响应于获取到故障上行链路得到恢复的通知,根据预先设定的时机,为恢复的上行链路分配VLAN。根据一个示例,上述预先设定的时机通过一定时器来实现。具体而言,一旦接收到故障恢复的通知,就启动预先设定的定时器,并持续监视恢复的上行链路的状态。在定时器时间过去且恢复的上行链路持续处于正常可用状态的情况下,执行对应连接关系的更新或重新形成,从而为恢复的上行链路分配VLAN。这可以避免恢复的上行链路状态不稳定造成的反复切换。在另一实施例中,上述预先设定的时机是由用户指定的特定时刻。例如,用户可以指定,在故障恢复之后的下一0点时刻,执行VLAN的分配操作。在另一实施例中,上述预先设定的时机通过预先设定的条件来确定。例如,该预先设定的条件可以是,共享链路的总数据传输率小于一阈值,即业务数据传输低谷的情况。在这样的情况下对VLAN和上行链路之间的对应连接关系进行更新或重新形成可以减小对正在传输的业务数据造成的影响。
可以理解,在上述上行链路出现故障和得到恢复的过程中,仅仅需要更新或重新形成VLAN和上行链路之间的对应连接关系,也就是仅需要更新硬件层的设置,而不需要用户在软件配置层进行重新配置。这使得形成的共享链路可以动态灵活地适应于不同的运行时状态。
另一方面,在数据中心运行过程中,用户也可以根据需要修改其软件配置信息,例如添加或移除上行链路,添加或移除VLAN等。在一个实施例中,不管用户对软件配置信息进行什么样的修改,都可以将修改的软件配置信息视为新的软件配置信息,基于该新的软件配置信息重新形成对应连接关系,也就是重新执行图3的步骤302-306。这个过程无需再次进行描述。在另一实施例中,响应于软件配置信息的改变,更新对应连接关系,使其符合改变的软件配置信息。在这样的实施方式中,尽可能地保留原对应连接关系的内容,从而减小对正在运行的数据中心网络的影响。
具体地,在一个例子中,软件配置信息的改变包括添加上行链路,也就是说,用户想要启用新的上行链路。对于这样的情况,可以与上行链路故障得到恢复的情况进行类似地的处理。也就是,响应于获取到添加上行链路的通知,根据预先设定的时机,通过更新对应连接关系为添加的上行链路分配VLAN。上述预先设定的时机可以通过定时器来实现,也可以通过用户指定的时刻或指定的条件来确定。为了给新添加的上行链路分配VLAN,在对应连接关系中,将已有上行链路所承载的一部分VLAN转移到添加的上行链路。上述一部分VLAN可以通过多种方式选择,例如选自已有上行链路中带宽较小的上行链路,或者当前负载较大的上行链路等。这与上行链路故障得到恢复的情况下的考虑因素是相似的。
在一个例子中,软件配置信息的改变包括移除上行链路。对于这样的情况,可以与上行链路故障的情况进行类似地的处理。也就是,响应于移除上行链路的命令,更新对应连接关系,将移除的上行链路所承载的VLAN转移到处于正常活动状态的其他上行链路。具体过程可以参考上行链路故障的情况下的VLAN转移过程。
在一个例子中,软件配置信息的改变包括添加VLAN,也就是说,用户想要启用新的VLAN。响应于这样的改变,为该新添加的VLAN分配一条上行链路。该条上行链路可以是从所有处于活动状态的上行链路中随机选择出的上行链路,更特别地,可以是其中负载较小,或带宽较大的上行链路。
在一个例子中,软件配置信息的改变包括移除VLAN,也就是,用户指示不再需要某个VLAN。对于这样的情况,在一个实施例中,在对应连接关系中删除该移除的VLAN与上行链路的对应关系。
对于软件配置信息的其他改变,例如偏好设定的改变,端口设定的改变等等,也可以相应地更新对应连接关系,使其符合改变后的软件配置信息。
可以理解,根据本发明实施例的方法,在交换机硬件层根据形成的对应连接来配置VLAN和上行链路之间的连接。这不仅提供了无环路的多活动状态的上行链路,还使得与上行链路相关的网络连接的配置更加灵活。在交换机运行时状态发生改变的情况下,可以动态调整VLAN和上行链路之间的对应连接关系而不需要重新在软件配置层进行配置。在软件配置信息发生改变的情况下,也可以通过更新对应连接关系而适应于软件配置信息的改变。
基于同一发明构思,本发明的实施例还提供了一种管理交换机的网络连接的装置。图5示出根据本发明一个实施例的管理交换机的网络连接的装置的示意框图。在图5中,该装置总体表示为500。如图所示,用于管理交换机的网络连接的装置500包括:软件配置信息获取单元502,配置为获取与所述交换机的网络连接相关的软件配置信息,所述软件配置信息指定所述交换机所连接的至少一个虚拟局域网VLAN和所述至少一个VLAN将要共享使用的多个上行链路;连接关系形成单元504,配置为根据所述软件配置信息,将所述多个上行链路分配给所述至少一个VLAN以形成对应连接关系,在该对应连接关系中,所述至少一个VLAN中的每个VLAN唯一地对应所述多个上行链路中的一个;以及硬件设置单元506,配置为根据所述对应连接关系在所述交换机的硬件层设置所述至少一个VLAN与所述多个上行链路之间的硬件连接。
根据一个实施例,上述连接关系形成单元504配置为,采用轮叫方式形成上述对应连接关系。
根据一个实施例,上述连接关系形成单元504配置为,考虑所述至少一个VLAN的权重和所述多个上行链路的权重中的至少一部分,来分配所述多个上行链路。
根据一个实施例,装置500还包括第一更新单元508(虚线示出),配置为响应于所述交换机的运行时的状态改变,更新所述对应连接关系。
在一个实施例中,上述运行时的状态改变包括上行链路负载的改变。相应地,第一更新单元508配置为执行以下中的至少一个:将至少第一部分VLAN从负载高于第一负载阈值的特定上行链路转移到除该特定上行链路之外的上行链路,以及将至少第二部分VLAN从其他上行链路转移到负载低于第二负载阈值的上行链路。
在一个实施例中,运行时的状态改变包括上行链路故障;相应地,上述第一更新单元508配置为,将故障上行链路所承载的VLAN转移到处于正常活动状态的其他上行链路。根据一个实施例,上述第一更新单元508进一步配置为:从所述其他上行链路中选择目标链路,其中所述目标链路符合以下条件中的至少一个:带宽高于第一带宽阈值,以及当前负载低于负载下限阈值;将所述故障上行链路所承载的VLAN转移到所述目标链路。
在一个实施例中,运行时的状态改变包括上行链路故障的恢复;相应地,上述第一更新单元508配置为,根据预先设定的时机,将其他上行链路所承载的至少一部分VLAN转移到恢复的上行链路。
根据一个实施例,上述预先设定的时机通过以下之一来确定:预先设定的定时器,指定的时刻,以及预先设定的条件。
根据一个实施例,上述第一更新单元508进一步配置为:从所述其他上行链路中确定出源链路,其中源链路符合以下条件中的至少一个:带宽低于第二带宽阈值,以及当前负载高于负载上限阈值;将所述源链路承载的VLAN的至少一部分转移到所述恢复的上行链路。
根据一个实施例,装置500还包括第二更新单元509(虚线示出),配置为响应于软件配置信息的改变,更新所述对应连接关系,使其符合改变的软件配置信息。
以上用于管理交换机的网络连接的装置500的具体执行方式可以参照之前结合具体例子对方法的描述,在此不再赘述。
在一个实施例中,上述装置500包含在交换机中,并位于交换机传统的软件配置层和硬件层之间,如图5示例性示出。在另一实施例中,上述装置500也可以作为独立的工具,与交换机通信,以实现对交换机网络连接的管理。
利用本发明实施例的方法和装置,在交换机中形成共享链路,该共享链路具有冗余的、均处于活动状态的多个上行链路。并且所形成的共享链路可以灵活地适应于运行时状态的改变以及配置的改变,改善网络的可用性。
可以理解,附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。