All of lore.kernel.org
 help / color / mirror / Atom feed
* ping6 is sent out from wrong interface
@ 2008-06-20  1:42 Naohiro Ooiwa
  2008-06-24 20:04 ` YOSHIFUJI Hideaki / 吉藤英明
  0 siblings, 1 reply; 3+ messages in thread
From: Naohiro Ooiwa @ 2008-06-20  1:42 UTC (permalink / raw)
  To: netdev, usagi-users; +Cc: YOSHIFUJI Hideaki / 吉藤英明

Hi all,

I configured the IPv6 global address for two interfaces,
and sent the ping with "-I <eth1 address>" to the "ff02::1".

    # ifconfig eth0 add 2001:2c0:418:1::2/64
    # ifconfig eth1 add 2001:2c0:418:2::2/64
    # ping6 -I2001:2c0:418:2::2 ff02::1

    # /usr/sbin/tcpdump -ieth1 icmp6 -v -e
    tcpdump: listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes
    0 packets captured
    0 packets received by filter
    0 packets dropped by kernel

The ping packets weren't sent from "eth1",
so I captured the packets on the "eth0" by tcpdump.

    # /usr/sbin/tcpdump -ieth0 icmp6 -v -e
    tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
    18:16:53.900751 00:19:d1:19:23:af (oui Unknown) > 33:33:00:00:00:01 (oui Unknown), ethertype IPv6 (0x86dd), length
118: (hlim 64, next-header: ICMPv6 (58), length: 64) 2001:2c0:418:2::2 > ff02::1: ICMP6, echo request, length 64, seq 190
    18:16:53.957145 00:1d:09:7a:91:19 (oui Unknown) > 33:33:00:00:00:02 (oui Unknown), ethertype IPv6 (0x86dd), length
70: (hlim 255, next-header: ICMPv6 (58), length: 16) fe80::21d:9ff:fe7a:9119 > ff02::2: [icmp6 sum ok] ICMP6, router
solicitation, length 16
              source link-address option (1), length 8 (1): 00:1d:09:7a:91:19
    ::::::

The ping packets were sent out from "eth0"(00:19:d1:19:23:af),
but IPv6 address was "eth1"(2001:2c0:418:2::2).
Why is interface "eth0".  Isn't it bug ?

The following is additional information.

    # ifconfig eth0
    eth0      Link encap:Ethernet  HWaddr 00:19:D1:19:23:AF
              inet addr:10.1.0.161  Bcast:10.1.255.255  Mask:255.255.0.0
              inet6 addr: 2001:2c0:418:1::1/64 Scope:Global
              inet6 addr: fe80::219:d1ff:fe19:23af/64 Scope:Link
              ::::::
    # ifconfig eth1
    eth1      Link encap:Ethernet  HWaddr 00:10:18:0E:0C:B4
              inet addr:172.16.255.200  Bcast:172.16.255.255  Mask:255.255.0.0
              inet6 addr: 2001:2c0:418:2::2/64 Scope:Global
              inet6 addr: fe80::210:18ff:fe0e:cb4/64 Scope:Link
              ::::::

    # route -A inet6
    Kernel IPv6 routing table
    Destination            Next Hop Flags Metric Ref    Use Iface
    2001:2c0:418:1::/64    *        U     256    0        0 eth0
    2001:2c0:418:2::/64    *        U     256    0        0 eth1
    fe80::/64              *        U     256    0        0 eth0
    fe80::/64              *        U     256    0        0 eth1
    ::::::
    2001:2c0:418:1::1/128  *        U     0      8        1 lo
    2001:2c0:418:2::2/128  *        U     0      5        1 lo
    ::::::
    ff00::/8               *        U     256    0        0 eth0
    ff00::/8               *        U     256    0        0 eth1
    #

The version used are following:

    # uname -r -m
    2.6.24.7-92.fc8 i686
    # ping6 -V
    ping6 utility, iputils-sss20070202


Regards,
Naohiro Ooiwa


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: ping6 is sent out from wrong interface
  2008-06-20  1:42 ping6 is sent out from wrong interface Naohiro Ooiwa
@ 2008-06-24 20:04 ` YOSHIFUJI Hideaki / 吉藤英明
  0 siblings, 0 replies; 3+ messages in thread
From: YOSHIFUJI Hideaki / 吉藤英明 @ 2008-06-24 20:04 UTC (permalink / raw)
  To: nooiwa; +Cc: netdev, usagi-users, yoshfuji

In article <485B0B1D.5000603@miraclelinux.com> (at Fri, 20 Jun 2008 10:42:53 +0900), Naohiro Ooiwa <nooiwa@miraclelinux.com> says:

> The ping packets were sent out from "eth0"(00:19:d1:19:23:af),
> but IPv6 address was "eth1"(2001:2c0:418:2::2).
> Why is interface "eth0".  Isn't it bug ?
> 
> The following is additional information.
> 
>     # ifconfig eth0
>     eth0      Link encap:Ethernet  HWaddr 00:19:D1:19:23:AF
>               inet addr:10.1.0.161  Bcast:10.1.255.255  Mask:255.255.0.0
>               inet6 addr: 2001:2c0:418:1::1/64 Scope:Global
>               inet6 addr: fe80::219:d1ff:fe19:23af/64 Scope:Link
>               ::::::
>     # ifconfig eth1
>     eth1      Link encap:Ethernet  HWaddr 00:10:18:0E:0C:B4
>               inet addr:172.16.255.200  Bcast:172.16.255.255  Mask:255.255.0.0
>               inet6 addr: 2001:2c0:418:2::2/64 Scope:Global
>               inet6 addr: fe80::210:18ff:fe0e:cb4/64 Scope:Link
>               ::::::

-I does not specify interface strictly but source address.
Which means, if you just specify an address, interface is unspecified.
You can give "-I eth1", too.

BTW, we should accept '-I fe80::1%eth0', maybe.

--yoshfuji

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: ping6 is sent out from wrong interface
@ 2008-06-25  7:02 Naohiro Ooiwa
  0 siblings, 0 replies; 3+ messages in thread
From: Naohiro Ooiwa @ 2008-06-25  7:02 UTC (permalink / raw)
  To: YOSHIFUJI Hideaki / 吉藤英明; +Cc: netdev, usagi-users

Hi YOSHIFUJI-san

Thank you for your reply.

> -I does not specify interface strictly but source address.
> Which means, if you just specify an address, interface is unspecified.
> You can give "-I eth1", too.

I'm not convinced yet.
I don't think it's correct that kernel or ping6 arbitrarily decides outgoing interface.

Is this really an expected behaviour?
Could you explain to me the reason of it, too?

I think the behavior should be similar to IPv4.

The following is my image. ipv6_dev_find() is an imaginary function, which
finds the interface with a given source address.

How do you think?



--- linux-2.6.25/net/ipv6/raw.c.orig    2008-04-17 11:49:44.000000000 +0900
+++ linux-2.6.25/net/ipv6/raw.c 2008-06-25 15:20:27.000000000 +0900
@@ -875,8 +875,13 @@ static int rawv6_sendmsg(struct kiocb *i
                final_p = &final;
        }

-       if (!fl.oif && ipv6_addr_is_multicast(&fl.fl6_dst))
-               fl.oif = np->mcast_oif;
+       if (!fl.oif && ipv6_addr_is_multicast(&fl.fl6_dst)) {
+               if (np->mcast_oif)
+                       fl.oif = np->mcast_oif;
+               else
+                       fl.oif = ipv6_dev_find(oldflp->fl6_src);
+       }
+
        security_sk_classify_flow(sk, &fl);

        err = ip6_dst_lookup(sk, &dst, &fl);





^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2008-06-25  7:02 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-06-20  1:42 ping6 is sent out from wrong interface Naohiro Ooiwa
2008-06-24 20:04 ` YOSHIFUJI Hideaki / 吉藤英明
2008-06-25  7:02 Naohiro Ooiwa

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.