用于链路本地地址的范围的快速重复地址检测的制作方法

文档序号:21406780发布日期:2020-07-07 14:40阅读:501来源:国知局
用于链路本地地址的范围的快速重复地址检测的制作方法

本公开的技术涉及计算机网络,并且更具体地涉及用于由计算机网络内的网络设备使用的网络地址的分配。



背景技术:

计算机网络是交换数据和共享资源的互连网络设备的集合。网络设备可以被实现为物理设备,诸如台式计算机、服务器和网络家电,或者可以被部署为虚拟设备,诸如在虚拟化基础设施上执行的虚拟机。在一些网络中,诸如以太网网络中,为虚拟或物理网络设备的每个网络接口分配唯一的网络地址,诸如互联网协议(ip)地址。网络设备使用ip地址来确定用于将诸如分组等网络流量发送到网络设备的网络路线。

网络设备可以使用重复地址检测(dad)协议来确定互联网协议(ip)地址是否在特定链路上可能是唯一的。也就是说,在向vm分配ip地址之前,网络设备可以向其他网络设备发送包括该ip地址的邻居请求消息,以确定这些网络设备中的任何网络设备是否已经预留该ip地址。如果其他网络设备之一预留该ip地址,则该网络设备发送指示ip地址被预留的邻居通告消息。因此,如果网络设备接收到这样的邻居通告消息,该网络设备可以选择不同的ip地址并且向其他网络设备发送新的邻居请求消息,并且重复这个过程直到发现未预留的ip地址。



技术实现要素:

总体上,本公开描述了用于在计算机网络中向虚拟机(vm)分配互联网协议(ip)地址的技术,特别是通过检测所选择的ip地址之间的冲突来进行分配。这些技术解决了从媒体访问控制(mac)地址生成逻辑接口标识符的场景以及例如mac地址与接口标识符之间存在一对一映射的场景,使得一个范围内的一组mac地址可以生成同一范围内的一组链路本地地址。作为一个示例,在一些情况下,网络设备可能需要在短时间跨度内向多个网络设备分配ip地址。本公开认识到,为每个ip地址发送单独的邻居请求消息可能对网络产生负面影响,因为与这些消息相关联的开销和消息的数目可能消耗相对大量的带宽,并且还需要接收消息的网络设备的大量处理。

因此,根据本公开的技术,网络设备可以发送单个扩展邻居请求消息,该扩展邻居请求消息指定针对多个网络设备的所请求的ip地址范围,如本文所描述的。例如,扩展邻居请求消息可以包括指示扩展邻居请求消息包括所请求的ip地址范围的数据、以及指定所请求的ip地址范围的数据。指定所请求的ip地址范围的数据可以指定该范围内的第一ip地址和该范围内的ip地址的数目。指示扩展邻居请求消息指定所请求的ip地址范围的数据可以是扩展邻居请求消息的码字段中的特殊值,例如,码字段的值“1”。

在一个示例中,一种方法包括由网络设备确定向由网络设备执行的多个虚拟机(vm)分配一定数目的互联网协议(ip)地址,ip地址的数目大于2;由网络设备确定第一ip地址;由网络设备确定范围值,该范围值等于或大于该数目的ip地址;由网络设备根据复制地址协议(dad)来生成消息,该消息包括数据,该数据指示该消息包括地址范围,该数据还指示第一ip地址和范围值;以及由网络设备根据dad向一个或多个网络设备发送该消息,以确定从第一ip地址开始并且贯穿该范围值的范围内的任何ip地址是否由一个或多个网络设备正在使用。

在另一示例中,一种网络设备包括:被配置为存储用于多个虚拟机(vm)的指令的存储器;网络接口;以及在电路中实现的处理器。处理器被配置为执行用于多个vm的指令;确定向多个vm分配一定数目的互联网协议(ip)地址,ip地址的数目大于2;确定第一ip地址;确定范围值,该范围值等于或大于该数目的ip地址;根据复制地址协议(dad)来生成消息,该消息包括数据,该数据指示该消息包括地址范围,该数据还指示第一ip地址和范围值;以及根据dad经由网络接口向一个或多个网络设备发送该消息,以确定从第一ip地址开始并且贯穿该范围值的范围内的任何ip地址是否由一个或多个网络设备正在使用。

在另一示例中,一种计算机可读存储介质,其上存储有指令,这些指令在被执行时使得网络设备的处理器:确定向由网络设备执行的多个虚拟机(vm)分配一定数目的互联网协议(ip)地址,ip地址的数目大于2;确定第一ip地址;确定范围值,该范围值等于或大于该数目的ip地址;根据复制地址协议(dad)来生成消息,该消息包括数据,该数据指示该消息包括地址范围,该数据还指示第一ip地址和范围值;以及根据dad经由网络接口向一个或多个网络设备发送该消息,以确定从第一ip地址开始并且贯穿该范围值的范围内的任何ip地址是否由一个或多个网络设备正在使用。

在附图和以下描述中阐述了这些技术的一个或多个实施例的细节。根据说明书、附图和权利要求,本技术的其他特征、目的和优点将是清楚的。

附图说明

图1是示出示例性网络系统的框图,其中本地网络设备实现本公开的网络层地址冲突检测技术;

图2是示出根据本公开的一个或多个技术的示例扩展邻居请求消息格式的概念图;

图3是示出根据本公开的一个或多个技术的示例扩展邻居通告消息格式的概念图;以及

图4是示出网络设备可以用来为多个虚拟机(vm)预留ip地址池的示例方法的流程图。

具体实施方式

图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。nic18包括将本地网络设备12连接到网络14的计算机硬件组件。在一些示例中,nic18被内置在本地网络设备12的主板中。nic18具有nicip地址20。例如,ip地址20可以被存储在nic18的存储器单元(例如,只读存储器(rom)单元、可编程只读存储器(prom)、电可擦除可编程只读存储器(eeprom))中。在其他示例中,其他网络层地址可以代替nicip地址20。nicip地址20可以由动态主机配置协议(dhcp)服务器(未示出)分配。

当在网络14上通信时,网络设备可以传输消息(下文中称为“分组”),该消息指定源ip地址、目的地ip地址、源端口、目的地端口和协议。分组的源ip地址是进行传输的网络设备的ip地址,而分组的目的地ip地址是分组正在被发送到的网络设备的ip地址。在分组中发送源ip地址可以允许接收网络设备通过将分组发送回初始传输设备来进行响应,并且允许接收网络设备确定用于转发分组的适当网络路线。帧的目的地ip地址标识分组的预期接收方。分组的协议字段标识分组的有效载荷的通信协议。

此外,如图1的示例所示,本地网络设备12可以包括虚拟机(vm)主机软件22。vm主机软件22可以包括托管vm24的各种类型的软件系统。例如,vm主机软件22可以包括操作系统。在另一示例中,vm主机软件22可以包括管理程序。

在本公开中,vm主机软件22和vm主机软件22的ip地址分配模块(iaam)26可以在本地网络设备12的处理电路上执行,并且可以将处理电路配置为执行本公开中描述的示例技术。例如,本地网络设备12的存储器可以存储处理电路检索和执行的、用于vm主机软件22和iaam26的计算机可读指令。在一些示例中,处理电路加载这些指令,从而变为被配置为执行本公开中描述的示例操作。在一些示例中,处理电路可以是固定功能电路(例如,具有不可变操作)和可编程电路的组合。例如,处理电路可以包括一个或多个处理器,并且作为一个示例,处理器将包括可编程核和固定功能电路。

通常,每个vm24是相应计算机系统的模拟。由于每个vm24模拟相应计算机系统,因此每个vm24应当具有相应ip地址以用于在网络14上进行通信。因此,iaam26可以将相应ip地址28分配给每个相应vm24。随后,当nic18接收指定vm的ip地址作为目的地地址的分组时,vm主机软件22接受该帧并且将该帧转发给vm。当vm生成用于在网络14上传输的帧时,该帧指定vm的ip地址作为帧的源地址。然后,vm主机软件22将帧传递给nic18以用于在网络14上传输。

在一些示例中,本地网络设备12可以使用以下方法之一来生成接口标识符。根据一些rfc,可以通过某种其他手段(例如,随机地)生成接口标识符,并且在接口标识符与mac地址之间不存在一对一映射。根据这些rfc,执行这样的接口标识符的随机生成以处理安全问题。例如,如果从mac地址生成接口标识符和链路本地地址,则连接到网络的膝上型计算机可以揭示人的位置。本公开没有解决接口标识符未被映射到mac地址的这种场景。然而,当实验室内有数千个vm时,这些安全问题并不相关。

根据rfc2373,eui64方法已经被用于从ieee48位mac标识符来生成接口标识符。根据rfc4291,可以使用接口标识符生成链路本地ipv6单播地址。因此,接口标识符与mac地址之间可以存在一对一的映射。然而,还有其他场景,其中接口标识符是从ieee48位mac标识符或与逻辑接口相关的某些其他信息生成的。例如,路由器可以配置数千个ifl并且使用mac地址和ifl索引的组合来生成针对这些ifl的接口标识符。由于ifl索引处于0-64k的范围,因此接口标识符和对应的链路本地地址在同一范围内。本公开解决了接口标识符被映射到mac地址的场景。

如先前所讨论的,根据重复地址检测(dad)协议,网络设备通常确定是否一次一个地预留各个ip地址。关于dad的使用的细节在jose等人于2018年9月21日提交的题为“automaticrecoveryfromduplicatenetworkaddresses”的美国申请no.16/138,767中有描述,该申请的全部内容通过引用并入本文。dad也在s.thomson等人于2007年9月的networkworkinggrouprequestforcomments(rfc)4862的“ipv6statelessaddressautoconfiguration”中有描述,其全部内容通过引用并入本文。然而,在每次新vm被启动时确定链路本地地址是否是重复可能是时间密集的并且负面地影响vm在能够传输和接收通信之前需要等待的时间量。根据一个或多个示例,进行请求的网络设备确定多个链路本地地址是否可用于利用单个请求来被预留,从而减少了预留链路本地地址所需的时间量。

如上所述,本地网络设备12可以执行多个(例如,两个或更多个)vm24。在一些情况下,本地网络设备12可以同时开始多个vm24的执行(有时被称为“启动”(spinup)vm),即,一般在时间上(大致)同时,使得操作在时间上重叠或接近重叠,诸如在彼此的几秒或几分钟内。不同于如传统上使用例如重复地址检测(dad)执行的那样逐个地确定新执行的vm的潜在ip地址是否是唯一的,本地网络设备12可以执行本公开的技术以确定多个vm24的ip地址范围是否例如被任何远程网络设备16预留。此外,本地网络设备12在已经确定ip地址范围当前未被预留之后,将该ip地址范围预留给vm24。

本公开描述了对dad协议的增强,dad协议可以检测网络中存在的重复链路本地地址的存在。例如,在一个或多个示例中,进行请求的网络设备可以利用单个请求来预留进行请求的网络设备确定为不是重复链路本地地址的多个链路本地地址。

以此方式,当新vm被启动(例如,实例化)时,进行请求的网络设备(例如,本地网络设备12)可以从预留的多个链路本地地址分配新vm链路本地地址,而无需确定要被分配给vm的链路本地地址是否是重复。

作为一个示例,假定vm主机软件22将要实例化三个vm24。在一些技术中,iaam26将为三个vm24中的每一个选择ip地址,并且确定所选择的三个ip地址是唯一的还是被预留的ip地址的重复。根据本公开的技术,本地网络设备12可以向远程网络设备16发送单个消息(例如,单个扩展邻居请求消息32),该消息指定ip地址中的第一ip地址以及ip地址的范围。本地网络设备12可以使用来自远程网络设备16的对该消息的任何响应来确定该范围内的任何ip地址是否被预留。在一些示例中,如果不再需要先前预留的ip地址,则远程网络设备16可以释放先前预留的ip地址。远程网络设备16可以响应于来自本地网络设备12的消息而发送扩展邻居通告消息,诸如扩展邻居通告消息34,该消息指定一个或多个预留ip地址和/或一个或多个释放ip地址。

此外,本地网络设备12可以使用这些技术在实际需要ip地址之前预留多个ip地址以分配给vm24。例如,当本地网络设备12(其可以是路由器)配置数千个ifl并且使用mac地址和ifl索引的组合来生成针对这些ifl的接口标识符时,本地网络设备12可以从被预留的多个链路本地地址为新的ifl分配链路本地地址,而无需确定要分配给ifl的链路本地地址是否是重复。

在每次路由器配置ifl时确定链路本地地址是否是重复可能是时间密集的并且负面地影响ifl在能够传输和接收通信之前需要等待的时间量。根据本公开的一个或多个示例,本地网络设备12确定多个链路本地地址是否可用于利用单个请求来被预留,从而减少了预留链路本地地址所需的时间量。

在一些示例中,邻居请求消息和邻居通告消息通常可以符合例如在tools.ietf.org/html/rfc4861可获取的narten等人于2007年9月的networkworkinggroup的rfc4861的“neighbordiscoverforipversion6(ipv6)”的格式。根据rfc4861,除其他之外,这样的消息包括类型字段和码字段。按照rfc4861的邻居请求消息的类型字段的值是“135”,而按照rfc4861的邻居通告消息的类型字段的值是“136”。rfc4861将单个ip地址的邻居请求消息和邻居通告消息定义为具有码值“0”。

根据本公开的技术,本地网络设备12可以形成扩展邻居请求消息32,扩展邻居请求消息32包括数据,该数据指定扩展邻居请求消息32包括ip地址范围,例如通过将码字段的值设置为“1”进行指定。类似地,根据本公开的技术,本地网络设备12可以响应于扩展邻居请求消息32包括ip地址范围而确定在其码字段中具有值“1”的邻居通告消息是扩展邻居通告消息,诸如扩展邻居通告消息34,并且本地网络设备12可以确定扩展邻居通告消息34指示由远程网络设备16之一当前预留的一个或多个ip地址。此外,另外地或替代地,扩展邻居通告消息34可以指定由远程网络设备16之一释放的一个或多个先前预留ip地址。

网络设备,诸如本地网络设备12,向远程网络设备16发送扩展邻居请求消息,诸如扩展邻居请求消息32,以确定目标节点的链路本地地址是否是重复。当本地网络设备12需要解析链路本地地址时,本地网络设备12可以将这样的扩展邻居请求消息多播到包括远程网络设备16的多播组。因此,在发送扩展邻居请求消息32之前,本地网络设备12可以加入目标地址的所有节点多播地址和请求节点多播地址。前者可以确保本地网络设备12从已经使用该地址的其他节点接收扩展邻居通告,而后者可以确保尝试同时使用相同地址的两个节点应当检测到彼此的存在。

本地网络设备12可以通过使用这样的扩展邻居请求消息和扩展邻居通告消息来迭代地确定当前未被任何远程ip地址16预留的ip地址(例如,链路本地ip地址)。例如,本地网络设备12可以响应于预留ip地址的指示,从新的ip地址开始生成新的扩展邻居请求消息,该新ip地址当前未被预留用于先前被请求的整个范围。或者,本地网络设备12可以确定未被预留(或先前被预留和释放)的先前请求的ip地址范围的一部分,并且为被预留且未释放的较小ip地址范围提交新的扩展邻居请求消息。

在第一步骤中,iaam26生成指定nicip地址20的请求消息。iaam26还包括目标ip地址和目标ip地址范围。目标ip地址可以是iaam26计划预留以用于分配给vm24之一的ip地址,并且ip地址范围可以是n个连续ip地址,其中n是大于或等于1的数字。目标ip地址可以是ip地址范围的起始ip地址。作为一个示例,目标ip地址是0,并且范围是64,这意味着iaam26计划预留ip地址0到63。

作为另一示例,iaam26指定起始ip地址和结束ip地址(例如,ip地址10至19)。该示例是iaam26指定从目标ip地址开始的ip地址范围的另一种方式。例如,在该示例中,目标ip地址是10并且范围是10。可以有其他方式来指定从目标ip地址开始的ip地址范围,并且示例技术不限于以上提供的特定示例。

iaam26可以以各种方式确定目标ip地址和ip地址范围。作为一个示例,iaam26使用随机数生成器来确定最后两个字节的目标ip地址,并且前六个字节基于nic20的制造商或基于vm主机软件22的预配置。iaam26可以预先配置有值n,值n定义iaam26应当预留的连续ip地址(例如,n被预先配置为64或256)。作为另一示例,vm主机软件22可以跟踪多少vm24正在被启动以及多少vm24正在被停止的速率,并且iaam26可以基于跟踪的速率来确定n的值。如果平均而言,基于所跟踪的速率,x个vm24正在本地网络设备12上执行,则iaam26可以确定大于或等于x的n的值。可以存在其他方式来确定ip地址范围,并且示例技术不限于上述示例。

例如,本地网络设备12的物理配置允许创建特定数目的vm24,具有针对每个vm24的指定数目的虚拟网络接口控制器。这些配置基于物理网络接口控制器18的数目和每个物理网络接口控制器18在带宽方面的容量。

本地网络设备12的网络管理员可以确定针对每个vm24需要利用特定数目的虚拟网络接口控制器创建多少vm24以实现针对预定义负载的vm24的成功操作。

例如,本地网络设备12具有两个物理网络接口控制器18,并且每个物理网络接口控制器18的容量是8gbs(giba比特每秒)。因此,本地网络设备12可用的总网络容量是16gbs。如果期望每个vm24拥有2gbs网络容量以执行预定义操作,则可以从单个本地网络设备12创建8个vm24。这8个vm24中的每个可以具有一个虚拟网络接口控制器。因此,虚拟接口控制器的总数是8。在该示例中,假定为本地网络设备12确定的虚拟网络接口控制器的数目是x。那么,iaam26需要预留x个ip地址。然而,实际在某个时间点操作的vm24可能少于在本地网络设备12上创建的vm24的总数。这些vm24使用较少数目的虚拟网络接口控制器(该数目小于x)。

然后,iaam26指示nic18经由网络14发送包括请求消息并且具有指定请求节点多播地址的目的地地址字段的分组,如rfc4861中所述。因此,连接到网络14并且加入到请求节点多播地址的每个网络设备(例如,远程网络设备16,已经配置的vm24)可以接收和接受该分组。在一些示例中,分组的源ip地址字段可以指定未指定的地址::/0,如rfc4861中所提及的。

响应于接收到帧,网络设备确定网络设备的ip地址或一组连续ip地址是否与ip地址范围内的ip地址相匹配。作为示例,远程网络设备16a可以具有预留ip地址以用于分配给在远程网络设备16a上执行的vm。在该示例中,远程网络设备16a的iaam可以确定被预留给在远程网络设备16a上执行的vm的任何ip地址是否是在由iaam26指定的ip地址范围内。例如,远程网络设备16a的iaam可以确定一组连续ip地址(这些ip地址是由远程网络设备16a预留的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。

在一些示例中,尽管远程网络设备16a预留了与从由本地网络设备12请求的目标ip地址开始的ip地址范围完全或部分地重叠的ip地址,但远程网络设备16a可以确定一些重叠的ip地址可以被释放以供本地网络设备12使用。例如,与前面的示例一致,远程网络设备16a可以确定远程网络设备16a可以释放ip地址10到14,从而远程网络设备16a仍然可以预留ip地址5-9和15-24,但是10-14将可用于本地网络设备12。在该示例中,远程网络设备16a生成响应消息,该响应消息指示远程网络设备16a正在释放ip地址10-14并且保持预留ip地址5-9和15-24。

本地网络设备12可以利用各种因素来确定可以释放哪些和多少被预留的地址。假定iaam26预留了x个地址。作为一个示例,vm主机软件22可以跟踪多少vm24正在被启动以及多少vm24正在被停止的速率,并且iaam26可以基于跟踪的速率来确定n的值。如果平均而言,基于跟踪的速率,n个vm24正在本地网络设备12上执行,则(x-n)个ip地址可以被iaam26释放。

例如,x是为本地网络设备12设计的最大vm24数目,并且x个ip地址由iaam26预留。然而,实际在某个时间点操作的vm24少于在本地网络设备12上创建的vm24的总数。因此,这些vm24使用比x更少数目的虚拟网络接口控制器。由此,iaam26可以释放(x-n)个ip地址。

然后,远程网络设备16a在网络14上发送包括响应消息的分组。在一些示例中,分组的目的地ip地址指定请求节点多播地址。在一些示例中,接收扩展邻居请求的节点具有与所接收的扩展邻居请求中的目标地址相匹配的接口地址,该节点可以通过将目的地地址设置为临时地址或目标地址来发回邻居通告。ip地址保持在临时地址或临时状态,直到ip地址通过邻居请求消息被验证为非重复地址。另一方面,响应于确定由远程网络设备16a预留的ip地址都不在由本地网络设备12指定的ip地址范围内,远程网络设备16a不生成响应消息。

如果iaam26没有接收到指定与从由iaam26指定的目标ip地址开始的ip地址范围部分或完全地重叠的ip地址范围的响应消息,则iaam26可以确定从目标ip地址开始的ip地址范围内的所有ip地址可用(例如,不重复)。然后,iaam26可以预留从目标ip地址开始的ip地址范围内的所有ip地址(例如,将指示预留ip地址的信息存储在数据库30中)。

如果iaam26接收到一个或多个响应消息,这些响应消息一起指定由iaam26指定的所有地址被其他网络设备预留,则iaam26可以选择新的不同的目标硬件设备,并且利用新的目标硬件设备执行上述过程的示例。例如,假定iaam26指定了64个ip地址。远程网络设备16a可能预留了与由iaam26指定的64个ip地址重叠的10个ip地址,并且远程网络设备16a可能发送了指示10个ip地址的响应消息。远程网络设备16b可能已经预留与由iaam26指定的64个ip地址重叠的54个ip地址,并且远程网络设备16b可能已经发送指示这54个ip地址的响应消息。远程网络设备16a或16b中的任何一个也可能已经预留由本地网络设备12指定的所有64个ip地址。在任一示例中,本地网络设备12可以确定本地网络设备12指定的64个ip地址中没有一个是可用的。本地网络设备12可以从新的不同的目标ip地址开始并且重复上述示例过程。

在一些示例中,iaam26接收一个或多个响应消息,该响应消息指定与由本地网络设备12指定的ip地址范围重叠的一组ip地址。例如,远程网络设备16a可以发送响应消息,该响应消息指示10个ip地址与本地网络设备12指定的64个ip地址重叠,并且远程网络设备16b可以不发送任何响应。在该示例中,本地网络设备12可以预留54个非重叠的ip地址(例如,由本地网络设备12指定的ip地址的子集)。iaam26可以确定是否需要附加ip地址,并且如果需要,从新的目标ip地址开始重复上述过程。

在一些示例中,iaam26接收一个或多个响应消息,该响应消息指定与由本地网络设备12指定的ip地址范围重叠的一组ip地址,但进一步指定由进行响应的网络设备释放的一组ip地址。例如,远程网络设备16a可以释放由远程网络设备16a已经预留的、处于由本地网络设备12指定的ip地址范围内的一些ip地址。本地网络设备12可以预留由远程网络设备16a释放的那些ip地址。

尽管以上示例针对远程网络设备16a来描述,但网络系统10上的其他网络设备类似地操作。例如,远程网络设备16b类似于远程网络设备16a操作。此外,这些技术关于本地网络设备12来描述。然而,本公开中描述的技术可以由网络系统10的任何和所有网络设备来执行。例如,从远程网络设备16a的角度来看,远程网络设备16a是本地网络设备,并且本地网络设备12是远程网络设备。

因此,在图1的示例中,网络设备(例如,本地网络设备12)可以确定从第一目标ip地址(例如,mac地址)开始的ip地址范围。另外,网络设备可以在网络14上发送第一请求消息,第一请求消息指定从目标ip地址开始的ip地址范围。网络设备可以确定网络设备是否已经在时间限制内从多个网络设备中的一个或多个其他网络设备(例如,远程网络设备16a或16b)接收到指定ip地址范围内的一个或多个ip地址的一个或多个响应消息。网络设备可以基于网络设备是否接收到一个或多个响应消息来确定ip地址范围内的ip地址的至少子集是否可用,并且基于ip地址的至少子集是否可用的确定来预留ip地址。网络设备可以执行一个或多个vm24,并且将一个或多个预留ip地址分配给一个或多个vm中的每个vm。

此外,在图1的示例中,网络设备(例如,本地网络设备12、远程网络设备16之一)可以接收指定从目标ip地址开始的ip地址范围的请求消息。网络设备可以确定网络设备的一组连续ip地址是否与该ip地址范围的子集相匹配。响应于确定网络设备的该组连续ip地址与ip地址范围的子集相匹配,网络设备可以发送指定该组连续ip地址的响应消息。

在图1的示例中,本地网络设备12可以包括数据库30。数据库30可以存储指示连接到网络14的网络设备的预留ip地址的数据,例如,由远程网络设备16预留的ip地址。响应于接收到指定ip地址的响应消息,响应于成功地为vm24预留ip地址,或者响应于其他事件,vm主机软件24(例如,iaam26)可以向数据库30添加指定ip地址的条目。

图2是示出根据本公开的一个或多个技术的示例扩展邻居请求消息格式50的概念图。图1的扩展邻居请求消息32可以符合扩展邻居请求消息格式50。如图2所示,扩展邻居请求消息格式50包括类型字段52、码字段54、校验和字段56、预留字段58、目标链路本地地址字段60和目标链路本地地址池范围字段62。符合图2的扩展邻居请求消息格式50的扩展邻居请求消息可以是icmpv6消息,包括ip报头(未示出)。ip报头可以包括源地址和目的地地址,源地址是分配给从其发送该消息的接口的地址,或者(如果重复地址检测正在进行中)是未指定的地址,目的地地址是请求节点多播地址到目标地址或目标地址。ip报头还可以指定跳跃限制255。

在一个示例中,类型字段52的值为“135”,码字段54的值为“1”,并且校验和字段56的值表示icmp校验和。预留字段58表示被预留供以后使用的字段,例如,用于附加扩展。在一个示例中,预留字段58的值必须被初始化为零并且被接收设备忽略。目标链路本地地址字段60的值表示扩展邻居请求消息的目标的链路本地ip地址。目标链路本地地址池范围字段62的值表示从在目标链路本地地址字段60中指定的目标链路本地ip地址开始的链路本地地址范围。

因此,本地网络设备12可以构造符合图2的扩展邻居请求消息格式50的扩展邻居请求消息。即,本地网络设备12可以构造扩展邻居请求消息,该消息包括用于类型字段52的值“135”、用于码字段54的值“1”(指示扩展邻居请求消息指定ip地址范围)、校验和字段56中的校验和值、以及用于预留字段58的值“0”。本地网络设备12还可以确定要被预留以用于要启动的多个vm24的ip地址范围内的第一ip地址。本地网络设备12可以将第一ip地址的值分配给目标链路本地地址字段60,并且将表示范围的值分配给目标链路本地地址池范围字段62。

图3是示出根据本公开的一个或多个技术的示例扩展邻居通告消息格式70的概念图。图1的扩展邻居通告消息34可以符合扩展邻居通告消息格式70。图3的扩展邻居通告消息格式70包括类型字段72、码字段74、校验和字段76、路由器标志(r)字段78、请求标志(s)字段80、覆盖标志(o)字段82、预留字段84、预留链路本地地址字段86、预留链路本地地址池范围字段88、释放链路本地地址字段90和释放链路本地地址池范围字段92。符合图3的扩展邻居通告消息格式70的扩展邻居通告消息可以是icmpv6消息,包括ip报头(未示出)。ip报头包括源地址和目的地地址,源地址包括被分配给从其发送该通告的接口的地址。对于请求通告,是调用邻居请求的源地址,或者(如果请求的源地址是未指定的地址)是全节点多播地址。ip报头还可以包括跳限制255。

在一个示例中,类型字段72的值为“136”,码字段74的值为“1”,并且校验和字段76具有icmp校验和值。在被设置时,r字段78的值指示发送方是路由器。r字段78的值可以由执行邻居不可达检测的设备使用,以检测改变到主机的路由器。当被设置时,s标志80的值指示通告是响应于来自目的地地址的邻居请求而被发送。s比特可以用作邻居不可达性检测的可达性确认。它可能不被设置在多播通告或未请求的单播通告中。在被设置时,o标志82的值指示通告应当覆盖现有的高速缓存条目并且更新高速缓存的链路层地址。当o标志82的值没有被设置时,通告将不更新高速缓存的链路层地址,尽管它将更新没有链路层地址已知的现有邻居高速缓存条目。o标志82的值可以不被设置在任何播地址的请求通告和请求代理通告中。o标志82的值可以在其他请求通告和未请求通告中设置。

预留字段84是图3的示例中的29比特字段。在一些示例中,预留字段84具有零值,并且被预留用于将来使用。本地网络设备12可以忽略预留字段84的值。

预留链路本地地址字段86的值指定远程网络设备16之一已经预留的链路本地地址。在接收到扩展邻居请求消息时,远程网络设备16之一可以发送扩展邻居通告消息,以向其他主机(例如,本地网络设备12和其他远程网络设备16)通知这样的地址不可用。

预留链路本地地址池范围字段88的值指定从预留链路本地地址字段86的值开始的一组地址。远程网络设备16可以使用该字段来向其他主机(例如,本地网络设备12和其他远程网络设备16)通知该组链路本地地址不可用于单个扩展邻居通告消息。

释放链路本地地址字段90的值指定主机(例如,远程网络设备16之一)计划释放的链路本地地址。在接收到扩展邻居通告消息时,最初发送扩展邻居请求消息的本地设备12可以预留这样的释放链路本地地址以供将来使用。

释放链路本地地址池范围字段92的值指定从释放链路本地地址字段90的ip地址开始的一组地址。远程网络设备16可以使用该字段来向其他主机(例如,本地网络设备12和其他远程网络设备16)通知一组链路本地地址可用于单个扩展邻居通告消息。

通常,远程网络设备16可以从本地网络设备12接收扩展邻居请求消息,例如符合图2的扩展邻居请求消息格式50,该消息指定本地网络设备12正在请求预留的ip地址范围(诸如链路本地ip地址)。根据本公开的技术,如果远程网络设备16之一未预留任何ip地址,则远程网络设备16之一可以忽略扩展邻居请求消息。

然而,如果远程网络设备16之一已经预留了一个或多个ip地址,则远程网络设备16之一构建例如符合图3的扩展邻居通告消息格式70的扩展邻居通告消息。特别地,远程网络设备16之一预留了所接收的扩展邻居请求消息的一个或多个ip地址,远程网络设备16之一可以确定是否释放ip地址或者使用扩展邻居通告消息指示ip地址被预留给本地网络设备12。

具体地,如果远程网络设备16之一确定不再需要先前预留的一个或多个ip地址,远程网络设备16之一构造指定释放链路本地地址字段90中的第一释放ip地址的扩展邻居通告消息、以及表示从释放链路本地地址池范围字段92中的第一释放ip地址开始的释放ip地址范围的范围值。

附加地或替代地,如果远程网络设备16之一确定在扩展邻居请求消息中请求的一个或多个ip地址当前被预留并且必须保持预留,远程网络设备16之一可以在预留链路本地地址字段86中指定第一预留ip地址、以及指定范围值,该范围值表示从预留链路本地地址池范围字段88中的第一预留ip地址开始的预留ip地址范围。

基于接收指定要释放的链路本地地址范围内的一组链路本地地址的扩展邻居通告消息,本地网络设备12可以确定链路本地地址的至少子集是可用的,排除了所预留的由响应网络设备指定的一组链路本地地址。因此,在一些示例中,本地网络设备12可以预留链路本地地址的子集。

在一些示例中,由一个或多个远程网络设备12响应于扩展邻居请求消息而指定为预留的一组链路本地地址包括在扩展邻居请求消息的链路本地地址范围内的所有链路本地地址。在这样的示例中,本地网络设备12确定在从不同目标链路本地地址开始的链路本地地址范围中是否存在任何重复,并且可以重复这些示例操作,直到本地网络设备12确定可用的链路本地地址。

在一些示例中,响应于接收到指定所请求的链路本地地址范围的扩展邻居请求消息,远程网络设备16之一可以确定由远程网络设备16之一预留的一个或多个链路本地地址在所请求的链路本地地址范围内。然而,远程网络设备16之一可以确定可以释放由远程网络设备16之一预留的一些链路本地地址(例如,因为远程网络设备16之一确定不需要所有链路本地地址)。

在这样的示例中,远程网络设备16之一可以传输扩展邻居通告消息,该扩展邻居通告消息标识远程网络设备16之一正在释放哪些链路本地地址、以及远程网络设备16之一具有冲突/重叠并且保持预留哪些链路本地地址。作为响应,本地网络设备12可以预留所释放的链路本地地址。如果本地网络设备12确定需要附加链路本地地址,则本地网络设备12可以传输从不同的目标链路本地地址开始的链路本地地址范围的另一扩展邻居请求消息,并且重复这些示例操作,直到本地网络设备12预留足够的链路本地地址。

图4是示出网络设备(例如,本地网络设备12)可以用来为多个虚拟机(vm)(例如,vm24)预留ip地址池的示例方法的流程图。关于图1的本地网络设备12和远程网络设备16a来解释图4的方法。然而,应当理解,其他设备可以执行这些或类似的技术。例如,每个远程网络设备16可以执行归因于图4的远程网络设备的元素。

最初,本地网络设备12确定所需要的ip地址池(100)。特别地,本地网络设备12确定所需要的多个ip地址。例如,本地网络设备12可以确定将要实例化或者可能在不久的将来要实例化的多个新vm。

然后,本地网络设备12可以选择要请求的第一ip地址(102)并且选择ip地址范围(104)。例如,如关于图1所讨论的,本地网络设备12保持数据库30,数据库30包括针对预留ip地址的条目,例如由远程网络设备16预留的ip地址。本地网络设备12可以选择第一ip地址和ip地址范围以包括一定数目的ip地址,这些ip地址的数目等于或大于如上所确定的所需要的ip地址的数目,并且使得ip地址范围包括如在数据库30中所指示的未预留的ip地址。

然后,本地网络设备12构造邻居请求消息(106)。邻居请求消息可以符合图2的扩展邻居请求消息格式50。通常,本地网络设备12构造邻居请求消息以包括表示第一ip地址和ip地址范围的数据,例如,目标链路本地地址字段60的值和目标链路本地地址池范围字段62的值。然后,本地网络设备12将邻居请求消息发送到远程网络设备16(108)。具体地,本地网络设备12可以将邻居请求消息发送到与本地网络设备12和远程网络设备16订阅的广播或多播组相关联的ip地址。

然后,远程网络设备16,诸如远程网络设备16a,可以接收邻居请求消息(110)。然后,远程网络设备16a确定在邻居请求消息中指定的ip地址范围内的任何ip地址是否被预留(112)。在远程网络设备16a没有预留任何指定ip地址(112的“否”分支)的情况下,远程网络设备16a可以忽略邻居请求消息(118)(例如,通过不发送对邻居请求消息响应)。

假定远程网络设备16a已经预留指定ip地址中的至少一个ip地址(112的“是”分支),则远程网络设备16a可以进一步确定是否可以释放任何预留ip地址(例如,由于已经被预留但不再使用)。然后,远程网络设备16a可以构造邻居通告消息(例如,符合图3的邻居通告消息格式70),该邻居通告消息指定被预留的ip地址(例如,使用预留链路本地地址字段86的值和预留链路本地地址池范围字段88的值)和/或被释放的ip地址(例如,使用释放链路本地地址字段90的值和释放链路本地地址池范围字段92的值)。然后,远程网络设备16a向本地网络设备12发送例如符合图3的扩展邻居通告格式70的邻居通告消息(116)。例如,远程网络设备16a可以将邻居通告消息发送到广播或多播组,使得该消息到达本地网络设备12和每个其他远程网络设备16。

然后,本地网络设备12可以接收邻居通告消息(120)。然后,本地网络设备12确定所有请求的ip地址是否可用(122)。如果存在一些请求ip地址不可用并且未释放(122的“否”分支),则本地网络设备12可以预留那些可用ip地址,并且对于那些不可用的ip地址,从步骤102重复该过程,并且迭代该过程,直到所有需要的ip地址的可用ip地址已经被确定(122的“是”分支)。然后,本地网络设备12可以预留ip地址并且将预留ip地址分配给vm24(124)。

以这种方式,图4的方法表示一种方法的示例,该方法包括由网络设备确定向由网络设备执行的多个虚拟机(vm)分配一定数目的互联网协议(ip)地址,ip地址的数目大于2;由网络设备确定第一ip地址;由网络设备确定范围值,该范围值等于或大于ip地址的数目;由网络设备根据复制地址协议(dad)来生成消息,该消息包括数据,该数据指示该消息包括地址范围,该数据还指示第一ip地址和范围值;由网络设备根据dad向一个或多个网络设备发送该消息,以确定从第一ip地址开始并且贯穿该范围值的范围内的任何ip地址是否由一个或多个网络设备正在使用。

在一个或多个实例中,所描述的功能可以用硬件、软件、固件或其任何组合来实现。如果用软件实现,这些功能可以作为一个或多个指令或代码存储在计算机可读介质上或通过计算机可读介质传输并且由基于硬件的处理单元执行。计算机可读介质可以包括计算机可读存储介质(其对应于诸如数据存储介质等有形介质)或者通信介质,包括有助于将计算机程序从一个地方传送到另一地方的任何介质,例如,根据通信协议。以这种方式,计算机可读介质通常可以对应于(1)非暂态的有形计算机可读存储介质,或(2)诸如信号或载波等通信介质。数据存储介质可以是可以由一个或多个计算机或一个或多个处理器访问以检索用于实现本公开中描述的技术的指令、代码和/或数据结构的任何可用介质。计算机程序产品可以包括计算机可读介质。

作为示例而非限制,这种计算机可读存储介质可以包括ram、rom、eeprom、cd-rom或其他光盘存储器、磁盘存储器或其他磁存储设备、闪存或可以用于以指令或数据结构的形式存储期望程序代码并且可以由计算机访问的任何其他介质。而且,任何连接都适当地称为计算机可读介质。例如,如果使用同轴电缆、光纤电缆、双绞线、数字用户线(dsl)或无线技术(诸如红外线、无线电和微波)从网站、服务器或其他远程源传输指令,则同轴电缆、光纤电缆、双绞线、dsl或无线技术(诸如红外线、无线电和微波)都被包括在介质的定义中。然而,应当理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其他瞬态介质,而是针对非瞬态有形存储介质。本文中使用的磁盘和光盘包括光盘(cd)、激光光盘、光盘、数字多功能光盘(dvd)、软盘和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘通过激光光学地再现数据。上述的组合也应当被包括在计算机可读介质的范围内。

指令可以由一个或多个处理器执行,诸如一个或多个数字信号处理器(dsp)、通用微处理器、专用集成电路(asic)、现场可编程逻辑阵列(fpga)或其他等效的集成或离散逻辑电路。因此,本文中使用的术语“处理器”可以是指任何前述结构或适合于实现本文所述技术的任何其他结构。另外,在一些方面,本文中描述的功能可以在被配置用于编码和解码的专用硬件和/或软件模块内提供,或者被并入组合编解码器中。而且,这些技术可以完全在一个或多个电路或逻辑元件中实现。

本公开的技术可以在各种设备或装置中实现,包括无线手持机、集成电路(ic)或一组ic(例如,芯片组)。在本公开中描述了各种组件、模块或单元以强调被配置为执行所公开的技术的设备的功能方面,但不一定需要由不同的硬件单元实现。而是,如上所述,各种单元可以在编解码器硬件单元中组合或者由一组互操作硬件单元(包括如上所述实现一个或多个处理器的处理电路)结合合适的软件和/或固件来提供。

权已经描述了这些技术的各种实施例。这些和其他实施例在所附利要求的范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1