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

A few bugs compared to netkit, nothing catastrophic #238

Closed
hearc-tinf opened this issue Sep 11, 2023 · 2 comments
Closed

A few bugs compared to netkit, nothing catastrophic #238

hearc-tinf opened this issue Sep 11, 2023 · 2 comments
Labels

Comments

@hearc-tinf
Copy link

Hello,

Thank you for Kathara: as a long term user of Netkit, I thank you.
I however found a few issues, none seem to be blocking for now (I have put local work-arounds in place).

Describe the bug

  1. It seems the container interfaces are duplicated on the host, which also means that a lot of v6 queries (ICMPv6 Router Sollicitation, notably) are done by the host itself and visible in all of the containers, even when v6 is disabled in lab.conf.
    This creates noise that is easily work-aroundable by using tcpdump '!ip6' (as long as you don't do v6 labs; for those labs I am still using netkit for now).

  2. mtr is not installed in the VMs (traceroute has sometimes limitations), this is easily work-aroundable and I have simply
    installed a buster package

  3. I do some layer 2 labs where I use `brctl showmacs br0', on switches that implement a bridge (eth0, eth1): funnily, I can see all of the different containers local=yes MAC addresses, and some additional MAC addresses for the host side (where netkit would only show the local interfaces of that specific switch/UML VM) -- again, this is easily workaroundable by | egrep -v yes | egrep 00:00:00 (since ALL of my switches/pc MACs are manually set to 00:00:00:xx:yy:00 for pedagogical reasons).

@Skazza94
Copy link
Member

Hi @hearc-tinf,
thanks for the precious feedback!

See inline for the reply:

  1. mtr is not installed in the VMs (traceroute has sometimes limitations), this is easily work-aroundable and I have simply installed a buster package

We will install the mtr package in the kathara/base Docker Image. Thanks for the suggestion.

  1. It seems the container interfaces are duplicated on the host, which also means that a lot of v6 queries (ICMPv6 Router Sollicitation, notably) are done by the host itself and visible in all of the containers, even when v6 is disabled in lab.conf.
    This creates noise that is easily work-aroundable by using tcpdump '!ip6' (as long as you don't do v6 labs; for those labs I am still using netkit for now).
  2. I do some layer 2 labs where I use `brctl showmacs br0', on switches that implement a bridge (eth0, eth1): funnily, I can see all of the different containers local=yes MAC addresses, and some additional MAC addresses for the host side (where netkit would only show the local interfaces of that specific switch/UML VM) -- again, this is easily workaroundable by | egrep -v yes | egrep 00:00:00 (since ALL of my switches/pc MACs are manually set to 00:00:00:xx:yy:00 for pedagogical reasons).

There are some differences between NetKit and Kathará, the most important one is that NetKit leverages on software switches (called uml_switch), while Kathará relies on standard Linux Bridges. Both issues 1 and 3 are related to this. In fact, the extra MAC addresses that you see are the ones sent by the Linux bridge (of the host-side of the veth). Additionally, the Linux bridge also sends IPv6 packets inside the containers if the IPv6 stack is enabled.

We are already addressing this problem by using VDE software switches to abandon Linux bridges, and we will completely change the network plugin in the next release.

Hope that this reply answers to all your questions!
Mariano.

@hearc-tinf
Copy link
Author

Yes, it does! Thank you. I will test the next release when it becomes available.

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

No branches or pull requests

2 participants