First, i am not subscribing ot the mailing list, so I would appreciate
CC of mails to the list.
I recently had problems with lots of collisions on one of my
non-switched ethernet segments, and spent quite some time localizing the
source, and has now tracked it down to what I would call an unwanted
feature in the TCP/IP implementation of a multihomed single interface
host. The problem exists both with Linux 2.0 / 2.2 as well as AIX 4.1.5
I am not sure of the problem is in the kernel, or in libnet.
My configuration is:
eth0 - 10.11.12.2/24
eth0:1 - 192.168.1.2/24 (or using IP alias)
eth1 - 10.250.240.2/24 (or whatever)
gw - 10.11.12.1/24
There exists a static route to 192.168.1.0/24 using 192.168.1.2 as
eth0 - 192.168.1.3/24
gw - 192.168.1.1/24
Host 1 + 2 are sitting on the same ethernet segment / collision domain.
The gateway (Cisco router) is multihomed on a single interface.
If host 1 opens a connection to host 2, the souce address will be
10.11.12.2, which is NOT on the same IP network as host 2. So they are
transmitted 10.11.12.2 --inside machine--> 192.168.1.2 --> 192.168.1.4 .
And response packets from host goes 192.168.1.3 -> 192.168.1.1 ->
10.11.12.2, and is thus transmitted twice on the physical network.
IDEA FOR SOLUTION
Modify the IP stack or just TCP to be intelligent about picking source
addresses. At least outgoing TCP connections should pick the closest
source address it knows of. This is already done if having multiple
interfaces, so it should be do-able to expand it to handle multiple IPs
on the same IF, or use the logical eth0:x interfaces in its search
I am willing to start coding, but I would like to get some feedback
Searching on the Internet, it looks like the BSD Kane project might
include it in their IPv6 implementation, but for the next few years,
IPv4 is what I will be using.
Povl H. Pedersen