home-assistant / plugin-multicast

Multicast implementation for Home Assistant
Apache License 2.0
23 stars 12 forks source link

Multicast container causing feedback loops #1

Closed jesserockz closed 2 years ago

jesserockz commented 4 years ago

Since getting up this morning, devices on my network could not get an IP address. I notice on my server that hassio_supervisor and hassio_multicast were created 8 hours ago.

Looking at my router there was a constant TX rate of about 8Mbps to my IoT and Guest vlans coming from my lan vlan.

No device on my network could get a DHCP reservation unless I stopped the hassio_multicast container which also halted the extra traffic transferring between the vlans.

Of course hassio_supervisor just starts the multicast container back up again and the issue is back.

I have had to tag a local dummy empty docker image with homeassistant/amd64-hassio-multicast:2 to resolve this for now.

jesserockz commented 2 years ago

You won't get anywhere by mentioning them :wink: As long as the PR works, I am sure they will consider it.

joshuaspence commented 2 years ago

I won't be submitting a pull request as I have an alternative solution to my problem. The only reason I want/need multiple network interfaces on Home Assistant is so that Home Assistant would see DHCP requests on all of my subnets, which is needed for DHCP discovery to work.

Most of my integrations rely on mDNS rather than DHCP for discovery and the Unifi mDNS Repeater is working well for this. I realized that the TPLink integration supports another form of discovery, which involves broadcasting on UDP port 9999. I have setup https://github.com/britannic/ubnt-bcast-relay on my USG and Home Assistant can now discover TPLink devices.

jesserockz commented 2 years ago

Ah, DHCP discovery, did not think of that and Dont think any of my devices use that. But still a valid point to need this to work properly.

joshuaspence commented 2 years ago

Yeah. Another solution I considered was to run the DHCP server add-on on Home Assistant and have my USG relay DHCP requests to Home Assistant but I chose not to do this for two reasons:

  1. I didn't want my DHCP configuration split across multiple systems (Unifi for some networks, Home Assistant for others).
  2. I didn't want Home Assistant to be a critical part of my network infrastructure.
agners commented 2 years ago

@joshuaspence (or anyone else in this thread), multicast plugin version 2022.02.0 is currently on the beta channel and should not replicate mDNS messages on the main Ethernet interface anymore. You can test it out using the following terminal commands:

ha su options --channel=beta
ha su reload
ha multicast info
ha multicast update
joshuaspence commented 2 years ago

@agners Still testing but one observation so far is that there is a lot of mDNS traffic generated still. It looks like Home Assistant is advertising a whole bunch of services for homeassistantX with increasing integer values of X. Here's a snippet of tcpdump on my router:

