-
-
Notifications
You must be signed in to change notification settings - Fork 7k
mDNS packet flood destroys my local network due to jmdns 3.5.1 #6832
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
I found a solution that will work:
This solution will cause the re-broadcast as the TTL on the entries falls to zero. It also adjusts the rebroadcast internal to the JmDNS code, so deleting and re adding the service request is not required. |
This is a great news, thanks for sharing. Would you mind opening a PR with this fix so we can merge it directly giving you the right attribution? Thanks! |
Thanks @kurtgo for the hint Solves arduino#6832
@kurtgo https://github.com/arduino/Arduino/compare/ide-1.9.x-beta...facchinm:jmdns_3.5.3?expand=1 implements your suggestions; it seems to work well and it will probably be included in beta1.9 for some staging tests. Do you believe it's ok? |
Thanks facchinm,
|
Thanks @kurtgo for the hint Solves arduino#6832
My simple network of 6 OTA arduino nodes and a few open Arduino IDE windows causes a massive flood of mDNS traffic.
The jmdns java package has a rather large issue relating to broadcast mDNS packets. It seems that each service that responds to the addServiceListener() for the _arduino._tcp.local query causes an extra mDNS broadcast to be sent by jmdns. This has major scaling issues when there are many OTA clients listening on a single network. Each broadcast causes N responses and creates N more broadcasts. leading to a massive flow of broadcast packets and responses.
Secondly, the Arduino code restarts the jmdns query every 5 seconds. If the above process takes over 5 seconds (like when 6 or more OTA clients exist), it causes the wireless network to goto 100% utilization processing these requests.
Issues:
There are two issues here:
see sample java program : MainClass.zip
Just start wireshark and select this filter: "dns and udp.port eq 5353 and ip.addr eq 224.0.0.0/24" to isolate the JmDNS traffic.
Proposed Fixes:
the BoardReachabilityFilter.start should not have a fixed 5 second poll. Although this is nice when there is only one OTA client, it gets out of hand when there are a bunch. I suppose that if the jmdns service is fixed it would reduce this timer, but if you have a few copies if the IDE up on different computers the flooding would begin.
The jmdns service needs to be replaced, or fixed.
The text was updated successfully, but these errors were encountered: