You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
MinMDNS makes some assuptions to be 'minimal' however these assuptions break especially on thread. Specifically:
It assumes that a single packet contains a single answer for a specific node. This is incorrect for "Browse" for example, where a OpenThread Border Router may answer on behalf of multiple thread devices in a single packet, resulting in separate SRV/AAAA/TXT entries in a single packet. MinMDNS will currently "Pick last entry" and assume they match, but they do not have to
It assumes that a reply containing a SRV entry would contain also TXT and A/AAAA entries. mDNS spec says that implementations SHOULD do this, but not SHALL and specifically for OTBR we observed that we may get SRV entries without IP addresses and then Operational Discovery will fail.
MinMDNS enters a 'mode' state where it either browses or does operational discovery. Since replies are async, this is incorrect in terms of calling operational vs commissioning discovery callbacks.
Proposed Solution
Implement stateful processing of mDNS replies:
every SRV entry should be considered individually and matched with TXT and AAAA (maybe A) entries
if TXT/AAAA entries are not received, the server should explicitly query for them. Note that AAAA entries are matched by a separate host address (i.e. request has to be based off SRV content)
MDNS packet processing should not depend on a stateful logic of 'sending queries'. Sending queries should be independent from receiving results.
The text was updated successfully, but these errors were encountered:
Problem
MinMDNS makes some assuptions to be 'minimal' however these assuptions break especially on thread. Specifically:
It assumes that a single packet contains a single answer for a specific node. This is incorrect for "Browse" for example, where a OpenThread Border Router may answer on behalf of multiple thread devices in a single packet, resulting in separate SRV/AAAA/TXT entries in a single packet. MinMDNS will currently "Pick last entry" and assume they match, but they do not have to
It assumes that a reply containing a SRV entry would contain also TXT and A/AAAA entries. mDNS spec says that implementations SHOULD do this, but not SHALL and specifically for OTBR we observed that we may get SRV entries without IP addresses and then Operational Discovery will fail.
MinMDNS enters a 'mode' state where it either browses or does operational discovery. Since replies are async, this is incorrect in terms of calling operational vs commissioning discovery callbacks.
Proposed Solution
Implement stateful processing of mDNS replies:
MDNS packet processing should not depend on a stateful logic of 'sending queries'. Sending queries should be independent from receiving results.
The text was updated successfully, but these errors were encountered: