From Fedora Project Wiki

Revision as of 15:56, 22 September 2012 by Pavlix (talk | contribs) (→‎GLIBC)

When working on NetworkManager, the following projects cause me headache:

  • NetworkManager itself: I need to test NM in a virtual environment with bridges. These are not supported in the current release. I hope to make the next release mature enough to support its own development.
  • Kernel: The kernel IPv6 networking layer is somewhat unmanagable. The rtnetlink interface doesn't provide enough funcionality to support IPv6 networking.
  • GLIBC: The getaddrinfo() function doesn't work properly and is not supported in nsswitch.conf. It breaks whenever my development machine happens to be on an IPv4-only network.
  • nss-mdns (Avahi nsswitch plugin): Can't implement link-local name resolution because of the above problem in GLIBC.
  • IETF networking standards: For some reasons many IPv6-related standards have serious design flaws that prevent them from working properly.

What do we need for proper Linux networking

  • Interface for static IPv4 and IPv6 configuration (kernel)
  • Interface for bridging/bonding/vlan configuration (kernel)
  • Interface for DNS configuration (/etc/resolv.conf)
  • DHCP client implementation for IPv4 automatic configuration (dhclient)
  • RA client implementation for IPv6 address configuration (kernel, with workarounds in NetworkManager)
  • RDNSS/DNSSL client implementation for IPv6 DNS configuration (NetworkManager through kernel, with workarounds)
  • DHCP client implementation for IPv6 address/DNS/other configuration (dhclient)
  • IPsec, VPN and tunneling implementations (various daemons)
  • A network management daemon to properly manage all of the above together with user configuration (NetworkManager)
  • Networking API for applications (glibc, with many problems)

I may have missed something but the objective is to show that networking is rather complex and the various tools need to be centrally managed by a network management service in order to make users and administrators happy.

NetworkManager

I'm currently maintaining a patchset in a separate NetworkManager branch called 'pavlix/next'. It has a lot of improvements over the current release of NetworkManager but also over the 'master' branch. The reason for keeping a separate branch is that I need to do a lot of interdependent stuff to fullfil a big picture of how things should work. Many changes I'm making are quite big.

I am often rebasing this branch and rewriting its history. It is not currently possible to merge it into 'master' and it is not possible to continuously marge your local changes without a considerable amount of 'rebase' magic.

The current patchset includes the following changes:

  • Add a new subsystem for kernel network configuration (bgo #683173)
  • Remove distribution-specific initscripts
  • Build on any linux distribution without special options (bgo #663602)
  • Remove unnecessary '--with-distro' values (some distributors may need to remove it from their package builds)
  • Move NM-specific DHCP leases to /var/lib/NetworkManager (may need selinux policy changes)
  • Add support for IPv4 dhclient.conf overrides in /etc/NetworkManager
  • Don't ask 'nscd' to reload configuration (it uses inotify to watch it)
  • Add support for bridges with manual and automatic IPv4/IPv6 configuration (bgo #546197)
  • Fix support for bonds with manual and automatic IPv4/IPv6 configuration (bgo #540995)
  • Read IPv4 addresses also in CIDR format in keyfile

GLIBC

  • getaddrinfo(127.0.0.1, AI_ADDRCONFIG) fails on hosts without global IPv4 (e.g. notebooks not connected to any networks)
  • getaddrinfo(::1, AI_ADDRCONFIG) fails on hosts without any other IPv6 address
  • getaddrinfo(link-local-address, AI_ADDRCONFIG) fails on hosts without global IPv6 (hopefully solved)

IETF standards

Contact

Mail: psimerda AT redhat DOT com, pavlix AT pavlix DOT net

Jabber: pavlix AT pavlix DOT net

IRC Freenode: pavlix (#nm and a couple of other channels)

Phone: +420 775 996 256