用于在数据中心中执行架构部署的计算设备和方法

文档序号:1559817 发布日期:2020-01-21 浏览:5次 >En<

阅读说明:本技术 用于在数据中心中执行架构部署的计算设备和方法 (Computing device and method for executing architecture deployment in a datacenter ) 是由 P·安德森 B·特伦布莱 S·克里希南 L·马钱德 于 2019-03-05 设计创作,主要内容包括:在数据中心中执行架构部署的方法和计算设备。计算设备存储配置文件,该配置文件包括第一和第二IPv6基本前缀以及架构标识符。计算设备生成主机标识符、通过组合第一IPv6基本前缀和架构标识符生成架构范围的IPv6前缀,以及通过组合架构范围的IPv6前缀和主机标识符来生成架构范围的IPv6地址。计算设备确定用于计算设备的通信接口的本地节点标识符和本地链路标识符。计算设备执行用于确定用于远程计算设备的通信接口的远程节点标识符和远程链路标识符的(安全)邻居发现过程。计算设备基于第二IPv6基本前缀和以下各项中的至少一些来生成链路IPv6地址:本地节点和链路标识符,以及远程节点和链路标识符。(Methods and computing devices perform architectural deployments in a datacenter. The computing device stores a configuration file that includes first and second IPv6 basic prefixes and an architecture identifier. The computing device generates a host identifier, generates an architecture-scoped IPv6 prefix by combining the first IPv6 basic prefix and the architecture identifier, and generates an architecture-scoped IPv6 address by combining the architecture-scoped IPv6 prefix and the host identifier. The computing device determines a local node identifier and a local link identifier for a communication interface of the computing device. The computing device performs a (secure) neighbor discovery process for determining a remote node identifier and a remote link identifier for a communication interface of the remote computing device. The computing device generates a link IPv6 address based on the second IPv6 basic prefix and at least some of: a local node and link identifier, and a remote node and link identifier.)

用于在数据中心中执行架构部署的计算设备和方法

技术领域

本公开涉及数据中心领域。更具体而言,本公开涉及用于在数据中心中执行架构部署的计算设备和方法。

背景技术

近年来,已经见证了诸如软件即服务(SaaS)、云计算等技术的快速发展。这种发展得益于客户对基于此类技术的产品和服务的需求不断增长。底层技术的不断进步也为这种发展提供了动力,诸如微处理器的处理能力增加、存储设备的存储容量增加以及网络装备的传输容量提高。此外,这些底层技术的平均成本正在下降。但是,底层技术的平均成本的下降被增长的客户需求平衡,这需要不断更新和升级用于提供SaaS或云计算的基础设施。

用于提供SaaS或云计算的基础设施是数据中心,其组合了大量的计算服务器。每个服务器具有多个多核处理器,并且计算服务器的组合提供了由数据中心的客户使用的非常高的处理能力。这些服务器中的一些或全部可能还具有重要的存储容量,因此服务器的组合还向数据中心的客户提供了非常高的存储容量。数据中心还依赖于联网基础设施,用于将服务器互连并向数据中心的客户提供对其计算和/或存储容量的访问。为了提供可靠的服务,对数据中心的计算和联网基础设施提出了非常高的可伸缩性、可管理性、容错性等方面的要求。

关于数据中心的联网基础设施,公知的是向大量主机提供高效且可靠的联网服务是一项复杂的任务。已经在其它环境中开发了解决方案和技术,诸如用于向大量移动设备提供移动数据服务的联网技术。这些技术中的一些已经在专用情况(诸如互联网工程任务组

Figure BDA0002309931660000011

或第三代合作伙伴计划(3GPPTM))中被标准化。但是,在数据中心中部署高效且可靠的联网基础设施的至少一些技术挑战是特定于数据中心环境的;并且需要用原始的解决方案和技术来解决。

对于涉及大量(例如,成千上万)设备的联网基础设施的一个重大挑战是联网基础设施的配置。具体地,配置需要是灵活的(以便于更改初始配置)、有弹性的(以避免本地化配置错误影响整个数据中心的操作)和安全的(以阻止对联网基础设施的攻击)。确保网络配置灵活且可靠的一种方式是尽可能多地限制配置过程中的人为干预。

数据中心的联网基础设施依赖于一个或多个架构。每个架构包括多个联网装备,这些联网装备向数据中心的计算服务器提供内部和外部联网能力。

因此,需要一种用于在数据中心中执行架构部署的计算设备和方法,架构部署包括各种网络配置。

发明内容

根据第一方面,本公开涉及一种计算设备。该计算设备包括存储器、通信接口和处理单元。存储器存储配置文件。配置文件包括第一互联网协议版本6(IPv6)基本前缀、架构标识符和第二IPv6基本前缀。处理单元确定主机标识符、通过组合存储在配置文件中的第一IPv6基本前缀和存储在配置文件中的架构标识符来生成架构范围的IPv6前缀,并通过组合架构范围的IPv6前缀和主机标识符来生成架构范围的IPv6地址。处理单元确定用于通信接口的本地节点标识符和本地链路标识符。处理单元执行邻居发现过程,该邻居发现过程用于确定用于远程计算设备的通信接口的远程节点标识符和远程链路标识符。处理单元基于存储在配置文件中的第二IPv6基本前缀以及以下各项中的至少一些来生成链路IPv6地址:本地节点标识符、远程节点标识符、本地链路标识符和远程链路标识符。

根据第二方面,本公开涉及一种用于在数据中心中执行架构部署的方法。该方法包括将配置文件存储在计算设备的存储器中。配置文件包括第一互联网协议版本6(IPv6)基本前缀、架构标识符和第二IPv6基本前缀。该方法包括由计算设备的处理单元确定主机标识符;由处理单元通过组合存储在配置文件中的第一IPv6基本前缀和存储在配置文件中的架构标识符来生成架构范围的IPv6前缀;以及由处理单元通过组合架构范围的IPv6前缀和主机标识符来生成架构范围的IPv6地址。该方法包括由处理单元确定用于计算设备的通信接口的本地节点标识符和本地链路标识符。该方法包括执行邻居发现过程,该邻居发现过程用于确定远程计算设备的通信接口的远程节点标识符和远程链路标识符。该方法包括基于存储在配置文件中的第二IPv6基本前缀以及以下各项中的至少一些来生成链路IPv6地址:本地节点标识符、远程节点标识符、本地链路标识符和远程链路标识符。

根据第三方面,本公开涉及一种非暂态计算机程序产品,其包括可由计算设备的处理单元执行的指令。处理单元对指令的执行提供通过执行前述方法在数据中心中执行架构部署。

在特定方面,邻居发现过程是安全邻居发现过程。

附图说明

将通过参考附图仅以示例的方式来描述本公开的实施例,其中:

图1表示包括多个部署点(pod)和架构的数据中心的网络体系架构;

图2表示图1中所示的架构的更详细的视图;

图3表示部署在图1-2的部署点和架构中的装备的通信端口;

图4A和图4B表示用于将图1-3中所示的架构的装备互连的IPv6网络;

图5图示了与部署在图1-3中所示的架构中的装备对应的计算设备的示意图;

图6表示用于生成架构范围的IPv6地址的方法;

图7A和图7B表示用于生成链路IPv6地址的方法;

图8A和图8B图示了将图7A和图7B的方法应用于图3的架构的装备;

图9A、图9B、图9C和图9D表示用于通过组合图6和图7A-7B的方法来执行网络配置的方法;

图10图示了应用于图3的架构的装备的图9A-9D的方法;以及

图11A和图11B表示用于通过组合图6、图9A-9D和图7A-7B的方法的各方面中的一些方面来执行架构部署的方法。

具体实施方式

在阅读以下说明性实施例的非限制性描述之后,前述和其它特征将变得更加清楚,所述说明性实施例通过参考附图仅以示例的方式给出。

本公开的各个方面总体解决了与数据中心中的架构部署的执行相关的一个或多个问题,其中架构部署包括各种网络配置。

本公开将首先单独描述架构部署的各个方面,然后描述包括所有单独描述的方面的集成架构部署处理。单独描述的方面包括生成架构范围的IPv6地址、生成一个或多个链路IPv6地址,以及执行安全邻居发现。

数据中心的网络体系架构

现在同时参考图1-4,图示了数据中心的网络体系架构。图中表示的网络体系架构是出于说明目的,并且设计数据中心体系架构领域的技术人员将容易理解,可以做出其它设计选择。本公开的教导不限于图中表示的网络体系架构的拓扑;而是也可以应用于在拓扑方面具有不同设计选择的网络体系架构。

