netdev
[Top] [All Lists]

Re: primary and secondary ip addresses

To: Hasso Tepper <hasso@xxxxxxxxx>
Subject: Re: primary and secondary ip addresses
From: "Martin A. Brown" <mabrown@xxxxxxxxxxxxxx>
Date: Fri, 17 Dec 2004 12:37:02 -0600 (CST)
Cc: Henrik Nordstrom <hno@xxxxxxxxxxxxxxx>, Andrea G Forte <andreaf@xxxxxxxxxxxxxxx>, Harald Welte <laforge@xxxxxxxxxxxx>, Neil Horman <nhorman@xxxxxxxxxx>, linux-net@xxxxxxxxxxxxxxx, netdev@xxxxxxxxxxx
In-reply-to: <200412172003.22319.hasso@estpak.ee>
References: <41912F7A.6000408@redhat.com> <41C30212.6000906@cs.columbia.edu> <Pine.LNX.4.61.0412171736210.17463@filer.marasystems.com> <200412172003.22319.hasso@estpak.ee>
Sender: netdev-bounce@xxxxxxxxxxx
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.

 : > 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

Best of luck!

-Martin

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

-- 
Martin A. Brown --- SecurePipe, Inc. --- mabrown@xxxxxxxxxxxxxx


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