22:12:47.832833 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0*- [0q] 2/0/0 (Cache flush) TXT "", (Cache flush) SRV homeassistant2752.local.:0 0 0 (144)
22:12:47.949325 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant2754.local. ANY (QM)? homeassistant2754 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. (190)
22:12:47.959412 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0*- [0q] 2/0/0 (Cache flush) TXT "", (Cache flush) SRV homeassistant2754.local.:0 0 0 (144)
22:12:48.070003 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant2755 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. ANY (QM)? homeassistant2755.local. (190)
22:12:48.079747 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0*- [0q] 2/0/0 (Cache flush) TXT "", (Cache flush) SRV homeassistant2755.local.:0 0 0 (144)
22:12:48.204134 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant2763.local. ANY (QM)? homeassistant2763 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. (190)
22:12:48.324657 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant2768.local. ANY (QM)? homeassistant2768 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. (190)
22:12:48.333135 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0*- [0q] 2/0/0 (Cache flush) TXT "", (Cache flush) SRV homeassistant2768.local.:0 0 0 (144)
22:12:48.450402 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant2769 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. ANY (QM)? homeassistant2769.local. (190)
22:12:48.466046 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0*- [0q] 2/0/0 (Cache flush) TXT "", (Cache flush) SRV homeassistant2769.local.:0 0 0 (144)
22:12:48.580807 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant2779.local. ANY (QM)? homeassistant2779 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. (190)
22:12:48.591691 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0*- [0q] 2/0/0 (Cache flush) TXT "", (Cache flush) SRV homeassistant2779.local.:0 0 0 (144)
22:12:48.702810 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant2784 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. ANY (QM)? homeassistant2784.local. (190)
22:12:48.709970 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0*- [0q] 2/0/0 (Cache flush) TXT "", (Cache flush) SRV homeassistant2784.local.:0 0 0 (144)
22:12:48.820968 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant2785.local. ANY (QM)? homeassistant2785 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. (190)
22:12:48.834977 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0*- [0q] 2/0/0 (Cache flush) TXT "", (Cache flush) SRV homeassistant2785.local.:0 0 0 (144)
22:12:48.949141 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant2789.local. ANY (QM)? homeassistant2789 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. (190)
22:12:48.961404 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0*- [0q] 2/0/0 (Cache flush) TXT "", (Cache flush) SRV homeassistant2789.local.:0 0 0 (144)
22:12:49.070931 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant2790 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. ANY (QM)? homeassistant2790.local. (190)
22:12:49.080363 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0*- [0q] 2/0/0 (Cache flush) TXT "", (Cache flush) SRV homeassistant2790.local.:0 0 0 (144)
22:12:49.203179 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant2792 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. ANY (QM)? homeassistant2792.local. (190)
22:12:49.210428 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0*- [0q] 2/0/0 (Cache flush) TXT "", (Cache flush) SRV homeassistant2792.local.:0 0 0 (144)
22:12:49.315484 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant2795 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. ANY (QM)? homeassistant2795.local. (190)
22:12:49.347044 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant2801.local. ANY (QM)? homeassistant2801 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. (190)
22:12:49.539590 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant2817.local. ANY (QM)? homeassistant2817 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. (190)
22:12:49.551889 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0*- [0q] 2/0/0 (Cache flush) TXT "", (Cache flush) SRV homeassistant2817.local.:0 0 0 (144)
22:12:49.597090 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant2824 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. ANY (QM)? homeassistant2824.local. (190)
22:12:49.715649 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant2826.local. ANY (QM)? homeassistant2826 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. (190)
22:12:49.833730 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant2829 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. ANY (QM)? homeassistant2829.local. (190)
22:12:49.956286 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant2830 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. ANY (QM)? homeassistant2830.local. (190)
22:12:50.075602 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant2840.local. ANY (QM)? homeassistant2840 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. (190)
22:12:50.085781 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0*- [0q] 2/0/0 (Cache flush) TXT "", (Cache flush) SRV homeassistant2840.local.:0 0 0 (144)
22:12:50.199778 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant2845.local. ANY (QM)? homeassistant2845 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. (190)
22:12:50.322983 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant2853.local. ANY (QM)? homeassistant2853 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. (190)
22:12:50.449103 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant2863 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. ANY (QM)? homeassistant2863.local. (190)
22:12:50.464984 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0*- [0q] 2/0/0 (Cache flush) TXT "", (Cache flush) SRV homeassistant2863.local.:0 0 0 (144)
22:12:50.578871 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant2873.local. ANY (QM)? homeassistant2873 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. (190)
22:12:50.592346 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0*- [0q] 2/0/0 (Cache flush) TXT "", (Cache flush) SRV homeassistant2873.local.:0 0 0 (144)
22:12:50.705911 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant2881 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. ANY (QM)? homeassistant2881.local. (190)
22:12:50.722392 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0*- [0q] 2/0/0 (Cache flush) TXT "", (Cache flush) SRV homeassistant2881.local.:0 0 0 (144)
22:12:50.830493 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant2888 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. ANY (QM)? homeassistant2888.local. (190)
22:12:50.841970 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0*- [0q] 2/0/0 (Cache flush) TXT "", (Cache flush) SRV homeassistant2888.local.:0 0 0 (144)
22:12:50.956630 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant2890.local. ANY (QM)? homeassistant2890 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. (190)
22:12:51.077413 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant2895 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. ANY (QM)? homeassistant2895.local. (190)
22:12:51.211671 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant2901.local. ANY (QM)? homeassistant2901 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. (190)
22:12:51.217426 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0*- [0q] 2/0/0 (Cache flush) TXT "", (Cache flush) SRV homeassistant2901.local.:0 0 0 (144)
22:12:51.325784 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant2906 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. ANY (QM)? homeassistant2906.local. (190)
22:12:51.456204 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant2913.local. ANY (QM)? homeassistant2913 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. (190)
22:12:51.571982 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant2922 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. ANY (QM)? homeassistant2922.local. (190)
22:12:51.704562 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant2930 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. ANY (QM)? homeassistant2930.local. (190)
22:12:51.826742 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant2931.local. ANY (QM)? homeassistant2931 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. (190)
22:12:51.836431 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0*- [0q] 2/0/0 (Cache flush) TXT "", (Cache flush) SRV homeassistant2931.local.:0 0 0 (144)
22:12:51.948597 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant2937.local. ANY (QM)? homeassistant2937 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. (190)
22:12:52.076785 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant2942.local. ANY (QM)? homeassistant2942 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. (190)
22:12:52.083291 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0*- [0q] 2/0/0 (Cache flush) TXT "", (Cache flush) SRV homeassistant2942.local.:0 0 0 (144)
22:12:52.201462 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant2952.local. ANY (QM)? homeassistant2952 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. (190)
22:12:52.322010 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant2961.local. ANY (QM)? homeassistant2961 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. (190)
22:12:52.328993 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0*- [0q] 2/0/0 (Cache flush) TXT "", (Cache flush) SRV homeassistant2961.local.:0 0 0 (144)
22:12:52.347220 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant2963 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. ANY (QM)? homeassistant2963.local. (190)
22:12:52.465039 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant2967.local. ANY (QM)? homeassistant2967 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. (190)
22:12:52.473589 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0*- [0q] 2/0/0 (Cache flush) TXT "", (Cache flush) SRV homeassistant2967.local.:0 0 0 (144)
22:12:52.592789 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant2968 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. ANY (QM)? homeassistant2968.local. (190)
22:12:52.609201 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0*- [0q] 2/0/0 (Cache flush) TXT "", (Cache flush) SRV homeassistant2968.local.:0 0 0 (144)
22:12:52.721626 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant2976 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. ANY (QM)? homeassistant2976.local. (190)
22:12:52.840391 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant2980 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. ANY (QM)? homeassistant2980.local. (190)
22:12:52.852759 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0*- [0q] 2/0/0 (Cache flush) TXT "", (Cache flush) SRV homeassistant2980.local.:0 0 0 (144)
22:12:52.961350 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant2981.local. ANY (QM)? homeassistant2981 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. (190)
22:12:52.975437 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0*- [0q] 2/0/0 (Cache flush) TXT "", (Cache flush) SRV homeassistant2981.local.:0 0 0 (144)
22:12:53.082918 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant2985.local. ANY (QM)? homeassistant2985 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. (190)
22:12:53.211550 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant2987.local. ANY (QM)? homeassistant2987 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. (190)
22:12:53.227982 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0*- [0q] 2/0/0 (Cache flush) TXT "", (Cache flush) SRV homeassistant2987.local.:0 0 0 (144)
22:12:53.339230 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant2994 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. ANY (QM)? homeassistant2994.local. (190)
22:12:53.350717 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0*- [0q] 2/0/0 (Cache flush) TXT "", (Cache flush) SRV homeassistant2994.local.:0 0 0 (144)
22:12:53.455261 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant3001 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. ANY (QM)? homeassistant3001.local. (190)
22:12:53.589043 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant3007.local. ANY (QM)? homeassistant3007 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. (190)
22:12:53.705512 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant3014 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. ANY (QM)? homeassistant3014.local. (190)
22:12:53.717333 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0*- [0q] 2/0/0 (Cache flush) TXT "", (Cache flush) SRV homeassistant3014.local.:0 0 0 (144)
22:12:53.824423 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant3021 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. ANY (QM)? homeassistant3021.local. (190)
22:12:53.839754 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0*- [0q] 2/0/0 (Cache flush) TXT "", (Cache flush) SRV homeassistant3021.local.:0 0 0 (144)
22:12:53.963668 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant3029.local. ANY (QM)? homeassistant3029 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. (190)
22:12:53.975801 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0*- [0q] 2/0/0 (Cache flush) TXT "", (Cache flush) SRV homeassistant3029.local.:0 0 0 (144)
22:12:54.082312 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant3037.local. ANY (QM)? homeassistant3037 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. (190)
22:12:54.090731 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0*- [0q] 2/0/0 (Cache flush) TXT "", (Cache flush) SRV homeassistant3037.local.:0 0 0 (144)
22:12:54.199359 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant3041.local. ANY (QM)? homeassistant3041 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. (190)
22:12:54.337280 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant3048.local. ANY (QM)? homeassistant3048 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. (190)
22:12:54.350567 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0*- [0q] 2/0/0 (Cache flush) TXT "", (Cache flush) SRV homeassistant3048.local.:0 0 0 (144)
22:12:54.462912 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant3051 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. ANY (QM)? homeassistant3051.local. (190)
22:12:54.581492 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant3057.local. ANY (QM)? homeassistant3057 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. (190)
22:12:54.701031 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant3066 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. ANY (QM)? homeassistant3066.local. (190)
22:12:54.711982 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0*- [0q] 2/0/0 (Cache flush) TXT "", (Cache flush) SRV homeassistant3066.local.:0 0 0 (144)
22:12:54.823400 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant3075.local. ANY (QM)? homeassistant3075 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. (190)
22:12:54.952777 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant3085.local. ANY (QM)? homeassistant3085 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. (190)
22:12:54.967080 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0*- [0q] 2/0/0 (Cache flush) TXT "", (Cache flush) SRV homeassistant3085.local.:0 0 0 (144)
22:12:55.071868 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant3089.local. ANY (QM)? homeassistant3089 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. (190)
22:12:55.081881 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0*- [0q] 2/0/0 (Cache flush) TXT "", (Cache flush) SRV homeassistant3089.local.:0 0 0 (144)
22:12:55.201744 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant3095 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. ANY (QM)? homeassistant3095.local. (190)
22:12:55.210968 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0*- [0q] 2/0/0 (Cache flush) TXT "", (Cache flush) SRV homeassistant3095.local.:0 0 0 (144)
22:12:55.324176 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant3105.local. ANY (QM)? homeassistant3105 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. (190)
22:12:55.453420 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant3113 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. ANY (QM)? homeassistant3113.local. (190)
22:12:55.460067 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0*- [0q] 2/0/0 (Cache flush) TXT "", (Cache flush) SRV homeassistant3113.local.:0 0 0 (144)
22:12:55.570806 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant3116 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. ANY (QM)? homeassistant3116.local. (190)
22:12:55.703539 IP homeassistant.spence.network.mdns > 224.0.0.251.mdns: 0 [2q] [3n] ANY (QM)? homeassistant3124 [52e5dda0eaab409ca9da416c0a71f34b]._workstation._tcp.local. ANY (QM)? homeassistant3124.local. (190)
joshuaspence commented 2 years ago

