Getting a unique IP address

Usually all network cards in an IP network have assigned a unique 4 byte IPv4 address identifying the device in the IP network in order to be able to receive data packages from other devices. The router and switches in the IP network know how to propagate packages to their desired destinations. As there are hundreds of well written books available, explaining the routing in IP networks, I skip this part and focus on the specialties of ACN.

When we connect a device (like a dimmer rack, a moving head) to the IP network, we first have to obtain a unique IP address for it, so that other devices can talk to it. EPI 13 of the standard provides several proposals, how a device can obtain a unique IP address. All of them are working "autonomously", i.e. no settings have to be configured at the device.

DHCP (Dynamic Host Configuration Protocol)

A DHCP server is a device within a network segment, which maintains a pool of IP addresses and which assigns IP addresses from this pool to devices which are asking for one. The server ensures, that each device always gets a unique address at a time.

Using DHCP the client (i.e. the lighting device) asks for the presence of DHCP servers within its network segment by sending an UDP broadcast message called DHCPDISCOVER to UDP port 67 of all connected hosts within the network segment. The DHCP servers reply with a configuration proposal (mainly an unused IP address of their pools). The host can select one of the offered IP addresses and confirms its use to the DHCP server.

The DHCP server does not necessarily have to be an external component but can be part of an existing device (typically the lighting controller).

APIPA (Automatic Private IP Addressing)

If no DHCP server is running, devices may do some guesswork to find an IP address which is not yet used by other devices. This feature is especially useful in small local nets with only a few clients, as it allows communication between clients without any configuration to be done by the user.

APIPA does not require network support for assigning IP addresses. APIPA randomly chooses an IP address from a pool of private IP addresses (169.254.x.x) and probes whether it is already occupied by other hosts within the network segment. This process is repeated until a free IP address was found. E1.17 EPI 13 states that devices which are ACN compliant shall support both mechanisms. So the device should try to obtain an IP address from a connected DHCP server. If it is unable to find one it should try to "allocate" one using APIPA.

 

References:

DHCP (Dynamic Host Configuration Protocol)

RFC 2131, Internet Engineering Task Force (IETF)

Dynamic Configuration of IPv4 Link-Local Addresses (" Automatic Private IP Addressing")

RFC 3927, Internet Engineering Task Force (IETF)

Address Allocation for Private Internets

RFC 1918, Internet Engineering Task Force (IETF)