现在更具体地参考图1。数据中心被组织为多个部署点。每个部署点由计算、存储、联网和电源的原子单元组成。每个部署点都作为单元被设计、作为单元被部署、作为单元被自动化、作为单元被退役。可以使用若干种类型的部署点,它们的设计不同。数据中心中部署每种部署点的零个、一个或多个实例。为了说明的目的,在图1中表示了三个部署点(A、B和C)。但是,数据中心中的部署点的数量从一到数十到甚至数百个部署点不等。通过添加(或移除)部署点,可以伸缩数据中心在计算、存储、联网和电源方面的容量。

部署点A包括提供处理和存储能力的多个服务器300。取决于服务器300的数量和每个机架的容量,服务器300被物理地组织在一个或多个机架中。部署点A还包括被称为架构A的两层联网能力。架构A包括由叶子联网装备200组成的较低层,以及由主干联网装备100组成的较高层。架构A的联网装备(例如主干100和叶子200)物理地集成到包括服务器300的一个或多个机架上,或者替代地被物理地组织在一个或多个独立的机架中。

叶子联网装备200和主干联网装备100通常由具有高密度通信端口的交换机组成。因此,在本说明书的其余部分中,叶子联网装备200和主干联网装备100将分别被称为叶子交换机200和主干交换机100。但是,可以使用其它类型的联网装备。例如,在替代实施方式中,主干联网装备100中的至少一些由路由器组成。

每个叶子交换机200连接到至少一个主干交换机100和多个服务器300。连接到给定叶子交换机200的服务器300的数量取决于叶子交换机200的通信端口的数量。

在图1所示的实施方式中,每个服务器300冗余地连接到两个不同的叶子交换机200。给定部署点(例如,部署点A)的服务器300仅连接到属于给定部署点(例如,部署点A)的架构(例如,架构A)的叶子交换机200。给定部署点(例如,部署点A)的服务器300未连接到属于另一个部署点(例如,部署点B)的架构(例如,架构B)的叶子交换机200。给定架构(例如,架构A)的每个叶子交换机200连接到给定架构(例如,架构A)的所有主干交换机100。给定架构(例如,架构A)的叶子交换机200未连接到另一个架构(例如,架构B)的主干交换机100。在各图中未示出的替代实施方式中,服务器300中的至少一些连接到单个叶子交换机200。

每个主干交换机100连接到至少一个核心联网装备10,以及多个叶子交换机200。连接到给定主干交换机100的叶子交换机200的数量取决于设计选择和主干交换机100的通信端口的数量。核心联网装备10提供部署在数据中心中的架构之间的互通、与数据中心的管理功能的连接、与外部网络(诸如互联网)的连接等。此外,虽然为了简化目的未在图中表示,但是核心联网装备10中的至少一些可以连接到一对叶子交换机200。

核心联网装备10通常由路由器组成。因此,在本说明书的其余部分中,核心联网装备10将被称为核心路由器10。但是,可以使用其它类型的联网装备。例如,在替代实施方式中,核心联网装备10中的至少一些由交换机组成。

在图1所示的实施方式中,给定架构(例如,架构A)的每个主干交换机100连接到所有核心路由器10,并且连接到给定架构(例如,架构A)的所有叶子交换机200。

为了简化目的,图1中表示的架构A仅包括两个主干交换机100和四个叶子交换机200,而部署点A仅包括两组三个服务器300,其分别连接到架构A的叶子交换机200。架构的主干交换机100和叶子交换机200的数量可以基于主干和叶子交换机的设计选择和联网能力(例如,通信端口密度)而变化。类似地,基于设计选择、基于对应架构的叶子交换机200的数量,以及基于叶子交换机的联网能力(例如,通信端口密度),部署点的服务器300的总数可以变化。

为了简化目的,部署点B及其对应的架构B以及部署点C及其对应的架构C的细节未在图1中表示。但是,部署点B/架构B和部署点C/架构C包括主干交换机100、叶子交换机200和服务器300的层次结构,类似于为部署点A/架构A所示的层次结构。

现在更具体地参考图1和图2,其中图2表示图1的数据中心的实施方式,其中每个架构还包括一个或多个控制器400。仅为了简化目的,未在图2中表示服务器300。

架构的控制器400负责控制架构中包括的至少一些节点(例如,叶子交换机200和/或主干交换机100)的操作。每个控制器400连接到至少一个叶子交换机200。在给定架构中部署的控制器400的数量取决于设计选择、架构中部署的控制器400所需的累积处理能力、架构中部署的叶子交换机和主干交换机的总数,等等。

在图2表示的实施方式中,每个控制器400冗余地连接到两个不同的叶子交换机200。例如,每个控制器400具有到第一叶子交换机200的第一操作连接和到第二叶子交换机200的第二备用连接。给定架构(例如,架构A)的控制器400仅连接到该架构(例如,架构A)的叶子交换机200。给定架构(例如,架构A)的控制器400未连接到另一个架构(例如,架构B或C)的叶子交换机200。一些叶子交换机200专用于连接到控制器400(如图2所示),而其它叶子交换机200专用于连接到服务器300(如图1所示)。在替代实施方式中,叶子交换机200同时连接到服务器300和控制器400。

在另一个实施方式中,控制器400不直接物理连接到叶子交换机200;而是经由诸如在控制器400和叶子交换机200之间的中间交换机(图2中未表示)之类的至少一个中间装备在功能上连接。

现在更具体地参考图1、图2和图3,其中图3表示部署在架构/部署点中的装备的通信端口。

主干交换机100具有专用于与核心路由器10的互连的专用数量的上行链路通信端口(例如,在图3中表示的4个)和专用于与叶子交换机200的互连的专用数量的下行链路通信端口(例如,在图3中表示的6个)。上行链路端口和下行链路端口具有相同或不同的联网容量。例如,所有端口都具有10千兆字节(Gbps)的容量。

叶子交换机200具有专用于与主干交换机100的互连的专用数量的上行链路通信端口(例如,在图3中表示的3个),以及专用于与服务器300或控制器400的互连的专用数量的下行链路通信端口(例如,在图3中表示的6个)。上行链路端口和下行链路端口具有相同或不同的联网容量。例如,所有上行链路端口都具有100Gbps的容量,并且所有下行链路端口都具有25Gbps的容量。将来,上行链路端口的容量将达到200或400Gbps,而下行链路端口的容量将达到50Gbps或100Gbps。

叶子交换机和主干交换机通常由具有高密度通信端口的装备组成,这些装备可以达到数十个端口。端口中的一些端口可以是电端口,而其它端口是光纤端口。如前所述,在支持的带宽方面,交换机的端口可以具有变化的联网容量。通常使用具有不同联网容量和功能的交换机来实现叶子交换机和主干交换机。这些端口不限于通信端口,而且还包括用于连接各种类型的可插拔介质的外壳。

作为对照,服务器300和控制器400是类似于传统计算机的具有有限数量的通信端口的计算设备。例如,每个服务器300和每个控制器400包括两个通信端口,分别连接到两个不同的叶子交换机200。这两个通信端口通常由以太网端口组成,容量为例如10Gbps。但是,服务器300和/或控制器400可以包括(一个或多个)附加端口。

所有上述通信端口都是双向的,从而允许传输和接收数据。

现在更具体地参考图4A和图4B,它们表示IPv6网络20在架构级别的部署。

架构的至少一些装备连接到IPv6网络20并经由该IPv6网络交换数据。在图4A和图4B所示的配置中,所有的主干交换机100、叶子交换机200和控制器400都连接到IPv6网络20。每个架构(例如,如图1所示的架构A、B和C)都具有其自己的IPv6网络,每个架构具有专用的IPv6前缀。给定架构的专用IPv6前缀的生成将在本说明书后面图示。

可选地,附加装备连接到IPv6网络20。例如,如图4A和图4B所示,核心路由器10中的一个或多个连接到IPv6网络20。配置和/或管理服务器(为简化起见,未在图4A和图4B中示出)通过核心路由器10而具有对IPv6网络20的访问。

可选地,专用的交换机和/或路由器(为简化起见,未在图4A和图4B中示出)被用于互连架构A的经由IPv6网络20交换数据的装备。前述可选配置和/或管理服务器通过专用交换机和/或路由器而具有对IPv6网络20的访问。

图4A表示第一说明性配置,其中架构A的每个装备(主干交换机100、叶子交换机200和控制器400)具有用于访问IPv6网络20的专用端口21。IPv6网络20是与由架构A实现的其它IP网络隔离的配置和/或管理网络。主干交换机100、叶子交换机200和控制器400的专用端口21仅用于通过IPv6网络20交换数据。因此,经由主干交换机100、叶子交换机200和控制器400的专用端口21交换的IPv6流量与经由主干交换机100、叶子交换机200和控制器400的其它端***换的流量隔离(如图3所示)。