Apart from that, it seems to work I think. I am going to go back to stable though because I already have a workaround and the logs above make me think this still isn't working as I would have expected.

joshuaspence commented 2 years ago

I couldn't figure out where Home Assistant is advertising itself via mDNS but interestingly those homeassistantX names seem to be resolving to one of the secondary VLAN network interfaces rather than the primary interface.

> ha network info
docker:
  address: 172.30.32.0/23
  dns: 172.30.32.3
  gateway: 172.30.32.1
  interface: hassio
host_internet: true
interfaces:
- connected: true
  enabled: true
  interface: eth0
  ipv4:
    address:
    - 192.168.1.100/24
    gateway: 192.168.1.1
    method: auto
    nameservers:
    - 192.168.1.1
  ipv6:
    address:
    - 2403:5808:8904:56:4431:4b50:f8a4:c2c6/64
    - fe80::53b1:fe6f:144b:67fd/64
    gateway: fe80::1ae8:29ff:fe46:55
    method: auto
    nameservers:
    - fe80::1ae8:29ff:fe46:55
  primary: true
  type: ethernet
  vlan: null
  wifi: null
- connected: false
  enabled: false
  interface: wlan0
  ipv4:
    address: []
    gateway: null
    method: disabled
    nameservers: []
  ipv6:
    address: []
    gateway: null
    method: disabled
    nameservers: []
  primary: false
  type: wireless
  vlan: null
  wifi: null
