-
Notifications
You must be signed in to change notification settings - Fork 4
Home
Clients consists of a MAC address, a state and a list of IP addresses. A client's state is either active or inactive. It is considered active when either at least one of its IP addresses is active or tentative, or when it hasn't timed out. The timeout ensures that roaming clients will not be deleted immediately when the node is still waiting to be notified of IP addresses.
For every client that a node manages the node will assign itself an IP address generated from a common prefix (like fec0::/64) and the client's MAC address (as EUI-64). This allows any node to contact the node servicing a specific client in case of roaming. A node will only assign this IP address after successfully reaching the previous node.
IP addresses do have a state and a timestamp associated with them. The timestamp denotes the time when the last Neighbor Advertisement for that IP was received. The state may be tentative, active or inactive.
An IP address is considered inactive by default when the client is inactive and tentative when the client is active. It becomes active when a Neighbor Advertisement is received and reverts to the inactive state when the client fails to respond to a Neighbor Solicitation before a timeout (NA_TIMEOUT).
When an IP address becomes active a route is added to the kernel's routing table. Likewise, this route is removed when the state changes to inactive.
All IP addresses of a client enter the tentative state when its MAC address is detected (e.g. be the mac80211 layer). This will schedule a check of the client without further delay.
Tentative IP addresses cause Neighbor Solicitations to be sent and re-enter the inactive state.
Inactive IP addressesa are removed after a timeout (CLIENT_TIMEOUT).
- Stores information about clients.
- Needs maintenance (timeouts).
- request client info
- client info
- claim
- seek IP address
We should store the distributed client information separate from the local client database.
We need events:
- IP state change (clientmgr_ip_state_changed)