Skip to content
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

Implement Multicast listener discovery #10

Open
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

blocktrron
Copy link

Currently if MLD snooping is activated in a network, the client is not receiving packets for it's solicited node address and therefor can't be reached by its global address.

This PR implements MLD subscription on the clients solicited node address, allowing EtherSia to work in such environments.

@njh
Copy link
Owner

njh commented Oct 28, 2017

Thank you very much for your PR @blocktrron! Also fantastic, that you have added tests - sorry there wasn't a development guide explaining how they work.

Once I got the core functionality working, I was hoping to make any new functionality optional - so that features that aren't used in the sketch don't increase the code size. But I guess this is a fairly core requirement.

I was hoping to add proper multicast support at some point, but I hadn't realised that the lack of MLD, might cause problems with MLD snooping switches.

Out of interest, which switch make/model have you been testing with?

I have never used templates in C++ before; but it looks like a good way of dealing with IPv6 extension headers - I was hoping to be able to ignore them 😟

It looks like there is a bit code duplication - calculateChecksum() and isValid(). I am not sure if it is avoidable?

@alexandrecuer
Copy link
Contributor

I haven't yet use your improvment but I am going to.....

On my local lan, on some branches of the network, if I want the neighbour discovery to be successfull, I have to increase in the Ethersia.h the following parameters :
#define NEIGHBOUR_SOLICITATION_TIMEOUT (5000)
#define NEIGHBOUR_SOLICITATION_ATTEMPTS (10)

Can this be related to the problem blocktrron is describing (ie MLD snooping activation) ?

By the way, I only use link-local addressing (no global address) so I have disabled autoconfiguration with the command : ether.disableAutoconfiguration()

I have got a cisco catalyst 3750 and 13 cisco catalyst 2960/2950 on my local lan....

please excuse if this is completely out of the PR subject....I am not an expert in those networking fields....

Alex

@blocktrron
Copy link
Author

@njh Thanks for reviewing.
I've been testing with a TP-Link OpenWRT wireless router with multicast snooping on the client bridge enabled.

I'm checking back if the code duplication is avoidable. I've ran into some weird problems with the existing methods but fixed a bit in the meantime without coming back to this.

@alexandrecuer EtehrSia in it's current stage has no multicast snooping implemented, so increasing the timeout/retry counts on neighbour solicitation should have nothing to do with MLD. Your pleblems sound more like loss/high latency between your client and EtherSia.

@heX16 heX16 mentioned this pull request Jan 5, 2018
Base automatically changed from master to main January 23, 2021 00:34
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

Successfully merging this pull request may close these issues.

None yet

3 participants