- connected: true
  enabled: true
  interface: eth0.20
  ipv4:
    address:
    - 192.168.20.50/24
    gateway: 192.168.20.1
    method: auto
    nameservers:
    - 192.168.20.1
  ipv6:
    address:
    - fe80::c010:d0a9:ce:8783/64
    gateway: null
    method: auto
    nameservers: []
  primary: false
  type: vlan
  vlan:
    id: 20
    parent: eth0
  wifi: null
- connected: true
  enabled: true
  interface: eth0.10
  ipv4:
    address:
    - 192.168.10.144/24
    gateway: 192.168.10.1
    method: auto
    nameservers:
    - 192.168.10.1
  ipv6:
    address:
    - fe80::21c0:dc28:c43e:6401/64
    gateway: null
    method: auto
    nameservers: []
  primary: false
  type: vlan
  vlan:
    id: 10
    parent: eth0
  wifi: null
supervisor_internet: true

> ping homeassistant1556.local.
PING homeassistant1556.local. (192.168.20.50): 56 data bytes
64 bytes from 192.168.20.50: seq=0 ttl=64 time=0.272 ms
64 bytes from 192.168.20.50: seq=1 ttl=64 time=0.379 ms
64 bytes from 192.168.20.50: seq=2 ttl=64 time=0.229 ms
spuiuk commented 2 years ago

@joshuaspence (or anyone else in this thread), multicast plugin version 2022.02.0 is currently on the beta channel and should not replicate mDNS messages on the main Ethernet interface anymore. You can test it out using the following terminal commands:

ha su options --channel=beta
ha su reload
ha multicast info
ha multicast update

I had hit the same problem which had overwhelmed the network printer on my network. While debugging this I came across the mdns storm on my network which seems to have completely overwhelmed my printer. I have since updated my hassio_multicast from the beta channel as you specified and it has fixed my issue.

I am using the edgerouter x with multiple vlans and the mdns repeater enabled on the router. I had come across a similar issue a couple of years ago too - https://community.home-assistant.io/t/mdns-flood/223415

pierre2113 commented 2 years ago

I've been without multicast feedback loop network issue for almost 19 months now, until 3 days ago, around 5am local time multicast traffic jumped to almost 500bytes/sec from 15bytes/sec. I've placed multicast bytes/sec monitoring for about 6 months now. I've implemented every solution I've read here and other places, ebtables, vlan, etc. I just put the supervisor beta channel it seems to have done the trick. I have 2 HA's, one of them I upgraded HA later that morning, the other I didn't both I switched the HA supervisor to beta channel as quickly as i could, shortly after my network didn't crash every 10 minutes. I upgrade raspbian on both HA hardware.

One common denominator when my network gets hit with multicast feedback loop, is I've stopped updating both raspbian OS and Home assistant. This time I haven't updated it for about 3 months now (raspbian + HA) at the same time. Makes me wonder when an update is available it un-intentionally triggers this problem, Updating raspbian OS also updated docker, docker could be a suspect too.

agners commented 2 years ago

@joshuaspence