图4B表示第二说明性配置,其中架构A的每个装备(主干交换机100、叶子交换机200和控制器400)不使用专用端口来访问IPv6网络20。相反,已经用于交换其它数据流量的端口(如图3所示)也用于访问IPv6网络20。

这种配置的优点在于,不会在架构A的每个装备(主干交换机100、叶子交换机200和控制器400)处仅为了访问IPv6网络20而独占专用端口。

在图中未示出的替代配置中,架构A的一些装备正在使用专用端口来访问IPv6网络20;但是,架构A的其它装备通过也用于交换其它数据流量的端口来访问IPv6网络20。

此外,架构A的一些装备可以使用一个以上的端口来访问IPv6网络20。

现在同时参考图4A-B和图5,在图5中图示了计算设备500。计算设备500是图4A和图4B的架构中包括的设备的一般功能表示。因此,计算设备500表示主干交换机100、叶子交换机200或控制器400。

计算设备500包括处理单元510、存储器520和至少一个通信接口530。计算设备500可以包括附加部件(为了简化目的,未在图5中示出)。例如,在计算设备500表示控制器400的情况下,计算设备可以包括用户界面和/或显示器。

处理单元510包括能够执行计算机程序的指令的一个或多个处理器(图5中未示出)。每个处理器还可以包括一个或若干个核心。在计算设备500表示交换机100或200的情况下,处理单元510还包括一个或多个用于执行专门联网功能(例如,分组转发)的专用处理部件(例如,网络处理器、专用集成电路(ASIC)等)。

存储器520存储由处理单元510执行的(一个或多个)计算机程序的指令、由处理单元510执行(一个或多个)计算机程序所生成的数据、经由(一个或多个)通信接口530接收到的数据等。在图5中仅表示了单个存储器520,但是计算设备500可以包括若干种类型的存储器,包括易失性存储器(诸如随机存取存储器(RAM))和非易失性存储器(诸如硬盘驱动器、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)等)。

每个通信接口530允许计算设备500与其它设备交换数据。通信接口530中的至少一些(为了简化目的,在图5中仅示出了两个)对应于图4A和图4B中表示的主干交换机100、叶子交换机200和控制器400的端口。通信接口530的示例包括标准(电)以太网端口、光纤端口、适于接收小形状因子可插拔(SFP)单元的端口等。通信接口530通常是有线类型;但也可以包括一些无线类型(例如,Wi-Fi接口)。通信接口530包括硬件和由硬件执行的软件的组合,用于实现通信接口530的通信功能。替代地,用于实现通信接口530的通信功能的硬件和软件的组合至少部分地被包括在处理单元510中。

架构范围的IPv6地址

现在同时参考图4A-4B、图5和图6,在图6中图示了用于生成架构范围的IPv6地址的方法600。方法600的至少一些步骤由图5中表示的计算设备500执行。

专用计算机程序具有用于实现方法600的至少一些步骤的指令。该指令被包含在计算设备500的非暂态计算机程序产品(例如,存储器520)中。该指令在由计算设备500的处理单元510执行时,提供生成架构范围的IPv6地址。该指令可经由电子可读介质(诸如存储介质(例如,CD-ROM、USB钥匙等))或经由通信链路(例如,通过通信接口530之一经由通信网络)传递给计算设备500。

方法600包括由配置设备30将配置数据传输到计算设备500的步骤605。

方法600包括由计算设备500接收配置数据的步骤610。配置数据是经由计算设备500的通信接口530之一接收的。

方法600包括将配置数据存储在配置文件521中的步骤615。配置文件521存储在计算设备500的存储器520中。配置数据包括IPv6基本前缀和架构标识符,这将在方法600的以下步骤中进一步详细描述。

配置设备30生成和传输配置数据的细节不在本公开的范围之内。在数据中心级别使用单个配置设备30来将配置数据传输到每个架构中的计算设备500。替代地,为数据中心的每个架构使用专用配置设备30。设计数据中心体系架构的技术人员将容易地识别适当的联网协议和配置机制,以用于将配置数据从集中式配置设备30分发到架构的多个计算设备500。

步骤605和610是在配置设备30的发起下(配置数据的推送)或在计算设备500的发起下(配置数据的拉取)执行的。在拉取的情况下,为了简化目的,在图6中未表示包括从计算设备500到配置设备30的对配置数据的请求的附加步骤。

当计算设备500初始地部署在架构中时,可以发生步骤605和610。在这种情况下,计算设备500根本不连接(或仅部分连接)到数据中心的任何联网基础设施。因此,使用基本引导(basic bootstrap)协议将配置数据从配置设备30直接传输到计算设备500。例如,配置设备30的通信接口物理地(例如,经由以太网线缆)连接到计算设备500的通信接口,并且引导协议在该临时物理连接上操作以执行配置数据的传送。

方法600包括确定主机标识符和可选地将主机标识符存储在配置文件521中的步骤620。步骤620由计算设备500的处理单元510执行。

将主机标识符存储在配置文件521中是可选的。替代地,主机标识符仅在方法600的其它步骤处被使用,而不需要将主机标识符存储在配置文件中。但是,仅确定主机标识符一次(例如,如果确定意味着计算)并将其存储在配置文件521中可能是更高效的,使得每当需要时就可以使用该主机标识符而无需再次计算它。

因此,确定主机标识符包括以下之一:选择主机标识符、计算主机标识符和从配置文件521读取主机标识符。

在第一实施方式中,主机标识符是十六进制格式的所选择的48位整数。例如,主机标识符是媒体访问控制(MAC)地址。如果计算设备500的通信接口530中的至少一个具有媒体访问控制(MAC)地址,则处理单元510选择通信接口530之一的该MAC地址作为主机标识符。由于方法600生成的IPv6地址未与计算设备500的所有通信接口530当中的具体通信接口530相关联,因此可以选择分配给计算设备500的MAC地址当中的任何一个作为主机标识符。例如,所选择的MAC地址是在步骤610处用于接收配置数据的通信接口530的MAC地址。诸如交换机(主干100和/或叶子200)的装备通常具有专用管理接口,该专用管理接口用于执行步骤610。该管理接口的MAC地址被用于主机标识符。

在第二实施方式中,通过计算计算设备500的128位通用唯一标识符(UUID)的散列来确定主机标识符。例如,128位UUID的散列也是十六进制格式的48位整数。UUID在本领域中是公知的。基于各种方法(例如,随机地、使用MAC地址和时间戳的组合,等等)为给定计算设备计算UUID。给定计算设备的UUID与另一个设备的UUID相同的机会非常低。

执行步骤620的时序可以变化。例如,步骤620在步骤610之前或在步骤625之后执行。

主机标识符不一定基于MAC地址或UUID。替代地,它基于其它种子数据进行计算,只要它是唯一的(或至少具有非常高的唯一性概率)。

方法600包括通过将存储在配置文件521中的IPv6基本前缀和存储在配置文件521中的架构标识符组合来生成IPv6前缀的步骤625。如前所述,IPv6基本前缀和架构标识符被包含在步骤610处接收到的配置数据中。

IPv6地址由128位组成,其中前n位由子网前缀组成。在IPv6联网中,通常的做法是为子网前缀保留IPv6地址的前64位(/64前缀)。

在步骤625处生成的IPv6前缀具有N(通常为64)位的长度。存储在配置文件521中的IPv6基本前缀是长度为小于N的B位(例如48)的IPv6前缀。存储在配置文件521中的架构标识符的长度为I位。例如,架构标识符是16位整数。数据中心中的每个架构(例如,图1中的架构A、架构B和架构C)具有唯一的架构标识符,其不同于数据中心中其它架构的标识符。

以下关系适用:B+I<=N。

在示例性实施方式中,如下地生成IPv6前缀:将架构标识符直接附加到IPv6基本前缀。例如,IPv6基本前缀为FD10:0:0/48,架构标识符为16位整数<fabric_id>,并且生成的IPv6前缀为FD10:0:0:<fabric_id>::/64。

在另一个示例性实施方式中,如下地生成IPv6前缀。IPv6前缀以IPv6基本前缀开始,后面跟着零,并且以架构标识符结尾。例如,IPv6基本前缀为FD10::/16,架构标识符为16位整数<fabric_id>,并且生成的IPv6前缀为FD10:0:0:<fabric_id>::/64。在这种情况下,可选的零由IPv6前缀的第17至48位组成。

在还有的另一个示例性实施方式中,如下地生成IPv6前缀。IPv6前缀以IPv6基本前缀开始,后面跟着架构标识符,并且以零结尾。例如,IPv6基本前缀为FD10::/16,架构标识符为16位整数<fabric_id>,并且生成的IPv6前缀为FD10:<fabric_id>:0:0::/64。在这种情况下,可选的零由IPv6前缀的第33至64位组成。

