CN113067771B - 管理虚拟链路聚合信道 - Google Patents
管理虚拟链路聚合信道 Download PDFInfo
- Publication number
- CN113067771B CN113067771B CN202010002025.0A CN202010002025A CN113067771B CN 113067771 B CN113067771 B CN 113067771B CN 202010002025 A CN202010002025 A CN 202010002025A CN 113067771 B CN113067771 B CN 113067771B
- Authority
- CN
- China
- Prior art keywords
- link aggregation
- virtual
- channel
- virtual machine
- control message
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/24—Multipath
- H04L45/245—Link aggregation, e.g. trunking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/141—Setup of application sessions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
Abstract
本公开的实施例提供了一种用于通信的方法、设备、装置和计算机可读介质。在该方法中,第一设备从第二设备接收由第二设备上运行的多个虚拟机中的第一虚拟机生成的链路聚合控制消息。根据确定接收到链路聚合控制消息,第一设备基于第一设备的第一端口集合和第二设备的第二端口集合,建立第一设备与第一虚拟机之间的第一虚拟链路聚合信道,第一设备与多个虚拟机中的第二虚拟机之间已经基于第一端口集合和第二端口集合建立第二虚拟链路聚合信道。第一设备至少基于第一虚拟机的标识符,来管理第一虚拟链路聚合信道。本公开的实施例可以改进基于链路聚合的通信网络或计算机网络的性能。
Description
技术领域
本公开的实施例一般地涉及与通信网络或计算机网络相关的技术领域,并且更特别地涉及一种管理虚拟链路聚合信道的技术方案。
背景技术
在通信网络(或计算机网络)中,链路聚合(Link Aggregation)是指将通信设备或网络设备(例如,交换机、服务器,等等)的多个物理端口汇聚在一起形成逻辑端口,以实现输出/输入流量在逻辑端口的各成员端口上的负荷分担。例如,通信设备可以根据用户配置的端口负荷分担策略来决定网络数据(例如,数据分组)从哪个成员端口发送到对端的通信设备。当通信设备检测到某个成员端口的链路发生故障时,可以停止在此端口上发送数据,并且根据负荷分担策略在剩下的链路中重新确定数据的发送端口,故障端口恢复后可以再次担任收发端口。链路聚合在增加链路带宽、实现链路传输弹性和工程冗余等方面是一项重要的技术。
随着虚拟端口(例如,通过单根I/O虚拟化SR-IOV技术)被引入到通信设备上运行的虚拟机,通信设备(例如,服务器)上的物理端口可以连接数百个虚拟端口。在一些情况下,通信设备上运行的虚拟机也可能需要使用链路聚合技术来实现链路级冗余,以确保可以从单点故障继续保持连接。然而,当前的链路聚合协议无法满足这样的需求,在许多场景中导致通信网络或计算机网络的低性能,造成了不良的用户体验。
发明内容
本公开的实施例涉及一种管理虚拟链路聚合信道的技术方案。
在本公开的第一方面,提供了一种用于通信的方法。该方法包括:在第一设备处,从第二设备接收由第二设备上运行的多个虚拟机中的第一虚拟机生成的链路聚合控制消息。该方法还包括:根据确定接收到链路聚合控制消息,基于第一设备的第一端口集合和第二设备的第二端口集合,建立第一设备与第一虚拟机之间的第一虚拟链路聚合信道,第一设备与多个虚拟机中的第二虚拟机之间已经基于第一端口集合和第二端口集合建立第二虚拟链路聚合信道。该方法进一步包括:至少基于第一虚拟机的标识符,来管理第一虚拟链路聚合信道。
在本公开的第二方面,提供了一种用于通信的方法。该方法包括:在第二设备处,向第一设备发送由第二设备上运行的虚拟机生成的用于建立虚拟链路聚合信道的链路聚合控制消息。该方法还包括:根据确定从第一设备接收到针对链路聚合控制消息的响应消息,基于响应消息来确定第一设备是数据处理设备还是数据转发设备。该方法进一步包括:根据确定第一设备是数据转发设备,在虚拟机与第一设备之间建立虚拟链路聚合信道。
在本公开的第三方面,提供了一种第一设备。该第一设备包括至少一个处理器和包括计算机程序指令的至少一个存储器。至少一个存储器和计算机程序指令被配置为,与至少一个处理器一起,使得第一设备:从第二设备接收由第二设备上运行的多个虚拟机中的第一虚拟机生成的链路聚合控制消息。至少一个存储器和计算机程序指令还被配置为,与至少一个处理器一起,使得第一设备:根据确定接收到链路聚合控制消息,基于第一设备的第一端口集合和第二设备的第二端口集合,建立第一设备与第一虚拟机之间的第一虚拟链路聚合信道,第一设备与多个虚拟机中的第二虚拟机之间已经基于第一端口集合和第二端口集合建立第二虚拟链路聚合信道。至少一个存储器和计算机程序指令进一步被配置为,与至少一个处理器一起,使得第一设备:至少基于第一虚拟机的标识符,来管理第一虚拟链路聚合信道。
在本公开的第四方面,提供了一种第二设备。该第二设备包括至少一个处理器和包括计算机程序指令的至少一个存储器。至少一个存储器和计算机程序指令被配置为,与至少一个处理器一起,使得第二设备:向第一设备发送由第二设备上运行的虚拟机生成的用于建立虚拟链路聚合信道的链路聚合控制消息。至少一个存储器和计算机程序指令还被配置为,与至少一个处理器一起,使得第二设备:根据确定从第一设备接收到针对链路聚合控制消息的响应消息,基于响应消息来确定第一设备是数据处理设备还是数据转发设备。至少一个存储器和计算机程序指令进一步被配置为,与至少一个处理器一起,使得第二设备:根据确定第一设备是数据转发设备,在虚拟机与第一设备之间建立虚拟链路聚合信道。
在本公开的第五方面,提供了一种用于通信的装置。该第一设备包括:用于在第一设备处,从第二设备接收由第二设备上运行的多个虚拟机中的第一虚拟机生成的链路聚合控制消息的部件。该第一设备还包括:用于根据确定接收到链路聚合控制消息,基于第一设备的第一端口集合和第二设备的第二端口集合,建立第一设备与第一虚拟机之间的第一虚拟链路聚合信道的部件,第一设备与多个虚拟机中的第二虚拟机之间已经基于第一端口集合和第二端口集合建立第二虚拟链路聚合信道。该第一设备进一步包括:用于至少基于第一虚拟机的标识符,来管理第一虚拟链路聚合信道的部件。
在本公开的第六方面,提供了一种用于通信的装置。该第二设备包括:用于在第二设备处,向第一设备发送由第二设备上运行的虚拟机生成的用于建立虚拟链路聚合信道的链路聚合控制消息的部件。该第二设备还包括:用于根据确定从第一设备接收到针对链路聚合控制消息的响应消息,基于响应消息来确定第一设备是数据处理设备还是数据转发设备的部件。该第二设备进一步包括:用于根据确定第一设备是数据转发设备,在虚拟机与第一设备之间建立虚拟链路聚合信道的部件。
在本公开的第七方面,提供了一种计算机可读介质。该计算机可读介质存储有机器可执行指令,机器可执行指令在被执行时使机器执行根据第一方面的方法。
在本公开的第八方面,提供了一种计算机可读介质。该计算机可读介质存储有机器可执行指令,机器可执行指令在被执行时使机器执行根据第二方面的方法。
应当理解,发明内容部分中所描述的内容并非旨在限定本公开的实施例的关键或重要特征,亦非用于限制本公开的范围。本公开的其他特征通过以下的描述将变得容易理解。
附图说明
通过参考附图阅读下文的详细描述,本公开的实施例的上述以及其他目的、特征和优点将变得容易理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施例。
图1示出了本公开的实施例可以在其中实现的通信系统的示意图。
图2示出了根据本公开的实施例的用于通信的方法的示例流程图。
图3示出了根据本公开的实施例的第一设备的示例实施方式的示意性框图。
图4示出了根据本公开的实施例的在第一设备与第二设备上的多个虚拟机建立多个虚拟链路聚合信道的示意图。
图5示出了根据本公开的实施例的与第一设备之间存在虚拟链路聚合信道的第一虚拟机从第二设备迁移到第四设备的示意图。
图6示出了根据本公开的实施例的第二设备与第一设备建立虚拟链路聚合信道并且不与第三设备建立虚拟链路聚合信道的示意图。
图7示出了根据本公开的实施例的第二设备与作为数据转发设备的第一设备建立虚拟链路聚合信道的通信过程的示意图。
图8示出了根据本公开的实施例的第二设备避免与作为数据处理设备的第三设备建立虚拟链路聚合信道的通信过程的示意图。
图9示出了根据本公开的实施例的链路聚合控制数据单元(LACPDU)的示意性结构。
图10示出了根据本公开的另一实施例的用于通信的方法的示例流程图。
图11示出了适合实现本公开的实施例的示例设备的简化框图。
图12示出了根据本公开的实施例的示例性计算机可读介质的示意图。
贯穿所有附图,相同或者相似的参考标号被用来表示相同或者相似的组件。
具体实施方式
下面将参考附图中所示出的若干示例性实施例来描述本公开的原理和精神。应当理解,描述这些具体的实施例仅是为了使本领域的技术人员能够更好地理解并实现本公开,而并非以任何方式限制本公开的范围。
如本文所使用的,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
如本文所使用的,术语“确定”涵盖各种各样的动作。例如,“确定”可以包括运算、计算、处理、导出、调查、查找(例如,在表格、数据库或另一数据结构中查找)、查明等。此外,“确定”可以包括接收(例如,接收信息)、访问(例如,访问存储器中的数据)等。此外,“确定”可以包括解析、选择、选取、建立等。
本文使用的术语“电路”是指以下的一项或多项:(a)仅硬件电路实现方式(诸如仅模拟和/或数字电路的实现方式);以及(b)硬件电路和软件的组合,诸如(如果适用):(i)模拟和/或数字硬件电路与软件/固件的组合,以及(ii)硬件处理器的任意部分与软件(包括一起工作以使得诸如OLT或其他计算设备等装置执行各种功能的数字信号处理器、软件和存储器);以及(c)硬件电路和/或处理器,诸如微处理器或者微处理器的一部分,其要求软件(例如固件)用于操作,但是在不需要软件用于操作时可以没有软件。
电路的定义适用于此术语在本申请中(包括任意权利要求中)的所有使用场景。作为另一示例,在此使用的术语“电路”也覆盖仅硬件电路或处理器(或多个处理器)、或者硬件电路或处理器的一部分、或者其随附软件或固件的实现方式。例如,如果适用于特定权利要求元素,术语“电路”还覆盖基带集成电路或处理器集成电路或者OLT或其他计算设备中的类似的集成电路。
如上文提到的,当前的链路聚合协议无法满足通信设备上运行的虚拟机需要使用链路聚合技术的需求,在许多场景中导致通信网络或计算机网络的低性能,造成了不良的用户体验。例如,当前的链路聚合协议不能在通信设备的物理端口之上支持多个链路聚合信道,以实现负载共享和冗余目的。这是当前链路聚合技术协议(例如,IEEE 802.3ad)的限制。
更具体地,传统的链路聚合信道技术不能在虚拟端口之上提供良好的解决方案,包括虚拟链路聚合信道的自助服务、漫游、虚拟化,等等。首先,传统的技术在特定时间只能将物理端口配置到特定的链路聚合信道(也称为端口通道组)。其次,链路聚合信道的配置是固定的,对链路聚合信道的较大修改都需要网络管理员的接入,并且不可能在虚拟机的环境中完成。此外,链路聚合信道的配置是静态的,系统不能根据客户端要求来自动注册/删除系统的链路聚合信道。因此,在本领域中需要在虚拟端口之上实现具有理想的冗余和负载共享的虚拟链路聚合信道解决方案,同时还期望为虚拟链路聚合信道提供快速漫游能力。
鉴于传统方案中存在的上述问题以及其他潜在的问题,本公开的实施例提供了一种管理虚拟链路聚合信道的技术方案。在本公开的实施例中,可以创建信道控制数据(例如,LACP池数据库)来管理通信设备的多个或所有可用的虚拟链路聚合信道,从而虚拟链路聚合信道可以与物理端口分离。此外,链路聚合控制协议中的数据单元可以被扩展以标识通信设备的能力,例如,通信设备是数据转发设备还是数据处理设备。进而,可以定义一种算法来确定虚拟链路聚合信道的建立条件,以允许在数据转发设备(例如,交换机)和数据处理设备(例如,终端服务器)之间创建虚拟链路聚合信道,并且避免在数据处理设备(例如,终端服务器)之间建立虚拟链路聚合信道。例如,虚拟机的虚拟端口在物理端口之下共享二层的交换机,所以需要避免在虚拟机之间建立错误的虚拟链路聚合信道。此外,虚拟链路聚合信道的创建,迁移,删除可以由通信设备自动地完成。总之,本公开的实施例可以改进基于链路聚合的通信网络或计算机网络的性能。下文将参考附图来详细描述本公开的示例实施例。
图1示出了本公开的实施例可以在其中实现的通信系统100的示意图。在一些实施例中,通信系统100可以是由各种通信设备组成的通信网络或由各种网络设备组成的计算机网络的一部分。这些网络可以包括但不限于蜂窝网络、局域网(LNA)、核心网络、接入网络、诸如互联网的广域网(WAN)、云网络,等等。如图1所示,通信系统100可以包括第一设备110和第二设备120。第一设备110具有端口112和114,它们可以通过通信链路135和145分别连接或耦合到第二设备120的端口122和124。
在一些实施例中,第一设备110的端口112和114以及第二设备120的端口122和124可以是设备的物理端口。在其他实施例中,端口112和114以及端口122和124也可以是虚拟端口,或者部分是物理端口而另一部分是虚拟端口。此外,尽管图1中将第一设备110和第二设备120示出为包括特定数目的(两个)端口,但这仅是示意性的,无意以任何方式限制本公开的范围。在其他实施例中,第一设备110和第二设备120均可以包括任何适当数目的端口。
在图1的示例中,第二设备120上运行有多个虚拟机,包括第一虚拟机130和第二虚拟机140,等等。将理解,在本公开的实施例中,第二设备120上可以运行任何适当数目的虚拟机。第一虚拟机130具有虚拟端口132和134,它们是通过虚拟化技术(例如,单根I/O虚拟化)分别从第二设备120的端口122和124虚拟化得到的。类似地,第二虚拟机140具有虚拟端口142和144,它们也是通过虚拟化技术(例如,单根I/O虚拟化)分别从第二设备120的端口122和124虚拟化得到的。应当明白,尽管图1中将第一虚拟机130和第二虚拟机140示出为包括特定数目的(两个)虚拟端口,但这仅是示意性的,无意以任何方式限制本公开的范围。在其他实施例中,第一虚拟机130和第二虚拟机140均可以包括任何适当数目的虚拟端口。
在一些实施例中,由于第一设备110的端口112通过链路135连接或耦合到第二设备120的端口122,并且第一设备110的端口114通过链路145连接或耦合到第二设备120的端口124,所以第二设备120上的第一虚拟机130和第二虚拟机140均可以通过链路135和145来与第一设备110进行通信,例如,在链路135和145上建立虚拟的通信链路。换言之,第一设备110、第二设备120、以及链路135和145的用于通信的物理资源可以在第一虚拟机130和第二虚拟机140以及其他虚拟机之间被共享。
因此,通过第一设备110和第二设备120的这些端口和它们之间的链路的物理资源,第一虚拟机130可以与第一设备110之间形成虚拟链路聚合信道155,并且第二虚拟机140可以与第一设备110之间形成虚拟链路聚合信道165。类似地,通过这些端口和链路的物理资源,第二设备120上运行的其他虚拟机也可以与第一设备110之间形成更多的虚拟链路聚合信道。如本文中使用的,“虚拟链路聚合信道”可以是指在虚拟端口的基础上建立的链路聚合信道,包括建立链路聚合信道的一方或双方使用虚拟端口的情况。
在一些实施例中,虚拟链路聚合信道155和165的建立过程可以类似于由两个通信设备均使用物理端口来建立普通链路聚合信道的建立过程,而只是将参与建立链路聚合信道的端口由物理端口替换为虚拟端口。在这个方面,建立链路聚合信道的技术细节可以参见链路聚合信道的相关标准和技术文献,例如,电气和电子工程师协会(IEEE)802.3ad标准等,本文中将不再赘述。
在一些实施例中,第一设备110可以包括交换机。更一般地,第一设备110可以包括任何能够对数据或分组进行转发的数据转发设备,包括但不限于,路由器、网关、交换机、网桥、无线接入点、基站、防火墙,等等。在其他实施例中,第一设备110可以包括能够操作在数据转发模式的数据处理设备。在另外的实施例中,第一设备110可以包括支持建立链路聚合信道或虚拟链路聚合信道的任何通信设备或网络设备。
在一些实施例中,第二设备120可以包括服务器。更一般地,第二设备120可以包括任何能够对数据或分组进行处理的数据处理设备,包括但不限于,大型主机或大型服务器、云端计算设备、移动电话、站点、单元、通用计算设备、多媒体计算机、多媒体平板、互联网节点、通信器、台式计算机、膝上型计算机、笔记本计算机、上网本计算机、平板计算机、个人通信系统(PCS)设备、个人导航设备、个人数字助理(PDA)、音频/视频播放器、数码相机/摄像机、定位设备、电视接收器、无线电广播接收器、电子书设备、游戏设备或者其任何组合,包括这些设备的配件和外设或者其任何组合。在其他实施例中,第二设备120可以包括能够操作在数据处理模式的数据转发设备。在另外的实施例中,第二设备120可以包括支持建立链路聚合信道或虚拟链路聚合信道的任何通信设备或网络设备。
在一些实施例中,通信链路135和145可以是能够实现通信系统100的各种设备或组件之间的数据通信或控制信号通信的任何形式的连接或耦合,包括但不限于,同轴电缆、光纤电缆、双绞线、或无线技术(诸如红外、无线电和微波)。在一些实施例中,通信链路135和145还可以包括但不限于,网卡、集线器、调制解调器、中继器、网桥、交换机、路由器等用于网络连接的设备、以及各种网络连接线路、无线链路等。在一些实施例中,通信链路135和145可以包括各种类型的总线。在其他实施例中,通信链路135和145可以包括计算机网络、通信网络、或者其他有线或无线网络。
应当理解,图1仅示意性地示出了通信系统100中的与本公开的实施例相关的设备、单元、模块或组件。在实践中,通信系统100还可以包括用于其他功能的其他设备、单元、模块或组件。此外,图1中示出的设备、单元、模块或组件的特定数目仅是示意性的,无意以任何方式限制本公开的范围。在其他实施例中,通信系统100可以包括任何适当数目的通信设备或网络设备、通信设备或网络设备上运行的虚拟机、通信设备或网络设备或虚拟机的端口,等等。因此,本公开的实施例不限于图1所描绘的具体设备、单元、模块或组件,而是一般性地适用于任何基于链路聚合信道的技术环境。下面参考图2来描述本公开的实施例的通信方法。
图2示出了根据本公开的实施例的用于通信的方法200的示例流程图。在一些实施例中,方法200可以由通信系统100中的第一设备110来实现,例如可以由第一设备110的处理器或处理单元来实现。在其他实施例中,方法200也可以由独立于通信系统100的通信设备或网络设备来实现,或者可以由通信系统100中的其他单元(例如,第二设备120)来实现。为了便于讨论,将参考图1以第一设备110执行方法200为例来讨论方法200。
在210处,第一设备110从第二设备120接收由第二设备120上运行的多个虚拟机130、140等中的第一虚拟机130生成的链路聚合控制消息。例如,第一设备110可以通过端口112,经由链路135,从第二设备120的端口122接收链路聚合控制消息。另外地或替换地,第一设备110可以通过端口114,经由链路145,从第二设备120的端口124接收链路聚合控制消息。在一些实施例中,该链路聚合控制消息是用于建立虚拟链路聚合信道的链路聚合控制消息,并且在下文中为了便于描述可以称为第一链路聚合控制消息。
如上文提到的,第一链路聚合控制消息是由第一虚拟机130生成的,因此其包括第一虚拟机130用于建立虚拟链路聚合信道的相关信息,例如,第一虚拟机130的标识符(诸如,系统ID)、介质访问控制(MAC)地址、物理端口号、虚拟端口号,等等。在一些实施例中,第一链路聚合控制消息可以与IEEE 802.3ad标准中规定的链路聚合控制协议数据单元(LACPDU)具有类似的形式和内容。此外,在一些实施例中,第一链路聚合控制消息可以由第二设备120通过广播或组播的方式发送到通信系统100中的多个通信设备,其中包括第一设备110。在其他实施例中,第二设备120可以使用单播的方式将第一链路聚合控制消息发送给第一设备110。
在一些情况下,可能不期望在两个数据处理设备之间建立链路聚合信道,因为更加有利的情形是数据处理设备与数据交换设备之间建立链路聚合信道,以便由数据处理设备通过数据交换设备转发传入或传出的数据或分组。例如,在第二设备120的多个虚拟机之间或者在第二设备120的虚拟机与其他数据处理设备(包括其上运行的虚拟机)之间的虚拟链路聚合信道可能是不期望的。
因此,在一些实施例中,为了避免在两个数据处理设备之间建立虚拟链路聚合信道,由某个通信设备发出的用于建立虚拟链路聚合信道的链路聚合控制消息中可以包括指示信息,用于指示该通信设备是数据转发设备还是数据处理设备(本文中也称为通信设备的能力),以便接收到该链路聚合控制消息的接收方通信设备可以确定是否与该通信设备建立虚拟链路聚合信道。
例如,由第二设备120上运行的第一虚拟机130生成的第一链路聚合控制消息可以包括这样的指示信息,该只是信息用于指示第一虚拟机130用作数据处理设备,而不是数据转发设备。因此,当另一数据转发设备接收到第一链路聚合控制消息时,尤其是第一链路聚合控制消息被多播或广播发送的情况下,该另一数据转发设备可以不发起建立与第一虚拟机130的虚拟链路聚合信道。以此方式,接收到第一链路聚合控制消息的其他数据处理设备可以避免与第一虚拟机130建立虚拟链路聚合信道。
此外,在一些实施例中,在从第二设备120接收到第一链路聚合控制消息之后,第一设备110可以向第二设备120发送针对第一链路聚合控制消息的响应消息。例如,该响应消息可以包括第一设备110的用于建立虚拟链路聚合信道的相关信息,例如,第一设备110的标识符(诸如,系统ID)、介质访问控制(MAC)地址、物理端口号,等等。在一些实施例中,该响应消息可以与IEEE 802.3ad标准中规定的链路聚合控制协议数据单元(LACPDU)具有类似的形式和内容。
在第一设备110发送该响应消息的情况下,与第一链路聚合控制消息类似,第一设备110也可以在该响应消息中包括指示信息,以指示第一设备110是数据转发设备,而不是数据处理设备。以此方式,第一虚拟机130可以从该响应消息中确定第一设备110是可以与其建立虚拟链路聚合信道的通信设备,进而可以与第一设备110建立虚拟链路聚合信道。
在一些实施例中,第一链路聚合控制消息及其响应消息均可以通过修改相关协议中规定的链路聚合控制协议数据单元(LACPDU)来实现。在这样的情况下,上述指示消息可以包括在链路聚合控制协议数据单元的保留字段中。以此方式,已有协议中规定的链路聚合控制协议数据单元的内容和形式可以较少地被改变,从而提高了本公开的实施例与已有协议的兼容性。后文将参考图6至图9来进一步详细地描述通信设备基于这种指示信息的通信过程。
在220处,在第一设备110从第二设备120接收到第一链路聚合控制消息后,第一设备110基于端口集合(例如,端口112和114)和第二设备120的端口集合(例如,端口122和124),与第一虚拟机130之间建立第一虚拟链路聚合信道155。在一些实施例中,虚拟链路聚合信道155的建立过程可以类似于由两个通信设备均使用物理端口来建立普通链路聚合信道的建立过程,而只是将参与建立链路聚合信道的端口由物理端口替换为虚拟端口。在这个方面,第一设备110和第一虚拟机130之间建立链路聚合信道的技术细节可以参见链路聚合信道的相关标准和技术文献,例如,IEEE802.3ad标准等,本文中将不再赘述。
另外,需要说明的是,本公开的上下文为了描述的简便,假定第一设备110接收到第一链路聚合控制消息的端口集合112和114与第一设备110用于建立第一虚拟链路聚合信道155的端口集合112和114是一致的。但是,将理解,这种描述仅是示例性的,无意以任何方式限制本公开的范围。在其他实施例中,第一设备110用于建立第一虚拟链路聚合信道155的端口集合可以不同于接收到第一链路聚合控制消息的端口集合。例如,用于建立虚拟链路聚合信道的端口集合可以是接收到用于建立虚拟链路聚合信道的链路聚合控制消息的端口集合的子集。
如图1所示,除了第一虚拟链路聚合信道155之外,第一设备110与第二设备120上的多个虚拟机130、140等中的第二虚拟机140之间已经基于相同的端口集合(例如,端口112和114)和端口集合(例如,端口122和124)建立第二虚拟链路聚合信道165。换言之,在第一设备110的端口112、114和第二设备120的端口122、124之间同时建立有第一虚拟链路聚合信道155和第二虚拟链路聚合信道165。在其他实施例中,第一设备110和第二设备120在上述相同的端口集合112、114与端口集合122、124之间可以同时建立更多的虚拟链路聚合信道。换言之,本公开的实施例可以在第一设备110和第二设备120之间,在相同端口集合之间的相同链路上,建立与多个不同的虚拟机之间的多个虚拟链路聚合信道。
这与常规的基于物理端口的链路聚合信道具有显著的区别。假如第一设备110和第二设备120基于各自的物理端口来建立常规的链路聚合信道,则在第一设备110的端口112和114与第二设备120的端口122和124之间只能建立一个链路聚合信道。这是因为在传统的链路聚合信道协议中,一个物理端口仅允许被使用在一个链路聚合信道中。因此,在不使用本公开的实施例的情况下,受到传统链路聚合信道协议的限制,第一设备110也仅能与第一虚拟机130和第二虚拟机140之一建立虚拟链路聚合信道,而无法同时与第一虚拟机130和第二虚拟机140建立两个虚拟链路聚合信道。这样的传统链路聚合信道协议未能充分利用第一设备110、第二设备120、以及链路135和145的物理资源,因为这些物理资源实际上被多个虚拟机所共享,但仅一个虚拟机可以建立虚拟链路聚合信道。
本公开的实施例解除了常规的链路聚合信道的上述限制,从而解决了由此带来的问题。例如,在本公开的实施例中,基于第一设备110、第二设备120、以及链路135和145的物理资源,第一设备110可以同时与第一虚拟机130和第二虚拟机140分别建立第一虚拟链路聚合信道155和第二虚拟链路聚合信道165,或者与更多的虚拟机建立更多的虚拟链路聚合信道,从而充分地利用这些物理资源来执行链路聚合,因此改进了通信系统100的系统性能。
此外,在一些实施例中,第一设备110可以仅在用于建立虚拟链路聚合信道的预定条件被满足的情况下,与第一虚拟机130建立第一虚拟链路聚合信道155。例如,在从第二设备120接收到第一链路聚合控制消息之后,第一设备110可以确定该预定条件是否被满足。如果第一设备110确定预定条件被满足,则第一设备110可以与第一虚拟机130建立第一虚拟链路聚合信道155。另一方面,如果第一设备110确定预定条件未被满足,则第一设备110可以不与第一虚拟机130建立第一虚拟链路聚合信道155。通过这样的方式,第一设备110可以避免无条件地建立虚拟链路聚合信道,从而节省用于建立虚拟链路聚合信道的物理资源。
在一些实施例中,上述预定条件可以包括第一设备110的接收到第一链路聚合控制消息的接收端口集合(例如,端口112和114)可用于建立虚拟链路聚合信道。也就是说,如果端口112和114被设置为可用于建立虚拟链路聚合信道,则第一设备110可以建立第一虚拟链路聚合信道155。相反,如果端口112和114被设置为不可用于建立虚拟链路聚合信道,例如,第一设备110的某些端口可能出于安全的考虑而不用于创建虚拟链路聚合信道,则第一设备110可以避免建立第一虚拟链路聚合信道155。以此方式,第一设备110可以仅在指定的端口上尝试建立虚拟链路聚合信道,从而避免在不期望的端口上发起虚拟链路聚合信道的建立。
另外地或替换地,上述预定条件还可以包括第一设备110已建立的虚拟链路聚合信道的数目未达到上限。例如,如果第一设备110已有的虚拟链路聚合信道数量已经达到管理员或用户设置的上限,则第一设备110可以再继续建立更多的虚拟链路聚合信道155。如此,第一设备110可以确保所建立的虚拟链路聚合信道的总数在合理的范围内,从而提高通信的稳定性。在其他实施例中,第一设备110的用户或管理员还可以预先为第一设备110设置用于建立虚拟链路聚合信道的任何其他适当的预定条件。
在230处,第一设备110至少基于第一虚拟机130的标识符,来管理第一虚拟链路聚合信道155。如上文所述,第一设备110与第二设备120之间,在相同的物理链路上,同时建立有第一虚拟链路聚合信道155和第二虚拟链路聚合信道165。在这种情况下,常规的基于物理端口的管理方式已经无法有效地管理第一虚拟链路聚合信道155和第二虚拟链路聚合信道165,因为它们具有相同的物理端口,也即,第一设备110的端口集合112和114,以及第二设备120的端口集合122和124。事实上,常规的管理方式甚至无法有效地区分第一虚拟链路聚合信道155和第二虚拟链路聚合信道165,也就更不可能实现对它们的有效管理。
为了解决该问题,在本公开的实施例中,第一设备110可以使用第一虚拟机130的标识符来管理第一虚拟链路聚合信道155,因为第一虚拟链路聚合信道155是与第一虚拟机130相关联的。类似地,第一设备110可以使用第二虚拟机140的标识符来管理第二虚拟链路聚合信道165,因为第二虚拟链路聚合信道165是与第二虚拟机140相关联的。在一些实施例中,第一虚拟机130和第二虚拟机140的标识符可以是它们的全局唯一的MAC地址,或者基于MAC地址来生成。在其他实施例中,虚拟机的标识符可以是任何能够全局唯一地用于标识虚拟机的符号或标记。通过这样的方式,尽管第一虚拟链路聚合信道155和第二虚拟链路聚合信道165具有相同的物理端口,但是它们仍然可以通过第一虚拟机130和第二虚拟机140的不同标识符而有效地被区分和管理。
将理解,第一设备110可以通过任何适当的方式来获得第一虚拟机130的标识符以及其他虚拟机的标识符。例如,第一虚拟机130可以向第一设备110发送专门的消息来指示第一虚拟机130的标识符。又例如,第一设备110可以预先存储有与其相关联的各个通信设备的标识符,包括第二设备120上运行的第一虚拟机130的标识符。在其他实施例中,第一设备110可以从第一虚拟机130生成的第一链路聚合控制消息中获得第一虚拟机130的标识符。换言之,第一虚拟机130可以将自己的标识符包括在第一链路聚合控制消息。如此,第一虚拟机130可以免于向第一设备110发送用于指示标识符的专门消息,从而节省了信令开销。
在获得第一虚拟机130的标识符之后,第一设备110可以基于该标识符来生成用于管理第一虚拟链路聚合信道155的信道控制数据,以便实现对第一虚拟链路聚合信道155的控制和管理。类似地,第一设备110可以基于第二虚拟机140的标识符来生成用于管理第二虚拟链路聚合信道165的信道控制数据,以便实现对第二虚拟链路聚合信道165的控制和管理。更一般地,针对第一设备110所建立的多个或所有虚拟链路聚合信道,第一设备110可以分别生成它们的信道控制数据,从而形成用于管理多个或所有虚拟链路聚合信道的数据库。
在一些实施例中,作为对第一虚拟链路聚合信道155的一种管理,第一设备110可以检测第一虚拟链路聚合信道155的连接状态。例如,第一设备110可以定期地在第一虚拟链路聚合信道155上向第一虚拟机130发送保活(keepalive)消息。基于第一虚拟机130对该保活消息的响应,第一设备110可以确定第一虚拟链路聚合信道155的连接状态,例如,活动、死亡、断开,等等。然后,第一设备110可以将第一虚拟链路聚合信道155的检测到的连接状态记录在信道控制数据中。以此方式,第一设备110可以动态地获知第一虚拟链路聚合信道155的连接状态,从而可以及时地对第一虚拟链路聚合信道155进行相应的管理操作。
例如,假设第一虚拟链路聚合信道155的检测到的连接状态为已断开,则第一设备110可以释放用于建立第一虚拟链路聚合信道155的资源,诸如物理资源。以示例的方式,这样的资源可以包括第一设备110的端口112和114用于建立第一虚拟链路聚合信道155的物理资源、第一设备110用于控制和管理第一虚拟链路聚合信道155的处理资源和存储资源,等等。以此方式,第一设备110可以及时地回收未被利用的资源,从而提高资源的利用率。
另外地或替换地,第一设备110还可以在用于管理第一虚拟链路聚合信道155的信道控制数据中记录各种其他信息,以促进对第一虚拟链路聚合信道155的管理。例如,其他信息可以包括指示用于建立第一虚拟链路聚合信道155的端口集合的信息。因此,第一设备110可以知晓第一虚拟链路聚合信道155是通过哪些端口(例如,物理端口)建立的,从而可以实现对第一虚拟链路聚合信道155的物理端口的管理。又例如,其他信息还可以包括第一虚拟链路聚合信道155最近一次被更新的时间。因此,第一设备110可以了解第一虚拟链路聚合信道155的历史信息,从而更好地在时间方面来管理第一虚拟链路聚合信道155。
下面的表1示出了用于管理第一虚拟链路聚合信道155的信道控制数据的一种示例。在该示例中,第一虚拟链路聚合信道155的信道控制数据可以包括名称为“Vport-channel number”、“Remote System ID”、“Slave ports”、“Status”和“Last Change”等的字段,它们可以分别表示第一设备110可建立的虚拟链路聚合信道的最大数目、虚拟链路聚合信道155的远程系统ID(在该示例中即第一虚拟机130的标识符)、虚拟链路聚合信道155使用的物理端口、虚拟链路聚合信道155的连接状态、以及虚拟链路聚合信道155最近一次被更新的时间。
表1
如表1所示,字段“Vport-channel number”的示例值为10000,意味着第一设备110最多可以建立10000个虚拟链路聚合信道。字段“Remote System ID”的示例值为E0-4F-43-5C-FD-50,其为第一虚拟机130的示例MAC地址。字段“Slave ports”的示例值为Ten1/1(例如,10G的端口)、Ten1/2,它们是第一设备110用于建立第一虚拟链路聚合信道155(或接收到链路聚合控制消息)的两个物理端口112和114在第一设备110内部的标识符。字段“Status”的示例值为活动、失效、删除等。字段“Last Change”的示例值为一个时间点。
将理解,表1中仅示出了第一设备110针对虚拟链路聚合信道155的信道控制数据,但是对于第一设备110所建立的其他虚拟链路聚合信道,均可以存在类似的信道控制数据。例如,这些信道控制数据可以通过数据库的形式来组织。基于这些信道控制数据,第一设备110可以动态地创建或删除虚拟链路聚合信道。此外,应当明白,表1中示出的字段的特定数目、内容、名称、示例值和注释仅为示例性的,无意以任何方式限制本公开的范围。在其他实施例中,用于管理第一虚拟链路聚合信道155的信道控制数据可以包括任何其他适当的数目、内容、名称、示例值和注释,等等。下文将参考图3来描述第一设备110的一种示例性的模块化实施方式。
图3示出了根据本公开的实施例的第一设备110的示例实施方式的示意性框图。在图3的示例中,第一设备110可以包括管理接口305、LACP控制模块310、LACP池数据库315、解析器/复用器320、第一链路聚合信道分析器/复用器325、第二链路聚合信道分析器/复用器330、以及交换结构335。此外,在图3的示例中,第一设备110的端口112可以包括帧收集模块340帧分发模块345,并且端口114可以包括帧收集模块350帧分发模块355。
在一些实施例中,第一设备110的用户或管理员可以通过管理接口305来管理第一设备110。例如,管理接口305可以向用户呈现命令行界面、图形界面、或应用程序接口,从而使得用户可以通过管理接口305来设置第一设备110的各种参数,诸如用于管理第一虚拟链路聚合信道155和第二虚拟链路聚合信道165的各种参数。作为示例,第一设备110的用户或管理员可以通过管理接口305来管理如上文的表1中示出的信道控制数据。
LACP控制模块310可以基于用户或管理员通过管理接口305设置的各种参数,来控制第一设备110与其他设备建立的一个或多个链路聚合信道,诸如第一虚拟链路聚合信道155和第二虚拟链路聚合信道165。LACP池数据库315可以用于存储用户或管理员通过管理接口305设置的各种参数,诸如用于管理第一虚拟链路聚合信道155和第二虚拟链路聚合信道165的各种参数。作为示例,LACP池数据库315可以存储如上文的表1中示出的信道控制数据,诸如第一设备110所建立的多个虚拟链路聚合信道的信道控制数据。因此,LACP控制模块310可以基于LACP池数据库315中存储的数据来控制第一虚拟链路聚合信道155和第二虚拟链路聚合信道165。
更具体地,第一设备110的用户或管理员可以通过LACP池数据库315来配置可允许的虚拟链路聚合信道数量、虚拟链路聚合信道的端口范围、虚拟链路聚合信道的远程系统ID(可选项,其通常可以从链路聚合控制消息中读取),等等。例如,LACP池数据库315中可以记录可用虚拟链路聚合信道的总数量。在第一设备110检测到用于建立虚拟链路聚合信道的预定条件被满足之后,LACP池数据库315中记录的池资源(例如,可以用于建立虚拟链路聚合信道的资源)可以被使用。在建立虚拟链路聚合信道之后,第一设备110然后可以将所建立的虚拟链路聚合信道的相关信息记录到LACP池数据库315中。
此外,解析器/复用器320可以用于解析或复用LACP控制模块310发出的控制命令,并且将解析或复用后的命令转发给第一链路聚合信道分析器/复用器325或第二链路聚合信道分析器/复用器330,从而实现对第一虚拟链路聚合信道155和第二虚拟链路聚合信道165的管理。例如,第一链路聚合信道分析器/复用器325可以用于分析和复用与第一链路聚合信道155有关的数据,并且第二链路聚合信道分析器/复用器330用于分析和复用与第二链路聚合信道165有关的数据。
在一些实施例中,交换结构335可以将用于在第一链路聚合信道155上发送的数据从第一链路聚合信道分析器/复用器325转发到端口112的帧分发模块345和端口114的帧分发模块355,从而通过第一链路聚合信道155向第二设备120的第一虚拟机130发送数据。另外,交换结构335还可以将在第一链路聚合信道155上接收的数据从端口112的帧收集模块340和端口114的帧收集模块350转发到第一链路聚合信道分析器/复用器325,从而通过第一链路聚合信道155从第二设备120的第一虚拟机130接收数据。
此外,交换结构335可以将用于在第二链路聚合信道165上发送的数据从第二链路聚合信道分析器/复用器330转发到端口112的帧分发模块345和端口114的帧分发模块355,从而通过第二链路聚合信道165向第二设备120的第二虚拟机140发送数据。另外,交换结构335还可以将在第二链路聚合信道165上接收的数据从端口112的帧收集模块340和端口114的帧收集模块350转发到第二链路聚合信道分析器/复用器330,从而通过第二链路聚合信道165从第二设备120的第二虚拟机140接收数据。
将理解,图3仅示意性地示出了第一设备110中的与本公开的实施例相关的单元、模块或组件。在实践中,第一设备110还可以包括用于其他功能的其他单元、模块或组件。此外,图3中示出的单元、模块或组件的特定数目仅是示意性的,无意以任何方式限制本公开的范围。在其他实施例中,第一设备110可以包括任何适当数目的单元、模块或组件,等等。下面将参考图4来描述具有图3中描绘的功能模块的第一设备110与第二设备120上的虚拟机之间建立虚拟链路聚合信道的示意图。
图4示出了根据本公开的实施例的在第一设备110与第二设备120上的多个虚拟机130和140建立多个虚拟链路聚合信道155和165的示意图。在图4的示例中,第一设备110的各个组件与图3中的示例相同,因此这里不再赘述。在该示例中,第二设备120可以包括主机操作系统410和管理程序(或容器)420,其中主机操作系统410是指第二设备120自身运行的操作系统。第二设备120上的虚拟机,例如第一虚拟机130和第二虚拟机140,可以运行在主机操作系统410之上。管理程序420是用于管理第二设备120上的虚拟机的管理程序。
将明白,图4仅示意性地示出了第二设备120中的与本公开的实施例相关的单元、模块或组件。在实践中,第二设备120还可以包括用于其他功能的其他单元、模块或组件。此外,图4中示出的单元、模块或组件的特定数目仅是示意性的,无意以任何方式限制本公开的范围。在其他实施例中,第二设备120可以包括任何适当数目的单元、模块或组件,等等。
同时也参考图1,如上文描述的,承载第一设备110与第一虚拟机130之间的第一虚拟链路聚合信道155的物理端口和链路可以是第一设备110的端口集合112和114、第二设备120的端口集合122和124、以及它们之间的链路135和145。在一些实施例中,对于第一虚拟链路聚合信道155,从第一设备110到第一虚拟机130的数据流向可以是从第一链路聚合信道分析器/复用器325流向交换结构335,再流向第一设备110的端口112和114,再流向链路135和145,再流向第二设备120的端口122和124,再流向第一虚拟机130的虚拟端口132和134,从而到达第一虚拟机130。从第一虚拟机130到第一设备110数据流向可以与上述路径相反。
类似地,承载第一设备110与第二虚拟机140之间的第二虚拟链路聚合信道165的物理端口和链路也可以是第一设备110的端口集合112和114、第二设备120的端口集合122和124、以及它们之间的链路135和145。然而,在一些实施例中,对于第二虚拟链路聚合信道165,从第一设备110到第二虚拟机140的数据流向可以是从第二链路聚合信道分析器/复用器330流向交换结构335,再流向第一设备110的端口112和114,再流向链路135和145,再流向第二设备120的端口122和124,再流向第二虚拟机140的虚拟端口435和440,从而到达第二虚拟机140。从第二虚拟机140到第一设备110数据流向可以与上述路径相反。由此可见,通过第一设备110和第二设备120中的上述示例性模块,在相同物理链路上建立的第一虚拟链路聚合信道155和第二虚拟链路聚合信道165的逻辑数据流可以被区分开,进而可以通过不同虚拟机的标识符而有效地被管理。
因此,基于图2中描述的示例方法200,第一设备110可以自动地创建和管理不同的虚拟链路聚合信道,在本文中也可以称为集中式LACP自助服务。下面将以第一虚拟链路聚合信道155作为示例,来描述第一设备110和第二设备120在具有图4中的各种示例模块的情况下,创建和管理第一虚拟链路聚合信道155的示例过程。
例如,第一设备110的管理员或用户可以通过管理接口305来配置必要的参数。这些参数可以包括第一设备110的虚拟端口通道数量,其定义了LACP池数据库315中规定的可以使用多少个并发的虚拟端口通道,例如,该数量可以是4096。这些参数还可以包括虚拟链路聚合信道成员数量,其定义了虚拟链路聚合信道所允许的最大数目的成员端口,例如,该数目可以设置为2。这些参数还可以包括保活消息的发送间隔以及链路失效(死亡)时间间隔,也即Keepalive时间间隔和Dead时间间隔。这些参数还可以虚拟链路聚合信道可以使用的物理端口的范围。
此外,第二设备120的第一虚拟机130可以设置用于建立虚拟链路聚合信道的虚拟端口132和134。第一虚拟机130的客户(guest)操作系统可以进行与链路聚合协议相关联的自动配置。例如,客户操作系统LACP可以将第一虚拟机130的链路聚合协议功能设置为主动模式,也即可以主动地发出链路聚合协议数据单元,以便与其他通信设备建立虚拟链路聚合信道。
然后,第一设备110和第一虚拟机130可以执行用于建立虚拟链路聚合信道的过程。例如,第一设备110可以接收到来自第一虚拟机130的用于建立虚拟链路聚合信道的链路聚合协议数据单元。然后,基于链路聚合协议数据单元中的信息,第一设备110可以检查第一虚拟机130的系统ID(MAC地址),所指示的物理端口是否可用于建立虚拟链路聚合信道等。如果用于建立虚拟链路聚合信道的预定条件被满足,这将触第一设备110和第一虚拟机130建立虚拟链路聚合信道155。此后,第一设备110可以在LACP池数据库315中注册(或记录)所建立的虚拟链路聚合信道155。在虚拟链路聚合信道155的维持期间,第一设备110或第一虚拟机130可以在虚拟链路聚合信道155上向对方发送保活消息等。在虚拟链路聚合信道155不活动的时长满足触发“失效(死亡)”条件后,第一设备110可以从LACP池数据库315中删除虚拟链路聚合信道155。
在一些技术场景(例如,云系统)中,可能需要将第二设备120上的第一虚拟机130从第二设备120迁移到另一设备,例如,以便对第二设备120执行维护等。在第一虚拟机130的迁移完成后,运行第一虚拟机130的另一设备的端口(例如,网络接口卡)将发生改变,因此与第一虚拟机130连接的第一设备110的端口也将随之发生变化。在传统的解决方案中,这样的变化意味着第一虚拟机130需要与第一设备110重新设置虚拟链路聚合信道,这将导致较长的停机时间。
为了解决该问题,在本公开的实施例中,第一设备110可以提取出第一虚拟机130的新物理端口信息,并且将其添加到第一虚拟链路聚合信道155的信道控制数据中。因此,第一虚拟链路聚合信道155可以连接到由管理员或用户配置的任何可用于建立虚拟链路聚合信道的物理端口。换言之,第一虚拟链路聚合信道155的物理端口的更改将触发第一设备110更新其信道管理数据,但是由于第一虚拟机130的实时迁移后其标识符没有更改,因此第一设备110将保持第一虚拟链路聚合信道155处于活动状态,而无需重新建立虚拟链路聚合信道,这在本文中也可以称为LACP快速漫游。下文参考图5来描述本公开的实施例的在虚拟机迁移的情况下用于管理虚拟链路聚合信道的示例过程。
图5示出了根据本公开的实施例的与第一设备110之间存在虚拟链路聚合信道155的第一虚拟机130从第二设备120迁移505到第四设备510的示意图。在图5的示例中,第一设备110和第二设备120的各个组件与图4中的示例相同,因此这里不再赘述。在该示例中,第四设备510可以类似于第二设备120,其包括主机操作系统520和管理程序(或容器)530,其中主机操作系统520是指第四设备510自身运行的操作系统,第四设备510上的虚拟机可以运行在主机操作系统520之上。管理程序530是用于管理第四设备510上的虚拟机的管理程序。
此外,如图5所示,第四设备510具有端口512和514,它们分别通过链路515和525连接或耦合到第一设备的端口116和118。第一设备的端口116和118与端口112和114类似。例如,端口116可以具有帧收集模块550和帧分发模块555,而端口118可以具有帧收集模块560和帧分发模块565。这些帧收集模块和帧分发模块可以通过交换结构335而与第一链路聚合信道分析器/复用器325和第二链路聚合信道分析器/复用器330之间传送数据。
假设第一虚拟机130的用户或管理员触发第一虚拟机130(例如,其标识符为:E0-4F-43-5C-FD-50)从第二设备120实时迁移505到第四设备510。此后,第一虚拟机130从第四设备510的端口512和514虚拟化得到虚拟端口535和540。基于第四设备510的端口512和514、第一设备110的端口116和118、以及它们之间的链路515和525,第一虚拟机130与第一设备110之间的虚拟链路聚合信道155可以被保持,只是承载该虚拟链路聚合信道155的物理通道发生了变化。例如,第一设备110的用于建立虚拟链路聚合信道155的端口从112和114变为116和118,链路从135和145变为515和525,而在第一虚拟机130侧,用于建立虚拟链路聚合信道155的端口从第二设备120的端口122和124变为第四设备510的端口512和514。
在这种情况下,第一虚拟机130可以通过第四设备510向第一设备110发送用于更新第一虚拟链路聚合信道155的链路聚合控制消息,下文也称为第二链路聚合控制消息。例如,第二链路聚合控制消息可以由第一虚拟机130生成,然后通过第四设备510的端口512和514、链路515和525、以及第一设备110的端口116和118而被发送到第一设备110。因此,通过该路径,第一设备110可以从第四设备510接收由第一虚拟机130生成的用于更新第一虚拟链路聚合信道155的第二链路聚合控制消息。
在第一设备110发现接收到第二链路聚合控制消息的端口116和118不同于之前用于建立第一虚拟链路聚合信道155的端口112和114时,第一设备110可以将第一虚拟链路聚合信道155的信道控制数据中记录的指示端口112和114的信息更新为指示端口116和118的信息。以此方式,尽管第一虚拟机130被迁移到另一设备上,第一设备110仅需要更新与虚拟链路聚合信道155相关联的端口信息,而无需重新建立虚拟链路聚合信道155。例如,第一设备110可以使用新的端口116和118的信息来刷新LACP池数据库315,并且第一虚拟链路聚合信道155仍保持活动状态。另外,第一设备110还可以使用当前的时间戳来刷新LACP池数据库315中的“Last change”字段。
在一些实施例中,第一设备110可以基于第一虚拟机130的标识符来确定用于建立第一虚拟链路聚合信道155的端口发生了变化,而不是新虚拟链路聚合信道。例如,如果确定第二链路聚合控制消息中包括第一虚拟机130的标识符,则第一设备110可以确定第二链路聚合控制消息是由第一虚拟机130生成的。因此,通过第一虚拟机130的标识符,第一设备110可以全局唯一地识别出第一虚拟链路聚合信道155,进而确定第一虚拟链路聚合信道155的相关端口信息发生了变化。具体地,第一设备110可以将与第二链路聚合控制消息相关联的新端口信息与LACP池数据库315中的记录进行比较,从而确定第一虚拟机130发生了虚拟机迁移。需要指出的是,在第一虚拟机130的迁移期间,第一设备110上记录的用于管理第一虚拟链路聚合信道155的第一虚拟机130的标识符(例如,MAC地址)没有变化,因此可以第一设备110可以持续地向第一虚拟机130转发数据。
因此,与图4所描绘的示例相比,在第一虚拟机130完成迁移之后,从第一设备110到第一虚拟机130的数据流向可以变为从第一链路聚合信道分析器/复用器325流向交换结构335,再流向第一设备110的端口116和118,再流向链路515和525,再流向第四设备510的端口512和514,再流向第一虚拟机130的虚拟端口535和540,从而到达第一虚拟机130。从第一虚拟机130到第一设备110数据流可以向与上述路径相反。
如上文在描述图2的框210时提到的,在本公开的实施例中,在建立链路聚合信道期间,通信设备(或网络设备)可以在发送给通信对端的消息中指示该通信设备是数据转发设备还是数据处理设备,以便通信双方可以与适当的对端设备建立链路聚合信道,从而避免在两个数据处理设备之间建立链路聚合信道,因为这是不期望的。下文参考图6至图9来详细描述这样的示例。
图6示出了根据本公开的实施例的第二设备120与第一设备110建立虚拟链路聚合信道155并且不与第三设备610建立虚拟链路聚合信道655的示意图。在图6的示例中,与图1描绘的场景类似,第二设备120上运行有第一虚拟机130,其通过I/O虚拟化技术(例如,单根I/O虚拟化SRIOV技术)从第二设备120的端口122和124虚拟化得到虚拟端口132和134。此外,通过第一设备110的端口112和114与第二设备120的端口122和124之间的链路135和145,第一虚拟机130与第一设备110之间建立虚拟链路聚合信道155。
与图1描绘的场景不同的是,第二设备120上运行的第二虚拟机140通过I/O虚拟化技术(例如,单根I/O虚拟化SRIOV技术)从第二设备120的端口126和128虚拟化得到虚拟端口142和144。此外,通过第三设备610的端口612和614与第二设备120的端口126和128之间的链路635和645,第二虚拟机140也可以向第三设备610发送用于建立虚拟链路聚合信道655的链路聚合控制消息。在图6的示例中,假定第三设备610可以是数据转发设备,也可以是数据处理设备。例如,第三设备610可以包括服务器或交换机。在第三设备610是数据处理设备的情况下,第二虚拟机140可以不与第三设备610建立虚拟链路聚合信道,而如果第三设备610是数据转发设备,则第二虚拟机140可以与第三设备610建立虚拟链路聚合信道。
下文将参考图7来描述第二设备120与第一设备110建立虚拟链路聚合信道155的通信过程700,并且参考图8来描述在第三设备610为数据处理设备的情况下,第二设备120避免与第三设备610建立虚拟链路聚合信道655的通信过程800。
图7示出了根据本公开的实施例的第二设备120与作为数据转发设备的第一设备110建立虚拟链路聚合信道155的通信过程700的示意图。为了便于讨论,将参考图6来讨论通信过程700。如图7所示,第二设备120可以向第一设备110发送710由第二设备120上运行的第一虚拟机130生成的用于建立虚拟链路聚合信道155的链路聚合控制消息。例如,链路聚合控制消息可以包括第一虚拟机130用于建立虚拟链路聚合信道155的各种信息。
在一些实施例中,第二设备120可以通过端口122和124与第一设备110的端口112和114之间的链路135和145向第一设备110发送链路聚合控制消息。在其他实施例中,第二设备120也可以通过广播或多播的方式向通信网络100中的多个网络设备发送链路聚合控制消息,该多个网络设备可以包括第一设备110。
在接收710到来自第二设备120的链路聚合控制消息之后,第一设备110可以向第二设备120发送720针对链路聚合控制消息的响应消息。例如,第一设备110可以通过端口112和114与第二设备120的端口122和124之间的链路135和145向第二设备120发送响应消息。在一些实施例中,响应消息可以包括第一设备110用于建立虚拟链路聚合信道155的各种信息。
在从第一设备110接收720到响应消息之后,第二设备120可以基于响应消息来确定730第一设备110是数据处理设备还是数据转发设备。例如,响应消息可以包括指示信息,以指示第一设备110是数据转发设备。在其他实施例中,第二设备120可以从响应消息中包括的第一设备110的其他信息,来隐式地确定第一设备110是数据处理设备还是数据转发设备。例如,第二设备120可以通过第一设备110的标识符和预先存储的设备能力列表,来确定第一设备110是数据处理设备还是数据转发设备。
如果第二设备120确定730第一设备110是数据转发设备,则第二设备120可以在第一虚拟机130与第一设备110之间建立740虚拟链路聚合信道155。反之,如果第二设备120确定730第一设备110是数据处理设备,则第二设备120可以不建立第一虚拟机130与第一设备110之间的虚拟链路聚合信道155,以避免在两个数据处理设备之间建立不期望的虚拟链路聚合信道。
此外,在一些实施例中,为了向通信的对端指示第一虚拟机130是数据处理设备还是数据转发设备,第二设备120也可以在链路聚合控制消息中设置指示信息,以指示第一虚拟机130用作数据处理设备,而不是数据转发设备。通过这样的方式,接收到链路聚合控制消息的设备可以知晓第一虚拟机130的设备能力,从而确定是否与第一虚拟机130建立虚拟链路聚合信道,特别是在链路聚合控制消息通过广播或多播方式发送的情况下。
另外,作为一种示例,上述的链路聚合控制消息和响应消息均可以通过修改已有协议中规定的链路聚合控制协议数据单元来实现。在这样的示例中,链路聚合控制消息中的指示信息可以被包括在作为链路聚合控制消息的链路聚合控制协议数据单元中的保留字段中,而响应消息中的指示信息可以被包括在作为响应消息的链路聚合控制协议数据单元中的保留字段中。
如此,已有协议中规定的链路聚合控制协议数据单元的内容和形式可以较少地被改变,从而提高了本公开的实施例与已有协议的兼容性。例如,已有协议下的链路聚合控制协议数据单元的保留字段的比特均为0,因此本公开的实施例中的数据处理设备(例如,服务器)可以无需对链路聚合控制协议数据单元进行改动。下文参考图9来描述这样的链路聚合控制协议数据单元的示例。
图9示出了根据本公开的实施例的链路聚合控制数据单元900的示意性结构。如图9所示,链路聚合控制数据单元900中可以包括多个字段,这些字段可以用于标识链路聚合控制数据单元900的发送方和接收方的相关信息。除此以外,链路聚合控制数据单元900还可以包括多个保留字段,例如保留字段910和920。在一些实施例中,保留字段910可以与链路聚合控制数据单元900的发送方相关联,而保留字段920可以与链路聚合控制数据单元900的接收方相关联。在图9的示例中,链路聚合控制数据单元900的除了保留字段910和920的大多数字段可以与IEEE 802.3ad标准中规定的相同或类似,因此这里不再赘述。
与常规协议(例如,IEEE 802.3ad标准)下的链路聚合控制数据单元不同的是,通信设备可以在链路聚合控制数据单元900的保留字段中描述通信设备的能力。在一些实施例中,保留字段910中的比特(例如,第1位)可以用于指示发送方通信设备的能力,而保留字段920中的比特(例如,第1位)可以用于指示接收方通信设备的能力。作为示例,比特值0可以用于指示通信设备是数据处理设备,仅可以用作终端设备而不用作数据转发设备。该比特值0可以在(虚拟的)数据处理设备处设置为是默认值。另一方面,比特值1可以用于指示通信设备是数据转发设备(例如,交换机或网桥),其允许连接到其他数据转发设备或数据处理设备。该比特值1在数据转发设备处是默认值。
因此,在本公开的实施例中,通信网络600中的各种通信设备可以在建立虚拟链路聚合信道有关的消息中指示通信设备的能力。在这种情况下,通信网络600中的通信设备(例如,第一设备110、第二设备120和第三设备610,等等)可以根据下面的表2中示出的LACP设置矩阵(在本文中也可以称为算法)来确定是否可以与通信对端建立虚拟链路聚合信道。
表2
返回参考图8,其示出了根据本公开的实施例的第二设备120避免与作为数据处理设备的第三设备610建立虚拟链路聚合信道655的通信过程800的示意图。为了便于讨论,将参考图6来讨论通信过程800。如图8所示,第二设备120可以向第三设备610发送810由第二设备120上运行的第二虚拟机140生成的用于建立虚拟链路聚合信道655的链路聚合控制消息。例如,链路聚合控制消息可以包括第二虚拟机140用于建立虚拟链路聚合信道655的各种信息。
在一些实施例中,第二设备120可以通过端口126和128与第三设备610的端口612和614之间的链路635和645向第三设备610发送链路聚合控制消息。在其他实施例中,第二设备120也可以通过广播或多播的方式向通信网络100中的多个网络设备发送链路聚合控制消息,该多个网络设备可以包括第三设备610。
在接收810到来自第二设备120的链路聚合控制消息之后,第三设备610可以向第二设备120发送820针对链路聚合控制消息的响应消息。例如,第三设备610可以通过端口612和614与第二设备120的端口126和128之间的链路635和645向第二设备120发送响应消息。在一些实施例中,响应消息可以包括第三设备610用于建立虚拟链路聚合信道655的各种信息。
在从第三设备610接收820到响应消息之后,第二设备120可以基于响应消息来确定830第三设备610是数据处理设备还是数据转发设备。例如,响应消息可以包括指示信息,以指示第三设备610是数据转发设备还是数据处理设备。在其他实施例中,第二设备120可以从响应消息中包括的第三设备610的其他信息,来隐式地确定第三设备610是数据处理设备还是数据转发设备。例如,第二设备120可以通过第三设备610的标识符和预先存储的设备能力列表,来确定第三设备610是数据处理设备还是数据转发设备。
如果第二设备120确定830第三设备610是数据处理设备,则第二设备120可以丢弃840响应消息,以避免建立第二虚拟机140与第三设备610之间的虚拟链路聚合信道655。反之,如果第二设备120确定830第三设备610是数据转发设备,则第二设备120可以处理响应消息,从而进一步建立第二虚拟机140与第三设备610之间的虚拟链路聚合信道655。
此外,为了向通信的对端指示第二虚拟机140是数据处理设备还是数据转发设备,第二设备120也可以在链路聚合控制消息中设置指示信息,以指示第二虚拟机140用作数据处理设备,而不是数据转发设备。通过这样的方式,接收到链路聚合控制消息的设备可以知晓第二虚拟机140的设备能力,从而确定是否与第二虚拟机140建立虚拟链路聚合信道,特别是在链路聚合控制消息通过广播或多播方式发送的情况下。
在一些实施例中,如果第三设备610是数据处理设备,则在从第二设备120发送的链路聚合控制消息中确定第二虚拟机140用作数据处理设备后,第三设备610可以丢弃链路聚合控制消息,而不向第二设备120发送响应消息,以避免在两个数据处理设备之间建立不期望的虚拟链路聚合信道。
另外,与参考图7描述的链路聚合控制消息和响应消息类似,与通信过程800相关联的链路聚合控制消息和响应消息均可以通过修改已有协议中规定的链路聚合控制协议数据单元来实现。在这样的示例中,链路聚合控制消息中的指示信息可以被包括在作为链路聚合控制消息的链路聚合控制协议数据单元中的保留字段中,而响应消息中的指示信息可以被包括在作为响应消息的链路聚合控制协议数据单元中的保留字段中。
图10示出了根据本公开的另一实施例的用于通信的方法1000的示例流程图。在一些实施例中,方法1000可以由通信网络100中的第二设备120来实现,例如可以由第二设备120的处理器或处理单元来实现。在其他实施例中,方法1000也可以由独立于第二设备120的计算设备来实现,或者可以由通信网络100中的其他单元来实现。
如图10所示,在1010处,第二设备向第一设备发送由第二设备上运行的虚拟机生成的用于建立虚拟链路聚合信道的链路聚合控制消息。在1020处,根据确定从第一设备接收到针对链路聚合控制消息的响应消息,第二设备基于响应消息来确定第一设备是数据处理设备还是数据转发设备。在1030处,根据确定第一设备是数据转发设备,在虚拟机与第一设备之间建立虚拟链路聚合信道。
在一些实施例中,虚拟机是第一虚拟机,链路聚合控制消息是第一链路聚合控制消息,并且响应消息是第一响应消息,方法1000还包括:向第三设备发送由第二设备上运行的第二虚拟机生成的用于建立虚拟链路聚合信道的第二链路聚合控制消息;根据确定从第三设备接收到针对第二链路聚合控制消息的第二响应消息,基于第二响应消息来确定第三设备是数据处理设备还是数据转发设备;以及根据确定第三设备是数据处理设备,丢弃第二响应消息以避免建立第二虚拟机与第三设备之间的虚拟链路聚合信道。
在一些实施例中,第一响应消息包括第一指示信息,以指示第一设备是数据转发设备,并且第二响应消息包括第二指示信息,以指示第三设备是数据处理设备还是数据转发设备。
在一些实施例中,第一指示信息被包括在作为第一响应消息的第一链路聚合控制协议数据单元(LACPDU)中的保留字段中;并且第二指示信息被包括在作为第二响应消息的第二LACPDU中的保留字段中。
在一些实施例中,方法1000还包括:在链路聚合控制消息中设置指示信息,以指示虚拟机用作数据处理设备。
在一些实施例中,指示信息被包括在作为链路聚合控制消息的LACPDU中的保留字段中。
在一些实施例中,第一设备包括交换机,第二设备包括服务器,并且第三设备包括服务器或交换机。
在一些实施例中,能够执行方法200的装置(例如,第一设备110)可以包括用于执行方法200的相应步骤的部件。部件可以按任何适合的形式来实施。例如,部件可以被实施在电路中或软件模块中。又例如,部件可以包括至少一个处理器和至少一个存储器。至少一个存储器可以存储有计算机程序代码。至少一个存储器和计算机程序代码被配置为,与至少一个处理器一起,使得装置执行相应的步骤。
在一些实施例中,该装置包括:用于在第一设备处,从第二设备接收由第二设备上运行的多个虚拟机中的第一虚拟机生成的链路聚合控制消息的部件;用于根据确定接收到链路聚合控制消息,基于第一设备的第一端口集合和第二设备的第二端口集合,建立第一设备与第一虚拟机之间的第一虚拟链路聚合信道的部件,第一设备与多个虚拟机中的第二虚拟机之间已经基于第一端口集合和第二端口集合建立第二虚拟链路聚合信道;以及用于至少基于第一虚拟机的标识符,来管理第一虚拟链路聚合信道的部件。
在一些实施例中,用于建立第一虚拟链路聚合信道的部件包括:用于根据确定接收到链路聚合控制消息,确定用于建立虚拟链路聚合信道的预定条件是否被满足的部件;以及用于根据确定预定条件被满足,建立第一虚拟链路聚合信道的部件。
在一些实施例中,预定条件包括以下中的至少一项:第一设备的接收到链路聚合控制消息的接收端口集合可用于建立虚拟链路聚合信道;以及第一设备已建立的虚拟链路聚合信道的数目未达到上限。
在一些实施例中,用于管理第一虚拟链路聚合信道的部件包括:用于从链路聚合控制消息中获得第一虚拟机的标识符的部件;以及用于基于标识符来生成用于管理第一虚拟链路聚合信道的信道控制数据的部件。
在一些实施例中,该装置还包括:用于检测第一虚拟链路聚合信道的连接状态的部件;以及用于将检测到的连接状态记录在信道控制数据中的部件。
在一些实施例中,该装置还包括:用于根据确定检测到的连接状态为已断开,释放第一设备用于建立第一虚拟链路聚合信道的资源的部件。
在一些实施例中,该装置还包括:用于在信道控制数据中记录以下至少一项的部件:指示用于建立第一虚拟链路聚合信道的第一端口集合的信息、以及第一虚拟链路聚合信道最近一次被更新的时间。
在一些实施例中,链路聚合控制消息是第一链路聚合控制消息,并且第一虚拟机从第二设备迁移到另一设备,该装置还包括:用于从另一设备接收由第一虚拟机生成的用于更新第一虚拟链路聚合信道的第二链路聚合控制消息的部件;以及用于根据确定第一设备的接收到第二链路聚合控制消息的第三端口集合不同于第一端口集合,将信道控制数据中记录的指示第一端口集合的信息更新为指示第三端口集合的信息的部件。
在一些实施例中,该装置还包括:用于根据确定第二链路聚合控制消息中包括第一虚拟机的标识符,确定第二链路聚合控制消息由第一虚拟机生成的部件。
在一些实施例中,链路聚合控制消息包括指示信息,以指示第一虚拟机用作数据处理设备。
在一些实施例中,指示信息被包括在作为链路聚合控制消息的链路聚合控制协议数据单元(LACPDU)中的保留字段中。
在一些实施例中,该装置还包括:用于向第二设备发送针对链路聚合控制消息的响应消息的部件,响应消息中包括指示信息,以指示第一设备是数据转发设备。
在一些实施例中,指示信息被包括在作为响应消息的LACPDU中的保留字段中。
在一些实施例中,第一设备包括交换机,并且第二设备包括服务器。
在一些实施例中,能够执行方法1000的装置(例如,第二设备120)可以包括用于执行方法1000的相应步骤的部件。部件可以按任何适合的形式来实施。例如,部件可以被实施在电路中或软件模块中。又例如,部件可以包括至少一个处理器和至少一个存储器。至少一个存储器可以存储有计算机程序代码。至少一个存储器和计算机程序代码被配置为,与至少一个处理器一起,使得装置执行相应的步骤。
在一些实施例中,该装置包括:用于在第二设备处,向第一设备发送由第二设备上运行的虚拟机生成的用于建立虚拟链路聚合信道的链路聚合控制消息的部件;用于根据确定从第一设备接收到针对链路聚合控制消息的响应消息,基于响应消息来确定第一设备是数据处理设备还是数据转发设备的部件;以及用于根据确定第一设备是数据转发设备,在虚拟机与第一设备之间建立虚拟链路聚合信道的部件。
在一些实施例中,虚拟机是第一虚拟机,链路聚合控制消息是第一链路聚合控制消息,并且响应消息是第一响应消息,该装置还包括:用于向第三设备发送由第二设备上运行的第二虚拟机生成的用于建立虚拟链路聚合信道的第二链路聚合控制消息的部件;用于根据确定从第三设备接收到针对第二链路聚合控制消息的第二响应消息,基于第二响应消息来确定第三设备是数据处理设备还是数据转发设备的部件;以及用于根据确定第三设备是数据处理设备,丢弃第二响应消息以避免建立第二虚拟机与第三设备之间的虚拟链路聚合信道的部件。
在一些实施例中,第一响应消息包括第一指示信息,以指示第一设备是数据转发设备,并且第二响应消息包括第二指示信息,以指示第三设备是数据处理设备还是数据转发设备。
在一些实施例中,第一指示信息被包括在作为第一响应消息的第一链路聚合控制协议数据单元(LACPDU)中的保留字段中;并且第二指示信息被包括在作为第二响应消息的第二LACPDU中的保留字段中。
在一些实施例中,该装置还包括:在链路聚合控制消息中设置指示信息,以指示虚拟机用作数据处理设备。
在一些实施例中,指示信息被包括在作为链路聚合控制消息的LACPDU中的保留字段中。
在一些实施例中,第一设备包括交换机,第二设备包括服务器,并且第三设备包括服务器或交换机。
图11示出了适合实现本公开的实施例的示例设备1100的简化框图。设备1100可以用来实现通信设备,例如图1中的第一设备110和第二设备120。如所示出的,设备1100包括一个或多个处理器1110、耦合到处理器1110的一个或多个存储器1120、以及耦合到处理器1110的一个或多个通信模块1140。
通信模块1140用于双向通信。通信模块1140具有至少一个线缆/光缆/无线接口,用于促进通信。通信接口可以表示与其他设备通信必要的任何接口。
处理器1110可以具有适合于本地技术环境的任何类型,并且作为非限制性示例可以包括以下一个或多个:通用计算机、专用计算机、微处理器、数字信号处理器(DSP)和基于多核处理器架构的处理器。设备1100可以具有多个处理器,诸如在时间上跟随与主处理器同步的时钟进行从动的专用集成电路芯片。
存储器1120可以包括一个或多个非易失性存储器和一个或多个易失性存储器。非易失性存储器的示例包括但不限于只读存储器(ROM)1124、电可擦除可编程只读存储器(EPROM)、闪存、硬盘、压缩盘(CD)、数字多功能盘(DVD)、以及其他磁存储设备和/或光学存储设备。易失性存储器的示例包括但不限于随机存储存取器(RAM)1122或者在掉电期间无法持续的其他易失性存储器。
计算机程序1130包括计算机可执行指令,这些指令由相关联的处理器1110可执行。程序1130可以被存储在ROM 1124中。处理器1110可以通过将程序1130加载到RAM 1122中,来执行各种适当的动作和处理。
本公开的实施例可通过程序1130来实现,以使设备1100执行如以上参考图2和图11所讨论的本公开的任何过程。本公开的实施例也可以由硬件或软件与硬件的组合来实现。
在一些实施例中,程序1130可以被有形地包含于计算机可读介质。这样的计算机可读介质可以被包括在设备1100(例如,存储器1120)中或者被包括在设备1100可访问的其他存储设备中。设备1100可以将程序1130从计算机可读介质读取到RAM 1122以用于执行。计算机可读介质可以包括各种有形非易失性存储设备,诸如ROM、EPROM、闪存、硬盘、CD、DVD等。
图12示出了根据本公开的实施例的示例性计算机可读介质1200的示意图。如图12所示,计算机可读介质1200可以采用CD或DVD形式或任何其他适当的形式,具有存储于其上的程序1130。
一般而言,本公开的各种示例实施例可以在硬件或专用电路、软件、逻辑,或其任何组合中实施。某些方面可以在硬件中实施,而其他方面可以在可以由控制器、微处理器或其他计算设备执行的固件或软件中实施。例如,在一些实施例中,本公开的各种示例(例如方法、装置或设备)可以部分或者全部被实现在计算机可读介质上。当本公开的实施例的各方面被图示或描述为框图、流程图或使用某些其他图形表示时,将理解此处描述的方框、装置、系统、技术或方法可以作为非限制性的示例在硬件、软件、固件、专用电路或逻辑、通用硬件或控制器或其他计算设备,或其某些组合中实施。
本公开还提供了存储在非瞬态计算机可读存储介质上的至少一种计算机程序产品。计算机程序产品包括计算机可执行指令,计算机可执行指令诸如包括在目标的物理或者虚拟处理器上的器件中执行的程序模块中,用以执行上文关于图2和图10描述的过程200和1000中的任何过程。一般而言,程序模块包括例程、程序、库、对象、类、组件、数据结构等,其执行特定的任务或者实现特定的抽象数据结构。在各实施例中,程序模块的功能可以在所描述的程序模块之间合并或者分割。用于程序模块的计算机可执行指令可以在本地或者分布式设备内执行。在分布式设备中,程序模块可以位于本地和远程存储介质二者中。
用于实现本公开的方法的程序代码可以用一种或多种编程语言编写。这些计算机程序代码可以提供给通用计算机、专用计算机或其他可编程的数据处理装置的处理器,使得程序代码在被计算机或其他可编程的数据处理装置执行的时候,引起在流程图和/或框图中规定的功能/操作被实施。程序代码可以完全在计算机上、部分在计算机上、作为独立的软件包、部分在计算机上且部分在远程计算机上或完全在远程计算机或服务器上执行。
在本公开的上下文中,计算机程序代码或相关数据可以由任何适当的载体来承载,以使得设备、装置或处理器能够执行上文描述的各种过程和操作。载体的示例包括信号、计算机可读介质,等等。
计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读介质可以包括但不限于电子的、磁的、光学的、电磁的、红外的或半导体系统、装置或设备,或其任意合适的组合。机器可读存储介质的更详细示例包括带有一根或多根导线的电气连接、便携式计算机磁盘、硬盘、随机存储存取器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、光纤、便携式压缩盘只读存储器(CD-ROM)、光存储设备、磁存储设备,或其任意合适的组合。
另外,尽管操作以特定顺序被描绘,但这并不应该理解为要求此类操作以示出的特定顺序或以相继顺序完成,或者执行所有图示的操作以获取期望结果。在某些情况下,多任务或并行处理会是有益的。同样地,尽管上述讨论包含了某些特定的实施细节,但这并不应解释为限制任何发明或权利要求的范围,而应解释为对可以针对特定发明的特定实施例的描述。本说明书中在分离的实施例的上下文中描述的某些特征也可以整合实施在单个实施例中。反之,在单个实施例的上下文中描述的各种特征也可以分离地在多个实施例或在任意合适的子组合中实施。
尽管已经以特定于结构特征和/或方法动作的语言描述了主题,但是应当理解,所附权利要求中限定的主题并不限于上文描述的特定特征或动作。相反,上文描述的特定特征和动作是作为实现权利要求的示例形式而被公开的。
Claims (27)
1.一种用于通信的方法,包括:
在第一设备处,从第二设备接收由所述第二设备上运行的多个虚拟机中的第一虚拟机生成的链路聚合控制消息;
根据确定接收到所述链路聚合控制消息,基于所述第一设备的第一端口集合和所述第二设备的第二端口集合,建立所述第一设备与所述第一虚拟机之间的第一虚拟链路聚合信道,所述第一设备与所述多个虚拟机中的第二虚拟机之间已经基于所述第一端口集合和所述第二端口集合建立第二虚拟链路聚合信道;以及
至少基于所述第一虚拟机的标识符,来管理所述第一虚拟链路聚合信道。
2.根据权利要求1所述的方法,其中建立所述第一虚拟链路聚合信道包括:
根据确定接收到所述链路聚合控制消息,确定用于建立虚拟链路聚合信道的预定条件是否被满足;以及
根据确定所述预定条件被满足,建立所述第一虚拟链路聚合信道。
3.根据权利要求2所述的方法,其中所述预定条件包括以下中的至少一项:
所述第一设备的接收到所述链路聚合控制消息的接收端口集合可用于建立虚拟链路聚合信道;以及
所述第一设备已建立的虚拟链路聚合信道的数目未达到上限。
4.根据权利要求1所述的方法,其中管理所述第一虚拟链路聚合信道包括:
从所述链路聚合控制消息中获得所述第一虚拟机的所述标识符;以及
基于所述标识符来生成用于管理所述第一虚拟链路聚合信道的信道控制数据。
5.根据权利要求4所述的方法,还包括:
检测所述第一虚拟链路聚合信道的连接状态;以及
将检测到的所述连接状态记录在所述信道控制数据中。
6.根据权利要求5所述的方法,还包括:
根据确定检测到的所述连接状态为已断开,释放所述第一设备用于建立所述第一虚拟链路聚合信道的资源。
7.根据权利要求4所述的方法,还包括:
在所述信道控制数据中记录以下至少一项:指示用于建立所述第一虚拟链路聚合信道的第一端口集合的信息、以及所述第一虚拟链路聚合信道最近一次被更新的时间。
8.根据权利要求7所述的方法,其中所述链路聚合控制消息是第一链路聚合控制消息,并且所述第一虚拟机从所述第二设备迁移到另一设备,所述方法还包括:
从所述另一设备接收由所述第一虚拟机生成的用于更新所述第一虚拟链路聚合信道的第二链路聚合控制消息;以及
根据确定所述第一设备的接收到所述第二链路聚合控制消息的第三端口集合不同于所述第一端口集合,将所述信道控制数据中记录的指示所述第一端口集合的所述信息更新为指示所述第三端口集合的信息。
9.根据权利要求8所述的方法,还包括:
根据确定所述第二链路聚合控制消息中包括所述第一虚拟机的所述标识符,确定所述第二链路聚合控制消息由所述第一虚拟机生成。
10.根据权利要求1所述的方法,其中所述链路聚合控制消息包括指示信息,以指示所述第一虚拟机用作数据处理设备。
11.根据权利要求10所述的方法,其中所述指示信息被包括在作为所述链路聚合控制消息的链路聚合控制协议数据单元LACPDU中的保留字段中。
12.根据权利要求1所述的方法,还包括:
向所述第二设备发送针对所述链路聚合控制消息的响应消息,所述响应消息中包括指示信息,以指示所述第一设备是数据转发设备。
13.根据权利要求12所述的方法,其中所述指示信息被包括在作为所述响应消息的LACPDU中的保留字段中。
14.根据权利要求1所述的方法,其中所述第一设备包括交换机,并且所述第二设备包括服务器。
15.一种用于通信的方法,包括:
在第二设备处,向第一设备发送由所述第二设备上运行的虚拟机生成的用于建立虚拟链路聚合信道的链路聚合控制消息;
根据确定从所述第一设备接收到针对所述链路聚合控制消息的响应消息,基于所述响应消息来确定所述第一设备是数据处理设备还是数据转发设备;以及
根据确定所述第一设备是数据转发设备,在所述虚拟机与所述第一设备之间建立虚拟链路聚合信道。
16.根据权利要求15所述的方法,其中所述虚拟机是第一虚拟机,所述链路聚合控制消息是第一链路聚合控制消息,并且所述响应消息是第一响应消息,所述方法还包括:
向第三设备发送由所述第二设备上运行的第二虚拟机生成的用于建立虚拟链路聚合信道的第二链路聚合控制消息;
根据确定从所述第三设备接收到针对所述第二链路聚合控制消息的第二响应消息,基于所述第二响应消息来确定所述第三设备是数据处理设备还是数据转发设备;以及
根据确定所述第三设备是数据处理设备,丢弃所述第二响应消息以避免建立所述第二虚拟机与所述第三设备之间的虚拟链路聚合信道。
17.根据权利要求16所述的方法,其中:
所述第一响应消息包括第一指示信息,以指示所述第一设备是数据转发设备,并且
所述第二响应消息包括第二指示信息,以指示所述第三设备是数据处理设备还是数据转发设备。
18.根据权利要求17所述的方法,其中:
所述第一指示信息被包括在作为所述第一响应消息的第一链路聚合控制协议数据单元LACPDU中的保留字段中;并且
所述第二指示信息被包括在作为所述第二响应消息的第二LACPDU中的保留字段中。
19.根据权利要求15所述的方法,还包括:
在所述链路聚合控制消息中设置指示信息,以指示所述虚拟机用作数据处理设备。
20.根据权利要求19所述的方法,其中所述指示信息被包括在作为所述链路聚合控制消息的LACPDU中的保留字段中。
21.根据权利要求16所述的方法,其中所述第一设备包括交换机,所述第二设备包括服务器,并且所述第三设备包括服务器或交换机。
22.一种第一设备,包括:
至少一个处理器;以及
包括计算机程序指令的至少一个存储器,所述至少一个存储器和所述计算机程序指令被配置为,与所述至少一个处理器一起,使得所述第一设备执行根据权利要求1-14中任一项所述的方法。
23.一种第二设备,包括:
至少一个处理器;以及
包括计算机程序指令的至少一个存储器,所述至少一个存储器和所述计算机程序指令被配置为,与所述至少一个处理器一起,使得所述第二设备执行根据权利要求15-21中任一项所述的方法。
24.一种用于通信的装置,包括:
用于在第一设备处,从第二设备接收由所述第二设备上运行的多个虚拟机中的第一虚拟机生成的链路聚合控制消息的部件;
用于根据确定接收到所述链路聚合控制消息,基于所述第一设备的第一端口集合和所述第二设备的第二端口集合,建立所述第一设备与所述第一虚拟机之间的第一虚拟链路聚合信道的部件,所述第一设备与所述多个虚拟机中的第二虚拟机之间已经基于所述第一端口集合和所述第二端口集合建立第二虚拟链路聚合信道;以及
用于至少基于所述第一虚拟机的标识符,来管理所述第一虚拟链路聚合信道的部件。
25.一种用于通信的装置,包括:
用于在第二设备处,向第一设备发送由所述第二设备上运行的虚拟机生成的用于建立虚拟链路聚合信道的链路聚合控制消息的部件;
用于根据确定从所述第一设备接收到针对所述链路聚合控制消息的响应消息,基于所述响应消息来确定所述第一设备是数据处理设备还是数据转发设备的部件;以及
用于根据确定所述第一设备是数据转发设备,在所述虚拟机与所述第一设备之间建立虚拟链路聚合信道的部件。
26.一种计算机可读介质,所述计算机可读介质存储有机器可执行指令,所述机器可执行指令在被执行时使机器执行根据权利要求1-14中任一项所述的方法。
27.一种计算机可读介质,所述计算机可读介质存储有机器可执行指令,所述机器可执行指令在被执行时使机器执行根据权利要求15-21中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010002025.0A CN113067771B (zh) | 2020-01-02 | 2020-01-02 | 管理虚拟链路聚合信道 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010002025.0A CN113067771B (zh) | 2020-01-02 | 2020-01-02 | 管理虚拟链路聚合信道 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113067771A CN113067771A (zh) | 2021-07-02 |
CN113067771B true CN113067771B (zh) | 2022-11-01 |
Family
ID=76558205
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010002025.0A Active CN113067771B (zh) | 2020-01-02 | 2020-01-02 | 管理虚拟链路聚合信道 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113067771B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104219159A (zh) * | 2013-05-31 | 2014-12-17 | 国际商业机器公司 | 基于虚拟局域网的虚拟接口进行链路聚合方法和装置 |
CN105763471A (zh) * | 2014-12-16 | 2016-07-13 | 中兴通讯股份有限公司 | 虚拟机环境下链路管理方法、装置和系统 |
US9537798B1 (en) * | 2016-01-19 | 2017-01-03 | International Business Machines Corporation | Ethernet link aggregation with shared physical ports |
CN109327386A (zh) * | 2018-10-24 | 2019-02-12 | 深圳市共进电子股份有限公司 | 一种链路聚合方法、装置、设备及可读存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9497074B2 (en) * | 2013-04-23 | 2016-11-15 | Telefonaktiebolaget L M Ericsson (Publ) | Packet data unit (PDU) structure for supporting distributed relay control protocol (DRCP) |
CN106330780B (zh) * | 2015-06-24 | 2019-08-20 | 联想企业解决方案(新加坡)有限公司 | 用于构成聚合链路的交换机、设备和方法 |
US10248447B2 (en) * | 2015-11-25 | 2019-04-02 | Red Hat, Inc. | Providing link aggregation and high availability through network virtualization layer |
-
2020
- 2020-01-02 CN CN202010002025.0A patent/CN113067771B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104219159A (zh) * | 2013-05-31 | 2014-12-17 | 国际商业机器公司 | 基于虚拟局域网的虚拟接口进行链路聚合方法和装置 |
CN105763471A (zh) * | 2014-12-16 | 2016-07-13 | 中兴通讯股份有限公司 | 虚拟机环境下链路管理方法、装置和系统 |
US9537798B1 (en) * | 2016-01-19 | 2017-01-03 | International Business Machines Corporation | Ethernet link aggregation with shared physical ports |
CN109327386A (zh) * | 2018-10-24 | 2019-02-12 | 深圳市共进电子股份有限公司 | 一种链路聚合方法、装置、设备及可读存储介质 |
Non-Patent Citations (1)
Title |
---|
数据中心的网络虚拟化方案研究;吴永娟等;《广西大学学报(自然科学版)》;20121220(第06期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113067771A (zh) | 2021-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11050586B2 (en) | Inter-cloud communication method and related device, and inter-cloud communication configuration method and related device | |
CN115460068A (zh) | 对计算机网络的高可用性增强的方法和系统 | |
US20210092643A1 (en) | User plane resource management method, user plane network element, and control plane network element | |
US8984114B2 (en) | Dynamic session migration between network security gateways | |
CN107135279B (zh) | 一种处理长连接建立请求的方法和装置 | |
EP3451592B1 (en) | Packet transmission between vxlan domains | |
CN102316043B (zh) | 端口虚拟化方法、交换机及通信系统 | |
TWI712876B (zh) | 管理儲存子系統之電力消耗的電腦實現方法與電腦系統 | |
US8533320B2 (en) | Coalescing network notifications for live migration | |
CN113746717B (zh) | 网络设备通信方法及网络设备通信装置 | |
US10581669B2 (en) | Restoring control-plane connectivity with a network management entity | |
CN103631652A (zh) | 虚拟机迁移的实现方法及系统 | |
WO2020057445A1 (zh) | 一种通信系统、方法及装置 | |
US9372708B2 (en) | Synchronizing multicast groups | |
US9479438B2 (en) | Link aggregation based on virtual interfaces of VLANs | |
WO2023050667A1 (zh) | 一种实现裸金属检查流程的方法、系统、设备和存储介质 | |
WO2018024200A1 (zh) | 虚拟桌面组播控制方法、终端、代理终端及云桌面服务器 | |
EP3691210B1 (en) | Flexible ethernet message forwarding method and apparatus | |
CN113839862A (zh) | Mclag邻居之间同步arp信息的方法、系统、终端及存储介质 | |
CN113067771B (zh) | 管理虚拟链路聚合信道 | |
CN115514719B (zh) | 报文发送方法、装置、交换机及可读存储介质 | |
CN115152192B (zh) | Pce受控网络可靠性 | |
CN106453118B (zh) | 一种流量控制方法及流量控制系统 | |
CN110830598A (zh) | Bgp会话建立、发送接口地址和别名的方法及网络设备 | |
CN112532506B (zh) | 混合组网方法、装置、服务器和计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |