CN110784557A - 检测计算机网络中的硬件地址冲突 - Google Patents

检测计算机网络中的硬件地址冲突 Download PDF

Info

Publication number
CN110784557A
CN110784557A CN201910577132.3A CN201910577132A CN110784557A CN 110784557 A CN110784557 A CN 110784557A CN 201910577132 A CN201910577132 A CN 201910577132A CN 110784557 A CN110784557 A CN 110784557A
Authority
CN
China
Prior art keywords
hardware
network device
address
addresses
hardware address
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.)
Granted
Application number
CN201910577132.3A
Other languages
English (en)
Other versions
CN110784557B (zh
Inventor
马诺吉·纳亚克
塔布雷斯·艾哈迈德·克汗
拉菲克·普特
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jungle Network
Original Assignee
Jungle Network
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Jungle Network filed Critical Jungle Network
Publication of CN110784557A publication Critical patent/CN110784557A/zh
Application granted granted Critical
Publication of CN110784557B publication Critical patent/CN110784557B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/50Address allocation
    • H04L61/5046Resolving address allocation conflicts; Testing of addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/50Address allocation
    • H04L61/5038Address allocation for local use, e.g. in LAN or USB networks, or in a controller area network [CAN]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/50Address allocation
    • H04L61/5069Address allocation for group communication, multicast communication or broadcast communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2101/00Indexing scheme associated with group H04L61/00
    • H04L2101/60Types of network addresses
    • H04L2101/618Details of network addresses
    • H04L2101/622Layer-2 addresses, e.g. medium access control [MAC] addresses
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/10Mapping addresses of different types
    • H04L61/103Mapping addresses of different types across network layers, e.g. resolution of network layer into physical layer addresses or address resolution protocol [ARP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Small-Scale Networks (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明涉及检测计算机网络中的硬件地址冲突。通常,描述了用于检测计算机网络的网络设备中的重复的硬件地址的技术。网络设备在网络上发送指定从目标硬件地址开始的硬件地址范围的请求消息。网络设备基于从其他网络设备接收的响应消息来确定从目标硬件地址开始的硬件地址范围的至少一个子集是否可用。然后,网络设备预留用于分配给在网络设备上执行的虚拟机(VM)的可用地址。

Description

检测计算机网络中的硬件地址冲突
技术领域
本发明涉及计算机网络,并且更具体地说,涉及供计算机网络内的网络设备使用的硬件地址。
背景技术
计算机网络是交换数据和共享资源的互连网络设备的集合。网络设备可实现为物理设备,例如台式计算机、服务器和网络设备,或者可部署为虚拟设备,例如在虚拟化基础设施上执行的虚拟机。在诸如以太网之类的一些网络中,虚拟或物理网络设备的每个网络接口被分配唯一的硬件地址,例如媒体访问控制(MAC)地址。连接到网络的每个网络设备可接收在网络上发送的帧,但是除非帧的目的地地址字段指定与网络设备的硬件地址匹配的硬件地址或者除非帧的目的地地址字段指定与专用广播地址匹配的硬件地址,否则网络设备忽略该帧。在网络上发送帧的网络设备在帧的源地址字段中指定其自己的硬件地址。通常,在制造网络设备时将硬件地址分配给网络设备。分配给网络设备的硬件地址通常是不可变的。
网络设备经常使用地址解析协议(ARP)来确定连接到网络的其他网络设备的硬件地址。在ARP中,请求网络设备发送具有指定广播地址的目的地地址字段并且具有指定更高层协议(即,协议地址)的地址(例如互联网协议(IP)地址)的有效载荷的帧。如果网络上的另一个网络设备与指定的协议地址相关联,则该另一个网络设备发送指定另一个网络设备的硬件地址的响应。以这种方式,请求网络设备可建立协议地址和硬件地址的映射。
发明内容
通常,描述了用于检测计算机网络中的硬件地址冲突的技术。尽管在网络设备的制造期间分配的诸如媒体访问控制(MAC)地址的硬件地址通常是唯一的,但是存在可发生重复的硬件地址的情况。例如,可能需要将硬件地址分配给虚拟机(VM)使得VM可在网络上进行交互,如同它们是在制造期间被分配了硬件地址的物理机一样。例如,每个VM可表示具有不同MAC地址但在同一底层主机物理机上执行的不同虚拟功能(VF)。然而,尽管硬件地址已经被分配(例如,在制造期间)给连接到网络的另一个网络设备,向VM分配硬件地址的系统也可将硬件地址分配给VM。在同一网络上存在具有相同硬件地址的两个网络设备,例如两个本地管理的MAC地址,可能导致各种问题,例如两个单独的网络设备响应仅针对一个网络设备的消息。
本公开描述了可检测网络中存在重复的硬件地址的协议。例如,在一个或多个实例中,请求网络设备可利用单个请求预留被请求网络设备确定不是重复的硬件地址的多个硬件地址。以这种方式,当新VM被启动(例如,实例化)时,请求网络设备可从预留的多个硬件地址中分配新的VM硬件地址,而无需确定将要分配给VM的硬件地址是否是重复的。
每次新VM启动时确定硬件地址是否重复的可能在时间上是密集的,并且会对VM在能够发送和接收通信之前需要等待的时间产生负面影响。根据一个或多个实例,请求网络设备利用单个请求确定多个硬件地址是否可用于预留,从而减少了预留硬件地址所需的时间量。
例如,请求网络设备可在网络上发送帧。该帧可包括目的地地址字段和有效载荷。帧的目的地地址字段可指定广播地址。有效载荷可包括请求消息,该请求消息指定从目标硬件地址开始的硬件地址的范围。如果响应网络设备的硬件地址与硬件地址范围内的任何硬件地址不匹配,则响应网络设备(即,连接到网络的另一网络设备)可忽略该请求消息。
然而,响应于确定分配给响应网络设备的至少一个硬件地址在包括目标硬件地址的硬件地址的范围内,响应网络设备可在网络上发送帧。由响应网络设备发送的帧可包括包含响应消息的有效载荷。响应消息指定由请求网络设备指定的在硬件地址范围内的一组硬件地址。基于接收指定硬件地址范围内的该组硬件地址的响应消息,请求网络设备确定硬件地址的不包括由响应网络设备指定的该组硬件地址的至少一个子集可用。因此,在一些实例中,请求网络设备可预留硬件地址的该子集。
在一些实例中,由响应网络设备指定的该组硬件地址包括硬件地址范围内的所有硬件地址。在这样的实例中,请求网络设备确定在从不同的目标硬件地址开始的硬件地址范围中是否存在任何重复,并重复这些示例性操作直到请求网络设备确定可用的硬件地址。
在以上实例中,请求网络设备可被配置为预留当前未由任何其他网络设备预留的硬件地址。然而,示例性技术不限于此。在一些实例中,响应于接收指定硬件地址范围的请求,响应网络设备可确定由该响应网络设备预留的一个或多个硬件地址在硬件地址范围内。然而,响应网络设备可确定由响应网络设备预留的一些硬件地址可被释放(例如,因为响应网络设备确定可能不需要所有预留的硬件地址)。在这样的实例中,响应网络设备可发送响应消息,该响应消息标识在那些预留的硬件地址中哪些硬件地址正由响应网络设备释放、并且响应网络设备与哪些硬件地址具有冲突/重叠且响应设备正在保持。请求网络设备可预留释放的硬件地址。如果请求网络设备确定需要额外的硬件地址,则请求网络设备可发送请求消息,该请求消息指定从不同的目标硬件地址开始的硬件地址范围,并重复这些示例性操作直到请求网络设备预留足够的硬件地址。
在一个实例中,本公开描述了一种用于检测计算机网络中的硬件地址冲突的方法,该方法包括由计算机网络中的多个网络设备中的一网络设备确定从目标硬件地址开始的硬件地址范围;由该网络设备在网络上发送请求消息,该请求消息指定从目标硬件地址开始的该硬件地址范围;由网络设备确定网络设备在时间限制内是否从多个网络设备中的一个或多个其他网络设备接收到一个或多个响应消息,该响应消息指定硬件地址范围内的一个或多个硬件地址;由网络设备基于网络设备是否接收到一个或多个响应消息来确定硬件地址范围内的至少硬件地址的子集是否可用;以及由网络设备基于至少硬件地址的子集是否可用的确定来预留硬件地址。
在另一实例中,本公开描述了一种用于检测计算机网络中的硬件地址冲突的方法,该方法包括由网络设备接收指定从目标硬件地址开始的硬件地址范围的请求消息;由网络设备确定网络设备的一组连续硬件地址是否与该硬件地址范围的子集匹配;以及响应于确定网络设备的该组连续硬件地址与该硬件地址范围的子集匹配,由网络设备发送指定该组连续硬件地址的响应消息。
在另一实例中,本公开描述了一种网络设备,该网络设备包括数据库和耦接到数据库的处理电路。处理电路被配置为:确定从目标硬件地址开始的硬件地址范围,在网络上发送请求消息,该请求消息指定从目标硬件地址开始的该硬件地址范围,确定网络设备在时间限制内是否从耦接到网络的多个网络设备中的一个或多个其他网络设备接收到指定硬件地址范围内的一个或多个硬件地址的一个或多个响应消息,基于该网络设备是否接收到一个或多个响应消息来确定硬件地址范围内的至少硬件地址的子集是否可用,并且基于至少硬件地址的子集是否可用的确定在数据库中预留硬件地址。
在另一实例中,本公开描述了一种网络设备,该网络设备包括数据库和耦接到数据库的处理电路。处理电路被配置为:接收指定从目标硬件地址开始的硬件地址范围的请求消息,基于存储在数据库中的地址范围确定网络设备的一组连续硬件地址是否与硬件地址范围的子集匹配,以及响应于确定该网络设备的该组连续硬件地址与该硬件地址范围的子集匹配,而发送指定该组连续硬件地址的响应消息。
在附图和以下描述中阐述了这些技术的一个或多个实施方式的细节。根据说明书、附图和权利要求,本技术的其他特征、目的和优点将显而易见。
附图说明
图1是示出示例性网络系统的框图,在网络系统中本地网络设备实现本公开的硬件地址冲突检测技术。
图2是示出根据本发明的一种或多种技术的示例性重复MAC地址检测和预留序列(SDMADR)分组格式的框图。
图3是示出根据本发明的一种或多种技术的可用于SDMADR的示例性地址解析协议(ARP)分组格式的框图。
图4A至图4D是示出在请求网络设备和响应网络设备之间通过请求网络设备预留MAC地址的通信的实例的概念图。
图5是示出根据本发明的一种或多种技术的请求网络设备的示例性操作的流程图。
图6A是示出根据本公开的一种或多种技术的请求网络设备和响应网络设备之间用于实现SDMADR协议的示例性交互的流程图。
图6B是示出图6A的示例性交互的继续的流程图。
图6C是示出图6B的示例性交互的继续的流程图。
具体实施方式
图1是示出示例性网络系统10的框图,其中本地网络设备12实现本公开的硬件地址冲突检测技术。如图1所示,网络系统10包括本地网络设备12、网络14和远程网络设备16A-16N(统称为“远程网络设备16”)。在本公开内容将本地网络设备12描述为本公开的硬件地址冲突检测技术的发起设备的意义上,本地网络设备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硬件地址20,也称为物理硬件地址。例如,物理硬件地址20可存储在NIC 18的存储器单元(例如,只读存储器(ROM)单元、可编程只读存储器(PROM)、电可擦除可编程只读存储器(EEPROM))中。NIC硬件地址20可以是媒体地址控制(MAC)地址。NIC 18的制造商可在NIC 18的制造期间将硬件地址20分配给NIC 18。通常,NIC的硬件地址在NIC的生命期内不会改变,并且在某些情况下,可以是不可变的。然而,在一些实例中,可改变NIC硬件地址20。在一些实例中,NIC硬件地址20可以是由本公开的硬件地址非重复技术验证的硬件地址。
当在网络14上通信时,网络设备可发送指定源地址、目的地地址、有效载荷协议类型字段和有效载荷的消息(下文中称为“帧”)。帧的源地址是发送网络设备的硬件地址。在帧中发送源地址可允许接收网络设备通过将帧发送回初始发送设备来进行响应。帧的目标地址标识帧的预期接收方。目的地地址可以是广播地址(例如,ff:ff:ff:ff:ff),其指示网络上的所有网络设备都预期接收帧。帧的有效载荷协议类型字段标识帧的有效载荷的通信协议。在以太网的上下文中,有效载荷协议类型字段可被称为以太类型字段。例如,有效载荷协议类型字段可指示有效载荷被格式化为地址解析协议(ARP)、互联网协议(IP)、IPSec协议或其他类型的通信协议。
此外,如图1的实例所示,本地网络设备12可包括虚拟机(VM)主机软件22。VM主机软件22可包括托管VM 24的各种类型的软件系统。例如,VM主机软件22可包括操作系统。在另一个实例中,VM主机软件22可包括管理程序。
在本公开中,VM主机软件22和VM主机软件22的硬件地址分配模块(HAAM)26可在本地网络设备12的处理电路上执行,并且可配置处理电路以执行本公开描述的示例性技术。例如,本地网络设备12的存储器可存储处理电路检索和执行的VM主机软件22和HAAM 26的计算机可读指令。然后,指令的执行配置处理电路以执行本公开中描述的示例性操作。在一些实例中,处理电路可以是固定功能电路(例如,具有不可变操作)和可编程电路的组合。例如,作为一个实例,处理电路可包括一个或多个处理器,并且处理器将包括可编程核和固定功能电路。
通常,VM 24中的每一个是相应计算机系统的模拟。由于VM 24中的每一个模拟相应的计算机系统,因此VM 24中的每一个应具有用于在网络14上进行通信的相应硬件地址。因此,HAAM 26可将相应的虚拟硬件地址28分配给每个相应的VM 24。接着,当NIC 18接收指定VM的虚拟硬件地址作为目的地地址的帧时,VM主机软件22接受该帧并将帧转发给VM。当VM生成用于在网络14上传输的帧时,该帧指定VM的虚拟硬件地址作为帧的源地址。然后,VM主机软件22将该帧传递给NIC 18,以便在网络14上传输。
在NIC的制造期间分配的硬件地址通常是唯一的(至少在区域上),因为这样的硬件地址通常包括与制造商相对应的前缀,并且制造商不为其自己的产品重用硬件地址。然而,可能没有对于虚拟硬件地址28的这种保证。换句话说,当将VM 24视为不同的网络设备时,可能无法保证两个网络设备不具有相同的硬件地址。例如,HAAM 26可分配虚拟硬件地址28使得每个虚拟硬件地址不同,但是可能发生远程网络设备16之一具有与分配给VM 24的虚拟硬件地址28之一匹配的硬件地址。在同一网络上具有含有相同硬件地址的两个网络设备可能导致严重问题。例如,两个网络设备可能响应同一帧,从而导致混淆错误。
本公开描述了可克服与分配虚拟硬件地址的可能性相关联的某些问题的技术。具体而言,本公开描述了用于确定在网络上是否存在声称相同硬件地址的多个网络设备的技术。
此外,本公开中描述的技术的实例可预留多个虚拟硬件地址,这些虚拟硬件地址被确定为不与网络设备预留的或由网络设备分配给VM的任何其他硬件地址重复。例如,VM主机软件22可基于通信需求来启动(例如,实例化)一个或多个VM 24是各种实例。如果VM主机软件22经由HAAM 26必须每次新VM 24启动时确定HAAM 26要分配VM 24的硬件地址是否重复,则向VM 24分配硬件地址可能存在实质性延迟,这在VM 24可通信时产生延迟。
作为一个实例,假设VM主机软件22将实例化三个VM 24。在一些技术中,HAAM 26将为三个VM 24中的每一个选择硬件地址,并且逐个确定三个所选硬件地址是否是唯一的或具有重复的。在这些技术中,在三个VM 24的所选硬件地址不重复的最佳情况下,HAAM 26可针对每个VM 24花费三秒来确认所选择的硬件地址是不重复的。在这样的实例中,HAAM 26花费9秒(例如,每个VM 24三秒)来为三个VM 24分配硬件地址。如果确定所选择的硬件地址中的一个是重复的,则HAAM 26将花费超过9秒。
在一个或多个实例中,HAAM 26以最少数量的请求(例如,少至一个请求)确定不重复的多个硬件地址,而不是逐个确定不重复的硬件地址。HAAM 26预留被确定为不重复的硬件地址,并且HAAM 26从预留的硬件地址分配新启动的VM 24。这样,HAAM 26可能不需要每次VM 24启动时确定硬件地址是否重复。例如,在上面的实例中,在一些技术中,HAAM 26可花费长达九秒来确定三个VM 24的硬件地址。然而,在本公开中描述的技术中,HAAM 26可能能够将硬件地址立即分配给三个VM 24。
在一个实例中,HAAM 26可运行重复MAC地址检测和预留序列(SDMADR)协议。SDMADR协议是ARP协议的扩展。SDMADR定义了一个新的硬件地址空间/硬件类型(HTYPE),使得现有的ARP实现和那些不支持此ARP扩展的实现仍然可通过丢弃分组继续正常工作。为硬件地址空间定义了一个新值“以太网上的SDMADR(SDMADR-over-Ethernet)”,以用于向分组标识该分组属于SDMADR。
在第一步骤中,HAAM 26生成指定NIC硬件地址20的请求消息。如本公开中的其他地方所述,可在制造NIC 18时将NIC硬件地址20分配给本地网络设备12的NIC 18。HAAM 26还包括目标硬件地址和目标硬件地址的范围。目标硬件地址可以是HAAM 26计划预留用于分配给VM 24之一的硬件地址,并且硬件地址的范围可以是N个连续的硬件地址,其中N是大于或等于1的数字。目标硬件地址可以是硬件地址范围的起始硬件地址。作为一个实例,目标硬件地址是0,并且范围是64,这意味着HAAM 26计划预留硬件地址0到63。
作为另一实例,HAAM 26指定起始和结束硬件地址(例如,硬件地址10至19)。该实例是HAAM 26指定从目标硬件地址开始的硬件地址范围的另一种方式。例如,在该实例中,目标硬件地址是10并且范围是10。可存在其他方式来指定从目标硬件地址开始的硬件地址范围,并且实例技术不限于以上提供的具体实例。
可存在HAAM 26确定目标硬件地址和硬件地址范围的各种方式。作为一个实例,HAAM 26针对最后两个字节使用随机数生成器确定目标硬件地址,并且前六个字节基于NIC20的制造商或基于VM主机软件22的预配置。HAAM 26可预先配置有值N,其定义HAAM 26应该预留的连续硬件地址(例如,N被预先配置为64或256)。作为另一实例,VM主机软件22可跟踪多少VM 24正在启动以及多少VM 24正在减少的速率,并且HAAM 26可基于跟踪的速率确定N的值。如果平均而言,基于跟踪的速率,X个VM 24正在本地网络设备12上执行,则HAAM 26可确定大于或等于X的N的值。可存在其他方式来确定硬件地址的范围,并且实例技术不限于上述实例。
例如,本地网络设备12的物理配置允许创建特定数量的VM 24,其中每个VM 24具有指定数量的虚拟网络接口控制器。就带宽而言,这些配置基于物理网络接口控制器18的数量和每个物理网络接口控制器18的容量。
本地网络设备12的网络管理员可确定需要创建多少VM 24以实现针对预定义负载的VM 24的成功操作,其中每个VM 24具有特定数量的虚拟网络接口控制器。
例如,本地网络设备12具有两个物理网络接口控制器18,并且每个物理网络接口控制器18的容量是8Gbs(每秒Giba位)。因此,本地网络设备12可用的总网络容量是16Gbs。如果期望每个VM 24拥有2Gbs网络容量以执行预定义操作,则可从单个本地网络设备12创建8个VM 24。这8个VM 24中的每一个可具有一个虚拟网络接口控制器。因此,虚拟接口控制器的总数是8。在该实例中,假设为本地网络设备12确定的虚拟网络接口控制器的数量是X。然后,HAAM 26需要预留X个硬件地址。但是在某个时间点操作中的实际VM 24可能小于在本地网络设备12上创建的VM 24的总数。这些VM 24使用小于X的较少数量的虚拟网络接口控制器。
然后,HAAM 26指示NIC 18在网络14上发送帧,该帧包括请求消息并且具有指定广播地址的目的地地址字段。因此,连接到网络14的每个网络设备(例如,远程网络设备16,已经配置的VM 24)可接收和接受该帧。在一些实例中,帧的源硬件地址字段可指定从互联网分配号码授权机构(IANA)预留的单播硬件地址以与SDMADR一起使用。
响应于接收到帧,网络设备确定网络设备的一硬件地址或一组连续硬件地址是否与硬件地址范围内的硬件地址匹配。作为实例,远程网络设备16A可能已预留了硬件地址,用于分配给在远程网络设备16A上执行的VM。在该实例中,远程网络设备16A的HAAM可确定为远程网络设备16A上执行的VM预留的任何硬件地址是否在由HAAM 26指定的硬件地址的范围内。例如,远程网络设备16A的HAAM可确定作为由远程网络设备16A预留的硬件地址的一部分的一组连续硬件地址是否在由本地网络设备12指定的硬件地址的范围内。
响应于确定远程网络设备16A预留了在请求消息中指定的地址范围内的一组硬件地址,远程网络设备16A生成响应消息。在一个实例中,响应消息指定从远程网络设备16A预留的响应硬件地址开始的硬件地址范围。从响应硬件地址开始的硬件地址范围部分地或完全地与由本地网络设备12指定的从目标硬件地址开始的硬件地址的范围重叠。
作为实例,本地网络设备12可将目标硬件地址指定为10并且将硬件地址的范围指定为10(例如,本地网络设备12预留地址10至19)。远程网络设备16A可确定远程网络设备16A先前已经预留了硬件地址5到24。在该实例中,远程网络设备16A确定远程网络硬件设备16A预留的硬件地址与本地网络设备12请求预留的硬件地址范围10-19部分或完全(在该实例中完全)重叠。在该实例中,远程网络设备16A生成指示远程网络设备16A预留硬件地址5到24的响应消息。
在一些实例中,尽管远程网络设备16A预留了与本地网络设备12请求的从目标硬件地址开始的硬件地址范围完全或部分地重叠的硬件地址,但是远程网络设备16A可确定一些重叠的硬件地址可被释放以供本地网络设备12使用。例如,与前面的实例一致,远程网络设备16A可确定远程网络设备16A可释放硬件地址10至14,使得远程网络设备16A仍将预留硬件地址5-9和15-24,但10-14将可用于本地网络设备12。在该实例中,远程网络设备16A生成指示远程网络设备16A正在释放硬件地址10-14并保持预留硬件地址5-9和15-24的响应消息。
本地网络设备12可利用各种因素来确定哪些和多少预留地址可被释放。假设HAAM26预留了X个地址。作为一个实例,VM主机软件22可跟踪多少VM 24正在启动以及多少VM 24正在减少的速率,并且HAAM 26可基于跟踪的速率确定N的值。如果平均而言,基于跟踪的速率,N个VM 24正在本地网络设备12上执行,则HAAM 26可释放(X-N)个硬件地址。
例如,X是为本地网络设备12设计的VM 24的最大数量,并且HAAM 26预留X个硬件地址。然而,在某个时间点运行的实际VM 24小于在本地网络设备12上创建的VM 24的总数。因此,这些VM 24使用比X更少数量的虚拟网络接口控制器。因此,HAAM 26可释放(X-N)个硬件地址。
然后,远程网络设备16A在网络14上发送包括响应消息的帧。在一些实例中,帧的目的地硬件地址指定广播地址。在一些实例中,帧的目的地硬件地址指定在请求消息中所指定的远程网络设备16A的NIC硬件地址(即,NIC硬件地址20)。在一些实例中,帧的源硬件地址字段可指定从IANA预留用于与SDMADR一起使用的单播硬件地址。另一方面,响应于确定远程网络设备16A预留的硬件地址都不在本地网络设备12所指定的硬件地址范围内,远程网络设备16A不生成响应消息。
如果HAAM 26没有接收到响应消息,该响应消息指定部分或完全与以HAAM 26所指定的目标硬件地址开始的硬件地址范围重叠的硬件地址范围,则HAAM 26可确定以目标硬件地址开始的硬件地址范围内的所有硬件地址可用(例如,不重复)。然后,HAAM 26可预留在以目标硬件地址开始的硬件地址范围内的所有硬件地址(例如,存储指示数据库30中的预留硬件地址的信息)。
如果HAAM 26接收一个或多个响应消息,这些响应消息一起指定由HAAM 26指定的所有地址被其他网络设备预留,则HAAM 26可选择新的不同的目标硬件设备,并且以新的目标硬件设备执行上述过程的实例。例如,假设HAAM 26指定了64个硬件地址。远程网络设备16A可能预留了10个与HAAM 26所指定的64个硬件地址重叠的硬件地址,并且远程网络设备16A可能已发送了指示该10个硬件地址的响应消息。远程网络设备16B可能已预留54个与HAAM 26所指定的64个硬件地址重叠的硬件地址,并且远程网络设备16B可能已发送指示该54个硬件地址的响应消息。远程网络设备16A或16B中的任一个也可预留由本地网络设备12指定的所有64个硬件地址。在任一实例中,本地网络设备12可确定由本地网络设备12指定的64个硬件地址中的任何一个都不可用。本地网络设备12可以以新的不同的目标硬件地址开始并重复上述实例过程。
在一些实例中,HAAM 26接收指定与本地网络设备12所指定的硬件地址范围重叠的一组硬件地址的一个或多个响应消息。例如,远程网络设备16A可发送指示10个硬件地址与本地网络设备12所指定的64个硬件地址重叠的响应消息,并且远程网络设备16B可不发送任何响应。在该实例中,本地网络设备12可预留54个非重叠的硬件地址(例如,由本地网络设备12指定的硬件地址的子集)。HAAM 26可确定是否需要额外的硬件地址,并且如果需要的话,则从新的目标硬件地址开始重复上述过程。
在一些实例中,HAAM 26接收指定与本地网络设备12所指定的硬件地址范围重叠的一组硬件地址、但是还指定由响应网络设备释放的一组硬件地址的一个或多个响应消息。例如,远程网络设备16A可释放在本地网络设备12所指定的硬件地址范围内的远程网络设备16A已预留的一些硬件地址。本地网络设备12可预留由远程网络设备16A释放的那些硬件地址。
尽管关于远程网络设备16A描述了以上实例,但是网络系统10上的其他网络设备类似地操作。例如,远程网络设备16B类似于远程网络设备16A操作。此外,关于本地网络设备12描述了这些技术。然而,本公开中描述的技术可由网络系统10的任何和所有网络设备来执行。例如,从远程网络设备16A的角度来看,远程网络设备16A是本地网络设备,并且本地网络设备12是远程网络设备。
因此,在图1的实例中,网络设备(例如,本地网络设备12)可确定从第一目标硬件地址(例如,MAC地址)开始的硬件地址范围。另外,网络设备可在网络14上发送第一请求消息,第一请求消息指定从目标硬件地址开始的硬件地址范围。网络设备可确定该网络设备在时间限制内是否已经从多个网络设备中的一个或多个其他网络设备(例如,远程网络设备16A或16B)接收指定硬件地址范围内的一个或多个硬件地址的一个或多个响应消息。网络设备可基于网络设备是否接收到一个或多个响应消息来确定硬件地址范围内的至少硬件地址的子集是否可用,并且基于至少硬件地址的子集是否可用的确定来预留硬件地址。网络设备可执行一个或多个VM 24,并将预留的硬件地址中的一个或多个分配给一个或多个VM中的每一个。
此外,在图1的实例中,网络设备(例如,本地网络设备12、远程网络设备16之一)可接收指定从目标硬件地址开始的硬件地址范围的请求消息。网络设备可确定该网络设备的一组连续硬件地址是否与该硬件地址范围的子集匹配。响应于确定网络设备的一组连续硬件地址与硬件地址范围的子集匹配,网络设备可发送指定该组连续硬件地址的响应消息。
在图1的实例中,本地网络设备12可包括数据库30。数据库30可存储指示连接到网络14的网络设备的硬件地址。VM主机软件24(例如,HAAM 26)可响应于接收到指定硬件地址的响应消息、响应于成功地为VM 24预留硬件地址、或者响应于其他事件,而向数据库30添加指定硬件地址的条目。此外,在一些实例中,响应消息可包括设备标识符。设备标识符可包括标识发送响应的网络设备的字符串。数据库30中的条目可将这样的设备标识符映射到硬件地址。
图2是示出根据本发明的一种或多种技术的示例性重复MAC地址检测和预留序列(SDMADR)分组格式的框图。在图2的实例中,请求消息和响应消息可具有相同的格式。因此,在图2的实例中,消息50可包括操作代码字段52、发送方硬件地址字段54、设备标识符字段56、目标硬件地址字段58以及硬件地址范围字段60。
操作代码字段52指定操作代码。操作代码指定消息50是SDMADR请求还是SDMADR响应。例如,操作代码的第一值指定消息50是SDMADR请求,并且操作代码的不同的第二值指定消息50是SDMADR响应。
在SDMADR请求中,发送方硬件地址字段54指定发送SDMADR请求的网络设备(例如,本地网络设备12)的NIC硬件地址(例如,NIC硬件地址20(图1))。设备标识符字段56可指定发送消息50的网络设备的设备标识符。在一些实例中,设备标识符字段56从消息50中省略。设备标识符可以是人或设备可用来标识发送消息50的网络设备的不透明字符串。例如,设备标识符可指定诸如“RACK_01_BLADE_12”的字符串。目标硬件地址字段58可指定目标硬件地址。在消息50是SDMADR请求的情况下,作为SDMADR请求消息的一部分,目标硬件地址字段58可指定作为多个硬件地址的开始的请求网络设备指定预留的硬件地址。
在消息50是SDMADR响应的情况下,发送方硬件地址字段54可指定作为多个硬件地址的开始的硬件地址,响应网络设备指定其已经预留并且可能想要通知请求网络设备关于这个重叠的硬件地址。在消息50是SDMADR响应的情况下,作为SDMADR响应消息的一部分,目标硬件地址字段58可指定作为多个硬件地址的开始的响应网络设备指定释放的硬件地址。
作为SDMADR请求消息的一部分,硬件地址范围字段60可指定从目标硬件地址字段58开始的请求网络设备指定预留的连续硬件地址的数量。作为实例,如果请求网络设备请求预留硬件地址10-18,则对于SDMADR请求消息,目标硬件地址字段58具有值10并且硬件地址范围字段60具有值9。
在SDMADR响应消息中,硬件地址范围字段60可指定由响应网络设备预留的一组连续硬件地址,并且可指定由响应网络设备释放的另一组连续硬件地址。在SDMADR响应中的硬件地址范围字段60中指定的两组连续硬件地址部分地或完全地与SDMADR请求消息所指定的从目标硬件地址开始的硬件地址范围重叠。
例如,假设请求网络设备请求预留硬件地址10-18,并且响应网络设备已经预留了硬件地址10-18,但是响应设备可释放硬件地址15-18。在该实例中,在SDMADR响应消息中,发送方硬件地址字段54具有值10并且目标硬件地址字段58具有值15。一个硬件地址范围字段60具有值5以指示未释放/预留的硬件地址范围(例如,预留10-14)。另一硬件地址范围字段60具有值4以指示关于硬件地址的释放范围(例如,15-18被释放)。
图3是示出根据本发明的一种或多种技术的可用于SDMADR的示例性地址解析协议(ARP)分组格式的框图。ARP是用于基于已知协议地址(例如,IP地址)解析MAC地址的通常实现的协议。根据本公开的技术,可修改实现ARP的模块(例如,实现ARP的硬件和/或软件)以使用根据ARP构造的分组来执行SDMADR。
因此,请求消息和响应消息可符合ARP格式。此外,网络设备(例如,本地网络设备12或远程网络设备16A或16B之一)可发送或接收包括请求消息或响应消息的帧(例如,以太网帧),该帧具有指定与ARP对应的值的有效载荷协议字段(例如,以太类型字段)。
如图3所示,ARP分组100包括硬件地址空间字段102(缩写为“HRD”)、协议地址空间字段104(缩写为“PRO”)、硬件地址长度字段106(缩写为“HLN”)、协议地址长度字段108(缩写为“PLN”)、操作代码字段110(缩写为“OP”)、包括发送方硬件地址字段112的上至三个2字节字段112A-112C(缩写为“SHA”)、包括发送方协议地址字段114的上至两个2字节字段114A-114B(缩写为“SPA”)、包括目标硬件地址字段116的最多三个2字节字段116A-116C(缩写为“THA”)以及包括目标协议地址字段118的最多两个2字节字段118A-118B(缩写为“TPA”)。目标地址空间字段102也可称为硬件类型(HTYPE)字段。协议地址空间字段104也可称为协议类型(PTYPE)字段。
根据本发明的技术,可为硬件地址空间字段102定义新值(例如,“以太网上SDMADR”),以将ARP分组100标识为属于SDMADR。协议地址空间字段104、硬件地址长度字段106和协议地址长度字段108的语义可与ARP中的相同。例如,协议地址空间字段104可指定ARP请求所针对的协议。例如,值0x0800可指定IPv4。协议地址空间104的允许值可与以太类型的允许值共享编号空间。硬件地址长度字段106指定硬件地址的八位字节的长度。以太网地址(例如,MAC地址)具有6个八位字节的长度。协议地址长度字段108指定在由协议地址空间字段104指定的上层协议中使用的地址的八位字节的长度。
根据本发明的技术,可定义操作代码字段110的新值(也称为ar$op字段110)以指示SDMADR请求(multi-mac-verify-req)和SDMADR响应(multi-mac-verify-resp)。此外,发送方硬件地址字段112(也称为ar$sha字段112)指定ARP分组100的发送方的硬件地址。例如,如果ARP分组100是SDMADR请求,则发送方硬件地址字段112可指定发送网络设备(例如,本地网络设备12(图1))的NIC硬件地址(例如,NIC硬件地址20(图1))。如果ARP分组100是SDMADR响应,则发送方硬件地址字段112可指定发送网络设备(例如,远程网络设备16之一(图1))的硬件地址。
此外,发送方协议地址字段114(也称为ar$spa 114)可指定发送ARP分组100的网络设备的设备标识符。如上所述,网络设备的设备标识符可包括可用于标识网络设备的不透明的字符串。
目标硬件地址字段116(也称为ar$tha字段116)指定目标硬件地址。目标硬件地址可与发送方硬件地址字段112相同(例如,ar$tha与ar$sha相同)或不同。如果ARP分组100是SDMADR请求,则目标硬件地址可以是发送SDMADR请求的网络设备正在确定可用性的硬件地址,并且是发送SDMADR请求的网络设备正在确定可用性的硬件地址范围的开始。在极少数情况下,多个网络设备可能具有相同的NIC硬件地址。此外,具有特定硬件地址的网络设备可在已经成功地在网络上将特定硬件地址作为虚拟硬件地址分配给VM(例如,VM 24之一(图1))之后加入网络(例如,网络14(图1))。因此,为了避免与在具有相同硬件地址的网络上具有多个设备相关联的问题,网络设备可在发送方硬件地址字段112和目标硬件地址字段116中发送指定其NIC硬件地址的SDMADR请求或者可选择与硬件地址字段112不同的不同目标硬件地址字段116。
在SDMADR响应中,发送方硬件地址字段112可被重新利用为响应网络设备已经预留的地址范围的起始硬件地址。在SDMADR响应中,目标硬件地址字段116可被重新利用以作为由响应网络设备释放的地址范围的起始硬件地址。
SDMADR的multi-mac-verify-resp分组字段解释如下。ar$sha是来自multi-mac-verify-req分组的ar$tha的目标硬件地址。ar$spa被定义为不透明的字符串并且可用于标识设备。ar$tha是已释放的范围地址的起始硬件地址。ar$tpa是4个字节。2个字节用于存储预留硬件地址的第一个范围数字。该数字表示从目标硬件地址开始的硬件地址范围,并且它们被响应设备预留。2个字节用于存储可释放的硬件地址的范围数字。该数字表示从释放的硬件地址开始的硬件地址范围,并且它们由响应设备释放。
在本公开中,multi-mac-verify-resp提到从目标硬件地址开始的预留硬件地址的范围。此外,multi-mac-verify-resp提到从已释放的硬件地址开始的已释放硬件地址范围。然而,这些地址由接收multi-mac-verify-resp的请求网络设备释放以供预留。
作为一个实例,假设请求设备请求地址120-249,并且响应设备先前已预留地址100-199。在一个实例中,响应设备被配置为向请求设备指示响应设备具有地址100-199并且想要它们全部预留。在该实例中,ar$sha是100,因为它是响应设备的预留地址的起始地址,并且ar$tha为零,因为响应设备没有释放硬件地址。另外,$tpa有4个字节,前两个字节表示预留地址范围100-199,因此值为100。后两个字节为零,因为它表示释放的地址范围,并且响应设备没有释放硬件地址。
在另一实例中,响应设备被配置为向请求设备指示响应设备具有地址100-199并且所有地址都将被释放。在此实例中,ar$sha为零,因为响应设备在释放所有这些地址后没有预留的硬件地址。此外,ar$tha是100,因为它是响应设备释放的起始硬件地址。在该实例中,ar$tpa有4个字节,前两个字节值为零,因为在释放所有这些地址之后没有预留的硬件地址。后两个字节值为100,因为响应设备释放100个硬件地址。
在另一实例中,响应设备被配置为向请求设备指示响应设备具有地址100-199并且想要释放地址150-199。在该实例中,ar$sha是100,因为响应设备预留了从100开始的硬件地址。此外,ar$tha是150,因为它是响应设备释放的起始硬件地址。在该实例中,ar$tpa有4个字节,前两个字节值为50,因为释放后的最后一个预留硬件地址是149。因此预留的地址范围是100-149。后两个字节值为50,因为响应设备释放50个硬件地址,释放的地址范围为150-199。
在另一实例中,响应设备被配置为向请求设备指示响应设备具有地址100-199并且想要释放地址120-129。在该实例中,ar$sha是100,因为响应设备预留了从100开始的硬件地址。此外,ar$tha是120,因为它是响应设备释放的起始硬件地址。在该实例中,ar$tpa有4个字节,前两个字节值为100,因为释放后的最后一个预留硬件地址是199。因此预留的地址范围是100-199。但是,它与已释放的地址范围120-129重叠。后两个字节值为10,因为响应设备释放了10个硬件地址。释放的地址范围表示从预留的地址范围中排除这些地址范围。
在SDMADR请求中,目标协议地址字段118(也称为ar$tpa字段118)可指定从目标硬件地址字段116中指定的硬件地址开始的硬件地址范围。在SDMADR响应中,目标协议地址字段118可使用四个字节中的两个字节来存储来自目标硬件地址的硬件地址范围,这些地址被响应设备预留并且两个字节用于存储来自释放的硬件地址的硬件地址范围,释放的硬件地址被响应设备释放。因此,SDMADR响应可包括从目标硬件地址开始的预留硬件地址范围。SDMADR响应还可包括从释放的硬件地址开始的已释放的硬件地址范围。这些释放的硬件地址被响应网络设备释放,并进一步由接收SDMADR请求消息的请求设备使用。
因此,SDMADR请求消息可包括16位硬件地址空间字段、16位协议地址空间字段、8位硬件地址长度字段、8位协议地址长度字段、16位操作代码字段、n位发送方硬件地址字段、m位发送方协议地址字段、n位目标硬件地址字段以及m位目标协议地址字段。在该实例中,n由硬件地址长度字段定义,m由协议地址长度字段定义。操作代码字段可指定指示请求消息是SDMADR请求消息的值,并且源硬件地址字段可指定网络设备的NIC硬件地址。可在制造NIC时将NIC硬件地址分配给网络设备的NIC。源协议地址字段可指定网络设备的设备标识符,并且目标硬件地址字段可指定目标硬件地址。目标协议地址字段可指定从目标硬件地址开始的硬件地址范围。
类似地,SDMADR响应消息可包括16位硬件地址空间字段、16位协议地址空间字段、8位硬件地址长度字段、8位协议地址长度字段、16位操作代码字段、n位发送方硬件地址字段、m位发送方协议地址字段、n位目标硬件地址字段以及m位目标协议地址字段,其中n由硬件地址长度字段定义并且m由协议地址长度字段定义。在SDMADR响应中,发送方硬件地址字段可指示响应网络设备所预留的连续硬件地址的开始,并且目标硬件地址可指示响应网络设备释放的连续硬件地址的开始。目标协议地址字段包括四个字节。可预留前两个字节以指示由响应网络设备预留的从发送方硬件地址字段中标识的地址开始的硬件地址的数量,并且可预留后两个字节以指示由响应网络设备释放的从目标硬件地址字段中标识的地址开始的硬件地址的数量。
图4A至图4D是示出请求网络设备和响应网络设备之间通过请求网络设备预留MAC地址的通信的实例的概念图。例如,图4A至图4D示出了请求网络设备120和响应网络设备122之间的通信的不同示例性情况。尽管示出了单个响应网络设备122,但是可存在多个响应网络设备,每个响应网络设备指定不同范围的重叠硬件地址或不提供回应。
在图4A中,请求网络设备120生成ARP分组124A作为SDMADR请求。在该实例中,SDMADR请求将目标硬件地址指定为10(例如,ar$tha为10),并且硬件地址范围为10(例如,ar$tpa为10)。换句话说,在该实例中,请求网络设备120请求预留硬件地址10-19。在图4A中,在特定时间限制(例如,3秒)内,请求网络设备120没有接收到具有SDMADR响应的任何ARP分组。在该实例中,请求网络设备120可预留硬件地址10-19,以用于分配在请求网络设备120上实例化的VM。
在图4A的实例中,请求网络设备120确定请求网络设备120在时间限制内没有从任何其他网络设备接收指定由请求网络设备120指定的硬件地址范围内的任何硬件地址的任何消息。因此,请求网络设备120确定在从目标硬件地址开始的硬件地址范围内的所有硬件地址都是可用的,并且预留在从目标硬件地址开始的硬件地址范围内的所有硬件地址。
在图4B中,请求网络设备120生成作为SDMADR请求的ARP分组124B,其类似于ARP分组124A。在图4B中,在特定时间限制内,请求网络设备120接收作为SDMADR响应的ARP分组124C。ARP分组124C的SDMADR响应指定响应网络设备122已经预留了从目标硬件地址5开始的具有范围20的硬件地址。换句话说,在该实例中,响应网络设备122已预留了硬件地址5-24。
基于ARP分组124C的SDMADR响应消息,请求网络设备120可确定在ARP分组124B的SDMADR请求消息中指定的硬件地址都不可用。例如,响应网络设备122已预留了地址5-24,但是请求网络设备120请求地址10-19,并且地址5-24与地址10-19完全重叠。
因为请求网络设备120确定在ARP分组124B的SDMADR请求消息中指定的硬件地址都不可用,所以请求网络设备120可在ARP分组124D中生成第二SDMADR请求消息。如图4B所示,第二SDMADR请求消息的目标硬件地址是25,请求网络设备120基于ARP分组124C的SDMADR响应消息确定该目标硬件地址没有被响应网络设备122预留。ARP分组124D的SDMADR请求消息中的硬件地址范围是10。
在该实例中,请求网络设备120可能在时间限制内没有从响应网络设备122接收SDMADR响应消息。因此,请求网络设备120可确定硬件地址25-34可用,并且可预留硬件地址25-34(例如,在其数据库中存储信息,指示硬件地址25-34可用于分配给VM)。
在图4B的实例中,请求网络设备120确定请求网络设备120在时间限制内从一个或多个其他网络设备接收一个或多个响应消息,该响应消息指定从请求网络设备120指定的目标硬件地址开始的硬件地址范围内的所有硬件地址。因此,请求网络设备120可确定硬件地址范围内的硬件地址都不可用,并且生成指定新目标硬件地址的ARP分组124B。
在图4C中,请求网络设备120生成作为SDMADR请求的ARP分组124E,其类似于ARP分组124A。在图4C中,在特定时间限制内,请求网络设备120接收作为SDMADR响应的ARP分组124F。ARP分组124F的SDMADR响应指定响应网络设备122已经预留了从目标硬件地址5开始的具有范围10的硬件地址。换句话说,在该实例中,响应网络设备122已预留了硬件地址5-14。
在图4C中,基于ARP分组124E,请求网络设备120正在请求硬件地址10-19。然而,基于ARP分组124F,请求网络设备120可确定地址5-14不可用,并且进一步确定不可用地址中的地址10-14与请求网络设备120指定的地址重叠。
在该实例中,请求网络设备120可确定地址15-19是可用的,因为仅所请求的地址中的地址10-14不可用。因此,请求网络设备120可预留地址15-19。如果请求网络设备120需要更多地址,则请求网络设备120生成ARP分组124G,这是另一个SDMADR请求,但目标硬件地址为20,并且硬件地址范围为5(例如,请求硬件地址20-24)。
在图4C的实例中,请求网络设备120可不接收对其第二SDMADR请求的任何SDMADR响应,并且可预留地址20-24。在图4C中,请求网络设备120可具有用于10个硬件地址的预留地址15-24。
在图4C中,请求网络设备120在时间限制内从一个或多个其他网络设备接收指定硬件地址范围内的一组或多组连续地址的一个或多个消息。例如,请求网络设备120从响应网络设备122接收响应消息,该响应消息指定由请求网络设备120指定的硬件地址范围内的一组连续地址(例如,5-14)(例如,一个或多个地址5-14在由请求网络设备120指定的地址10-19内)。
请求网络设备120可确定在硬件地址范围内的不包括一组或多组连续地址内的硬件地址的硬件地址是可用的。例如,请求网络设备120可确定地址15-19可用。在该实例中,请求网络设备120可预留在硬件地址范围内的不包括一组或多组连续地址内的硬件地址的硬件地址。例如,请求网络设备120可预留地址15-19。
在图4D的实例中,请求网络设备120生成作为SDMADR请求的ARP分组124H,其类似于ARP分组124A。在图4D中,在特定时限内,请求网络设备120接收作为SDMADR响应的ARP分组124I。ARP分组124I的SDMADR响应指定响应网络设备122已经预留从目标硬件地址5开始的具有范围20的硬件地址。换句话说,在该实例中,响应网络设备122具有预留硬件地址5-24。ARP分组124I的SDMADR响应可进一步指定响应网络设备122正在释放硬件地址15-19。
因此,请求网络设备120可确定硬件地址15-19可用,并且可预留硬件地址15-19。请求网络设备120可生成作为另一个SDMADR请求的ARP分组124J。ARP分组124J的SDMADR请求指定目标硬件地址25,并且硬件地址范围为5。在该实例中,因为响应网络设备122指定响应网络设备122已预留了地址5-24,所以请求网络设备120可将目标硬件地址确定为25。
其他响应网络设备之一可能先前已预留从硬件地址25开始的地址。然而,在图4D的实例中,请求网络设备120在时间限制内没有接收到SDMADR响应消息。因此,请求网络设备120可预留硬件地址25-29。在该实例中,请求网络设备120预留由响应网络设备122释放的硬件地址15-19,以及硬件地址25-29,总共10个硬件地址。
在图4D中,请求网络设备120在时间限制内从一个或多个其他网络设备接收指定硬件地址范围内的一组或多组连续地址的一个或多个消息。例如,请求网络设备120从响应网络设备122接收响应消息,该响应消息指定由请求网络设备120指定的硬件地址范围内的一组连续地址(例如,5-24)(例如,地址5-24中的在由请求网络设备120指定的地址10-19内的一个或多个)。然而,在该实例中,请求网络设备120还接收指定响应网络设备122正在释放的硬件地址的消息(例如,15-19)。
请求网络设备120可确定所释放的硬件地址范围内的硬件地址是可用的。例如,请求网络设备120可确定地址15-19可用。在该实例中,请求网络设备120可预留硬件地址范围内的被释放的硬件地址。例如,请求网络设备120可预留地址15-19。
图5是示出根据本发明的一种或多种技术的请求网络设备的示例性操作的流程图。本公开的流程图作为实例给出。其他实例可包括更多、更少或不同的动作,或者可以以并行或不同的顺序执行动作。请求网络设备可以是图1的本地网络设备12或图4A至图4D的请求网络设备120、任何远程网络设备16或发送SDMADR请求以验证硬件地址的可用性的另一设备。
在图5的实例中,系统10中的多个网络设备的请求网络设备(例如,HAAM 26或VM主机软件24在其上执行的请求网络设备的处理电路)的处理电路确定目标硬件地址和从目标硬件地址开始的硬件地址范围(150)。例如,在请求网络设备未分配虚拟硬件地址但仅仅验证其自己的硬件地址未被分配给网络上的另一网络设备(例如,虚拟机或其他网络设备)的情况下,确定目标硬件地址可仅包括读取请求网络设备的NIC的NIC硬件地址。在请求网络设备的处理电路正在分配硬件地址(例如,将虚拟硬件地址分配给VM)的情况下,请求网络设备的处理电路可以以各种方式确定目标硬件地址。例如,请求网络设备的处理电路可使用伪随机数发生器来确定目标硬件地址。在另一实例中,请求网络设备的处理电路可通过递增先前分配的虚拟硬件地址来确定目标硬件地址。
在确定目标硬件地址之后,请求网络设备的处理电路可发送SDMADR请求消息(152)。SDMADR请求消息指定从目标硬件地址开始的硬件地址范围。例如,在图2的实例中,目标硬件地址字段58可指定目标硬件地址。在图3的实例中,目标硬件地址字段116可指定目标硬件地址。
然后,请求网络设备的处理电路可确定请求网络设备在时间限制内是否从多个网络设备中的一个或多个其他网络设备接收到指定硬件地址范围内的一个或多个硬件地址的一个或多个响应消息(154)。在各种实例中,时间限制可具有各种值。例如,时间限制可以是1秒、2秒或另一时间长度。
作为一个实例,请求网络设备的处理电路可确定请求网络设备在时间限制内没有从任何其他网络设备接收指定硬件地址范围内的任何硬件地址的任何消息。作为另一实例,请求网络设备的处理电路可确定请求网络设备在时间限制内从多个网络设备中的一个或多个其他网络设备接收到指定从目标硬件地址开始的第二硬件地址范围内的所有硬件地址的一个或多个响应消息。
作为另一实例,请求网络设备的处理电路可确定请求网络设备在时间限制内从一个或多个其他网络设备接收到指定硬件地址范围内的一组或多组连续地址的一个或多个消息(例如,所述组连续地址与请求网络设备指定的硬件地址范围重叠),但是该组连续地址可不包含请求网络设备指定的整个硬件地址范围。作为另一实例,请求网络设备的处理电路可确定请求网络设备从一个或多个其他网络设备接收到指定正被释放的一组或多组连续地址的一个或多个消息。
在一个或多个实例中,请求网络设备的处理电路可基于请求网络设备是否接收到一个或多个响应消息来确定由请求网络设备指定的硬件地址范围内的至少硬件地址的子集是否可用。例如,如果没有接收到响应,则请求网络设备的处理电路可确定硬件地址范围内的所有硬件地址都是可用的(例如,至少硬件地址的子集包括所有硬件地址)。如果响应消息中的硬件地址与硬件地址范围内的硬件地址之间存在非重叠的硬件地址,则请求网络设备的处理电路可确定存在硬件地址范围内的硬件地址的子集可用(例如,该子集是不包括与硬件地址范围重叠的所述组连续硬件地址的硬件地址)。如果存在释放的硬件地址,则请求网络设备的处理电路可确定在可用的硬件地址范围内存在硬件地址的子集(例如,子集是释放的硬件地址)。
例如,在图5中,如果请求网络设备的处理电路在时间限制内没有接收到SDMADR响应(154的“否”),则请求网络设备的处理电路可确定是否已达到尝试限制(156)。例如,如果请求网络设备的处理电路确定请求网络设备没有从任何其他网络设备接收任何在该时间限制内指定硬件地址范围内的任何硬件地址的消息,则请求网络设备的处理电路可确定是否已达到尝试限制。在一些实例中,尝试限制等于3或另一个值。
响应于确定尚未达到尝试限制(156的“否”),请求网络设备的处理电路可循环返回并发送具有相同目标硬件地址和相同硬件地址范围的另一SDMADR请求消息(152)。然而,响应于确定已经达到尝试限制(156的“是”),请求网络设备的处理电路可确定目标硬件地址可用(158)。例如,请求网络设备的处理电路可确定在从目标硬件地址开始的硬件地址范围内的所有硬件地址都是可用的。请求网络设备的处理电路可预留从目标硬件地址开始的硬件地址范围。请求网络设备的处理电路可将预留的地址分配给在请求网络设备上执行的一个或多个VM(166)。
在图5中,如果请求网络设备的处理电路在时间限制内接收到指定硬件地址范围内的一个或多个硬件地址的SDMADR响应(154的“是”),则请求网络设备的处理电路可确定从由请求网络设备指定的目标硬件设备开始的硬件地址范围内是否存在任何非重叠或释放的地址(160)。作为一个实例,请求网络设备的处理电路可确定请求网络设备是否从一个或多个其他网络设备接收到一个或多个消息,再时间限制内指定硬件地址范围内的一组或多组连续地址。在该实例中,请求网络设备的处理电路可确定在由请求网络设备指定的硬件地址范围内是否存在不与一组或多组连续地址重叠的任何硬件地址。作为另一实例,请求网络设备的处理电路可确定请求网络设备在时间限制内是否从一个或多个其他网络设备接收到指定硬件地址范围内的一组或多组连续地址正在被释放的一个或多个消息。
如果不存在非重叠地址或者不存在释放的地址(160的“否”),则请求网络设备的处理电路可通过选择新的目标硬件地址重复图5的示例性操作(150)。例如,在这种情况下,硬件地址范围内的所有硬件地址都由其他网络设备预留,并且不被释放。
如果存在非重叠地址或释放的地址(160的“是”),则请求网络设备的处理电路可预留非重叠或释放的地址(162)。例如,在这种情况下,在硬件地址范围内存在至少硬件地址的子集可用,并且请求网络设备的处理电路可预留硬件地址(例如,在数据库中)。
请求网络设备的处理电路可确定是否有足够的硬件地址(164)。如果没有足够的硬件地址(164的“否”),则请求网络设备的处理电路可重复图5的示例性操作,以新的目标硬件地址开始,并重复这些示例性操作,直到有足够的硬件地址。如果存在足够的硬件地址(164的“是”),则请求网络设备的处理电路可将预留的硬件地址分配给在请求网络设备上执行的VM(166)。
图6A至图6C是示出根据本公开的一种或多种技术的请求网络设备和响应网络设备之间用于实现SDMADR协议的示例性交互的流程图。为了便于解释,关于请求网络设备和响应网络设备描述了这些技术。在一个或多个实例中,可通过请求网络设备和响应网络设备中的相应网络设备的处理电路来执行这些技术。处理电路可以是请求网络设备和响应网络设备的电路,其执行诸如接收、发送、确定、预留等操作。虚拟机和其他软件模块也可在处理电路上执行,或者处理电路可包括固定功能电路以执行示例性技术。
如图6A的实例中所示,请求网络设备可确定从目标硬件地址开始的硬件地址范围(200)。另外,请求网络设备可生成SDMADR请求消息(202)。作为生成SDMADR请求消息的一部分,请求网络设备可在SDMADR请求消息中包括操作代码(204)。操作代码可将消息标识为SDMADR请求消息。请求网络设备还可在SDMADR请求消息中包括请求网络设备的NIC硬件地址(206)。例如,在图1的上下文中,请求网络设备可在SDMADR请求消息中包括NIC硬件地址20。请求网络设备可在发送方硬件地址字段54(图2)或112A(图3)中包括NIC硬件地址。
请求网络设备还可在SDMADR请求消息中包括设备标识符(208)。例如,请求网络设备可在设备标识符字段56(图2)或发送方协议地址字段114(图3)中包括设备标识符。
此外,请求网络设备可在SDMADR请求消息中包括目标硬件地址和硬件地址范围(210)。例如,请求网络设备可在目标硬件地址字段58(图2)或目标硬件地址字段116(图3)中包括目标硬件地址。请求网络设备可在硬件地址范围字段60(图2)或目标协议地址字段118(图3)中包括硬件地址范围。
然后,请求网络设备可在网络上广播包括SDMADR请求消息的帧(例如,以太网帧)(212)。换句话说,请求网络设备可发送包括SDMADR请求消息的帧,该SDMADR请求消息将广播地址指定为目的地地址。例如,请求网络设备可在帧的源硬件地址字段中指定从IANA预留的单播硬件地址以与SDMADR一起使用。随后,响应网络设备可接收帧(214)。然后,响应网络设备可确定该帧是否包括SDMADR请求消息(216)。假设该帧包括SDMADR请求消息,则图6A的交互如图6B所示继续(由标记为“A”的圆圈表示)。
图6B是示出图6A的示例性交互的继续的流程图。如图6B所示,响应网络设备可确定SDMADR请求的地址范围是否在响应设备的一组连续地址组内(250)。例如,每个响应设备可确定SDMADR请求的地址范围是否在由相应的响应设备预留的任何连续地址内。换句话说,每个响应设备可确定一组连续的硬件地址是否与SDMADR请求的硬件地址范围的子集匹配。硬件地址范围的子集可以是硬件地址范围内的一些或全部硬件地址。响应于确定响应网络设备的一组连续硬件地址与硬件地址范围的子集不匹配(250的“否”),响应设备不生成SDMADR响应消息(252)。
另一方面,响应于确定网络设备的一组连续硬件地址与硬件地址范围的子集匹配(250的“是”),响应网络设备可发送指定该组连续硬件地址的响应消息。例如,响应网络设备可记录在SDMADR请求消息中指定的设备标识符、NIC硬件地址、发送方硬件地址和/或目标硬件地址(254)。
此外,响应于确定网络设备的一组连续硬件地址与硬件地址范围的子集匹配,响应网络设备可生成SDMADR响应消息(256)。作为生成SDMADR响应消息的一部分,响应网络设备可在SDMADR响应消息中包括操作代码(258)。操作代码指定消息是SDMADR响应消息。
另外,响应网络设备可在SDMADR响应消息中包括指示哪些地址仍被响应网络设备预留的信息(260)。例如,响应网络设备可在发送方硬件地址54(图2)或发送方硬件地址字段112(图3)中包括响应网络设备预留的连续地址的起始地址,并且在硬件地址范围字段60(图2)或目标协议地址字段(118)的前两个字节中包括指示响应网络设备预留的连续地址的数量的数字。
响应网络设备可包括指示正在释放哪些地址的信息。例如,响应网络设备可在目标硬件地址字段58(图2)或目标硬件地址字段116(图3)中包括响应网络设备释放的连续地址的起始地址,并且在硬件地址范围字段60(图2)或目标协议地址字段(118)的后两个字节中包括指示响应网络设备释放的连续地址的数量的数字。
在一些实例中,响应设备可指示响应设备没有释放其任何预留地址。在这样的实例中,目标硬件地址和目标协议地址的最后两个字节可以是零。在一些实例中,响应设备可指示正在释放所有预留地址。在这样的实例中,发送方硬件地址和目标协议地址的前两个字节可以是零。在一些实例中,响应设备可保留其一些预留地址并释放其他地址。此外,如果这些地址部分地或完全地与请求设备所请求的地址重叠,则指示预留和释放地址的信息可仅由响应设备发送。
然后,响应网络设备可发送包括SDMADR响应消息的帧(例如,以太网帧)(264)。在一些实例中,响应网络设备可广播该帧。在一些实例中,帧可将SDMADR请求消息中指定的NIC硬件地址指定为帧的目的地地址。随后,请求网络设备可接收帧(266)。然后图6A和图6B的交互在图6C中继续。
图6C是示出图6B的示例性交互的继续的流程图。在图6C的实例中,请求网络设备可确定该帧是否包括SDMADR响应消息(300)。请求网络设备可使用操作代码字段来确定该帧是否包括SDMADR响应消息。响应于确定帧不包括SDMADR响应消息(300的“否”),请求网络设备可对帧执行一些其他处理(302),这在本公开的范围之外。
然而,作为响应,确定帧包括SDMADR响应消息(300的“是”),请求网络设备可确定SDMADR请求中所指定的硬件地址范围内的至少硬件地址的子集是否可用(304)。例如,请求网络设备可确定SDMADR响应消息是否指定了一组连续的硬件地址。请求网络设备可确定由响应设备指定的一组连续硬件地址完全还是部分地包含由请求设备指定的硬件地址范围。
如果响应设备指定的一组连续硬件地址完全包含由请求设备指定的硬件地址范围,则响应设备可确定在SDMADR请求中指定的硬件地址范围内没有硬件地址的子集可用(304的“否”)。在该实例中,请求网络设备可重复图6A至图6C的实例,以不同的目标硬件地址开始(308)。
如果响应设备指定的一组连续硬件地址部分地包含由请求设备指定的硬件地址范围,则响应设备可确定在SDMADR请求中指定的硬件地址范围内存在硬件地址的子集可用(304的“是”)。例如,硬件地址范围内的硬件地址子集包括不包括SDMADR响应消息中指定的该组连续硬件地址的硬件地址范围。响应设备可预留硬件地址的子集(306)。
在一个或多个实例中,所描述的功能可以以硬件、软件、固件或其任何组合来实施。如果以软件实施,那么所述功能可作为一个或多个指令或代码存储在计算机可读介质上或通过其传输并且由基于硬件的处理单元执行。计算机可读介质可包括计算机可读存储介质,其对应于诸如数据存储介质的有形介质,或者包括有助于将计算机程序从一个地方传送到另一个地方的任何介质的通信介质,例如,根据通信协议。以这种方式,计算机可读介质通常可对应于(1)非暂时性的有形计算机可读存储介质或(2)诸如信号或载波的通信介质。数据存储介质可以是可由一个或多个计算机或一个或多个处理器访问的任何可用介质,以检索用于实现本公开中描述的技术的指令、代码和/或数据结构。计算机程序产品可包括计算机可读介质。
作为实例而非限制,这种计算机可读存储介质可包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储器、磁盘存储器或其他磁存储设备、闪存或任何其他可用于以指令或数据结构的形式存储所需程序代码并且可由计算机访问的其他介质。而且,任何连接都适当地称为计算机可读介质。例如,如果使用同轴电缆、光纤电缆、双绞线、数字用户线(DSL)或诸如红外线、无线电和微波的无线技术从网站、服务器或其他远程源传输指令,则同轴电缆、光纤电缆、双绞线、DSL或诸如红外线、无线电和微波的无线技术都包含在介质的定义中。然而,应该理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其他瞬态介质,而是针对非瞬态有形存储介质。这里使用的磁盘和光盘包括光盘(CD)、激光光盘、光盘、数字多功能光盘(DVD)、软盘和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘通过激光光学地再现数据。上述的组合也应包括在计算机可读介质的范围内。
指令可由一个或多个处理器执行,例如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其他等效集成或离散逻辑电路。因此,这里使用的术语“处理器”可指任何前述结构或适合于实现本文所述技术的任何其他结构。另外,在一些方面,本文描述的功能可在配置用于编码和解码的专用硬件和/或软件模块内提供,或者将其并入组合的编解码器中。而且,这些技术可在一个或多个电路或逻辑元件中完全实现。
本发明的技术可在各种装置或设备中实施,包括无线手持机、集成电路(IC)或一组IC(例如,芯片组)。在本公开中描述了各种组件、模块或单元以强调被配置为执行所公开的技术的设备的功能方面,但不一定需要由不同的硬件单元实现。而是,如上所述,各种单元可在编解码器硬件单元中组合或由一组互操作硬件单元提供,包括如上所述实现一个或多个处理器的处理电路,结合合适的软件和/或固件。
已经描述了这些技术的各种实施方式。这些和其他实施方式在所附权利要求的范围内。

Claims (26)

1.一种检测计算机网络中的硬件地址冲突的方法,所述方法包括:
由所述计算机网络中的多个网络设备中的一网络设备确定从目标硬件地址开始的硬件地址范围;
由所述网络设备在网络上发送请求消息,所述请求消息指定从所述目标硬件地址开始的所述硬件地址范围;
由所述网络设备确定所述网络设备在时间限制内是否从所述多个网络设备中的一个或多个其他网络设备接收到指定所述硬件地址范围内的一个或多个硬件地址的一个或多个响应消息;
由所述网络设备基于所述网络设备是否接收到所述一个或多个响应消息来确定所述硬件地址范围内的至少硬件地址的子集是否可用;以及
由所述网络设备基于至少所述硬件地址的所述子集是否可用的确定来预留硬件地址。
2.根据权利要求1所述的方法,还包括:
由所述网络设备执行一个或多个虚拟机(VM);并且
将一个或多个预留的硬件地址分配给所述一个或多个VM中的每一个。
3.根据权利要求1所述的方法,
其中,确定所述网络设备是否接收到所述一个或多个响应消息包括:确定所述网络设备在所述时间限制内没有从任何其他网络设备接收指定所述硬件地址范围内的任何硬件地址的任何消息,
其中,基于所述网络设备是否接收到所述一个或多个响应消息来确定所述硬件地址范围内的至少所述硬件地址的所述子集是否可用包括:确定在从所述目标硬件地址开始的所述硬件地址范围内的所有硬件地址可用,并且
其中,预留所述硬件地址包括预留在从所述目标硬件地址开始的所述硬件地址范围内的所有硬件地址。
4.根据权利要求1所述的方法,
其中,确定所述网络设备是否接收到一个或多个响应消息包括:确定所述网络设备在所述时间限制内从一个或多个其他网络设备接收到指定在所述硬件地址范围内的一组或多组连续地址的一个或多个消息,
其中,基于所述网络设备是否接收到所述一个或多个响应消息来确定所述硬件地址范围内的至少所述硬件地址的子集是否可用包括:确定所述硬件地址范围内的不包括所述一组或多组连续地址内的硬件地址的硬件地址可用,并且
其中,预留所述硬件地址包括预留所述硬件地址范围内的不包括所述一组或多组连续地址内的硬件地址的所述硬件地址。
5.根据权利要求1至4中任一项所述的方法,其中,所述请求消息包括第一请求消息,所述目标硬件地址包括第一目标硬件地址,并且所述硬件地址范围包括第一硬件地址范围,所述方法还包括:
由所述网络设备确定从第二目标硬件地址开始的第二硬件地址范围;
由所述网络设备在所述网络上发送第二请求消息,所述第二请求消息指定从所述第二目标硬件地址开始的所述第二硬件地址范围;
由所述网络设备确定所述网络设备在时间限制内从所述多个网络设备中的一个或多个其他网络设备接收到一个或多个响应消息,所述响应消息指定在从所述第二硬件地址开始的所述第二硬件地址范围内的所有硬件地址;
由所述网络设备确定所述第二硬件地址范围内的硬件地址都不可用。
6.根据权利要求1所述的方法,其中,所述目标硬件地址是媒体访问控制(MAC)地址。
7.根据权利要求1所述的方法,其中,发送所述请求消息包括:
由所述网络设备发送包括所述请求消息的帧,所述帧具有指定广播地址的目的地地址字段。
8.根据权利要求1所述的方法,其中,所述方法还包括:
在所述请求消息中包括所述网络设备的NIC硬件地址,所述NIC硬件地址在制造网络接口卡(NIC)时被分配给所述网络设备的所述NIC。
9.根据权利要求1所述的方法,其中,所述请求消息符合地址解析协议格式。
10.根据权利要求9所述的方法,其中,发送所述请求消息包括:
由所述网络设备发送包括所述请求消息的以太网帧,所述以太网帧具有指定与地址解析协议对应的值的以太类型字段。
11.根据权利要求1至4和6至8中任一项所述的方法,其中,所述请求消息符合地址解析协议格式,并且其中:
所述请求消息包括16位硬件地址空间字段、16位协议地址空间字段、8位硬件地址长度字段、8位协议地址长度字段、16位操作代码字段、n位发送方硬件地址字段、m位发送方协议地址字段、n位目标硬件地址字段以及m位目标协议地址字段,
n由所述硬件地址长度字段定义,
m由所述协议地址长度字段定义,
所述操作代码字段指定表示所述请求消息是多个地址的重复的硬件地址检测请求消息的值,
源硬件地址字段指定所述网络设备的NIC硬件地址,所述NIC硬件地址在制造网络接口控制器(NIC)时被分配给所述网络设备的所述NIC,
源协议地址字段指定所述网络设备的设备标识符,
所述目标硬件地址字段指定所述目标硬件地址,并且
所述目标协议地址字段指定所述硬件地址范围。
12.根据权利要求9所述的方法,其中,所述响应消息符合所述地址解析协议格式。
13.根据权利要求1至4和6至8中任一项所述的方法,其中,所述请求消息符合地址解析协议格式,并且所述响应消息符合所述地址解析协议格式,并且其中:
所述网络设备是第一网络设备,
所述硬件地址范围是第一硬件地址范围,
所述响应消息包括16位硬件地址空间字段、16位协议地址空间字段、8位硬件地址长度字段、8位协议地址长度字段、16位操作代码字段、n位发送方硬件地址字段、m位发送方协议地址字段、n位目标硬件地址字段以及m位目标协议地址字段,
n由所述硬件地址长度字段定义,
m由所述协议地址长度字段定义,
所述操作代码字段指定表示所述响应消息是多个地址的重复的硬件地址检测响应消息的值,
所述发送方硬件地址字段指定被预留的连续地址的开始,
所述目标硬件地址字段指定被释放的连续地址的开始,
所述目标协议地址字段包括四个字节,前两个字节表示被预留的连续地址的数量,并且后两个字节表示被释放的连续地址的数量。
14.一种用于检测计算机网络中的硬件地址冲突的方法,所述方法包括:
由网络设备接收指定从目标硬件地址开始的硬件地址范围的请求消息;
由所述网络设备确定所述网络设备的一组连续硬件地址是否与所述硬件地址范围的子集匹配;并且
响应于确定所述网络设备的所述一组连续硬件地址与所述硬件地址范围的所述子集匹配,而由所述网络设备发送指定所述一组连续硬件地址的响应消息。
15.根据权利要求14所述的方法,其中,所述目标硬件地址是媒体访问控制(MAC)地址。
16.根据权利要求14所述的方法,其中,接收所述请求消息包括由所述网络设备接收具有指定广播地址的目的地地址字段的帧。
17.根据权利要求14所述的方法,其中,所述请求消息符合地址解析协议格式。
18.根据权利要求17所述的方法,其中,接收所述请求消息包括:
由所述网络设备接收包括所述请求消息的以太网帧,所述以太网帧具有指定与地址解析协议对应的值的以太类型字段。
19.根据权利要求14至18中任一项所述的方法,其中:
所述网络设备是第一网络设备,
所述请求消息包括16位硬件地址空间字段、16位协议地址空间字段、8位硬件地址长度字段、8位协议地址长度字段、16位操作代码字段、n位发送方硬件地址字段、m位发送方协议地址字段、n位目标硬件地址字段以及m位目标协议地址字段,
n由所述硬件地址长度字段定义,
m由所述协议地址长度字段定义,
所述操作代码字段指定表示所述请求消息是多个地址的重复的硬件地址检测请求消息的值,
源硬件地址字段指定第二网络设备的NIC硬件地址,所述NIC硬件地址在制造网络接口控制器(NIC)时被分配给所述第二网络设备的所述NIC,
源协议地址字段指定所述第二网络设备的设备标识符,
所述目标硬件地址字段指定所述目标硬件地址,并且
所述目标协议地址字段指定所述地址范围。
20.根据权利要求14所述的方法,其中,所述响应消息符合地址解析协议格式。
21.根据权利要求14至18中任一项所述的方法,其中,所述响应消息符合地址解析协议格式,并且其中:
所述响应消息包括16位硬件地址空间字段、16位协议地址空间字段、8位硬件地址长度字段、8位协议地址长度字段、16位操作代码字段、n位发送方硬件地址字段、m位发送方协议地址字段、n位目标硬件地址字段以及m位目标协议地址字段,
n由所述硬件地址长度字段定义,
m由所述协议地址长度字段定义,
所述操作代码字段指定表示所述响应消息是多个地址的重复的硬件地址检测响应消息的值,
所述发送方硬件地址字段指定被预留的连续地址的开始,
所述目标硬件地址字段指定被释放的连续地址的开始,
所述目标协议地址字段包括四个字节,前两个字节表示被预留的连续地址的数量,并且后两个字节表示被释放的连续地址的数量。
22.一种网络设备,包括:
数据库;和
耦接到所述数据库的处理电路,所述处理电路被配置为:
确定从目标硬件地址开始的硬件地址范围;
在网络上发送请求消息,所述请求消息指定从所述目标硬件地址开始的所述硬件地址范围;
确定所述网络设备在时间限制内是否从耦接到所述网络的多个网络设备中的一个或多个其他网络设备接收到指定所述硬件地址范围内的一个或多个硬件地址的一个或多个响应消息;
基于所述网络设备是否接收到所述一个或多个响应消息来确定所述硬件地址范围内的至少硬件地址的子集是否可用;以及
在所述数据库中,基于至少所述硬件地址的子集是否可用的确定来预留硬件地址。
23.根据权利要求22所述的网络设备,
其中,为了确定所述网络设备是否接收到所述一个或多个响应消息,所述处理电路被配置为确定所述网络设备在所述时间限制内没有从任何其他网络设备接收指定所述硬件地址范围内的任何硬件地址的任何消息,
其中,为了基于所述网络设备是否接收到所述一个或多个响应消息来确定所述硬件地址范围内的至少所述硬件地址的子集是否可用,所述处理电路被配置为确定在从所述目标硬件地址开始的所述硬件地址范围内的所有硬件地址可用,并且
其中,为了预留所述硬件地址,所述处理电路被配置为预留在从所述目标硬件地址开始的所述硬件地址范围内的所有硬件地址。
24.根据权利要求22所述的网络设备,
其中,为了确定所述网络设备是否接收到所述一个或多个响应消息,所述处理电路被配置为确定所述网络设备在所述时间限制内从一个或多个所述其他网络设备接收指定所述硬件地址范围内的一组或多组连续地址的一个或多个消息,
其中,为了基于所述网络设备是否接收到所述一个或多个响应消息来确定所述硬件地址范围内的至少所述硬件地址的子集是否可用,所述处理电路被配置为确定在所述硬件地址范围内的不包括所述一组或多组连续地址内的硬件地址的硬件地址可用,并且
其中,为了预留所述硬件地址,所述处理电路被配置为预留在所述硬件地址范围内的不包括所述一组或多组连续地址内的硬件地址的所述硬件地址。
25.根据权利要求22至24中任一项所述的网络设备,其中,所述请求消息包括第一请求消息,所述目标硬件地址包括第一目标硬件地址,并且所述硬件地址范围包括第一硬件地址范围,并且其中,所述处理电路被配置为:
确定从第二目标硬件地址开始的第二硬件地址范围;
在所述网络上发送第二请求消息,所述第二请求消息指定从所述第二目标硬件地址开始的所述第二硬件地址范围;
确定所述网络设备在时间限制内从所述多个网络设备中的一个或多个其他网络设备接收到指定在从所述第二硬件地址开始的所述第二硬件地址范围内的所有硬件地址的一个或多个响应消息;
确定所述第二硬件地址范围内的硬件地址都不可用。
26.一种网络设备,包括:
数据库;和
耦接到所述数据库的处理电路,所述处理电路被配置为:
接收指定从目标硬件地址开始的硬件地址范围的请求消息;
基于存储在所述数据库中的地址范围,确定所述网络设备的一组连续硬件地址是否与所述硬件地址范围的子集匹配;并且
响应于确定所述网络设备的所述一组连续硬件地址与所述硬件地址范围的所述子集匹配,发送指定所述一组连续硬件地址的响应消息。
CN201910577132.3A 2018-07-31 2019-06-28 检测计算机网络中的硬件地址冲突 Active CN110784557B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/050,983 US10992637B2 (en) 2018-07-31 2018-07-31 Detecting hardware address conflicts in computer networks
US16/050,983 2018-07-31

Publications (2)

Publication Number Publication Date
CN110784557A true CN110784557A (zh) 2020-02-11
CN110784557B CN110784557B (zh) 2022-05-24

Family

ID=67296931

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910577132.3A Active CN110784557B (zh) 2018-07-31 2019-06-28 检测计算机网络中的硬件地址冲突

Country Status (3)

Country Link
US (1) US10992637B2 (zh)
EP (2) EP3866006A1 (zh)
CN (1) CN110784557B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021175221A1 (zh) * 2020-03-06 2021-09-10 华为技术有限公司 数据处理方法及其设备
WO2024021109A1 (zh) * 2022-07-29 2024-02-01 华为技术有限公司 一种地址冲突检测方法及装置

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10992637B2 (en) 2018-07-31 2021-04-27 Juniper Networks, Inc. Detecting hardware address conflicts in computer networks
US11165744B2 (en) 2018-12-27 2021-11-02 Juniper Networks, Inc. Faster duplicate address detection for ranges of link local addresses
US10931628B2 (en) 2018-12-27 2021-02-23 Juniper Networks, Inc. Duplicate address detection for global IP address or range of link local IP addresses
US10965637B1 (en) 2019-04-03 2021-03-30 Juniper Networks, Inc. Duplicate address detection for ranges of global IP addresses
US20220272068A1 (en) * 2019-08-16 2022-08-25 Telefonaktiebolaget Lm Ericsson (Publ) Method and entity for transmitting a plurality of mac addresses
US11729139B2 (en) * 2021-07-21 2023-08-15 Cisco Technology, Inc. Systems and methods for the handling of bridged virtual machines

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070073882A1 (en) * 2005-09-27 2007-03-29 Microsoft Corporation Distributing and arbitrating media access control addresses on ethernet network
CN102333013A (zh) * 2011-10-17 2012-01-25 中兴通讯股份有限公司 一种介质访问控制地址冲突检测方法、装置和系统
CN102333134A (zh) * 2011-10-17 2012-01-25 中兴通讯股份有限公司 一种介质访问控制地址冲突检测方法、装置和系统
US8792502B2 (en) * 2012-08-07 2014-07-29 Cisco Technology, Inc. Duplicate MAC address detection

Family Cites Families (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6226680B1 (en) * 1997-10-14 2001-05-01 Alacritech, Inc. Intelligent network interface system method for protocol processing
US6243749B1 (en) 1998-10-08 2001-06-05 Cisco Technology, Inc. Dynamic network address updating
US6578074B1 (en) 1999-06-25 2003-06-10 Mediaone Group, Inc. Provisioning server enhancement
JP3534305B2 (ja) 2000-02-29 2004-06-07 日本電気株式会社 アドレス解決プロトコルを用いたipアドレス重複検出方法
US6982953B1 (en) 2000-07-11 2006-01-03 Scorpion Controls, Inc. Automatic determination of correct IP address for network-connected devices
US6957276B1 (en) 2000-10-23 2005-10-18 Microsoft Corporation System and method of assigning and reclaiming static addresses through the dynamic host configuration protocol
US7197549B1 (en) 2001-06-04 2007-03-27 Cisco Technology, Inc. On-demand address pools
US7016324B2 (en) 2001-10-23 2006-03-21 Telcordia Technologies, Inc. System and method for dynamically allocating IP addresses for shared wireless and wireline networks based on priorities and guard bands
GB0130531D0 (en) 2001-12-20 2002-02-06 Marconi Comm Ltd Duplicate address detection in networks
EP1488611B1 (de) 2002-03-27 2005-08-31 Siemens Aktiengesellschaft Aaa serversystem zur effizienten zugangskontrolle und adresszuordnung
KR100484145B1 (ko) 2002-07-05 2005-04-18 삼성전자주식회사 중복 주소 노드에 가상 주소를 자동으로 할당하는 장치 및방법
US7734745B2 (en) 2002-10-24 2010-06-08 International Business Machines Corporation Method and apparatus for maintaining internet domain name data
US6930988B2 (en) 2002-10-28 2005-08-16 Nokia Corporation Method and system for fast IP connectivity in a mobile network
US7292538B1 (en) 2002-12-06 2007-11-06 Cisco Technology, Inc. System and method for distributing information in a network environment
JP4136639B2 (ja) 2002-12-13 2008-08-20 キヤノン株式会社 サービス提供システム及びサービス提供装置
KR20040065643A (ko) 2003-01-15 2004-07-23 삼성전자주식회사 IPv6 프로토콜을 위한 IP 주소 및 도메인명자동등록 방법
US7610487B2 (en) 2003-03-27 2009-10-27 Microsoft Corporation Human input security codes
US8261062B2 (en) 2003-03-27 2012-09-04 Microsoft Corporation Non-cryptographic addressing
US7178059B2 (en) 2003-05-07 2007-02-13 Egenera, Inc. Disaster recovery for processing resources using configurable deployment platform
US8036237B2 (en) 2003-05-16 2011-10-11 Tut Systems, Inc. System and method for transparent virtual routing
JP2004356920A (ja) 2003-05-29 2004-12-16 Hitachi Ltd Dhcpサーバシステム
US7386629B2 (en) 2003-06-30 2008-06-10 Intel Corporation System and method for synchronous configuration of DHCP server and router interfaces
EP1494433B1 (en) 2003-07-03 2011-05-04 Alcatel Lucent Duplicate MAC address check and dynamic MAC address allocation
US20050066035A1 (en) 2003-09-19 2005-03-24 Williams Aidan Michael Method and apparatus for connecting privately addressed networks
US7430614B2 (en) 2003-10-31 2008-09-30 Redback Networks, Inc. Use of IP address blocks with default interfaces in a router
WO2005050897A2 (en) 2003-11-18 2005-06-02 Air Broadband Communications, Inc. Dhcp pool sharing mechanism in mobile environment
US7185195B2 (en) 2003-12-14 2007-02-27 Realnetworks, Inc. Certificate based digital rights management
GB2413462A (en) 2004-04-23 2005-10-26 Matsushita Electric Ind Co Ltd Duplicate Address Detection Optimisation
US7789308B2 (en) 2004-05-13 2010-09-07 Cisco Technology, Inc. Locating and provisioning devices in a network
US7422152B2 (en) 2004-05-13 2008-09-09 Cisco Technology, Inc. Methods and devices for providing scalable RFID networks
US7321893B1 (en) 2004-07-29 2008-01-22 Emc Corporation System and method for the configuration of resources in resource groups
EP1628458A1 (de) 2004-08-19 2006-02-22 Siemens Aktiengesellschaft Verfahren zur Vermittlung von IP-Paketen zwischen Kundennetzen und IP-Provider-Netzen über ein Zugangsnetz
US20060155563A1 (en) 2005-01-12 2006-07-13 Banerjee Dwip N Method, system and article for advance lease negotiation in DHCP
US7961724B2 (en) 2005-03-18 2011-06-14 Qualcomm Incorporated Dynamic media access control (MAC) address assignment
US7688792B2 (en) 2005-04-21 2010-03-30 Qualcomm Incorporated Method and apparatus for supporting wireless data services on a TE2 device using an IP-based interface
US20070002833A1 (en) 2005-06-30 2007-01-04 Symbol Technologies, Inc. Method, system and apparatus for assigning and managing IP addresses for wireless clients in wireless local area networks (WLANs)
US20070180499A1 (en) 2006-01-31 2007-08-02 Van Bemmel Jeroen Authenticating clients to wireless access networks
US7853708B2 (en) 2006-02-24 2010-12-14 Cisco Technology, Inc. Techniques for replacing point to point protocol with dynamic host configuration protocol
US7624181B2 (en) 2006-02-24 2009-11-24 Cisco Technology, Inc. Techniques for authenticating a subscriber for an access network using DHCP
US7814311B2 (en) 2006-03-10 2010-10-12 Cisco Technology, Inc. Role aware network security enforcement
JP4727537B2 (ja) 2006-09-11 2011-07-20 富士通株式会社 リレーエージェント装置及び代行アドレス貸与装置
US7792942B1 (en) 2007-01-31 2010-09-07 Alcatel Lucent DHCP server synchronization with DHCP proxy
CN101355474B (zh) 2007-07-25 2010-09-08 华为技术有限公司 请求、分配连接点地址的方法及设备
US20100272107A1 (en) * 2007-11-26 2010-10-28 Oktavian Papp Technique for address resolution in a data transmission network
KR100929914B1 (ko) 2007-12-18 2009-12-04 한국전자통신연구원 애드 혹 네트워크를 위한 동적 주소 할당 방법
JP5392097B2 (ja) 2008-02-19 2014-01-22 日本電気株式会社 アドレス決定装置、通信システム、アドレス決定方法及びプログラム
US8351928B2 (en) 2008-04-14 2013-01-08 Cisco Technology, Inc. Synchronizing DHCP and mobile IP messaging
JP5529868B2 (ja) 2008-08-14 2014-06-25 サムスン エレクトロニクス カンパニー リミテッド 動的ホスト構成プロトコルIPv4アドレス解除要請を処理するための方法及びシステム
US8285875B2 (en) 2009-01-28 2012-10-09 Juniper Networks, Inc. Synchronizing resource bindings within computer network
US8086713B2 (en) 2009-01-28 2011-12-27 Juniper Networks, Inc. Determining a subscriber device has failed gracelessly without issuing a DHCP release message and automatically releasing resources reserved for the subscriber device within a broadband network upon determining that another subscriber device requesting the reservation of a network address has the same context information as the failed subscriber device
US8874693B2 (en) 2009-02-20 2014-10-28 Microsoft Corporation Service access using a service address
US8385230B2 (en) 2009-02-25 2013-02-26 Microsoft Corporation Automatic network address assignment in a wireless mesh
US8224946B2 (en) 2009-04-24 2012-07-17 Rockstar Bidco, LP Method and apparatus for accommodating duplicate MAC addresses
BR112012012331A2 (pt) * 2009-11-27 2017-10-10 Koninl Philips Electronics Nv sistema de rede sem fio, dispositivo de controle para uso em um sistema de rede, dispositivo de função para uso em sistema de rede sem fio, método de operar um sistema de rede sem fio com pelo menos um dispositivo de controle e um dispositivo de finção e programa de computador
US8631100B2 (en) 2010-07-20 2014-01-14 Juniper Networks, Inc. Automatic assignment of hardware addresses within computer networks
CN102546849B (zh) * 2010-12-30 2014-10-08 华为技术有限公司 Ip地址冲突检测方法及网络设备
CN102984288B (zh) 2012-11-19 2017-11-17 中兴通讯股份有限公司 一种自动管理IPv6地址冲突的方法及系统
US9413713B2 (en) 2013-12-05 2016-08-09 Cisco Technology, Inc. Detection of a misconfigured duplicate IP address in a distributed data center network fabric
US9628435B2 (en) 2014-10-17 2017-04-18 Cisco Technology, Inc. Duplicate address detection based on distributed bloom filter
WO2016148676A1 (en) 2015-03-13 2016-09-22 Hewlett Packard Enterprise Development Lp Determine anomalous behavior based on dynamic device configuration address range
EP3382998A1 (en) 2017-03-29 2018-10-03 Juniper Networks, Inc. Detecting hardware address conflicts in computer networks
US10992637B2 (en) 2018-07-31 2021-04-27 Juniper Networks, Inc. Detecting hardware address conflicts in computer networks
US11516179B2 (en) 2018-09-21 2022-11-29 Juniper Networks, Inc. Automatic recovery from duplicate network addresses

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070073882A1 (en) * 2005-09-27 2007-03-29 Microsoft Corporation Distributing and arbitrating media access control addresses on ethernet network
CN102333013A (zh) * 2011-10-17 2012-01-25 中兴通讯股份有限公司 一种介质访问控制地址冲突检测方法、装置和系统
CN102333134A (zh) * 2011-10-17 2012-01-25 中兴通讯股份有限公司 一种介质访问控制地址冲突检测方法、装置和系统
US8792502B2 (en) * 2012-08-07 2014-07-29 Cisco Technology, Inc. Duplicate MAC address detection

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
URL:HTTPS://DOCS.ORACLE.COM/CD/E80106_01/PDF/E80109.PDF: "《Oracle VM Server for SPARC 3.5 Administration Guide》", 1 November 2017 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021175221A1 (zh) * 2020-03-06 2021-09-10 华为技术有限公司 数据处理方法及其设备
US11960720B2 (en) 2020-03-06 2024-04-16 Huawei Technologies Co., Ltd. Data processing method and device
WO2024021109A1 (zh) * 2022-07-29 2024-02-01 华为技术有限公司 一种地址冲突检测方法及装置

Also Published As

Publication number Publication date
CN110784557B (zh) 2022-05-24
US20200045011A1 (en) 2020-02-06
EP3606014B1 (en) 2021-04-28
EP3606014A1 (en) 2020-02-05
US10992637B2 (en) 2021-04-27
EP3866006A1 (en) 2021-08-18

Similar Documents

Publication Publication Date Title
CN110784557B (zh) 检测计算机网络中的硬件地址冲突
US7848327B2 (en) Methods and apparatus for creating addresses
CN111385374B (zh) 用于网络分配的方法、网络设备和计算机可读存储介质
US11960430B2 (en) Remote mapping method, apparatus and device for computing resources, and storage medium
US20090063706A1 (en) Combined Layer 2 Virtual MAC Address with Layer 3 IP Address Routing
EP3382998A1 (en) Detecting hardware address conflicts in computer networks
CN104221331B (zh) 用于以太网交换机的没有查找表的第2层分组交换
US9910687B2 (en) Data flow affinity for heterogenous virtual machines
CN106031116A (zh) 一种ns与vnf的关联方法、装置及系统
CN110063045B (zh) 云计算系统中的报文处理方法及设备
US11909717B1 (en) Duplicate address detection for ranges of global IP addresses
CN106873970B (zh) 一种操作系统的安装方法和装置
CN111385373B (zh) 用于链路本地地址的范围的快速重复地址检测
CN113535319A (zh) 一种实现多rdma网卡虚拟化的方法、设备及存储介质
CN108667750B (zh) 虚拟资源管理方法及装置
CN114362976A (zh) 一种裸机的对接存储方法、装置及系统
CN111294220B (zh) 基于nginx的网络隔离配置方法和装置
EP4216510A1 (en) Method for acquiring address, apparatus and system
CN113535370A (zh) 一种实现负载均衡的多rdma网卡虚拟化的方法、设备
CN114866371B (zh) 建立IPSec隧道的方法、装置、存储介质及电子设备

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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: California, USA

Applicant after: Juniper Networks, Inc.

Address before: California, USA

Applicant before: Jungle network

GR01 Patent grant
GR01 Patent grant