Skip to contentSkip to conversation

Bug in order of multiple IPv6 addresses per interface? Newest added one is preferred in difference to IPv4

DISCUSSION Peter Bieringer 3 participants 5 messages Aug 21, 2006

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

Hi,

if I add an additional IPv4 address of the same subnet ("IP aliasing", used for virtual hosting), it's added after the first one and also get the flag "secondary":

# ip -4 addr show dev eth0 | grep -w inet
    inet 192.0.2.11/24 brd 192.0.2.255 scope global eth0
# ip -4 addr add 192.0.2.253/24 dev eth0
# ip -4 addr show dev eth0 | grep -w inet
    inet 192.0.2.11/24 brd 192.0.2.255 scope global eth0  <-  #1
    inet 192.0.2.253/24 scope global secondary eth0       <-  #2

The new added address is also *not* used for outgoing connections by default.

In IPv6, the behavior is completly different:

# ip -6 addr show dev eth0  |grep -w inet6 |grep -w global
    inet6 2001:db8:0:1::11/64 scope global
# ip -6 addr add 2001:db8:0:1::253/64 dev eth0
# ip -6 addr show dev eth0  |grep -w inet6 |grep -w global
    inet6 2001:db8:0:1::253/64 scope global   <- #2 !!!!
    inet6 2001:db8:0:1::11/64 scope global    <- #1

So the last added on is now the first in list. Also, it gets no "secondary" flag and "ip" doesn't even support this flag.

And the worse thing is that the first one in list (= last added one) is now used as default for outgoing connections. Can be easily tested using "ping6".

Is this a bug (I hope so) or a (undocumented?) feature?

How can I add additional IPv6 addresses from the same subnet to an interface without changing implicit the default outgoing address.

Current workaround: adding new address, remove and readd primary IPv6 address (which is afterwards the first one in list again).

BTW: this can break at least initscripts, which support more than one address per interface (a primary and some secondary ones), see also:
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=199862 (a workaround is described here)

Used versions:

kernel-2.6.17-1.2174_FC5 (happen also below, e.g. 2.6.9 from RHEL4) iproute-2.6.15-1.2

Regards,
Peter

Signature · 3 lines
Dr. Peter Bieringer                     http://www.bieringer.de/pb/
GPG/PGP Key 0x958F422D                       mailto:[email protected]
Deep Space 6 Co-Founder and Core Member  http://www.deepspace6.net/
#1 lore raw

Hello.

In article <[email protected]> (at Mon, 21 Aug 2006 07:36:19 +0200), Peter Bieringer <[email protected]> says:

Quoted 5 lines

In IPv6, the behavior is completly different:

# ip -6 addr show dev eth0  |grep -w inet6 |grep -w global
    inet6 2001:db8:0:1::11/64 scope global
Quoted 8 lines
# ip -6 addr add 2001:db8:0:1::253/64 dev eth0
# ip -6 addr show dev eth0  |grep -w inet6 |grep -w global
    inet6 2001:db8:0:1::253/64 scope global   <- #2 !!!!
    inet6 2001:db8:0:1::11/64 scope global    <- #1

So the last added on is now the first in list. Also, it gets no "secondary" flag and "ip" doesn't even support this flag.

IPv6 does not have secondary flag. We even reuse that for IPv6 temporary addresses.

Quoted 3 lines

And the worse thing is that the first one in list (= last added one) is now used as default for outgoing connections. Can be easily tested using "ping6".

:

Quoted 1 line

Is this a bug (I hope so) or a (undocumented?) feature?

An implementation decision.
I do not favor changing this so far.

--yoshfuji

#2 lore raw

(usagi-users 03687) Re: Bug in order of multiple IPv6 addresses per interface? Newest added one is preferred in difference to IPv4

Quoted 21 lines · YOSHIFUJI Hideaki / 吉藤英明

Hello.

In article <[email protected]> (at Mon, 21 Aug 2006 07:36:19 +0200), Peter Bieringer <[email protected]> says:

Quoted 5 lines

In IPv6, the behavior is completly different:

# ip -6 addr show dev eth0  |grep -w inet6 |grep -w global
    inet6 2001:db8:0:1::11/64 scope global
Quoted 8 lines
# ip -6 addr add 2001:db8:0:1::253/64 dev eth0
# ip -6 addr show dev eth0  |grep -w inet6 |grep -w global
    inet6 2001:db8:0:1::253/64 scope global   <- #2 !!!!
    inet6 2001:db8:0:1::11/64 scope global    <- #1

So the last added on is now the first in list. Also, it gets no "secondary" flag and "ip" doesn't even support this flag.

IPv6 does not have secondary flag. We even reuse that for IPv6 temporary addresses.

Quoted 7 lines
Quoted 3 lines

And the worse thing is that the first one in list (= last added one) is now used as default for outgoing connections. Can be easily tested using "ping6".

:

Quoted 1 line

Is this a bug (I hope so) or a (undocumented?) feature?

An implementation decision.

Thank you for this clarification.

Quoted 1 line

I do not favor changing this so far.

Hmm, would it be possible to implement a primary flag in the future?

BTW: Does anyone know about the behavior of *BSD for this issue?

Peter

Signature · 5 lines
Dr. Peter Bieringer                     http://www.bieringer.de/pb/
GPG/PGP Key 0x958F422D                       mailto:[email protected]
Deep Space 6 Co-Founder and Core Member  http://www.deepspace6.net/
OpenBC                    http://www.openbc.com/hp/Peter_Bieringer/
Personal invitation to OpenBC  http://www.openbc.com/go/invita/3889
#3 lore raw
Quoted 8 lines
Quoted 4 lines
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines

On Mon, 21 Aug 2006 12:47:36 +0200,
Peter Bieringer <[email protected]> said:

I do not favor changing this so far.

Hmm, would it be possible to implement a primary flag in the future?

BTW: Does anyone know about the behavior of *BSD for this issue?

As far as I know, BSD variants don't have the notion of *explicit* 'first/primary' or 'secondary' address. But if your main concern is to prefer particular addresses as the source address of outgoing packets, you'd be able to achieve the goal by configuring appropriate policy table entries (per RFC3484).

JINMEI, Tatuya Communication Platform Lab. Corporate R&D Center, Toshiba Corp. [email protected]

#4 lore raw

(usagi-users 03690) Re: Bug in order of multiple IPv6 addresses per interface? Newest added one is preferred in difference to IPv4

Quoted 7 lines · JINMEI Tatuya / 神明達哉
Quoted 6 lines
Quoted 4 lines
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines

On Mon, 21 Aug 2006 12:47:36 +0200,
Peter Bieringer <[email protected]> said:

I do not favor changing this so far.

Hmm, would it be possible to implement a primary flag in the future?

Quoted 7 lines
Quoted 1 line

BTW: Does anyone know about the behavior of *BSD for this issue?

As far as I know, BSD variants don't have the notion of *explicit* 'first/primary' or 'secondary' address. But if your main concern is to prefer particular addresses as the source address of outgoing packets, you'd be able to achieve the goal by configuring appropriate policy table entries (per RFC3484).

Hmm, can I do this on Linux, too for preferring a source address (out of configured addresses from the *same subnet*)?

I only found:
http://people.redhat.com/drepper/linux-rfc3484.html
But this is more related to destination addresses.

Thank you very much.

Peter

Signature · 5 lines
Dr. Peter Bieringer                     http://www.bieringer.de/pb/
GPG/PGP Key 0x958F422D                       mailto:[email protected]
Deep Space 6 Co-Founder and Core Member  http://www.deepspace6.net/
OpenBC                    http://www.openbc.com/hp/Peter_Bieringer/
Personal invitation to OpenBC  http://www.openbc.com/go/invita/3889