Site Navigation:
 
 

8. Networking

Major Kernel Changes 2.6.11 - 2.6.14

IPv4 Address Promotion

Starting with version 2.6.12 of the kernel a new feature has been added called named address promotion. It allows secondary IPv4 addresses to be promoted to primary addresses. Usually when the primary address is deleted all secondary addresses are deleted as well. By enabling the new sysctl net.ipv4.conf.all.promote_secondaries (or one of the interface specific variants) this behaviour can be changed to promote one of the secondary addresses to be the new primary address.

Configurable Source Address for ICMP Errors

The current behaviour when selecting the source address for ICMP error messages is to use the address of the interface the ICMP error is going to be sent out. Kernel version 2.6.12 introduces a new sysctl net.ipv4.icmp_errors_use_inbound_ifaddr which allows to change this behaviour to use the address of the interface which has received the original packet causing the error.

For example, the kernel receives an ICMP echo request on eth0. Because the new sysctl option is enabled, this causes the ICMP echo reply to be sent out via eth1. The address of eth0 is used when the default behaviour would use the address of eth.

This may ease network debugging in asynchronous routing setups.

LC-Trie Based Routing Lookup Algorithm

A new routing lookup algorithm called trie has been added. It is intended for large routing tables and shows a clear performance improvement over the original hash implementation at the cost of increased memory consumption and complexity.

Pluggable Congestion Control Algorithm Infrastructure

TCP congestion control algorithms are now pluggable and thus modular. The legacy new RENO algorithm stays default and acts as fallback algorithm. During the period of this work the following new congestion control algorithms have been added:

  • High Speed TCP congestion control.

  • TCP Hybla congestion avoidance.

  • H-TCP congestion control.

  • Scalable TCP congestion control.

All existing congestion control modules have been converted to this new infrastructure and the BIC congestion control has received enhancements from BICTCP 1.1 to handle low latency links.

[Note]Affecting the Congestion Control Algorithm

An interesting addition for developers is that the congestion control algorithm is socket specific and can be changed via the socket option TCP_CONGESTION.

Queue Avoidance upon Carrier Loss

When a network driver notices a carrier loss, for example when the cable is pulled out, the driver stops the queue in front of the driver. This has been causing the packets to be queued at the queueing discipline layer for an unbound period of time causing unexpected effects. In order to prevent this effect, the core networking stack now ceases to accept any packets for queueing for any device that is operationally down, that is, has its queue disabled.

DCCP Protocol Support

Kernel version 2.6.14-rc1 was the first version to receive support for the DCCP protocol. The implementation is still experimental but known to work. Work to make userspace applications aware of this new protocol has started.

Wireless

A new driver named HostAP has been added to 2.6.14-rc1 allowing the emulation of a wireless access point in software. Currently this driver only works for Intersil Prism2-based cards (PC Card/PCI/PLX). Support for wireless cards Intel(R) PRO/Wireless 2100 and 2200 has been added.

Miscellaneous
  • A lot of TCP Segmentation Offloading (TSO) related fixes have been included.

  • A new textsearch infrastructure has been added useable with the corresponding iptables and extended match.

  • Both the IPv4 and IPv6 multicast joining interface visible by userspace have been reworked and brought up to the latest standards.

  • The SNMPv2 MIB counter ipInAddrErrors is finally supported for IPv4.

  • Various new socket options proposed in Advanced API (RFC3542) have been added.

8.1. Userspace Tools

The IPv4 address deletion algorithm did not take the prefix length into account up to kernel version 2.6.12. Since this has changed the iproute2 tool now issues a warning if no prefix length is provided to warn about possible unintended deletions:

ip addr list dev eth0
4: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000
    inet 10.0.0.3/24 scope global eth0
su -c 'ip addr del 10.0.0.3 dev eth0'
Warning: Executing wildcard deletion to stay compatible with old
      scripts. Explicitly specify the prefix length (10.0.0.3/32) to
      avoid this warning. This special behaviour is likely to disappear
      in further releases, fix your scripts!

The correct method of deleting the address and thus avoiding the warning is:

su -c 'ip addr del 10.0.0.3/24 dev eth0'

It has not been possible to tell if an interface is down administratively or because no carrier can be found (cable unplugged). The flag NO-CARRIER has been introduced that shows up as a link flag if the link is administratively up but no carrier can be found.

The ip command now supports a batch mode via the argument -batch just like the tc command to speed up batches of tasks.