netdev
[Top] [All Lists]

Re: primary and secondary ip addresses

To: "Martin A. Brown" <mabrown@xxxxxxxxxxxxxx>
Subject: Re: primary and secondary ip addresses
From: Andrea G Forte <andreaf@xxxxxxxxxxxxxxx>
Date: Fri, 17 Dec 2004 15:54:32 -0500
Cc: Hasso Tepper <hasso@xxxxxxxxx>, Henrik Nordstrom <hno@xxxxxxxxxxxxxxx>, Harald Welte <laforge@xxxxxxxxxxxx>, Neil Horman <nhorman@xxxxxxxxxx>, linux-net@xxxxxxxxxxxxxxx, netdev@xxxxxxxxxxx
In-reply-to: <Pine.LNX.4.61.0412171206200.10943@xxxxxxxxxxxxxxxxxxxxxxxxxx>
References: <41912F7A.6000408@xxxxxxxxxx> <41C30212.6000906@xxxxxxxxxxxxxxx> <Pine.LNX.4.61.0412171736210.17463@xxxxxxxxxxxxxxxxxxxxx> <200412172003.22319.hasso@xxxxxxxxx> <Pine.LNX.4.61.0412171206200.10943@xxxxxxxxxxxxxxxxxxxxxxxxxx>
Sender: netdev-bounce@xxxxxxxxxxx
User-agent: Mozilla Thunderbird 0.9 (Windows/20041103)
Martin A. Brown wrote:

Hello Hasso and Andrea,

We've gotten a little far afield from Neil Horman's initial question about why there are primary and secondary IPs, and I can't address your concern Andrea about the (route cache?) 500ms latency between the time that an address is added (or removed) from an interface and the time that the address is actually used. Even so, the Linux routing code allows the kernel to suggest an IP with the "src" keyword.

I apologize if I moved the topic too far from its original scope.

: > Why change the primary address? What is wrong with simply changing the
: > route to use the other source IP?
: : There is no support for it in most of user space software.
: None of the routing protocols suites support it etc.

Though some software provides support for explicit configuration of source address for initiated sockets, you can use INADDR_ANY and let the kernel perform source address selection for you.
Linux select an IP based on the routing table. [0]  Example:

 # ip route show 192.168.90.0/24
 192.168.90.0/24 dev eth0  scope link  src 192.168.90.250
 # ip route change 192.168.88.0/24 dev eth0 scope link src $SECONDARY

If you want to be fancy about it, you can have a higher preference routing table (make sure there's an entry in /etc/iproute2/rt_tables for $SECONDARY_TABLE). Then you can add and remove tables in this routing table instead of changing the route in the main routing table.

 # ip rule add prio table $SECONDARY_TABLE
 # ip route add table $SECONDARY_TABLE $DESTNET dev $REALDEV src $SECONDARY

I will give it a try and see if I get any improvement.
However, as last question (after this I will stop moving this topic further away from its original scope), do you guys know where I can find the code related to the routing cache in the kernel? I would like to see if there is a kind of timer for the update of such a cache.

Thank you again for all of your help.
Andrea


Best of luck!

-Martin

[0] http://linux-ip.net/gl/ip-cref/node155.html



<Prev in Thread] Current Thread [Next in Thread>