设计数据中心体系架构的技术人员将容易理解,IPv6基本前缀和架构标识符的其它组合可以用于生成IPv6前缀。

在方法600的示例性实施方式中,生成的IPv6前缀是唯一本地地址(ULA)IPv6前缀或公共IPv6前缀。

方法600包括通过将IPv6前缀(在步骤625处生成)和主机标识符(在步骤620处确定)组合来生成IPv6地址的步骤630。该操作在IPv6联网领域是公知的。例如,如果IPv6前缀是传统的/64前缀,则用主机标识符生成IPv6地址的最后64位。如果主机标识符少于64位,则在主机标识符之前(或之后)附加零,以达到64位。

例如,IPv6基本前缀为48位前缀<base_prefix>(例如FD10:0:0/48),架构标识符为16位整数<fabric_id>,并且主机标识符为48位整数<host_id>。生成的IPv6地址为:<base_prefix>:<fabric_id>:0:<host_id>。

方法600包括通告在步骤630处生成的IPv6地址的步骤635。该操作在IPv6联网领域中也是公知的,并且依赖于各种层2和/或层3联网协议。在计算设备500的一个或多个通信接口530上进行通告。例如,在主干交换机100的情况下,IPv6地址在主干交换机100的所有通信端口上、仅在主干交换机100的专用管理端口上、仅在主干交换机100的连接到叶子交换机200的端口上等通告。类似地,在叶子交换机200的情况下,IPv6地址在叶子交换机200的所有通信端口上、仅在叶子交换机200的专用管理端口上、仅在叶子交换机200的连接到主干交换机100或控制器400的端口上等通告。

一旦步骤630完成,计算设备500就能够通过IPv6网络20向其它计算设备传输数据。在步骤630处生成的IPv6地址用作传输到其它计算设备的IPv6分组的源IPv6地址。例如,控制器400通过IPv6网络20将数据传输到叶子交换机200或主干交换机100。

一旦步骤635完成,计算设备500就能够通过IPv6网络20从已经接收到所通告的IPv6地址的其它计算设备接收数据。在步骤635处通告的IPv6地址用作从其它计算设备接收的IPv6分组的目的地IPv6地址。例如,控制器400通过IPv6网络20从叶子交换机200或主干交换机100接收数据。

基于存储在配置文件521中的信息,方法600的步骤625、630和635可以被重复若干次。作为对照,步骤605至620只需要被执行一次,以用于生成并存储由步骤625和630所需的数据。例如,步骤625、630和635在计算设备500的每次启动时被重复;并且步骤605至620仅在计算设备500的第一次启动时被执行(只要计算设备500保持位于同一架构中)。

此外,配置文件可以包括若干个IPv6基本前缀。重复方法600的步骤625、630和635,以分别基于若干个IPv6基本前缀当中的一个IPv6基本前缀来(在步骤630处)配置若干个IPv6地址。这使得计算设备500能够成为若干个IPv6网络的一部分。

链路IPv6地址

现在同时参考图3、图5、图7A和图7B,图7A和图7B中图示了用于为计算设备500的通信接口530之一生成链路IPv6地址的方法700。方法700的至少一些步骤由图5中表示的计算设备500执行。

专用计算机程序具有用于实现方法700的至少一些步骤的指令。该指令被包含在计算设备500的非暂态计算机程序产品(例如,存储器520)中。该指令在由计算设备500的处理单元510执行时,提供生成链路IPv6地址。该指令可经由电子可读介质(诸如存储介质(例如,CD-ROM、USB钥匙密钥等))或经由通信链路(例如,通过通信接口530之一经由通信网络)传递给计算设备500。

计算设备500的通过方法700配置有链路IPv6地址的通信接口530被连接到远程计算设备40的通信接口。该连接(例如,经由以太网线缆的物理连接)在计算设备500和远程计算设备40之间建立通信链路。

方法700基于节点标识符和链路标识符。与计算设备500的通信接口530相关联的节点标识符和链路标识符将被称为本地节点标识符和本地链路标识符。与远程计算设备40的通信接口相关联的节点标识符和链路标识符将被称为远程节点标识符和远程链路标识符。

方法700包括由配置设备30将配置数据传输到计算设备500的步骤705。

方法700包括由计算设备500接收配置数据的步骤710。配置数据是经由计算设备500的通信接口530之一来接收的。

方法700包括将配置数据存储在配置文件521中的步骤715。配置数据包括IPv6基本前缀,这将在方法700的以下步骤中进一步详细描述。例如,IPv6基本前缀是/16前缀。

步骤705、710和715类似于图6中表示的方法600的步骤605、610和615。如先前关于图6中表示的方法600所述,由配置设备30生成和传输配置数据的细节不在本公开的范围之内。

方法700包括确定计算设备500的本地节点标识符的步骤720。可选地,步骤720还包括将本地节点标识符存储在配置文件521中。步骤720由计算设备500的处理单元510执行。

将本地节点标识符存储在配置文件521中是可选的。替代地,本地节点标识符仅在方法700的其它步骤处被使用,而不需要将本地节点标识符存储在配置文件中。但是,仅确定本地节点标识符一次(例如,如果确定意味着计算)并将其存储在配置文件521中可能是更高效的,使得每当需要时就可以使用该本地节点标识符而无需再次计算它。

因此,确定本地节点标识符包括以下之一:选择本地节点标识符、计算本地节点标识符以及从配置文件521读取本地节点标识符。

当执行用于为计算设备500的任何通信接口530生成链路IPv6地址的方法700时,使用相同的本地节点标识符。替代地,在步骤720处确定不同的本地节点标识符,不同的本地节点标识符中的每一个与计算设备500的多个通信接口530中的一个或多个通信接口530相关联。

在第一实施方式中,本地节点标识符是十六进制格式的所选择的48位整数。例如,本地节点标识符是媒体访问控制(MAC)地址。如果当前用方法700配置的计算设备500的通信接口530具有MAC地址,则处理单元510选择该通信接口530的MAC地址作为本地节点标识符。如果当前用方法700配置的计算设备500的通信接口530不具有其自己的MAC地址,则选择另一个通信接口530的MAC地址用于本地节点标识符。例如,诸如交换机的装备(主干100和/或叶子200)通常具有带有MAC地址的专用管理接口,该MAC地址可以用于本地节点标识符。

在第二实施方式中,通过计算计算设备500的128位通用唯一标识符(UUID)的散列来确定本地节点标识符。例如,128位UUID的散列也是十六进制格式的48位整数。UUID在本领域中是公知的。基于各种方法(例如,随机地、使用MAC地址和时间戳的组合,等等)为给定计算设备计算UUID。给定计算设备的UUID与另一个设备的UUID相同的机会非常低。

执行步骤720的时序可以变化。仅需在步骤740之前执行步骤720。

本地节点标识符不一定基于MAC地址或UUID。替代地,它基于其它种子数据进行计算,只要它是唯一的(或至少具有非常高的唯一性概率)。

方法700包括确定用于计算设备500的通信接口530的本地链路标识符的步骤725。本地链路标识符与通过方法700为其生成链路IPv6地址的通信接口530相关联。可选地,步骤725还包括将本地链路标识符存储在配置文件521中。步骤725由计算设备500的处理单元510执行。

将本地链路标识符存储在配置文件521中是可选的。替代地,本地链路标识符仅在方法700的其它步骤处被使用,而不需要将本地链路标识符存储在配置文件中。但是,仅确定本地链路标识符一次(例如,如果确定意味着计算)并将其存储在配置文件521中可能是更高效的,使得每当需要时可以使用该本地链路标识而无需再次计算它。

因此,确定本地链路标识符包括以下之一:选择本地链路标识符、计算本地链路标识符以及从配置文件521读取本地链路标识符。

计算设备500的通信接口530中的每一个具有其自己的本地链路标识符,该本地链路标识符不同于其它通信接口530的本地链路标识符。

例如,本地链路标识符是十六进制格式的15位整数。在主干交换机100或叶子交换机200的情况下,交换机的每个端口被分配1到N范围内的唯一整数,其中N是交换机的端口的数量。分配给给定端口的唯一整数被用于本地链路标识符。

本地链路标识符的确定不限于在给定整数范围(例如1到N)中分配唯一的整数。其它技术或算法可以用于确定分别与计算设备500的通信接口530相关联的唯一本地链路标识符。

方法700包括由远程计算设备40将远程节点标识符和远程链路标识符传输到计算设备500的步骤730。

方法700包括由计算设备500接收远程节点标识符和远程链路标识符的步骤735。经由计算设备500的当前通过方法700配置有链路IPv6地址的通信接口530来接收远程节点标识符和远程链路标识符。

