Skip to content

MDNS packet flood using plugin when multiple OTA clients exist #848

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

Closed
kurtgo opened this issue Oct 16, 2017 · 6 comments
Closed

MDNS packet flood using plugin when multiple OTA clients exist #848

kurtgo opened this issue Oct 16, 2017 · 6 comments

Comments

@kurtgo
Copy link

kurtgo commented Oct 16, 2017

I recently deployed 7 devices with OTA Update enabled (they respond to mdns _arduino._tcp.local queries.
Each copy of eclipse blasts 6 or 7 MDNS broadcast messages (like this wireshark capture)
2963 758.659438000 192.168.1.199 224.0.0.251 MDNS 79 Standard query 0x0000 PTR _arduino._tcp.local, "QM" question

Although they seem benign, each query gets 7 responses (one from each arduino running OTA). This flood is replicated numerous times, and eventually causes the entire network to clog with mDNS query/result packets.

Arduino IDE also causes the same behavior, so I would bet it is related to the jmdns

Steps to reproduce:

  1. fire up many OTA update arduino devices on the same subnet connected to the same wireless router
  2. start multiple copies of eclipse and/or Arduino IDE.
  3. start wireshark and monitor mDNS queries to see the flood.

The cause is probably related to the use of the jmdns package, however the mDNS standard requires broadcasters listen for mDNS requests, and not re-broadcast. Since each copy of eclipse is emitting a broadcast for each OTA device.

@jantje
Copy link
Member

jantje commented Oct 16, 2017

Sounds like you know what you are doing.
But I have no clue what you are saying.
As Arduino IDE has far more resources and you claim they have the same problem I would try to bang their door.
But then again, I have no clue what you are talking about.
Jantje

@kurtgo
Copy link
Author

kurtgo commented Oct 16, 2017

Well, I entered a ticket there too. Apparently, this issue has to do with bugs and deficiencies in the jmdns package. Updating jmdns to 3.5.4 solves some of the issue, as it does not send nearly as many mDNS queries when it sends the resolve multi-cast messages (now it's only 3, so that's lots better).

Apparently the Arduino core code that you are using in Slobber is just copied from Arduino core.

I would like to update the jmdns package on my version of eclipse, but I have no clue about how to start that process on this git repo. Should I fork the repo and update the jmnds package?

@wimjongman
Copy link
Member

See #655

@jantje
Copy link
Member

jantje commented Oct 20, 2017

@kurtgo
The jmdns package has been upgraded to the latest version.
I hope this eases the pain.

@wimjongman
Copy link
Member

@kurtgo can you run your use case again?

@kurtgo
Copy link
Author

kurtgo commented Oct 28, 2017

Updating jmdns will help, but that is only half the problem (albeit the more important half). This issue arduino/Arduino#6832 tracks the whole problem. It was fixed in Arduino core libraries so you should really update to the newer core code.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants