Airgroup is enabled on a controller. Let us see what are the primary functions of the controller.
The AirGroup implementation on controller will function as an independent process in the user space, named as “mdns”.
The “mdns” process will receive all mDNS packets, destined to udp port 5353 (well-known port assigned to mDNS). The destination ip-address in mDNS packet must be the multicast address 18.104.22.168 or its IPv6 equivalent FF02::FB, except direct unicast queries.
AirGroup shall terminate all mDNS packets received, and initiate new query/response mDNS packets. The AirGroup solution shall support both querier and responder functionality of mDNS protocol.
AirGroup will initiate a directed unicast mDNS response packet, upon receiving a multicast/ unicast mDNS query. It will be either, a L2 unicast and L3 multicast packet, or a L2/L3 unicast packet, based on QM/QU bit set in the mDNS packet. With this, AirGroup shall eliminate the need of mDNS multicast on the 802.11 network.
AirGroup will deliver a L2 multicast packet as a L2 unicast packet to the end user (i.e. the user who sent the mDNS query). The L2 unicast packet would contain the embedded L3 multicast packet, without any modifications. The L2 header therefore would contain the host’s destination MAC address, instead of mDNS multicast MAC address. This would allow the mDNS multicast response packet delivery to a directed user (i.e. querier), instead of flooding over the 802.11 network.
AirGroup will generate a unicast mDNS query packet, as a part of its cache maintenance mechanism. AirGroup shall send a unicast mDNS query to each AirGroup server, whose resource records are about to expire. There should be one query packet per AirGroup server, for all resource records refresh, for the concerned server.
AirGroup will provide discovery mechanism when the controller comes up for the first time. Under this, AirGroup shall send multicast mDNS query packets to all VLANs, to learn the mDNS network topology, across VLANs. The discovery mechanism should account for reliability (i.e. lost query packets), by generating multiple discovery query packets over a period of time, if applicable.