例如,远程节点标识符和远程链路标识符通过链路层发现协议(LLDP)从远程计算设备40被传输到计算设备500。但是,可以使用LLDP以外的其它协议用于此目的。

可选地,远程节点标识符和远程链路标识符也存储在配置文件521中。

远程节点标识符和本地节点标识符具有相同的位大小。例如,如果本地节点标识符是十六进制格式的48位整数,则远程节点标识符也是十六进制格式的48位整数。类似地,远程链路标识符和本地链路标识符具有相同的位大小。例如,如果本地链路标识符是十六进制格式的15位整数,则远程链路标识符也是十六进制格式的15位整数。

方法700包括比较本地节点标识符和远程节点标识符的步骤740。例如,本地节点标识符和远程节点标识符被解释为整数,它们被比较以确定这两个中的哪一个大于另一个。

如果本地节点标识符大于远程节点标识符,则方法700执行通过将存储在配置文件521中的IPv6基本前缀、本地节点标识符、远程节点标识符、本地链路标识符、和本地节点标识符大于远程节点标识符的指示符组合来生成链路IPv6地址的步骤745。

如果本地节点标识符小于远程节点标识符,则方法700执行通过将存储在配置文件521中的IPv6基本前缀、远程节点标识符、本地节点标识符、远程链路标识符、和本地节点标识符小于远程节点标识符的指示符组合来生成链路IPv6地址的步骤746。

例如,指示符是布尔值(Boolean),如果本地节点标识符大于远程节点标识符,则该布尔值取值为0,并且如果本地节点标识符小于远程节点标识符,则取值为1。替代地,如果本地节点标识符大于远程节点标识符,该布尔指示符可以取值为1,并且如果本地节点标识符小于远程节点标识符,可以取值为0。

方法700包括用在步骤745或746处生成的链路IPv6地址来配置通信接口530的步骤750。用IPv6地址配置通信接口在IPv6联网领域中是公知的。

一旦步骤750完成,计算设备500就能够在步骤750处通过配置有链路IPv6地址的通信接口与远程计算设备40交换数据。在步骤745或746处生成的链路IPv6地址被用作传输到远程计算设备40的IPv6分组的源IPv6地址。在步骤745或746处生成的链路IPv6地址被用作从远程计算设备40接收的IPv6分组的目的地IPv6地址。为了开始交换数据,远程计算设备40需要也执行了用于在远程计算设备40的对应通信接口上配置对应的链路IPv6地址的方法700。如稍后关于图8A和图8B将描述的,计算设备500能够基于其自己的链路IPv6地址来推断远程计算设备40的对应的链路IPv6地址。类似地,远程计算设备40能够基于其自己的链路IPv6地址来推断计算设备500的对应的链路IPv6地址。

计算设备500还可以经由在步骤750处配置的通信接口与其它计算设备(不同于计算设备40)交换数据。在步骤745或746处生成的链路IPv6地址被用作传出IPv6分组的源IPv6地址,以及用作传入IPv6分组的目的地IPv6地址。

在替代实施方式中,如果本地节点标识符小于远程节点标识符,则执行步骤745;并且如果本地节点标识符大于远程节点标识符,则执行步骤746。在各图中未表示这种替代实施方式。

IPv6地址由128位组成,其中前n位通常由子网前缀组成。在IPv6联网中,通常的做法是为子网前缀保留IPv6地址的前64位(/64前缀)。但是,方法700生成的链路IPv6地址不遵循这种通常的做法。

存储在配置文件521中的IPv6基本前缀是具有B位(例如16位)长度的IPv6前缀<base_prefix>。本地节点标识符和远程节点标识符(分别为<local_node_id>和<remote_node_id>)的长度为N位(例如48位)。本地链路标识符和远程链路标识符(分别为<local_link_id>和<remote_link_id>)的长度为L位(例如15位)。指示符的长度为I位(例如1位)。

以下关系适用:B+2*N+L+I=128。

由方法700生成的链路IPv6地址具有以下格式:

<base_prefix>:<local_node_id>:<remote_node_id>:<local_link_id>:<indicator>(步骤745)

或者

<base_prefix>:<remote_node_id>:<local_node_id>:<remote_link_id>:<indicator>(步骤746)。

例如,IPv6基本前缀是FD04::/16。本地节点标识符和远程节点标识符是48位MAC地址。本地远程链路标识符和远程链路标识符是由相应端口号组成的15位标识符。指示符是1位布尔值。由方法700生成的链路IPv6地址具有以下格式之一:

FD04:<local_MAC_address>:<remote_MAC_address>:<local_port_nb>:0(步骤745)

或者

FD04:<remote_MAC_address>:<local_MAC_address>:<remote_port_nb>:1(步骤746)。

在方法700的示例性实施方式中,所生成的链路IPv6地址是符合互联网工程任务组(IETF)的请求注解(RFC)4193的唯一本地地址(ULA)。

在步骤745和746处生成IPv6链路地址可以将附加的(一个或多个)项目组合到在步骤745和746处已经描述的那些项目,只要所生成的IPv6链路地址具有128位。例如,如果使用较短的本地节点标识符和远程节点标识符,则在步骤745处生成的IPv6链路地址可以包括远程链路标识符(例如,<base_prefix>:<local_node_id>:<remote_node_id>:<local_link_id>:<remote_link_id>:<indicator>),并且在步骤746处生成的IPv6链路地址可以包括本地链路标识符(例如,<base_prefix>:<remote_node_id>:<local_node_id>:<remote_link_id>:<local_link_id>:<indicator>)。

使用存储在配置文件521中的信息,方法700的步骤730、735、740、745或746和750可以被重复若干次。作为对照,为了生成由步骤730至750所需的数据(IPv6基本前缀、本地节点标识符和本地链路标识符)并将其存储在配置文件521中,步骤705至725只需被执行一次。例如,步骤730至750在计算设备500的每次启动时被重复;并且步骤705至735仅在计算设备500的第一次启动时被执行。

可以实现用于在任何时间触发计算设备500来执行步骤730至750的基于软件的机制。基于软件的机制可以经由计算设备500的用户界面、经由计算设备500接收到的控制消息等来实现。例如,如果先前已经用方法700配置的计算设备500的通信接口530物理上或功能上连接到远程计算设备40的新通信接口(或新远程计算设备40的通信接口),则应调用基于软件的机制来触发步骤730至750的执行。

现在同时参考图7B、图8A和图8B,其中图8A和图8B图示了由方法700的步骤745和746生成的示例性链路IPv6地址。

图8A和图8B的主干交换机100和叶子交换机200分别对应于图7A和图7B的计算设备500和远程计算设备40。主干交换机100包括端口102,该端口102(例如,经由以太网线缆)连接到叶子交换机200的端口201。本地节点标识符(local_node_id)和本地链路标识符(local_link_id)与端口102相关联。类似地,远程节点标识符(remote_node_id)和远程链路标识符(remote_link_id)与端口201相关联。

如图8A所示,如果本地节点标识符大于远程节点标识符,则在步骤745处为端口102生成的链路IPv6地址如下:

<base_prefix>:<local_node_id>:<remote_node_id>:<local_link_id>:<0>。

应用方法700来生成端口201的链路IPv6地址,在步骤746处为端口201生成的链路IPv6地址如下:

<base_prefix>:<local_node_id>:<remote_node_id>:<local_link_id>:<1>。

如图8B所示,如果本地节点标识符小于远程节点标识符,则在步骤746处为端口102生成的链路IPv6地址如下:

<base_prefix>:<remote_node_id>:<local_node_id>:<remote_link_id>:<1>。

应用方法700来生成端口201的链路IPv6地址,在步骤745处为端口201生成的链路IPv6地址如下:

<base_prefix>:<remote_node_id>:<local_node_id>:<remote_link_id>:<0>。

应当注意的是,在执行方法700之后,主干交换机100能够确定(当叶子交换机200执行方法700时)分配给叶子交换机200的端口201的对应链路IPv6地址。更具体而言,如果分配给端口102的链路IPv6地址是通过执行步骤745来生成的,则分配给端口201的对应链路IPv6地址是通过执行具有指示符的适配值(例如,指示符的值从0改变为1,或从1改变为0)的步骤745来确定的。类似地,如果分配给端口102的链路IPv6地址是通过执行步骤746来生成的,则分配给端口201的对应链路IPv6地址是通过执行具有指示符的适配值(例如,指示符的值从0改变为1,或从1改变为0)的步骤746来确定的。相同的属性适用于执行方法700并且能够确定分配给主干交换机100的端口102的对应链路IPv6地址的叶子交换机200。

