具体实施方式
图1是示出示例性网络系统10的框图,其中本地网络设备12实现本公开的网络层地址冲突检测技术。可应用网络层地址冲突检测技术来检测例如互联网协议(IP)地址冲突。如图1所示,网络系统10包括本地网络设备12、网络14和远程网络设备16A-16N(统称为“远程网络设备16”)。在本公开内容将本地网络设备12描述为本公开的IP地址冲突检测技术的发起设备的意义上,本地网络设备12在本公开的上下文中是“本地的”。同样地,在远程网络设备16远离本地网络设备12的意义上,远程网络设备16在本公开的上下文中是“远程的”。如更详细地描述的,本地网络设备12是请求网络设备的实例,远程网络设备16是响应网络设备的实例。
本地网络设备12可包括各种类型的计算设备。例如,本地网络设备12可包括服务器计算机、刀片服务器、个人计算机、移动计算设备(例如,平板计算机、智能电话)、中间网络设备(例如,路由器、网关、入侵检测设备),或其他类型的配备网络的计算设备。远程网络设备16每个可包括类似类型的配备网络的计算设备。
网络14可包括促进本地网络设备12和远程网络设备16之间的通信的各种设备和网络链路。例如,网络14可包括一个或多个集线器、中继器和/或交换机。网络14包括以太网网络或其他类型的网络,其支持到连接到网络14的所有网络设备的广播通信,并依赖于具有唯一地址的每个设备。为了便于解释,本公开主要将网络14讨论为以太网网络。
如图1的实例所示,本地网络设备12包括网络接口控制器(NIC)18。NIC 18包括将本地网络设备12连接到网络14的计算机硬件组件。在一些实例中,NIC 18内置在本地网络设备12的主板中。NIC 18具有NIC IP地址20。例如,IP地址20可存储在NIC 18的存储器单元中(例如,只读存储器(ROM)单元、可编程只读存储器(PROM)、电可擦除可编程只读存储器(EEPROM))。在其他实例中,其他网络层地址可代替NIC IP地址20。可由动态主机配置协议(DHCP)服务器(未示出)分配NIC IP地址20。
当在网络14上通信时,网络设备可发送指定源IP地址、目的地IP地址、源端口、目的地端口和协议的消息(下文中称为“分组”)。分组的源IP地址是发送网络设备的IP地址,而分组的目的地IP地址是分组发送到的网络设备的IP地址。在分组中发送源IP地址可允许接收网络设备通过将分组发送回初始发送设备来进行响应,以及确定用于转发分组的适当网络路由。帧的目的地IP地址标识分组的预期接收者。分组的协议字段标识分组的有效载荷的通信协议。
此外,如图1的实例所示,本地网络设备12可包括虚拟机(VM)主机软件22。VM主机软件22可包括托管VM 24的各种类型的软件系统。例如,VM主机软件22可包括操作系统。在另一个实例中,VM主机软件22可包括管理程序。
在本公开中,VM主机软件22和VM主机软件22的IP地址分配模块(IAAM)26可在本地网络设备12的处理电路上执行,并且可配置处理电路以执行本公开描述的实例技术。例如,本地网络设备12的存储器可存储处理电路检索和执行的VM主机软件22和IAAM 26的计算机可读指令。在一些实例中,处理电路加载指令以被配置为执行本公开中描述的实例操作。在一些实例中,处理电路可以是固定功能电路(例如,具有不可变操作)和可编程电路的组合。例如,作为一个实例,处理电路可包括一个或多个处理器,并且处理器将包括可编程芯和固定功能电路。
通常,VM 24中的每一个是相应计算机系统的仿真。由于每个VM 24模拟相应的计算机系统,因此每个VM 24应具有相应的IP地址以用于在网络14上进行通信。因此,IAAM 26可将相应的IP地址28分配给每个相应的VM 24。随后,当NIC18接收指定VM的IP地址作为目的地地址的分组时,VM主机软件22接受该帧并将该帧转发给VM。当VM生成用于在网络14上传输的帧时,该帧指定VM的IP地址作为帧的源地址。然后,VM主机软件22将帧传递给NIC18,以便在网络14上传输。
在一些实例中,本地网络设备12可使用以下方法之一生成接口标识符。根据一些RFC,可通过一些其他手段(例如,随机地)生成接口标识符,并且在接口标识符和MAC地址之间不存在一对一映射。根据这些RFC,这种随机生成的接口标识符用于处理安全问题。例如,如果从MAC地址生成接口标识符和链路本地地址,则连接到网络的膝上型计算机可显示人的位置。本公开未解决接口标识符未映射到MAC地址的这种情况。但是,当实验室内有数千个虚拟机时,这些安全问题并不相关。
根据rfc2373,EUI64方法已用于根据IEEE 48位MAC标识符生成接口标识符。根据RFC4291,可使用接口标识符生成链路本地IPv6单播地址。因此,接口标识符和MAC地址之间可能存在一对一的映射。但是,还有其他场景,其中接口标识符是从IEEE 48位MAC标识符或与逻辑接口相关的一些其他信息生成的。例如,路由器可使用MAC地址和IFL索引的组合来配置数千个IFL并为这些IFL生成接口标识符。由于IFL索引的范围为0-64k,因此接口标识符和对应的链路本地地址在同一范围内。本公开解决了接口标识符被映射到MAC地址的情况。
如前所述,根据重复地址检测(DAD)协议,网络设备通常确定是否一次预留一个单独的IP地址。关于DAD的使用的细节描述于例如Jose等人的“AUTOMATIC RECOVERY FROMDUPLICATE NETWORK ADDRESSES”,美国申请号16/138,767,2018年9月21日提交,其全部内容通过引用结合于此。DAD还描述于S.Thomson等人的“IPv6 Stateless AddressAutoconfiguration”,Network Working Group Request for Comments(RFC)4862,2007年9月,其全部内容通过引用结合于此。然而,每次新VM被启动时确定链路本地地址是否是重复的可能是时间密集的并且负面影响VM在能够发送和接收通信之前需要等待的时间量。根据一个或多个实例,请求网络设备确定多个链路本地地址是否可用于单个请求预留,从而减少了预留链路本地地址所需的时间量。
如上所述,本地网络设备12可执行多个(例如,两个或更多个)VM 24。在一些情况下,本地网络设备12可开始执行多个VM 24(有时被称为“旋转”VM)同时,即,通常(大致)在时间上同时,使得操作在时间上重叠或接近重叠,例如在彼此的几秒或几分钟内。不是如通常使用例如重复地址检测(DAD)那样逐个确定新执行的VM的潜在IP地址是唯一的,本地网络设备12可执行本公开的技术以确定是否预留多个VM 24的IP地址的范围,例如由任何远程网络设备16。此外,本地网络设备12在确定当前未预留IP地址范围之后预留VM 24的IP地址范围。
本公开认识到DAD需要两个多播消息通过:邻居请求(NS)消息和邻居通告(NA)消息。本公开认识到在不能可靠地传递多播的链路上存在明显的故障率,例如802.11a/b/g/n系列技术。RFC 4862明确提到DAD检测重复的方法不完全可靠,并且可能仍然存在重复的地址(例如,如果在执行重复地址检测时链路被分区)。
为了操作ND的DAD,节点必须加入多播地址并发送多播侦听器发现(MLD)报告消息以用于多播地址。因此,在可使用IP地址之前会有一段延迟。RFC4862指定在DAD过程完成之前,地址仍处于暂定状态。在此状态下,除了与DAD相关的地址之外的任何流量都将被丢弃。这引入了连接到网络的接口与该接口上的地址变得可用之间的延迟。
在一些实例中,本公开描述了使用用于IPv6协议的DMAD探测分组来检测重复地址。IPv4堆栈通常实现RFC5227的地址冲突检测(ACD)。
本公开描述了对重复媒体访问控制地址检测(DMAD)协议的各种增强,其可检测网络中存在的重复的全局IP地址和/或重复的链路本地地址的存在。例如,在一个或多个实例中,请求网络设备可利用单个请求预留请求网络设备确定的全局IP地址或多个链路本地地址不是重复的地址。
以这种方式,当新VM被启动(例如,实例化)时,请求网络设备(例如,本地网络设备12)可为新VM中的一个分配预留的全局IP地址和/或来自预留的多个链路本地地址的新的VM链路本地地址,而不需要确定要分配给VM的链路本地地址是否分别是重复的。
DMAD协议在L2层可用,因此可通过探测分组通过DMAD完成重复地址检测(DAD)。ND协议可继续提供除DAD之外的其他功能。但是,用户可选择使用DMAD协议探测而不是ND的DAD进行重复地址检测。例如:接口的链路本地地址的重复地址检测可从ND的DAD移动到DMAD探测器。ND的DAD可用于用于接口的其他类型的IP地址,即全局IP地址。由于全局IP地址的形成依赖于ND的路由器前缀通告,因此可使用ND的DAD。
早期检测非重复链路本地地址对于本地网络设备12与诸如远程网络设备16的相邻节点的IP级连接是必要的。然而,一旦全局ip地址通过标识与链路相关联的子网的ND的路由器前缀通过决定,用户可选择对于全局IP地址使用DMAD探测。当DAD和链路分区同时完成时,可这样做以避免重复地址检测失败。
在一些实例中,本地网络设备12发出DMAD请求消息32(也称为DMAD探测或探测分组)以确定全局IP地址是否已被广播DMAD请求消息32使用,用于期望的全局IP地址到远程网络设备16。本地网络设备12将DMAD请求消息32的发送方硬件地址字段设置为本地网络设备12通过其发送DMAD请求消息32(例如,NIC 18)的接口的硬件地址。此外,本地网络设备12可将发送方IP地址字段和目标硬件地址字段设置为零,并且将目标IP地址字段设置为被探测的全局IP地址。
作为响应,远程网络设备16将DMAD响应消息(诸如DMAD响应消息34)返回到本地网络设备12,包括DMAD响应消息的发送方IP地址字段中的各个远程网络设备16的IP地址。例如,远程网络设备16N将DMAD响应消息34的发送方IP地址字段的值设置为等于远程网络设备16N的IP地址。远程网络设备16还将目标硬件地址字段和目标IP地址字段设置为零值,并且发送方硬件地址字段具有通过其发送DMAD响应消息的接口的硬件地址。
如果本地网络设备12在正在执行探测的接口上接收到任何DMAD响应消息,其中分组的“发送方IP地址”是被探测的地址,则本地网络设备12将该地址视为正在被一些其他主机使用,并应表明拟议的地址不可接受。
作为另一实例,根据本公开的技术,本地网络设备12可使用DMAD协议来预留链路本地IP地址的范围。假设VM主机软件22将实例化三个VM 24。在一些技术中,IAAM 26将为三个VM 24中的每一个选择IP地址,并确定三个所选IP地址是唯一的还是预留IP地址的重复的。根据本公开的技术,本地网络设备12可发送指定IP地址中的第一个和IP地址范围的单个消息(例如,DMAD请求消息32),并将该消息发送到远程网络设备16。本地网络设备12可使用来自远程网络设备16的对该消息的任何响应来确定是否预留该范围中的任何IP地址。在一些实例中,如果不再需要先前预留的硬件地址,则远程网络设备16可释放先前预留的硬件地址。远程网络设备16可响应于来自本地网络设备12的消息,发送DMAD响应消息,例如DMAD响应消息34,指定一个或多个预留的IP地址,一个或多个预留的硬件地址,和/或一个或多个释放的硬件地址。
此外,本地网络设备12可使用这些技术在实际需要IP地址之前预留多个IP地址以分配给VM 24。例如,当本地网络设备12(可是路由器)配置数千个IFL并使用MAC地址和IFL索引的组合为这些IFL生成接口标识符,本地网络设备12可从预留的多个链路本地地址分配新的IFL链路本地地址,而无需确定要被分配给IFL的链路本地地址是否是重复的。
每次路由器配置IFL时确定链路本地地址是否是重复的可能是时间密集的,并且负面影响IFL在能够发送和接收通信之前需要等待的时间量。根据本公开的一个或多个实例,本地网络设备12确定多个链路本地地址是否可用于为单个请求预留,从而减少了预留链路本地地址所需的时间量。
重复地址检测(DAD)协议邻居请求和邻居通告消息在例如Narten等人的“Neighbor Discover for IP version 6(IPv6)”,Network Working Group,RFC 4861,2007年9月,中描述,可从tools.ietf.org/html/rfc4861获得。根据RFC 4861,这样的消息尤其包括类型字段和代码字段。根据RFC 4861,邻居请求消息的类型字段是值“135”,而根据RFC 4861的邻居通告消息的类型字段是值“136”。RFC 4861定义了邻居请求和邻居通告消息对于单个IP地址为具有代码值“0”。
根据本公开的技术,本地网络设备12可形成DMAD请求消息32而不是使用DAD协议,该DMAD请求消息32包括指定DMAD请求消息32包括IP地址范围的数据,例如通过设置值操作代码字段为指示DMAD请求消息32指定所请求的IP地址范围(即,链路本地IP地址)的值。同样地,根据本公开的技术,本地网络设备12可确定具有用于操作代码字段的值的DMAD响应消息指示这样的范围,所述操作代码字段指示DMAD响应消息指定预留IP地址范围,例如DMAD响应消息34,响应于包括IP地址范围的DMAD请求消息32,并且DMAD响应消息34指示当前由远程网络设备16之一预留的一个或多个IP地址。
诸如本地网络设备12之类的网络设备向远程网络设备16发送DMAD请求消息,例如DMAD请求消息32,以确定目标节点的链路本地地址是否是重复的。当本地网络设备12需要解析链路本地地址时,本地网络设备12可将这种DMAD请求消息多播到包括远程网络设备16的多播组。因此,在发送DMAD请求消息32之前,本地网络设备12可加入目标地址的所有节点多播地址和请求节点多播地址。前者可确保本地网络设备12从已经使用该地址的其他节点接收DMAD响应消息,而后者可确保尝试同时使用相同地址的两个节点应该检测到彼此的存在。
本地网络设备12可通过使用这样的DMAD请求和DMAD响应消息来迭代地确定当前未被任何远程IP地址16预留的IP地址(例如,链路本地IP地址)。例如,本地网络设备12可响应于预留的IP地址的指示,从新的IP地址开始生成新的DMAD请求消息,该新的IP地址当前未被预留用于先前请求的全范围。可替代地,本地网络设备12可确定先前请求的未预留的IP地址范围的一部分,并且为预留的较小范围的IP地址提交新的DMAD请求消息。
在第一步骤中,IAAM 26生成指定NIC IP地址20的请求消息。IAAM 26还包括目标IP地址和目标IP地址的范围。目标IP地址可以是IAAM 26计划预留用于分配给VM 24之一的IP地址,并且IP地址的范围可以是N个连续IP地址,其中N是大于或等于1的数字。目标IP地址可以是IP地址范围的起始IP地址。作为一个实例,目标IP地址是0,并且范围是64,这意味着IAAM 26计划预留IP地址0到63。
作为另一实例,IAAM 26指定起始和结束IP地址(例如,IP地址10至19)。该实例是IAAM 26指定从目标IP地址开始的IP地址范围的另一种方式。例如,在该实例中,目标IP地址是10并且范围是10。可有其他方式来指定从目标IP地址开始的IP地址范围,并且实例技术不限于以上提供的具体实例。
IAAM 26可以以各种方式确定目标IP地址和IP地址范围。硬件地址使用随机数生成器生成最后两个字节,前六个字节基于NIC 20的制造商或基于VM主机软件22的预配置。因为链路本地IP地址直接映射到硬件地址,作为一个实例,IAAM 26从硬件地址确定链路本地IP地址。IAAM 26可预先配置有值N,其定义了IAAM 26应该预留的连续IP地址(例如,N被预先配置为64或256)。
例如,本地网络设备12的物理配置允许创建具有指定数量的用于每个VM 24的虚拟网络接口控制器的特定数量的VM 24。这些配置基于物理网络接口控制器18的数量和每个物理网络接口控制器18的容量,就带宽而言。
本地网络设备12的网络管理员可确定需要创建多少具有特定数量的用于每个VM24的虚拟网络接口控制器的VM 24,以实现VM 24针对预定义负载的成功操作。
例如,本地网络设备12具有两个物理网络接口控制器18,并且每个物理网络接口控制器18的容量是8Gbs(每秒Giba比特)。因此,本地网络设备12可用的总网络容量是16Gbs。如果期望每个VM 24拥有2Gbs网络容量以执行预定义操作,则可从单个本地网络设备12创建8个VM 24。这8个VM 24中的每一个可具有一个虚拟网络接口控制器。因此,虚拟接口控制器的总数是8。在该实例中,假设为本地网络设备12确定的虚拟网络接口控制器的数量是X。然后,IAAM 26需要预留X个IP地址。但是实际的VM 24在某个时间点的操作可能小于在本地网络设备12上创建的VM 24的总数。这些VM 24使用较少数量的虚拟网络接口控制器,其小于X。
然后,IAAM 26指示NIC 18经由网络14发送包括请求消息并具有指定广播mac地址的目的地地址字段的分组。因此,连接到网络14的每个网络设备(例如,远程网络设备16,已经配置的VM 24)可接收和接受该分组。在一些实例中,分组的源地址字段可指定NIC 18的硬件地址或mac地址。
响应于接收到帧,网络设备确定网络设备的IP地址或连续IP地址组是否与IP地址范围中的IP地址匹配。作为实例,远程网络设备16A可具有预留的IP地址,用于分配给在远程网络设备16A上执行的VM。在该实例中,远程网络设备16A的IAAM可确定为在远程网络设备16A上执行的VM预留的任何IP地址是否在由IAAM 26指定的IP地址的范围内。例如,远程网络设备16A的IAAM可确定作为由远程网络设备16A预留的IP地址的一部分的一组连续IP地址是否在由本地网络设备12指定的IP地址的范围内。
响应于确定远程网络设备16A在请求消息中指定的地址范围内预留了一组IP地址,远程网络设备16A生成响应消息。在一个实例中,响应消息指定从远程网络设备16A预留的响应IP地址开始的IP地址范围。从响应IP地址开始的IP地址范围部分地或完全地与从本地网络设备12指定的目标IP地址开始的IP地址范围重叠。
作为实例,本地网络设备12可将目标IP地址指定为10并且将IP地址的范围指定为10(例如,本地网络设备12预留地址10至19)。远程网络设备16A可确定远程网络设备16A先前已经预留了IP地址5到24。在该实例中,远程网络设备16A部分地或完全地(在该实例中完全地)确定由远程网络硬件设备16A预留的IP地址与请求由本地网络设备12预留的IP地址范围10到19重叠。在该实例中,远程网络设备16A生成指示远程网络设备16A预留IP地址5到24的响应消息。
在一些实例中,DMAD响应消息指定一个或多个预留的硬件地址和/或一个或多个释放的硬件地址。本地网络设备12可利用各种因素来确定可释放哪些以及可释放多少预留的硬件地址。假设IAAM 26预留了X个地址。作为一个实例,VM主机软件22可跟踪多少VM 24正在启动以及多少VM 24正在减少的速率,并且IAAM 26可基于跟踪的速率确定N的值。如果平均而言,基于跟踪的速率,N个VM 24正在本地网络设备12上执行,则硬件地址的(X-N)可由IAAM 26释放。
例如,X是为本地网络设备12设计的最大VM数量24,并且由IAAM 26预留X个IP地址。然而,在某个时间点操作的实际VM 24小于在本地网络设备12上创建的总VM 24数量。因此,这些VM 24使用比X更少数量的虚拟网络接口控制器。因此,IAAM 26可释放(X-N)硬件地址。
然后,远程网络设备16A在网络14上发送包括DMAD响应消息的分组。在一些实例中,分组的目的地IP地址指定请求节点多播地址。在一些实例中,接收DMAD请求消息的节点具有与所接收的DMAD请求消息中的目标地址匹配的接口地址,可发回DMAD响应消息。IP地址保持暂定地址或暂定状态,直到IP地址通过DMAD请求消息被验证为非重复地址。另一方面,响应于确定远程网络设备16A预留的IP地址都不在由本地网络设备12指定的IP地址的范围内,远程网络设备16A不生成响应消息。
如果IAAM 26没有接收到指定部分或完全重叠以IAAM 26指定的目标IP地址开始的IP地址范围的IP地址范围的响应消息,则IAAM 26可确定以目标IP地址开头的IP地址范围内的所有IP地址可使用(例如,不是重复的)。然后,IAAM 26可预留以目标IP地址开始的IP地址范围内的所有IP地址(例如,存储指示数据库30中的预留IP地址的信息)。
如果IAAM 26接收一个或多个响应消息,这些响应消息一起指定由IAAM 26指定的所有地址由其他网络设备预留,则IAAM 26可选择新的,不同的目标硬件设备,并且以新的目标硬件设备执行上述过程的实例。例如,假设IAAM 26指定了64个IP地址。远程网络设备16A可能已经预留了10个与IAAM 26指定的64个IP地址重叠的IP地址,并且远程网络设备16A可能已经发送了指示10个IP地址的响应消息。远程网络设备16B可预留54个与IAAM 26指定的64个IP地址重叠的IP地址,并且远程网络设备16B可能已经发送了指示54个IP地址的响应消息。远程网络设备16A或16B中的任何一个也可预留由本地网络设备12指定的所有64个IP地址。在任一实例中,本地网络设备12可确定本地网络设备12指定的64个IP地址中没一个可用。本地网络设备12可以以新的不同目标IP地址开始并重复上述实例过程。
在一些实例中,IAAM 26接收一个或多个响应消息,其指定与本地网络设备12指定的IP地址范围重叠的IP地址组。例如,远程网络设备16A可发送指示10个IP地址与本地网络设备12指定的64个IP地址重叠的响应消息,并且远程网络设备16B可不发送任何响应。在该实例中,本地网络设备12可预留54个非重叠的IP地址(例如,由本地网络设备12指定的IP地址的子集)。IAAM 26可确定是否需要附加的IP地址,并且如果需要,从新的目标IP地址开始重复上述过程。
尽管针对远程网络设备16A描述了以上实例,但是网络系统10上的其他网络设备类似地操作。例如,远程网络设备16B类似于远程网络设备16A操作。此外,关于本地网络设备12描述了这些技术。然而,本公开中描述的技术可由网络系统10的任何和所有网络设备来执行。例如,从远程网络设备16A的角度来看,远程网络设备16A是本地网络设备,本地网络设备12是远程网络设备。
因此,在图1的实例中,网络设备(例如,本地网络设备12)可确定从第一目标IP地址开始的IP地址范围。另外,网络设备可在网络14上发送第一请求消息,第一请求消息指定从目标IP地址开始的IP地址范围。网络设备可确定网络设备是否已经在时间限制内从指定IP地址范围内的一个或多个IP地址的多个网络设备的一个或多个其他网络设备(例如,远程网络设备16A或16B)接收到一个或多个响应消息。网络设备可基于网络设备是否接收到一个或多个响应消息来确定IP地址范围内的至少IP地址的子集是否可用,并且基于地址IP地址的子集是否可用的确定来预留IP。网络设备可执行一个或多个VM 24,并将一个或多个预留的IP地址分配给一个或多个VM中的每一个。
此外,在图1的实例中,网络设备(例如,本地网络设备12、远程网络设备16之一)可接收指定从目标IP地址开始的IP地址范围的请求消息。网络设备可确定网络设备的一组连续IP地址是否与该IP地址范围的子集匹配。响应于确定网络设备的连续IP地址组与IP地址范围的子集匹配,网络设备可发送指定连续IP地址组的响应消息。
在图1的实例中,本地网络设备12可包括数据库30。数据库30可存储指示连接到网络14的网络设备的预留IP地址的数据,例如,由远程网络设备16预留的IP地址。VM主机软件24(例如,IAAM 26)可响应于接收到指定IP地址的响应消息,响应于成功地为VM 24预留IP地址,或者响应于其他事件,向数据库30添加指定IP地址的条目。
图2是说明根据本发明的一或多种技术的实例DMAD请求/响应消息格式50的概念图。图1的DMAD请求消息32和DMAD响应消息34可符合DMAD请求/响应消息格式50。如图2所示,DMAD请求/响应消息格式50包括硬件类型字段52、协议类型字段54、硬件地址长度字段56、协议地址长度字段58、操作代码字段60、发送方硬件地址字段62、发送方协议地址字段64、目标硬件地址字段66和目标协议地址字段68。
硬件类型字段52可具有2个八位字节的大小和“DMAD-OVER-ETHERNET”的值。
根据RFC 5342,协议类型字段54可具有2个八位字节的大小和0x0800的值。
硬件地址长度字段56可具有1个八位字节的大小和6的值。
协议地址长度字段58可具有1个八位字节的大小和16的值。
对于DMAD请求消息,操作代码字段60可具有2个八位字节的大小和“IP-PROBE-REQUEST”的值,或者对于DMAD响应消息,操作代码字段60可具有“IP-PROBE-RESQUONSE”的值。
发送方硬件地址字段62具有6个八位字节的大小并且指定发送设备的网络接口的硬件地址(具体而言是MAC地址)(具体而言,发送设备通过其发送DMAD请求/响应消息的网络接口)。
发送方协议地址字段62具有16个八位字节的大小。在DMAD请求消息中,发送方协议地址字段62具有零值。在DMAD响应消息中,发送方协议地址字段62具有发送设备的全局IP地址的值。
目标硬件地址字段66具有6个八位字节的大小。对于DMAD请求和响应消息,目标硬件地址字段66的值被设置为零。
目标协议地址字段68具有16个八位字节的大小。在DMAD请求消息中,目标协议地址字段68具有所请求的全局IP地址的值。在DMAD响应消息中,目标协议地址字段68具有发送设备(例如,远程网络设备16之一)的全局IP地址的值。
本地网络设备12可生成DMAD请求消息32以符合DMAD请求/响应消息格式50。具体地,本地网络设备12可将发送方硬件地址字段62的值设置为DMAD请求消息32通过其发送的本地网络设备12的网络接口的MAC地址的值(例如,NIC 18的MAC地址),并将发送方协议地址字段64和目标硬件地址字段66的值设置为零。然后,本地网络设备12可将目标协议地址字段68的值设置为所请求的全局IP地址的值。
远程网络设备16可生成DMAD响应消息,例如DMAD响应消息34,以便也符合DMAD请求/响应消息格式50。具体地,远程网络设备16N例如可将发送方协议地址字段64设置为远程网络设备16N的全局IP地址的值,以及将目标协议地址字段68的值设置为远程网络设备16N的全局IP地址。远程网络设备16N还可将发送方硬件地址字段62的值设置为DMAD响应消息34通过其发送的远程网络接口16N的网络接口的MAC地址。远程网络设备16N还可将目标硬件地址字段66的值设置为零。以这种方式,本地网络设备12可通过将所请求的全局IP地址与所接收的DMAD响应消息的发送方协议地址字段64的值进行比较来确定是否预留所请求的全局IP地址。
图3是说明根据本发明的一或多种技术的实例DMAD请求消息格式70的概念图。本地网络设备12可发送DMAD请求消息,例如图1的DMAD请求消息32,符合DMAD请求消息格式70,以请求用于预留到图1的远程网络设备16的IP地址范围。
硬件类型字段72具有2个八位字节的大小和“DMAD-OVER-ETHERNET”的值。
根据RFC 5342,协议类型字段74具有2个八位字节的大小和0x0800的值。
硬件地址长度字段76具有1个八位字节的大小和6的值。
协议地址长度字段78具有1个八位字节的大小和16的值。
操作代码字段80具有2个八位字节的大小和“MAC-IP-VERIFY-REQUEST”的值。
发送方硬件地址字段82具有6个八位字节的大小和指定发送DMAD请求的网络设备的NIC硬件地址的值(例如,图1的本地网络设备12的NIC 18的硬件地址)。
设备标识符字段84具有4个八位字节的大小。设备标识符字段84可具有指定字符串的值,例如“RACK_01_BLADE_12”。
目标硬件地址的范围字段86具有2个八位字节的大小,以及指定从需要验证用于重复的目标硬件地址开始的硬件地址范围的值。
目标IP地址的范围字段88具有2个八位字节的大小和指定从需要被验证用于重复的目标IP地址开始的链路本地IP地址的范围的值。
未使用的字段90具有8个八位字节的大小和0的值,并且预留供将来使用。
目标硬件地址字段92具有6个八位字节的大小和指定需要验证用于重复的硬件地址的值。
目标IPv6地址字段94具有16个八位字节的大小以及指定需要验证用于重复的链路本地IP地址的值。
图4是说明根据本发明的一或多种技术的实例DMAD响应消息格式100的概念图。网络设备16之一可发送DMAD响应消息,诸如图1的DMAD响应消息34,符合DMAD响应消息格式100,以指示当前预留的一个或多个IP地址。
硬件类型字段102具有2个八位字节的大小和“DMAD-OVER-ETHERNET”的值。
根据RFC 5342,协议类型字段104具有2个八位字节的大小和0x0800的值。
硬件长度字段106具有1个八位字节的大小和6的值。
协议长度字段108具有1个八位字节的大小和16的值。
操作代码字段110具有2个八位字节的大小和“MAC-IP-VERIFY-RESPONSE”的值。
预留的硬件地址字段112具有6个八位字节的大小。预留的硬件地址字段112具有指定主机(例如,远程网络设备16之一)已经预留的硬件地址的值。在接收到DMAD请求消息,例如DMAD请求消息32,指定已经在使用的硬件地址时,远程网络设备16之一可发送DMAD响应消息以通知其他主机(例如,其他远程网络设备16和本地网络设备12)这种硬件地址不可用。
预留的IP地址字段114具有16个八位字节的大小。预留IP地址字段114的值指定主机(例如,远程网络设备16之一)已经预留的链路本地IP地址。在接收到DMAD请求消息32时,远程网络设备16之一可发送DMAD响应消息以通知其他主机(例如,其他远程网络设备16)这样的地址不可用。
释放的硬件地址字段116具有6个八位字节的大小。释放的硬件地址字段116的值指定主机(例如,远程网络设备16之一)计划释放的硬件地址。在接收到DMAD响应消息(例如,DMAD响应消息34)时,发送DMAD请求消息32的本地网络设备12可预留这样的释放的硬件地址以供将来使用。
预留的硬件地址范围字段118具有2个八位字节的大小。预留的硬件地址范围118的值是从上述预留硬件地址字段112的预留硬件地址开始的一组地址。远程网络设备16可使用该字段来通知其他主机(例如,本地网络设备12和其他远程网络设备16)在单个DMAD响应消息的帮助下,一组硬件地址不可用。
预留的IPv6地址范围字段120具有2个八位字节的大小。预留的IPv6地址范围字段120是从上面提到的预留IPv6地址字段16的预留IP地址开始的一组链路本地地址。远程网络设备16之一可使用该字段来通知其他主机(例如,其他远程网络设备16和本地网络设备12)在单个DMAD响应消息的帮助下,一组链路本地IP地址不可用。
释放的硬件地址范围字段122具有2个八位字节的大小。释放的硬件地址范围的值是从上面提到的释放的硬件地址字段116的释放的硬件地址开始的一组地址。远程网络设备16之一可使用该字段来通知其他主机(例如,本地网络设备12和其他远程网络设备16)在单个DMAD响应消息的帮助下,一组硬件地址可用。
设备标识符字段124具有4个八位字节的大小。设备标识符可指定字符串,例如“RACK_01_BLADE_12”。
未使用字段126具有6个八位字节的大小并且被预留供将来使用,并且可被设置为值0并且被接收DMAD响应消息的主机设备忽略。
通常,远程网络设备16可例如根据图3的DMAD请求消息格式70从指定本地网络设备12请求预留的IP地址范围(例如链路本地IP地址)的本地网络设备12接收DMAD请求消息。根据本公开的技术,如果远程网络设备16之一没有预留任何IP地址,则远程网络设备16之一可忽略DMAD请求消息。
然而,如果远程网络设备16之一具有预留的一个或多个IP地址,则远程网络设备16之一构建DMAD响应消息,例如,根据图4的DMAD响应消息格式100。如果远程网络设备16之一确定当前预留了DMAD请求消息中请求的一个或多个IP地址,则远程网络设备16之一可在预留的IPv6地址字段114中指定第一预留的IP地址,以及表示从预留IPv6地址字段120的范围中的第一预留IP地址开始的预留IP地址范围的范围值。
在一些实例中,响应于DMAD请求消息,由一个或多个远程网络设备12指定为预留的链路本地地址组包括DMAD请求消息的链路本地地址范围内的所有链路本地地址。在这样的实例中,本地网络设备12确定在从不同目标链路本地地址开始的链路本地地址范围中是否存在任何重复,并且可重复这些实例操作,直到本地网络设备12确定可用的链路本地地址。
在一些实例中,响应于接收到指定所请求的链路本地地址范围的DMAD请求消息,远程网络设备16之一可确定由远程网络设备16之一预留的一个或多个链路本地地址在请求的链路本地地址范围。在这样的实例中,远程网络设备16之一可发送DMAD响应消息,该DMAD响应消息标识远程网络设备16之一预留哪一个链路本地地址。
图5是示出网络设备(例如,本地网络设备12)可为虚拟机(VM),例如VM 24之一,预留全局IP地址的实例方法的流程图。关于图1的本地网络设备12和远程网络设备16A解释图5的方法。然而,应该理解,其他设备可执行这些或类似的技术。例如,远程网络设备16中的每一个可执行归因于图5的远程网络设备的元件。
最初,本地网络设备12确定需要全局IP地址(130)。例如,本地网络设备12可确定将要实例化新VM或者可能在不久的将来实例化。
然后,本地网络设备12可选择要请求的全局IP地址(132)。然后,本地网络设备12例如根据图2的DMAD请求/响应消息格式50构造DMAD请求消息(134)。通常,本地网络设备12构造DMAD请求消息以包括用于发送方协议地址字段64和目标硬件地址字段66的值0,以及用于目标协议地址字段68的所选全局IP地址的值。本地网络设备12然后发送DMAD请求消息(136),例如图1的DMAD请求消息32,到远程网络设备16。具体地,本地网络设备12可将DMAD请求消息发送到与本地网络设备12和远程网络设备16订阅的广播或多播组相关联的IP地址。
然后,诸如远程网络设备16A的远程网络设备16可接收DMAD请求消息(138)。然后,远程网络设备16A构建DMAD响应消息,例如,根据图2的DMAD请求/响应格式50,在发送方协议地址字段64中指定其自己的IP地址,以及在目标协议IP地址字段68中指定远程网络设备16A的全局IP地址的值(140)。然后,远程网络设备16A将DMAD响应消息(例如,图1的DMAD响应消息34)发送到本地网络设备12。
在该实例中,本地网络设备12从每个远程网络设备16接收DMAD响应消息。本地网络设备12确定所请求的全局IP地址是否可用(146),具体地,通过确定任何DMAD响应消息是否包括发送方协议地址字段64中所请求的全局IP地址的值。如果其中一个DMAD响应消息包括发送方协议地址字段64中所请求的全局IP地址,本地网络设备12确定全局IP地址不可用(146的“否”分支)。作为响应,本地网络设备12选择新的全局IP地址(132)并继续生成和发送新的DMAD请求消息,如上所述。然而,一旦本地网络设备12确定所请求的全局IP地址可用(146的“是”分支),即,所接收的DMAD响应消息都没有指定在发送方协议地址字段64中所请求的全局IP地址,本地网络设备12预留全局IP地址并将全局IP地址分配给VM(148)。
以这种方式,图5的方法表示一种方法的实例,该方法包括由网络设备确定将至少一个互联网协议(IP)地址分配给由网络设备执行的虚拟机(VM);由网络设备确定IP地址以请求VM;由网络设备根据重复媒体访问控制地址检测协议(DMAD)生成消息,该消息包括指示该消息包括IP地址的数据,该数据还指示IP地址;以及由网络设备根据DMAD向一个或多个网络设备发送消息,以确定该IP地址是否正被一个或多个网络设备使用。
图6是示出网络设备(例如,本地网络设备12)可为多个虚拟机(VM),例如,VM 24,预留IP地址池的实例方法的流程图。关于图1的本地网络设备12和远程网络设备16A解释图6的方法。然而,应该理解,其他设备可执行这些或类似的技术。例如,远程网络设备16中的每一个可执行归因于图6的远程网络设备的元件。
最初,本地网络设备12确定所需的IP地址池(150)。具体而言,本地网络设备12确定所需的多个IP地址。另外,本地网络设备12确定所需的多个硬件地址。例如,本地网络设备12可确定将要实例化或者可能在不久的将来实例化的多个新VM。
然后,本地网络设备12可选择要请求的第一IP地址(152)并选择IP地址范围(154)。本地网络设备12还可选择要请求的第一硬件地址和硬件地址范围。例如,如关于图1所讨论的那样,本地网络设备12维护数据库30,其包括用于预留的硬件地址和预留的IP地址的条目,例如,由远程网络设备16预留的硬件和IP地址。本地网络设备12可选择第一IP地址和IP地址范围以包括多个IP地址,其等于或大于如上所确定的所需IP地址的数量,并且使得IP地址的范围包括未如数据库30中所指示的那样预留的IP地址。
具体地,本地网络设备12通过将接口的标识符附加到众所周知的链路本地前缀FE80::0来生成接口的链路本地地址,根据Hinden等人的“IP Version 6AddressingArchitecture”,Network Working Group,RFC4291,2006年2月,可从tools.ietf.org/html/rfc4291获得,其通过引用合并于此。链路或节点可具有EUI-64标识符或IEEE 802 48位MAC地址。对于具有IEEE 802 48位MAC的链路或节点,EUI64定义了一种从IEEE 48位MAC标识符创建EUI-64标识符的方法。将EUI-64标识符转换为接口标识符所需的唯一更改是通过反转“u”位(IEEE EUI-64术语中的通用/本地位)。为了将IEEE 48位MAC标识符,例如,“0015.2BE4.9B60”,转换为接口标识符,本地网络设备12可执行以下操作:
步骤#1:在中间拆分MAC地址:
0015.2B E4.9B60
步骤#2:在中间插入FF:FE:
0015.2BFF.FEE4.9B60
步骤#3:更改格式以使用冒号分隔符:
0015:2BFF:FEE4:9B60
步骤#4:将前八位转换为二进制:
00->00000000
步骤#5:翻转第7位:
00000000->00000010
步骤#6:将前八位转换回十六进制:
00000010->02,其产生的EUI-64地址为0215:2BFF:FEE4:9B60
在随机生成的MAC地址中,最不重要的两个字节是随机生成的数字。因此,MAC地址序列也具有链路本地地址范围。例如:
MAC地址->接口标识符
00:15.2B:E4.9B:60->0215:2BFF:FEE4:9B60
00:15.2B:E4.9B:61->0215:2BFF:FEE4:9B61
由于接口标识符和MAC地址之间存在一对一的映射,因此对于mac地址池的任何重复检测机构也可检查链路本地地址池的重复链路本地地址。可使用DMAD检测一组MAC地址的重复硬件地址和一组链路本地地址检测。
根据一些RFC,可通过一些其他手段(例如,随机地)生成接口标识符,并且在接口标识符和MAC地址之间不存在一对一映射。对于那些类型的接口标识符,可使用其他技术来检测重复链路本地地址或ND的DAD。还可使用用于检测重复MAC地址的技术,如在Nayak等人的“DETECTING HARDWARE ADDRESS CONFLICTS IN COMPUTER NETWORKS”,2018年7月31日提交的美国申请No.16/050,983,中所讨论的,其全部内容在此通过引用并入。
然后,本地网络设备12构造DMAD请求消息(156)。DMAD请求消息可符合图3的DMAD请求消息格式70。通常,本地网络设备12构造DMAD请求消息以包括表示第一IP地址和IP地址范围的数据,例如,目标IPv6地址字段94的值和目标IP地址字段88的范围。本地网络设备12在一些实例中还指定了第一硬件地址和硬件地址范围。然后,本地网络设备12将DMAD请求消息(158)发送到远程网络设备16。具体地,本地网络设备12可将DMAD请求消息发送到与本地网络设备12和远程网络设备16订阅的广播或多播组相关联的IP地址。
然后,诸如远程网络设备16A的远程网络设备16可接收DMAD请求消息(160)。然后,远程网络设备16A确定在DMAD请求消息中指定的IP地址范围内是否有任何IP地址(162)。在远程网络设备16A没有预留任何指定的IP地址(162的“否”分支)的情况下,远程网络设备16A可忽略DMAD请求消息(168)(例如,通过不对DMAD请求消息发送响应)。
假设远程网络设备16A具有预留的指定IP地址的至少一个IP地址(162的“是”分支),远程网络设备16A构造DMAD响应消息(例如,符合图3的DMAD响应消息格式70),指定预留的IP地址(例如,使用预留链路本地地址字段86的值和预留链路本地地址池字段88的范围)(164)。在一些实例中,远程网络设备16A还可指定DMAD响应消息中的任何预留和/或释放的硬件地址。然后,远程网络设备16A例如根据图4的DMAD响应消息格式100将DMAD响应消息发送到本地网络设备12(166)。例如,远程网络设备16A可将DMAD响应消息发送到广播或多播组,使得消息到达本地网络设备12和每个其他远程网络设备16。
然后,本地网络设备12可接收DMAD响应消息(170)。然后,本地网络设备12确定所有请求的IP地址是否可用(172)。如果存在一些不可用的请求的IP地址(172的“否”分支),则本地网络设备12可预留那些可用的IP地址,并且对于那些不可用的IP地址重复从步骤102开始的过程,并且迭代通过此过程,直到确定了所有所需IP地址的可用IP地址(172的“是”分支)。然后,本地网络设备12可预留IP地址并将预留的IP地址分配给VM 24(174)。
在一个或多个实例中,所描述的功能可以以硬件、软件、固件或其任何组合来实施。如果以软件实施,那么所述功能可作为一个或多个指令或代码存储在计算机可读介质上或通过其传输并且由基于硬件的处理单元执行。计算机可读介质可包括计算机可读存储介质,其对应于诸如数据存储介质的有形介质,或者包括有助于将计算机程序从一个地方传送到另一个地方的任何介质的通信介质,例如,根据通信协议。以这种方式,计算机可读介质通常可对应于(1)非暂时性的有形计算机可读存储介质或(2)诸如信号或载波的通信介质。数据存储介质可以是可由一个或多个计算机或一个或多个处理器访问的任何可用介质,以检索用于实现本公开中描述的技术的指令、代码和/或数据结构。计算机程序产品可包括计算机可读介质。
作为实例而非限制,这种计算机可读存储介质可包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储器、磁盘存储器或其他磁存储设备、闪存或任何其他可用于以指令或数据结构的形式存储所需程序代码并且可由计算机访问的其他介质。而且,任何连接都适当地称为计算机可读介质。例如,如果使用同轴电缆、光纤电缆、双绞线、数字用户线(DSL)或诸如红外线、无线电和微波的无线技术从网站、服务器或其他远程源传输指令,则同轴电缆、光纤电缆、双绞线、DSL或诸如红外线、无线电和微波的无线技术都包含在介质的定义中。然而,应该理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其他瞬态介质,而是针对非瞬态有形存储介质。这里使用的磁盘和光盘包括光盘(CD)、激光光盘、光盘、数字多功能光盘(DVD)、软盘和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘通过激光光学地再现数据。上述的组合也应包括在计算机可读介质的范围内。
指令可由一个或多个处理器执行,例如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其他等效集成或离散逻辑电路。因此,这里使用的术语“处理器”可指任何前述结构或适合于实现本文所述技术的任何其他结构。另外,在一些方面,本文描述的功能可在配置用于编码和解码的专用硬件和/或软件模块内提供,或者将其并入组合的编解码器中。而且,这些技术可在一个或多个电路或逻辑元件中完全实现。
本发明的技术可在各种装置或设备中实施,包括无线手持机、集成电路(IC)或一组IC(例如,芯片组)。在本公开中描述了各种组件、模块或单元以强调被配置为执行所公开的技术的设备的功能方面,但不一定需要由不同的硬件单元实现。而是,如上所述,各种单元可在编解码器硬件单元中组合或由一组互操作硬件单元提供,包括如上所述实现一个或多个处理器的处理电路,结合合适的软件和/或固件。
已经描述了这些技术的各种实施例。这些和其他实施例在以下权利要求的范围内。