INTERNET PROTOCOL VERSION SIX ADDRESS MANAGEMENT
A network device to monitor and control allotment of internet protocol (IP) version six (IPv6) addresses within a computer network is provided. The network device may cause client devices to fail to obtain an IPv6 address based on network device actions. For example, the network device may: obtain a network packet from an IP network; determine if the network packet is a duplicate address determination (DAD) packet; identify a network client device originating the DAD packet; compare a number of IPv6 addresses already assigned to the network client device to a threshold allotment of addresses; based on a determination that the network client device would exceed the threshold allotment, transmit an address in use message on the IP network; and based on a determination that the network client device has an available address within the threshold allotment, ignore the DAD packet.
Networks of computers that support business activities are often composed of a multitude of infrastructure devices (e.g., computational, storage, and network resources). These infrastructure devices may provide, for example, a cohesive system of coordinated computing devices that support many automated functions for a corporate enterprise. In some cases, these computing devices are connected to a network for communication with each other. Wireless and wired networks may be connected to each other, for example, using a device referred to as an Access Point (AP). Some devices connected to a network as infrastructure devices may perform network monitoring and security checks on network activities. These infrastructure devices may include, but are not limited to, firewalls, network data analyzers (sniffers), network analytics servers, network performance monitors, authentication servers. These and other types of network infrastructure devices may provide data or event information to security or performance monitoring network components. Client devices (both wired and wireless) may perform network operations in their normal course of operation. To function on a network, devices (including client devices) obtain (or are assigned) a network address that is unique to that device. A network address allows routers, switches, and other network infrastructure devices to properly direct traffic (i.e., network packets) throughout the network to its appropriate destination.
One common type of network is an internet protocol (IP) network. Because of the significant growth in number of devices connected to IP networks, a relatively new network address assignment has been introduced. Previous IP networks relied mostly on IP version 4 (IPv4) addressing schemes. Today, IP version 6 (IPv6) is becoming more prevalent and most large networks may include a mix of devices that utilize either IPv4, IPv6, or a combination of the two (e.g., a hybrid transitional network). In IPv4, network address administration is typically controlled via network assignment to client devices (e.g., a client to the network that may also include a server system) from a network server system such as a dynamic host communication protocol (DHCP) server or the like. However, in IPv6 network addresses may be dynamically generated at a client device and then “tested” with the network to determine if that address may be utilized. Further, the number of available network addresses has been dramatically increased in IPv6 over the maximum number of network addresses that were available within IPv4. Accordingly, management of network addresses (e.g., by a network system administrator) has changed in paradigm where address management has shifted from a server side control to where clients may generate their own addresses and a vastly larger number of available addresses are administered.
The present disclosure may be better understood from the following detailed description when read with the accompanying Figures. It is emphasized that, in accordance with standard practice in the industry, various features are not drawn to scale. In fact, the dimensions or locations of functional attributes may be relocated or combined based on design, security, performance, or other factors known in the art of computer systems. Further, order of processing may be altered for some functions, both internally and with respect to each other. That is, some functions may not perform serial processing and therefore those functions may be performed in an order different than shown or possibly in parallel with each other. For a detailed description of various examples, reference will now be made to the accompanying drawings, in which:
Illustrative examples of the subject matter claimed below will now be disclosed. In the interest of clarity, not all features of an actual implementation are described for every example implementation in this disclosure. It will be appreciated that in the development of any such actual example, numerous implementation-specific decisions may be made to achieve the developer's specific goals, such as compliance with system-related and business-related constraints, which will vary from one implementation to another. Moreover, it will be appreciated that such a development effort, even if complex and time-consuming, would be a routine undertaking for those of ordinary skill in the art having the benefit of this disclosure.
As briefly mentioned above, an Internet Protocol Version 6 address (IPv6 address) is a numerical label that is used to identify a network interface of a computer or a network node participating in an IPv6 computer network. An IP address serves the purpose of identifying an individual network interface of a host, locating it on the network, and thus permitting the routing of IP packets between hosts. For routing, IP addresses are present in fields of the packet header where they indicate the source and destination of the packet.
IPv6 is the successor to the first addressing infrastructure of the Internet, Internet Protocol version 4 (IPv4). In contrast to IPv4, which defined an IP address as a 32-bit value, IPv6 addresses have a size of 128 bits. Therefore, IPv6 has a vastly enlarged address space compared to IPv4. IPv6 includes what is sometimes referred to as stateless address autoconfiguration. Thus, on system startup, a node automatically creates a link-local address on each IPv6-enabled interface, even if globally routable addresses are manually configured or obtained through “configuration protocols.” The node does so independently and without any prior configuration by stateless address autoconfiguration (SLAAC), using a component of the neighbor discovery protocol (NDP). This link-local address is selected with the prefix fe80::/64.
In IPv4, typical “configuration protocols” include dynamic host configuration protocol (DHCP) or point to point protocol (PPP). In DHCP, a server assigns an address to a network client device (e.g., upon request) and in PPP a one to one connection is established between two points in the network. In PPP a client may directly connect with another device that is connected to the Internet (and has an IP address) as opposed to the client having a direct network connection to the Internet. Although DHCPv6 exists, IPv6 devices normally use NDP to create a globally routable unicast address: the device sends router solicitation requests and an IPv6 router responds with a prefix assignment. For example, an IPv6 device may populate the lower 64 bits of IPv6 addresses with a 64-bit interface identifier in modified EUI-64 format. This identifier is usually shared by all automatically configured addresses of that interface, which has the advantage that only one multicast group needs to be joined for neighbor discovery. For example, a multicast address is used that may be formed from the network prefix ff02::1:ff00:0/104 and the 24 least significant bits of the address.
Modified EUI-64 represents a 64-bit interface identifier that is most commonly derived from an interfaces 48-bit media access control (MAC) address. For example, a MAC address of 00-0C-29-0C-47-D5 is turned into a 64-bit EUI-64 by inserting FF-FE in the middle to form a modified EUI-64 of 00-0C-29-FF-FE-0C-47-D5. Additionally, the assignment of a unicast IPv6 address to an interface involves an internal test for the uniqueness (referred to as duplicate address detection (DAD)) of that address using Neighbor Solicitation and Neighbor Advertisement (e.g., ICMPv6 type 135 and 136) messages. While in the process of establishing uniqueness, an address has a tentative state (e.g., a tentative address).
Continuing with this example, the client may then join the solicited-node multicast address for the tentative address (if not already done so) and send neighbor solicitations, with the tentative address as target address and the unspecified address (J128) as source address. The client may also join the all-hosts multicast address ff02:1, so it will be able to receive Neighbor Advertisements.
If, while attempting to establish use of a tentative address, a client receives a neighbor solicitation with its own tentative address as the target address, then that tentative address is determined (by the client) to be non-unique. Similarly, if the client receives a neighbor advertisement with the tentative address as the source of the advertisement, the tentative address is determined (by the client) as non-unique. If a tentative address is determined to be non-unique, the client may generate a new tentative address and try again. Only after having successfully established that an address is unique may that address be assigned and used by an interface. This process of assigning an address for use by an interface may be referred to as “binding” the address to the interface. Thus, a tentative address may be established for use by a client interface by determining that it is available (e.g., unique) and binding the tentative address to an interface—causing the tentative address to lose its “tentative” state.
When an address is assigned to an interface it gets the status “preferred”, which the address holds during its preferred-lifetime. After that lifetime expires the status becomes “deprecated” and no new connections should be made using this address. The address becomes “invalid” after its valid-lifetime also expires; the address may then be removed from the interface and may be assigned somewhere else on the Internet (or within a local network such as a corporate infrastructure network or university network). It should be noted that, in most cases, the lifetime does not expire because new Router Advertisements (RAs) may refresh the timers. However, if there are no more RAs, eventually the preferred lifetime elapses and the address becomes “deprecated”.
The globally unique and static MAC addresses, used by stateless address autoconfiguration to create interface identifiers, may additionally offer an opportunity to track user equipment across time and IPv6 network prefix changes. To reduce the prospect of a user identity being permanently tied to an IPv6 address portion, a node may create temporary addresses with interface identifiers based on time-varying random bit strings and relatively short lifetimes (hours to days), after which they are replaced with new addresses. Temporary addresses may be used as source address for originating connections, while external hosts may use a public address by querying the Domain Name System. Network interfaces configured for IPv6 may use temporary addresses by default in different operating systems.
In short, IPv6 represents a different paradigm for: address space, address generation, address assignment, and use by a client device when compared to IPv4. Notably, in IPv4 server devices controlled address use by client devices whereas in IPv6 client devices generate their own addresses. As a result, some environments such as a bring your own device (BYOD) environment have lost a measure of control with respect to address use by client devices. For example, an environment such as a university campus, hotel and conference center, sporting complex, or other environment where a large number of transient devices (and users) are present may face a situation where some client devices are disproportionately using too many system resources, in part by using a large number of network addresses. Disclosed systems and techniques address this issue, in part, by providing a network appliance configured to throttle the number of addresses allowed on a given client device. In some implementations, disclosed systems may provide an administrative control in BYOD environments to limit the number of IPv6 addresses a client can obtain/use such that the total number of IPv6 ND entries does not exceed hardware capacities resulting in a network outage. This throttling may be based on a configurable number of addresses that can be transitioned from tentative status to preferred status by the client device. Accordingly, disclosed systems represent an improvement to the art of network administration by providing an improved functioning of a system configured to manage network address assignment in IPv6 or IPv4/IPv6 hybrid networks.
Disclosed systems may include an appliance connected to the network to “watch” for a client attempting to transition from a temporary address to a preferred address. This appliance may detect when an IPv6 client is performing duplicate address detection (DAD). As mentioned above, when a client is performing this type of operation, frames are transmitted by that client to validate if the desired address is in use. The DAD frames contain the client's MAC address as well as the ‘target address’ (the address they wish to use). Capturing these frames and counting the number of DAD requests per MAC address would provide one example mechanism by which the appliance is able to limit a client device to a specific number of IPv6 addresses. Other types of determination that a client device (or user) is requesting addresses that would exceed their allotted amount could also be implemented. For example, a user may be associated with each device in use by that user and a total number of addresses per identified user may be controlled using similar techniques.
In a university setting (or other large-scale BYOD environment), it may be expected that there may be many students that each have multiple devices (e.g., phone, laptop, tablet, etc.). Accordingly, a single user may have multiple devices connected to a wireless network in a transient manner and they may all be active for overlapping periods of time. Further, different application configurations and hardware configurations may allow a single device to consume multiple addresses. Even though IPv6 may have a vast address space, there is a finite amount of IPv6 table size in network infrastructure devices used to facilitate network traffic. Accordingly, each hardware device (router, switch, bridge, etc.) may be able to support a maximum number of addresses before that hardware device runs into a resource constrained situation that may result in performance degradation of the device or even failure.
In one example, if a wireless client device is attempting to validate a new temporary address, the disclosed network appliance could repeatedly cause the DAD process to fail and the wireless client operating system would eventually stop asking for a new address. In an alternate implementation, if a wired device was attempting to exceed a threshold or acting in a malicious manner, a command could be sent to an appropriate switch to disable the port by which that wired device is connected to the network. Thus, preventing the wired device from participating in any further network traffic. Other implementations are also possible.
Referring now to
In network segment 100, network appliance 105 is connected to switch 110 via link 106. All links illustrated in network segment 100 represent bi-directional links, however, in some cases there may be devices connected to a network with a unidirectional link. Client wired device 115 is illustrated as connected to switch 110 via wired link 114. Client wireless device 115 utilizes a WiFi® (e.g., wireless radio) connection to network controller 120 which is, in turn, connected via wired link 121 to switch 110.
As explained further below with reference to
According to disclosed implementations, network appliance 105 may recognize the request for validation (e.g., a DAD message) and determine if the requesting device has exceeded a configurable threshold for an allowed number of IPv6 address. If the client device (or associated user in other examples) has exceeded their allotment, network appliance 105 may respond to the DAD message in a manner to inform the client device that they may not use the temporary address “because the temporary address is already in use.” Specifically, network appliance 105 may lie to the requesting client in an effort to force the validation request to fail validation at the client device. That is, the temporary address will not be considered unique from the client device perspective because the validation failed. As a result, the client device, if performing in compliance with networking standards, will not bind the temporary address to an interface. This process of requesting for validation may be repeated a number of times by the client device and correspondingly failed based on the actions of network appliance 105. However, if the client device is performing in accordance with networking standards, the client device will cease attempting to generate and validate a new address after a reasonable number of attempts.
Referring now to
Decision 215 indicates that the network appliance may make a determination as to if this packet is a DAD packet. That is, a packet from a client device attempting to validate a temporary IPv6 address. If not, the NO prong of decision 215, the network appliance may simply ignore that packet. However, if the packet is a DAD packet, the YES prong of decision 215, flow continues to decision 220 where a determination may be made as to if the DAD packet is associated with a device that has exceeded a configurable threshold. For example, a network appliance may be configured to allow five (5) addresses for a particular client device based on a MAC address. Accordingly, if a sixth (6th) address is requested, the threshold would be exceeded and the YES prong of decision 220 would be followed. However, if the threshold is not exceeded, the NO prong of decision 220 is followed and the network appliance again ignores the packet. Responsive to a threshold being exceeded, the YES prong of decision 220, flow continues to block 225 where the network appliance responds with an “address in use” message. As mentioned above, if a client receives an “address in use” message, and is performing in accordance with networking standards, the client will discard that temporary address and either attempt to generate another or cease attempting to obtain a new address.
In this example, the allotment is described as being per MAC address. However, other measures of allotment may be used and not depart from the scope of this disclosure. For example, if a device is determined to have multiple network interface cards (NICs) and each NIC has a different MAC address (as expected), then the total number of addresses (e.g., the allotment) may be based on a total number for that device. Further, the allotment may be configured with respect to an identified user. In that implementation, a user may be allowed an allotted number of addresses across all devices associated with that user. Other types of allotments and configurable thresholds are also possible. In any case, disclosed techniques attempt to prevent a client device from properly validating their temporary address when an associated allotment threshold has been reached.
Referring now to
Referring now to
A machine-readable storage medium, such as 502 of
Referring now to
Each of these networks may contain wired or wireless programmable devices and operate using any number of network protocols (e.g., TCP/IP) and connection technologies (e.g., WiFi® networks, or Bluetooth®). In another example, customer network 602 represents an enterprise network that could include or be communicatively coupled to one or more local area networks (LANs), virtual networks, data centers (see
As shown in
Network infrastructure 600 may also include other types of devices generally referred to as Internet of Things (IoT) (e.g., edge IoT device 605) that may be configured to send and receive information via a network to access cloud computing services or interact with a remote web browser application (e.g., to receive just-in-time authentication information). Edge IoT device 605 may utilize either IPv4 or IPv6 addressing techniques.
Network infrastructure 600 also includes cellular network 603 for use with mobile communication devices. Mobile cellular networks support mobile phones and many other types of mobile devices such as laptops etc. Mobile devices in network infrastructure 600 are illustrated as mobile phone 604D, laptop computer 604E, and tablet computer 604C. A mobile device such as mobile phone 604D may interact with one or more mobile provider networks as the mobile device moves, typically interacting with a plurality of mobile network towers 620, 630, and 640 for connecting to the cellular network 603.
In
As also shown in
Computing device 700 may also include communications interfaces 725, such as a network communication unit that could include a wired communication component and/or a wireless communications component, which may be communicatively coupled to processor 705. The network communication unit may utilize any of a variety of proprietary or standardized network protocols, such as Ethernet, TCP/IP, to name a few of many protocols, to effect communications between devices. Network communication units may also comprise one or more transceiver(s) that utilize the Ethernet, power line communication (PLC), WiFi, cellular, and/or other communication methods.
As illustrated in
Persons of ordinary skill in the art are aware that software programs may be developed, encoded, and compiled in a variety of computing languages for a variety of software platforms and/or operating systems and subsequently loaded and executed by processor 705. In one implementation, the compiling process of the software program may transform program code written in a programming language to another computer language such that the processor 705 is able to execute the programming code. For example, the compiling process of the software program may generate an executable program that provides encoded instructions (e.g., machine code instructions) for processor 705 to accomplish specific, non-generic, particular computing functions.
After the compiling process, the encoded instructions may then be loaded as computer executable instructions or process steps to processor 705 from storage device 720, from memory 710, and/or embedded within processor 705 (e.g., via a cache or on-board ROM). Processor 705 may be configured to execute the stored instructions or process steps in order to perform instructions or process steps to transform the computing device into a non-generic, particular, specially programmed machine or apparatus. Stored data, e.g., data stored by a storage device 720, may be accessed by processor 705 during the execution of computer executable instructions or process steps to instruct one or more components within the computing device 700.
A user interface (e.g., output devices 715 and input devices 730) can include a display, positional input device (such as a mouse, touchpad, touchscreen, or the like), keyboard, or other forms of user input and output devices. The user interface components may be communicatively coupled to processor 705. When the output device is or includes a display, the display can be implemented in various ways, including by a liquid crystal display (LCD) or a cathode-ray tube (CRT) or light emitting diode (LED) display, such as an organic light emitting diode (OLED) display. Persons of ordinary skill in the art are aware that the computing device 700 may comprise other components well known in the art, such as sensors, powers sources, and/or analog-to-digital converters, not explicitly shown in
Certain terms have been used throughout this description and claims to refer to particular system components. As one skilled in the art will appreciate, different parties may refer to a component by different names. This document does not intend to distinguish between components that differ in name but not function. In this disclosure and claims, the terms “including” and “comprising” are used in an open-ended fashion, and thus should be interpreted to mean “including, but not limited to . . . .” Also, the term “couple” or “couples” is intended to mean either an indirect or direct wired or wireless connection. Thus, if a first device couples to a second device, that connection may be through a direct connection or through an indirect connection via other devices and connections. The recitation “based on” is intended to mean “based at least in part on.” Therefore, if X is based on Y, X may be a function of Y and any number of other factors.
The above discussion is meant to be illustrative of the principles and various implementations of the present disclosure. Numerous variations and modifications will become apparent to those skilled in the art once the above disclosure is fully appreciated. It is intended that the following claims be interpreted to embrace all such variations and modifications.
Claims
1. A computer-implemented method to limit internet protocol (IP) version six (IPv6) addresses in use by a network client device, the method comprising:
- obtaining a network packet from an IP network;
- determining if the network packet is a duplicate address determination (DAD) packet;
- identifying a first network client device originating the DAD packet;
- comparing a number of IPv6 addresses already assigned to the first network client device to a threshold allotment of addresses;
- based on a determination that the first network client device would exceed the threshold allotment, transmitting an address in use message on the IP network; and
- based on a determination that the first network client device has an available address within the threshold allotment, ignoring the DAD packet.
2. The computer-implemented method of claim 1, wherein identifying the first network client device includes identifying based on a media access control (MAC) address.
3. The computer-implemented method of claim 1, wherein the threshold allotment includes a set of devices in addition to the first network client device.
4. The computer-implemented method of claim 3, wherein each of the set of devices includes devices associated with a user determined to be using the first network client device.
5. The computer-implemented method of claim 3, wherein the DAD packet is ignored when the threshold allotment is exceeded based on a determination that the first network client device has zero allotted IPv6 addresses.
6. The computer-implemented method of claim 1, wherein the first network client device is determined to have multiple network interfaces having multiple MAC addresses and the threshold allotment includes all addresses assigned to the multiple MAC addresses.
7. A computer device comprising:
- a processing device communicatively coupled to a network interface; and
- a memory storing instructions, that when executed by the processing device, cause the computer device to: obtain a network packet from an IP network; determine if the network packet is a duplicate address determination (DAD) packet; identify a first network client device originating the DAD packet; compare a number of IPv6 addresses already assigned to the first network client device to a threshold allotment of addresses; based on a determination that the first network client device would exceed the threshold allotment, transmit an address in use message on the IP network; and based on a determination that the first network client device has an available address within the threshold allotment, ignore the DAD packet.
8. The computer device of claim 7, wherein the instructions to cause the computer device to obtain a network packet from the IP network include instructions to cause the computer device to sniff the IP network using the network interface.
9. The computer device of claim 8, wherein the computer device sniffs the IP network in a passive manner without impacting transmission of the network packet through the IP network.
10. The computer device of claim 7, wherein the instructions to cause the computer device to identify the first network client device include instructions to identify based on a media access control (MAC) address.
11. The computer device of claim 7, wherein the threshold allotment includes a set of devices in addition to the first network client device.
12. The computer device of claim 11, wherein each of the set of devices includes devices associated with a user determined to be using the first network client device.
13. The computer device claim 11, wherein the DAD packet is ignored when the threshold allotment is exceeded based on a determination that the first network client device has zero allotted IPv6 addresses.
14. The computer device of claim 7, wherein the first network client device is determined to have multiple network interfaces having multiple MAC addresses and the threshold allotment includes all addresses assigned to the multiple MAC addresses.
15. The computer device of claim 7, wherein the computer device is configured as a network appliance.
16. A non-transitory computer readable medium comprising computer executable instructions that, when executed by one or more processing units, cause the one or more processing units to:
- obtain a network packet from an IP network;
- determine if the network packet is a duplicate address determination (DAD) packet;
- identify a first network client device originating the DAD packet;
- compare a number of IPv6 addresses already assigned to the first network client device to a threshold allotment of addresses;
- based on a determination that the first network client device would exceed the threshold allotment, transmit an address in use message on the IP network; and
- based on a determination that the first network client device has an available address within the threshold allotment, ignore the DAD packet.
17. The non-transitory computer readable medium of claim 16, wherein the instructions to cause the one or more processing units to obtain a network packet from the IP network include instructions to cause the one or more processing units to sniff the IP network using a network interface.
18. The non-transitory computer readable medium of claim 17, wherein the one or more processing units sniff the IP network in a passive manner without impacting transmission of the network packet through the IP network.
19. The non-transitory computer readable medium of claim 16, wherein the instructions to cause the one or more processing units to identify the first network client device include instructions to identify based on a media access control (MAC) address.
20. The non-transitory computer readable medium of claim 16, wherein the threshold allotment includes a set of devices in addition to the first network client device.
Type: Application
Filed: Feb 20, 2019
Publication Date: Aug 20, 2020
Inventor: Todd Osterberg (Roseville, CA)
Application Number: 16/280,156