现在同时参考图3、图7B、图8A和图8B。图8A和图8B仅用于说明目的;并且可以容易地适于图示在其它配置中由方法700的步骤745和746生成的示例性链路IPv6地址。其它配置包括主干交换机100的端口与控制器400的端口的连接、叶子交换机100的端口与控制器400的端口的连接、主干交换机100的端口与另一个主干交换机100的端口的连接、以及叶子交换机100的端口与另一个叶子交换机100的端口的连接。

如先前参考图3所述,端口102不一定物理地连接到端口201(例如,经由以太网线缆)。例如,使用未在图中表示的中间装备(例如,中间交换机)将端口102功能上连接到端口201。在这种配置中,端口102直接物理连接到中间(交换)装备的一个端口,并且端口201直接物理连接到中间(交换)装备的另一个端口。在这种情况下,可以通过方法700为交换机主干100的端口102生成并配置若干个链路IPv6地址。每个链路IPv6地址对应于到另一个装备的端口的功能链路(具有远程节点id和远程链路id)。端口102和中间装备之间的物理链路支持所有功能链路。

使用术语端口是因为架构的大多数装备具有端口形式的通信接口(例如,以太网电端口、光端口等)。但是,图8A和图8B可以被泛化为任何类型的通信接口,只要方法700的步骤745和746所应用到的通信接口已被分配本地节点标识符和本地链路标识符。

安全邻居发现

现在同时参考图3、图5、图9A、图9B、图9C和图9D,在图9A至图9D中图示了用于为计算设备500的通信接口530之一执行安全邻居发现的方法800。方法800的一些步骤由图5中表示的计算设备500执行。方法800的一些步骤由通过本方法800安全地发现的远程计算设备40执行。

专用计算机程序具有用于实现在计算设备500上执行的方法800的步骤的指令。该指令被包含在计算设备500的非暂态计算机程序产品(例如,存储器520)中。该指令在由计算设备500的处理单元510执行时,提供执行安全邻居发现。该指令可经由电子可读介质(诸如存储介质(例如,CD-ROM、USB钥匙等))或经由通信链路(例如,通过通信接口530之一经由通信网络)传递给计算设备500。

远程计算设备40类似于图5中表示的计算设备500。远程计算设备40包括处理单元、存储器和至少一个通信接口。

专用计算机程序具有用于实现在远程计算设备40上执行的方法800的步骤的指令。该指令被包含在远程计算设备40的非暂态计算机程序产品(例如,存储器)中。该指令在由远程计算设备40的处理单元执行时,提供执行安全邻居发现。该指令可经由电子可读介质(诸如存储介质(例如,CD-ROM、USB钥匙等))或经由通信链路(例如,通过远程计算设备40的通信接口之一经由通信网络)传递给远程计算设备40。

为其执行安全发现的计算设备500的通信接口530连接到远程计算设备40的通信接口。该连接(例如,经由以太网线缆的物理连接)在计算设备500和远程计算设备40之间建立通信链路。

方法800基于节点标识符和质询(challenge)。与计算设备500的通信接口530相关联的节点标识符和质询将被称为本地节点标识符和本地质询。与远程计算设备40的通信接口相关联的节点标识符和质询将被称为远程节点标识符和远程质询。

方法800包括确定计算设备500的本地节点标识符的步骤805。步骤805由计算设备500的处理单元510执行。

先前已经关于图7A中表示的方法700描述了本地节点标识符的确定。在示例性实施方式中,本地节点标识符是为其执行安全邻居发现的计算设备500的通信接口530的MAC地址。替代地,本地节点标识符是计算设备500的另一个通信接口530的MAC地址。在另一个示例性实施方式中,通过计算计算设备500的128位通用唯一标识符(UUID)的散列来确定本地节点标识符。

方法800包括生成本地质询的步骤810。步骤810由计算设备500的处理单元510执行。由方法800使用的质询的生成将在后面的描述中详细描述。

方法800包括将本地节点标识符加密为经加密的本地节点标识符的步骤815。步骤815由计算设备500的处理单元510执行。由方法800使用的加密/解密手段将在后面的描述中详细描述。

方法800包括将本地质询加密为经加密的本地质询的步骤820。步骤820由计算设备500的处理单元510执行。

方法800包括经由通信接口530传输发现请求消息的步骤825,该发现请求消息包括经加密的本地节点标识符和经加密的本地质询。步骤825由计算设备500的处理单元510执行。当执行方法800时在计算设备500和远程计算设备40之间交换的消息将在后面的描述中详细描述。

方法800包括经由远程计算设备40的通信接口接收发现请求消息的步骤830。步骤830由远程计算设备40的处理单元执行。

方法800包括将经加密的本地节点标识符解密为本地节点标识符的步骤835。步骤835由远程计算设备40的处理单元执行。

方法800包括将经加密的本地质询解密为本地质询的步骤840。步骤840由远程计算设备40的处理单元执行。

方法800包括至少基于在步骤830处以加密形式接收到的本地质询来生成本地质询响应的步骤845。步骤845由远程计算设备40的处理单元执行。由方法800使用的质询响应的生成将在后面的描述中详细描述。

方法800包括确定远程计算设备40的远程节点标识符的步骤850。步骤850由远程计算设备40的处理单元执行。远程节点标识符的确定类似于步骤805处的本地节点标识符的确定。

方法800包括将远程节点标识符加密为经加密的远程节点标识符的步骤855。步骤885由远程计算设备40的处理单元执行。

方法800包括将本地质询响应加密为经加密的本地质询响应的步骤860。步骤860由远程计算设备40的处理单元执行。

方法800包括生成远程质询的步骤865。步骤865由远程计算设备40的处理单元执行。

方法800包括将远程质询加密为经加密的远程质询的步骤870。步骤870由远程计算设备40的处理单元执行。

方法800包括经由远程计算设备40的通信接口向计算设备500传输发现响应消息的步骤875。该发现响应消息包括经加密的远程节点标识符、经加密的本地质询响应和经加密的远程质询。步骤875由远程计算设备40的处理单元执行。

方法800包括经由计算设备500的通信接口530从远程计算设备40接收发现响应消息的步骤880。步骤880由计算设备500的处理单元510执行。

步骤865和870是可选的。因此,在第一实施方式中,发现响应消息包括经加密的远程节点标识符、经加密的本地质询响应和经加密的远程质询。在另一种实施方式中,发现响应消息仅包括经加密的远程节点标识符和经加密的本地质询响应。

方法800包括将经加密的本地质询响应解密为本地质询响应的步骤885。步骤885由计算设备500的处理单元510执行。

方法800包括至少基于本地质询生成预期本地质询响应的步骤890。步骤890由计算设备500的处理单元510执行。预期本地质询响应的生成应基于与步骤845处的本地质询响应的生成相同的机制。

方法800包括确定(在步骤880处以加密形式接收的)本地质询响应与(在步骤890处生成的)预期本地质询响应相对应的步骤895。步骤895由计算设备500的处理单元510执行。

如果(在步骤880处以加密形式接收的)本地质询响应与(在步骤890处生成的)预期本地质询响应匹配,则计算设备500对远程计算设备40的安全发现是成功的。远程计算设备40被计算设备500视为合法设备,具有用于成功完成安全发现过程的恰当凭证。

如果(在步骤880处以加密形式接收的)本地质询响应与(在步骤890处生成的)预期本地质询响应不匹配,则计算设备500对远程计算设备40的安全发现是失败的。远程计算设备40被计算设备500视为欺诈设备,因为它不具有用于成功完成安全发现过程的恰当凭证。

仅当远程计算设备40的安全发现是成功的时,才执行方法800的以下步骤。

方法800包括将经加密的远程节点标识符解密为远程节点标识符的步骤900。步骤900由计算设备500的处理单元510执行。

方法800的以下步骤是可选的。仅当在步骤880处接收到的发现响应消息包括经加密的远程质询时,才执行以下步骤。

方法800包括将经加密的远程质询解密为远程质询的步骤905。步骤905由计算设备500的处理单元510执行。

方法800包括至少基于在步骤880处以加密形式接收到的远程质询来生成远程质询响应的步骤910。步骤910由计算设备500的处理单元510执行。

方法800包括将远程质询响应加密为经加密的远程质询响应的步骤915。步骤915由计算设备500的处理单元510执行。

方法800包括经由通信接口530传输包括经加密的远程质询响应的发现确认消息的步骤920。步骤920由计算设备500的处理单元510执行。

方法800包括经由远程计算设备40的通信接口接收发现确认消息的步骤925。步骤925由远程计算设备40的处理单元执行。

方法800包括将经加密的远程质询响应解密为远程质询响应的步骤930。步骤925由远程计算设备40的处理单元执行。

方法800包括至少基于远程质询来生成预期远程质询响应的步骤935。步骤935由远程计算设备40的处理单元执行。预期远程质询响应的生成应基于与步骤910的远程质询响应的生成相同的机制。

方法800包括确定(在步骤925处以加密形式接收的)远程质询响应与(在步骤935处生成的)预期远程质询响应相对应的步骤940。步骤940由远程计算设备40的处理单元执行。

如果(在步骤925处以加密形式接收的)远程质询响应与(在步骤935处生成的)预期远程质询响应匹配,则远程计算设备40对计算设备500的安全发现是成功的。计算设备500被远程计算设备40视为合法设备,具有用于成功完成安全发现过程的恰当凭证。

如果(在步骤925处以加密形式接收的)远程质询响应与(在步骤935处生成的)预期远程质询响应不匹配,则远程计算设备40对计算设备500的安全发现是失败的。计算设备500被远程计算设备40视为欺诈设备,因为它不具有用于成功完成安全发现过程的恰当凭证。

本领域中公知的各种加密/解密方法可以用于加密/解密节点标识符和质询。例如,计算设备500和远程计算设备40使用共享密钥。如本领域中公知的,共享密钥既用于加密操作又用于解密操作。共享密钥被包含在存储在计算设备500的存储器520中的配置文件521中。远程计算设备40具有存储在其存储器中并包含共享密钥的类似配置文件。如图6中所示(方法600的步骤605),共享密钥从配置设备30传输到计算设备500(和远程计算设备40)以存储在配置文件521中。相同的共享密钥用于所有加密/解密操作。替代地,使用不同的共享密钥。例如,第一共享密钥用于加密/解密节点标识符,并且第二共享密钥用于加密/解密质询。可以使用成对的公钥/私钥代替共享密钥。但是,用于保护多个节点之间的交易的成对公钥/私钥的部署更加复杂。计算设备500需要存储其自己的私钥,用于对发送给远程计算设备40的数据(本地节点标识符、本地质询等)进行加密。计算设备500也需要存储远程计算设备40的公钥,以对从远程计算设备40接收的数据(远程节点标识符、本地质询响应等)进行解密。类似地,远程计算设备40需要存储其自己的私钥,以对发送给计算设备500的数据(远程节点标识符、本地质询响应等)进行加密。远程计算设备40也需要存储计算设备500的公钥,以对从计算设备500接收到的数据(本地节点标识符、本地质询等)进行解密。先前描述的加密/解密方法仅用于说明目的。可以使用其它方法。

可以使用各种方法来生成质询和对质询的响应。在第一示例性实施方式中,本地质询和远程质询是由随机数生成器生成的随机数。在第二示例性实施方式中,通过将一个或多个种子作为输入的数学函数来生成本地质询和远程质询。种子的示例包括当前时间、计算设备500(或远程计算设备40)的特性等。在第三示例性实施方式中,从配置文件521中存储的值的预定义列表中选择本地质询和远程质询。选择可以是随机的、顺序的,等等。

关于本地质询响应和预期本地质询响应,需要基于本地质询来生成它们以保护发现处理。更具体而言,这确保了远程计算设备40是合法的,因为它能够用恰当的加密材料对接收到的经加密的本地质询进行解密、能够在生成处理中使用本地质询来生成本地质询响应、并且能够用恰当的加密材料对本地质询响应进行加密。在第一示例性实施方式中,本地质询响应是通过将本地质询作为种子的数学函数生成的。除了本地质询之外,还可以使用(一个或多个)附加的种子(例如本地节点标识符和/或远程节点标识符)。在第二示例性实施方式中,从存储在配置文件521中的值的预定义列表中选择本地质询响应。这仅当本地质询也是从配置文件521中存储的值的预定义列表中选择的时才有效。本地质询的每个预定义值与本地质询响应的对应预定义值相关联。一旦接收到本地质询的预定义值之一,就为本地质询响应选择对应的预定义值。对远程质询响应和预期远程质询响应实现相同的机制。先前描述的用于生成质询和对质询的响应的方法仅用于说明目的。可以使用其它方法。

各种协议可以用于实现发现、发现响应和发现确认消息。例如,使用在电气和电子工程师协会(IEEE)802.1AB和IEEE 802.3-2012第6节第79条中指定的链路层发现协议(LLDP)。LLDP帧包括强制性的类型长度值(TLV)和零个或多个可选的TLV。通过方法800在计算设备500和计算设备40之间交换的数据(例如,经加密的节点标识符、经加密的质询等)在现有的可选TLV中传送(如果适用)。替代地,定义新的(一个或多个)专用可选TLV来实现方法800。由于LLDP中没有请求、响应和确认的概念,因此,发现、发现响应和发现确认消息中的每一个通过单向LLDP消息实现。

用于实现发现、发现响应和发现确认消息的先前描述的协议仅用于说明目的。可以使用其它标准化(或专有)协议。具体地,可以使用支持请求、响应和确认的概念的协议。

在开放系统互连(OSI)模型的层2(例如,基于以太网的数据链路层)或层3(例如,基于IP的网络层),发现请求消息以多播或广播模式传输。例如,如果使用LLDP,则目的地MAC地址是多播MAC地址。由于计算设备500不知道要被发现的(一个或多个)邻居((一个或多个)远程计算设备40),所以计算设备500不知道这些邻居的目的地MAC(或IP)地址。因此,多播或广播目的地地址被用于经由发现请求消息到达(一个或多个)邻居。发现响应和发现确认消息也以多播或广播模式传输。替代地,使用单播目的地地址:发现请求消息的源地址被用作发现响应消息的目的地地址,并且发现响应消息的源地址被用作发现确认消息的目的地地址。

方法800支持的安全发现过程可以以不同的方式实现。在第一实施方式中,通过执行方法800的所有步骤来执行计算设备500和远程计算设备40的相互安全发现。计算设备500将计算设备500的节点标识符(以及可选的链路标识符)安全地通告给远程计算设备40。作为回报,远程计算设备40将远程计算设备40的节点标识符(以及可选的链路标识符)安全地通告给计算设备500。

在第二实施方式中,不执行相互安全发现,而是执行两个独立的安全发现。计算设备500和远程计算设备40仅执行方法800的步骤810、820、825、830、840至861、875和880至901,以由计算设备500执行对远程计算设备40的安全发现。远程计算设备40使用相同的过程来发现计算设备500。

在安全发现过程期间,可以在计算设备500和远程计算设备40之间交换(以明文或加密形式)附加数据。例如,除了本地节点标识符之外,计算设备500还确定本地链路标识符。本地链路标识符经由发现请求消息(或替代地经由发现确认消息)以加密或明文形式传输到远程计算设备40。类似地,除了远程节点标识符之外,远程计算设备40还确定远程链路标识符。远程链路标识符经由发现响应消息以加密或明文形式传输到计算设备500。

图9A表示确定本地链路标识符的可选步骤806和加密本地链路标识符的步骤816。在这种情况下,虽然为了简化目的未在图9A中示出,但是步骤825和830的发现请求消息还包括经加密的本地链路标识符。

图9B表示解密本地链路标识符的可选步骤836、确定远程链路标识符的步骤851和加密远程本地链路标识符的步骤861。

图9C表示解密远程链路标识符的可选步骤901。虽然为了简化目的未在图9C中示出,但是步骤875和880的发现响应消息还包括经加密的远程链路标识符。

先前已经关于图7A中表示的方法700描述了本地链路标识符的确定。在示例性实施方式中,本地链路标识符是与为其执行安全邻居发现的计算设备500的通信接口530相关联的十六进制格式的15位整数。例如,在主干交换机100或叶子交换机200的情况下,交换机的每个端口被分配1到N范围内的唯一整数,其中N是交换机的端口数量。分配给给定端口的唯一整数被用于本地链路标识符。远程链路标识符的确定类似于本地链路标识符的确定。

替代地,计算设备500和远程计算设备40不分别确定和传输(以加密形式)本地节点标识符和远程节点标识符。而是,在本地计算设备500和/或远程计算设备40处生成其它数据。该其它数据经由发现请求消息、发现响应消息或发现确认消息之一以明文或加密形式传输。

在替代实施方式(为了简化目的在图中未示出)中,步骤815、816和820中的至少一些被组合。例如,对本地节点标识符和本地质询的组合进行加密;或对本地节点标识符、本地链路标识符和本地质询的组合进行加密。

类似地,步骤835、836和840中的至少一些被组合。例如,将本地节点标识符和本地质询的经加密的组合解密为本地节点标识符和本地质询;或者将本地节点标识符、本地链路标识符和本地质询的经加密的组合解密为本地节点标识符、本地链路标识符和本地质询。

类似地,步骤855、860、861和870中的至少一些被组合。例如,对远程节点标识符、本地质询响应和远程质询的组合进行加密;或对远程节点标识符、远程链路标识符、本地质询响应和远程质询的组合进行加密。

现在同时参考图9A-9D和图10,其中图10图示了由方法800支持的邻居发现过程。

图10的主干交换机100和叶子交换机200分别对应于图9A-9D的计算设备500和远程计算设备40。主干交换机100包括端口102,该端口102(例如,经由以太网线缆)连接到叶子交换机200的端口201。本地节点标识符(local_node_id)和本地链路标识符(local_link_id)与端口102相关联。类似地,远程节点标识符(remote_node_id)和远程链路标识符(remote_link_id)与端口201相关联。此外,主干100生成本地质询、预期本地质询响应和远程质询响应;而叶子200生成本地质询响应、远程质询和预期远程质询响应。进一步表示了在主干100和叶子200之间交换的发现请求、发现响应和发现确认消息。

数据中心中的架构部署

现在同时参考图3、图5、图6、图7A-7B、图9A-9D和图11A、图11B,图11A和图11B中图示了用于在数据中心中执行架构部署的方法1000。架构部署包括执行架构中包括的(在图5中表示的)计算设备500的网络配置。对架构中包括的多个计算设备500(例如,图3中表示的架构A中包括的主干交换机100、叶子交换机200和控制器400)重复架构部署过程。方法1000的至少一些步骤由计算设备500执行。计算设备500可以表示主干交换机100、叶子交换机200和控制器400中的任何一个。

架构部署包括在图6所示的方法600中描述的架构范围的IPv6地址的生成。架构部署还包括在图9A、图9B、图9C和图9D所示的方法800中描述的安全邻居发现。架构部署还包括在图7A和图7B所示的方法700中描述的链路IPv6地址的生成。安全邻居发现过程允许安全地发现远程计算设备40的用于生成链路IPv6地址的远程节点标识符和远程链路标识符。安全邻居发现过程还允许将本地节点标识符和本地链路标识符安全地传输到远程计算设备40,该本地节点标识符和本地链路标识符用于在远程计算设备40处生成对应的链路IPv6地址。

可以通过对每个通信接口530重复方法800和700的步骤,通过安全邻居发现过程为计算设备500的若干个通信接口530配置链路IPv6地址。

如果架构的联网基础设施被认为足够安全,或者如果安全性不被认为是邻居发现过程的关键方面,则可以通过省略质询的生成和传输来简化邻居发现过程。

专用计算机程序具有用于实现方法1000的至少一些步骤的指令。该指令被包含在计算设备500的非暂态计算机程序产品(例如,存储器520)中。该指令在由计算设备500的处理单元510执行时,提供执行计算设备500的网络配置。该指令可经由电子可读介质(诸如存储介质(例如,CD-ROM、USB钥匙等))或经由通信链路(例如,通过通信接口530之一经由通信网络)传递给计算设备500。

方法1000包括由配置设备30向计算设备500传输配置数据的步骤1005。步骤1005对应于方法600的步骤605和方法700的步骤705。

方法1000包括由计算设备500接收配置数据的步骤1010。经由计算设备500的通信接口530之一来接收配置数据。步骤1010对应于方法600的步骤610和方法700的步骤710。

方法1000包括将配置数据存储在配置文件521中的步骤1015。步骤1015对应于方法600的步骤615和方法700的步骤715。配置数据包括第一IPv6基本前缀、架构标识符和第二IPv6基本前缀。

方法1000包括确定主机标识符并且可选地将主机标识符存储在配置文件521中的步骤1020。步骤1020对应于方法600的步骤620。

方法1000包括通过组合存储在配置文件521中的第一IPv6基本前缀和存储在配置文件521中的架构标识符来生成架构范围的IPv6前缀的步骤1025。步骤1025对应于方法600的步骤625。

方法1000包括通过组合(在步骤1025处生成的)架构范围的IPv6前缀和(在步骤1020处确定的)主机标识符来生成架构范围的IPv6地址的步骤1030。步骤1030对应于方法600的步骤630。

方法1000包括通告在步骤1030处生成的架构范围的IPv6地址的步骤1035。步骤1035对应于方法600的步骤635。通过连接到图4A中所示的架构范围的IPv6网络20的计算设备500的通信接口之一来通告架构范围的IPv6地址。架构范围的IPv6地址用于与连接到图4A中所示的架构范围的IPv6网络20的其它设备交换数据。

方法1000包括确定计算设备500的通信接口530的本地节点标识符;并且可选地将本地节点标识符存储在配置文件521中的步骤1040。步骤1040对应于方法700的步骤720。每个通信接口530可以具有其自己的本地节点标识符。替代地,对于所有通信接口530使用相同的本地节点标识符。在方法1000的特定实施方式中,本地节点标识符由在步骤1020处确定的主机标识符组成。

方法1000包括确定计算设备500的通信接口530的本地链路标识符;并且可选地将本地链路标识符存储在配置文件521中的步骤1045。每个通信接口530具有其自己的本地链路标识符。步骤1045对应于方法700的步骤725。

方法1000包括执行邻居发现过程以确定用于远程计算设备40的通信接口的远程节点标识符和远程链路标识符的步骤1050。步骤1050涉及在远程计算设备40和计算设备500之间交换(一个或多个)消息。

通过方法1000配置有链路IPv6地址的计算设备500的通信接口530连接到远程计算设备40的通信接口。该连接(例如,经由以太网线缆的物理连接)在计算设备500和远程计算设备40之间建立通信链路。远程计算设备40的每个通信接口可以具有其自己的远程节点标识符。替代地,对于远程计算设备40的所有通信接口使用相同的远程节点标识符。远程计算设备40的每个通信接口具有其自己的远程链路标识符。

在特定方面,在步骤1050执行的邻居发现过程是安全邻居发现过程。例如,步骤1050包括方法800中的允许计算设备500执行对用于远程计算设备40的通信接口的远程节点标识符和远程链路标识符的安全发现的至少所有步骤。出于简化目的,在图11A-11C中没有详细描述这些步骤。如前所述,安全邻居发现过程包括用于保护该过程的加密/解密手段以及质询的使用。

方法800是用于安全地发现远程节点标识符和远程链路标识符的安全邻居发现过程的示例。本领域技术人员将能够基于用于安全地发现远程节点标识符和远程链路标识符的加密/解密手段和/或质询来设计替代的安全邻居发现过程。

如果不需要安全性,那么本领域技术人员将能够设计不依赖于用于发现远程节点标识符和远程链路标识符的安全性技术的简单邻居发现过程。例如,计算设备500发送请求消息,并且远程计算设备40以包括远程节点标识符和远程链路标识符的响应消息来响应。在另一个示例中,远程节点标识符和远程链路标识符由远程计算设备40(例如,使用LLDP协议)自发地传输到计算设备500。

方法1000包括基于存储在配置文件中的第二IPv6基本前缀;以及本地节点标识符、远程节点标识符、本地链路标识符和远程链路标识符中的至少一些来生成链路IPv6地址的步骤1055。

在特定的实施方式中,方法1055对应于方法700的步骤740、745和746。本领域技术人员将能够设计步骤1055的替代实现方式,用于基于存储在配置文件中的第二IPv6基本前缀;以及本地节点标识符、远程节点标识符、本地链路标识符和远程链路标识符中的至少一些来生成链路IPv6地址。

方法1000包括用在步骤1055处生成的链路IPv6地址来配置(对应于本地节点标识符和本地链路标识符的)通信接口530的步骤1060。步骤1060对应于方法700的步骤750。

如果步骤1050还包括方法800中的允许远程计算设备40安全地发现用于计算设备500的通信接口530的本地节点标识符和本地链路标识符的至少所有步骤,则可以生成用于远程计算设备40的对应通信接口的对应链路IPv6地址。用于远程计算设备40的对应通信接口的对应链路IPv6地址的生成基于与用于为计算设备500的通信接口530生成链路IPv6地址相同的算法。先前已经在图8A和图8B中描述并图示了对应链路IPv6地址的生成。

通过针对每个通信接口530重复方法1000的步骤1040至1060,可以用链路IPv6地址配置计算设备500的若干个通信接口530。

方法600、700和800的各个步骤的所有细节和具体情况(其在描述方法600、700和800时已经在前面进行讨论)也适用于方法1000的对应步骤。当描述方法1000时,出于简化目的,没有重复这样的细节和具体情况。

虽然以上已经通过非限制性的说明性实施例描述了本公开,但是在不脱离本公开的精神和本质的情况下,可以在所附权利要求的范围内随意修改这些实施例。

43页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:用于电子围栏的系统和方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!