Homenet is a distributed networking manager that simplifies home networks configuration and capabilities, based on ongoing work in IETF's Homenet Working Group. It exchanges information between the different home routers and, in each router, between various processes (dhcp clients and servers, DNS and mDNS daemons, routing protocol daemon or firewall configuration). This page explains in more details which are the different components of Homenet and how they interact with each other.
Three different versions of Homenet have been developed. The current (2016) Version 3 is stable, and:
Versions 1 and 2 were based on OSPFv3 and written in Lua. Version 2 was demonstrated in Las Vegas during CES 2014. Version 1 was demonstrated in Bits-n-Bytes events from the IETF 85 to IETF 88 (2012-2013).
Homenet dynamically assigns IP prefixes to home network's links. Such prefixes are selected among delegated prefixes that are either provided by the ISPs (through DHCP Prefix Delegation) or generated when needed (for example, 10/8 IPv4 prefix or IPv6 ULAs). Each link is provided a single prefix per delegated prefix (/64 for IPv6, and /24 for IPv4). Hosts joining a link can therefore obtain one address per available prefix, chosen through SLAAC or DHCPv6 for IPv6, and DHCP for IPv4.
The algorithm is fully detailed in the corresponding IETF draft.
Since version 3, Homenet makes use of an independent protocol to propagate configuration information throughout the home network. This protocol is called HNCP and is detailed here. This protocol is used for prefix assignment, service discovery, and may also serve as a basic routing protocol.
Every assigned prefix, on any link, is made reachable through the whole home network using a routing protocol. Packets which destination is inside the home network always follow the shortest path, but IPv6 packets which destination is outside the network, are routed dependently to their source address so that they always leave the network through the ISP that provided the associated delegated prefix. In IPv4, packets are NATed when leaving or entering the network. In that case, a single exit point is used.
The current Homenet version 3 dynamically selects a routing protocol. Out of the box, it supports the Babel and hncp-routing protocols.
DHCP options, provided by ISPs, like search domains or DNS servers, are propagated throughout the network. Hosts are provided search domains, but routers are used by hosts as DNS relays, which in turn use ISP's DNS in order to resolve domain names.
Multicast-DNS (mDNS) and DNS Service Discovery (DNS-SD) allow link-local Zeroconf service discovery. But in classic multi-hop networks, DNS-SD must be configured. Homenet solves that issue by using an mDNS/DNS-SD hybrid proxy. Such process runs on every router, listens for mDNS traffic on each interface, and translates DNS-SD home network queries to mDNS local queries. The current hybrid proxy implementation is called ohybridproxy and is available on OpenWrt Trunk.
Each router is given a unique name, and each router assigns a name to each link. Each link is therefore assigned a given name of the form
<link>.<router>.<domain>, which is used as DNS-SD domain search. For optimization and ease-of-use purposes, a link name is only advertised as DNS-SD search domain when mDNS traffic is detected on that particular link.
For more technical details about Service Discovery, see Cheshire's mDNS hybrid proxy draft.