@agners Still testing but one observation so far is that there is a lot of mDNS traffic generated still. It looks like Home Assistant is advertising a whole bunch of services for homeassistantX with increasing integer values of X. Here's a snippet of tcpdump on my router:

Those do not seem to be caused by the multicast plug-in.

I couldn't figure out where Home Assistant is advertising itself via mDNS but interestingly those homeassistantX names seem to be resolving to one of the secondary VLAN network interfaces rather than the primary interface.

That might be related to the primary network device auto detection in Core (see https://www.home-assistant.io/integrations/network/). Try selecting the right interface manually to see if that improves.

While there might be still something odd, it seems to me that those messages are "genuine" and not reflected/amplified by the multicast plug-in.

agners commented 2 years ago

@pierre2113

I've been without multicast feedback loop network issue for almost 19 months now, until 3 days ago, around 5am local time multicast traffic jumped to almost 500bytes/sec from 15bytes/sec.

Here too, this might be some additional messages, not really a feedback loop. Can you check what kind of messages those are?

joshuaspence commented 2 years ago

@agners I did try selecting the primary network interface instead of relying on the auto-detection but it didn't help.

I believe the problem I described is caused by the multicast plugin as it stopped immediately when I stopped the multicast container. I think what I observed was a loop, just not necessarily a positive feedback loop.

agners commented 2 years ago

@joshuaspence ok, you have the latest 2022.02.0 installed I assume? (ha multicast info)

joshuaspence commented 2 years ago

Yes

pierre2113 commented 2 years ago

@agners I don't have logs of actual messages, on my ASUS router running merlin firmware I poll /proc/net/dev every 5 min (the 9th column is labeled multicast I sum up that column on interfaces eth0-eth7 using awk command line) , I bring the data as a sensor I divided it by the delta time in between polls and display as a history graph in bytes/sec. The upward spike 1 hour before I woke up that morning coincides with network outage. So I know its multicast traffic, for the past 6 months it hasn't gone about 50 bytes/sec, even that it usually is a short burst, that morning it jumped to 500bytes/sec and stayed at 500 bytes/sec for an hour until I woke up, and all my devices alexa's/google hubs were complaining no internet.

noci2012 commented 1 year ago

When the network is in trouble, this seems to be happening.... Probably two multicast repeaters sending back to the receipient... It causes one core in the firewall to be completely consumed, and quite some load on the LAN. (avahi-reflection is enable on the firewall to allow MDNS traffic between several VLAN's, one of which is where HA is installed)

Dec 02 15:37:58 homeassistant systemd-resolved[389]: Detected conflict on homeassistant223041.local IN A 192.168.XX.66 Dec 02 15:37:58 homeassistant systemd-resolved[389]: Hostname conflict, changing published hostname from 'homeassistant223041' to 'homeassistant223044'. Dec 02 15:37:58 homeassistant systemd-resolved[389]: Detected conflict on homeassistant223044.local IN A 192.168.XX.66 Dec 02 15:37:58 homeassistant systemd-resolved[389]: Hostname conflict, changing published hostname from 'homeassistant223044' to 'homeassistant223048'. Dec 02 15:37:58 homeassistant systemd-resolved[389]: Detected conflict on homeassistant223048.local IN A 192.168.XX66 Dec 02 15:37:58 homeassistant systemd-resolved[389]: Hostname conflict, changing published hostname from 'homeassistant223048' to 'homeassistant223058'. Dec 02 15:37:59 homeassistant systemd-resolved[389]: Detected conflict on homeassistant223058.local IN A 192.168.XX.66 Dec 02 15:37:59 homeassistant systemd-resolved[389]: Hostname conflict, changing published hostname from 'homeassistant223058' to 'homeassistant223059'. Dec 02 15:37:59 homeassistant systemd-resolved[389]: Detected conflict on homeassistant223059.local IN A 192.168.XX.66 Dec 02 15:37:59 homeassistant systemd-resolved[389]: Hostname conflict, changing published hostname from 'homeassistant223059' to 'homeassistant223063'.