problem with 2 host direct connect ipv6 routing

Kevin McMahon <[email protected]> Mon, 8 May 2006 14:34:19 -0500 (CDT)
Newsgroups gmane.network.ipv6.general
Message-ID <[email protected]>
Hi,
  
  I am attempting to have an application use default routing to 
automatically select the eth1 device (GiGE, MTU 9000) for use
rather than the eth0 device (GiGE, MTU 1500)

  Two host system, two GiGE ethernet adapters in each machine.
The first device, eth0, connects to a switch.  The second device,
eth1, directly connects point-to-point to another host eth1 adapter.


  SuSE SLES 9 Linux 2.6 kernel.

  For reference, I've included the details of what I am 
attempting below.


  I'm attempting to set up the following config

  [-------------]                  [-------------]
  [             ]                  [             ]
  [   Host A    ]                  [   Host B    ]
  [             ]                  [             ]
  [             ]                  [             ]
  [             ]                  [             ]
  [             ]                  [             ]
  [   (eth0)    ]---->[switch]---->[   (eth0)    ]
  [   (    )    ]<----[      ]<----[   (    )    ]
  [             ]                  [             ]
  [   (eth1)    ]----------------->[   (eth1)    ]
  [   (    )    ]<-----------------[   (    )    ]
  [             ]                  [             ]
  [             ]                  [             ]
  [-------------]                  [-------------]

  two hosts,
  each with two GigE ethernet boards

    eth0 - main corp network, MTU 1500, with switch
    eth1 - private point-to-point network, MTU 9000, direct connect, no switch



  For example, 

  # WORKS! ...

    ping6 -I eth1 <ipv6_addr> 

  works fine.  But, my attempt to add a default route with the
ip command did not allow the following to work...

  # FAILS! ...

    ping6 <ipv6_addr> 


  Another twist...eth0 is the normal company network, while my
eth1 is a direct connection (no switch) over GigE w/ MTU 9000
between two Linux ia64 boxes.

  I have the systems now, in case you want more info or to have
me try anything...

  Also, I want to be sure that I'm only using ipv6 over the eth1 
device at the higher speeds and that I am not running ipv6-over-ipv4 
on either eth0 or eth1.  I suppose the client server benchmark 
results should make this obvious...


Thanks!
Kevin

==============================
Kevin McMahon

==============================



---------------------------------
Here is my session for baseline 
---------------------------------

  - simple ping6 of other side using the ping6 "-I eth1" argument 
    and no default route

  - add default route, ping6 fails without the "-I eth1" argument 

vortix 122% uname -a
  Linux vortix 2.6.5-7.244-sn2 #1 SMP Mon Dec 12 18:32:25 UTC 2005 
    ia64 ia64 ia64 GNU/Linux

vortix 123% cat /etc/*elease
  LSB_VERSION="core-2.0-noarch:core-3.0-noarch:core-2.0-ia64:core-3.0-ia64"
  SGI ProPack 4SP3 for Linux, Build 403r1-0512182217
  SUSE LINUX Enterprise Server 9 (ia64)
  VERSION = 9
  PATCHLEVEL = 3

vortix 125% rpm -qf `which ping6`
  iputils-ss021109-147.1


-----------------------------------------------------------------
# Baseline - simply ping6 the other host over eth1 - ping6 works
-----------------------------------------------------------------
------------
# Host 1
------------

vortix 112% ifconfig -a eth0
eth0      Link encap:Ethernet  HWaddr 08:00:69:13:DF:F5  
          inet addr:192.102.99.141  Bcast:192.102.99.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:69ff:fe13:dff5/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:359619 errors:0 dropped:0 overruns:0 frame:0
          TX packets:73360 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:28105748 (26.8 Mb)  TX bytes:68866550 (65.6 Mb)
          Interrupt:62 

vortix 113% ifconfig -a eth1
eth1      Link encap:Ethernet  HWaddr 08:00:69:12:69:92  
          inet addr:192.168.101.1  Bcast:192.168.101.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:69ff:fe12:6992/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:9000  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 b)  TX bytes:612 (612.0 b)
          Interrupt:69 

vortix 114% ip -f inet6 route
fe80::/64 dev eth0  metric 256  mtu 1500 advmss 1440 fragtimeout 64
fe80::/64 dev eth1  metric 256  mtu 9000 advmss 8940 fragtimeout 64
fe80::/64 dev eth2  metric 256  mtu 1500 advmss 1440 fragtimeout 64
ff00::/8 dev eth0  metric 256  mtu 1500 advmss 1440 fragtimeout 1
ff00::/8 dev eth1  metric 256  mtu 9000 advmss 8940 fragtimeout 1
ff00::/8 dev eth2  metric 256  mtu 1500 advmss 1440 fragtimeout 1
unreachable default dev lo  proto none  metric -1  error -101 fragtimeout 255


vortix 115% ping6 -I eth1 -c 5 fe80::a00:69ff:fe12:6a02
PING fe80::a00:69ff:fe12:6a02(fe80::a00:69ff:fe12:6a02) from fe80::a00:69ff:fe12:6992 eth1: 56 data bytes
64 bytes from fe80::a00:69ff:fe12:6a02: icmp_seq=1 ttl=64 time=0.675 ms
64 bytes from fe80::a00:69ff:fe12:6a02: icmp_seq=2 ttl=64 time=0.097 ms
64 bytes from fe80::a00:69ff:fe12:6a02: icmp_seq=3 ttl=64 time=0.094 ms
64 bytes from fe80::a00:69ff:fe12:6a02: icmp_seq=4 ttl=64 time=0.095 ms
64 bytes from fe80::a00:69ff:fe12:6a02: icmp_seq=5 ttl=64 time=0.094 ms

--- fe80::a00:69ff:fe12:6a02 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4002ms
rtt min/avg/max/mdev = 0.094/0.211/0.675/0.232 ms


-----------------------------------------------------------------------
------------
# Host 2
------------
vortix2 102% ifconfig -a eth0
eth0      Link encap:Ethernet  HWaddr 08:00:69:13:DD:A4  
          inet addr:192.102.99.66  Bcast:192.102.99.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:69ff:fe13:dda4/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:27780 errors:0 dropped:0 overruns:0 frame:0
          TX packets:826 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:2099739 (2.0 Mb)  TX bytes:77249 (75.4 Kb)
          Interrupt:62 

vortix2 103% ifconfig -a eth1
eth1      Link encap:Ethernet  HWaddr 08:00:69:12:6A:02  
          inet addr:192.168.101.2  Bcast:192.168.101.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:69ff:fe12:6a02/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:9000  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 b)  TX bytes:612 (612.0 b)
          Interrupt:71 

vortix2 104% ip -f inet6 route
fe80::/64 dev eth0  metric 256  mtu 1500 advmss 1440 fragtimeout 64
fe80::/64 dev eth1  metric 256  mtu 9000 advmss 8940 fragtimeout 64
ff00::/8 dev eth0  metric 256  mtu 1500 advmss 1440 fragtimeout 1
ff00::/8 dev eth1  metric 256  mtu 9000 advmss 8940 fragtimeout 1
unreachable default dev lo  proto none  metric -1  error -101 fragtimeout 255

vortix2 105% ping6 -I eth1 -c 5 fe80::a00:69ff:fe12:6992
PING fe80::a00:69ff:fe12:6992(fe80::a00:69ff:fe12:6992) from fe80::a00:69ff:fe12:6a02 eth1: 56 data bytes
64 bytes from fe80::a00:69ff:fe12:6992: icmp_seq=1 ttl=64 time=0.146 ms
64 bytes from fe80::a00:69ff:fe12:6992: icmp_seq=2 ttl=64 time=0.105 ms
64 bytes from fe80::a00:69ff:fe12:6992: icmp_seq=3 ttl=64 time=0.102 ms
64 bytes from fe80::a00:69ff:fe12:6992: icmp_seq=4 ttl=64 time=0.103 ms
64 bytes from fe80::a00:69ff:fe12:6992: icmp_seq=5 ttl=64 time=0.103 ms

--- fe80::a00:69ff:fe12:6992 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4003ms
rtt min/avg/max/mdev = 0.102/0.111/0.146/0.021 ms

-----------------------------------------------------------------

# Next, try setting default route to eth1 on each side 
  - ping6 fails w/o the "-I eth1" argument
-----------------------------------------------------------------
------------
# Host 1
------------

n6965@vortix:/root> route -A inet6 add ::/0 gw fe80::a00:69ff:fe12 dev eth1
n6965@vortix:/root> ip -f inet6 route
fe80::/64 dev eth0  metric 256  mtu 1500 advmss 1440 fragtimeout 64
fe80::/64 dev eth1  metric 256  mtu 9000 advmss 8940 fragtimeout 64
fe80::/64 dev eth2  metric 256  mtu 1500 advmss 1440 fragtimeout 64
ff00::/8 dev eth0  metric 256  mtu 1500 advmss 1440 fragtimeout 1
ff00::/8 dev eth1  metric 256  mtu 9000 advmss 8940 fragtimeout 1
ff00::/8 dev eth2  metric 256  mtu 1500 advmss 1440 fragtimeout 1
default via fe80::a00:69ff:fe12 dev eth1  metric 1  mtu 9000 advmss 8940 fragtimeout 64

n6965@vortix:/root> exit
exit

vortix 120% ping6 -I eth1 -c 5 fe80::a00:69ff:fe12:6a02
PING fe80::a00:69ff:fe12:6a02(fe80::a00:69ff:fe12:6a02) from fe80::a00:69ff:fe12:6992 eth1: 56 data bytes
64 bytes from fe80::a00:69ff:fe12:6a02: icmp_seq=1 ttl=64 time=0.606 ms
64 bytes from fe80::a00:69ff:fe12:6a02: icmp_seq=2 ttl=64 time=0.105 ms
64 bytes from fe80::a00:69ff:fe12:6a02: icmp_seq=3 ttl=64 time=0.096 ms
64 bytes from fe80::a00:69ff:fe12:6a02: icmp_seq=4 ttl=64 time=0.094 ms
64 bytes from fe80::a00:69ff:fe12:6a02: icmp_seq=5 ttl=64 time=0.095 ms

--- fe80::a00:69ff:fe12:6a02 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4001ms
rtt min/avg/max/mdev = 0.094/0.199/0.606/0.203 ms


vortix 121% ping6 -c 5 fe80::a00:69ff:fe12:6a02
connect: Invalid argument

------------------------------------------------------------------
------------
# Host 2
------------

n6965@vortix2:/store/n6965> route -A inet6 add ::/0 gw fe80::a00:69ff:fe12 dev eth1
n6965@vortix2:/store/n6965> ip -f inet6 route
fe80::/64 dev eth0  metric 256  mtu 1500 advmss 1440 fragtimeout 64
fe80::/64 dev eth1  metric 256  mtu 9000 advmss 8940 fragtimeout 64
ff00::/8 dev eth0  metric 256  mtu 1500 advmss 1440 fragtimeout 1
ff00::/8 dev eth1  metric 256  mtu 9000 advmss 8940 fragtimeout 1
default via fe80::a00:69ff:fe12 dev eth1  metric 1  mtu 9000 advmss 8940 fragtimeout 64

vortix2 107% ping6 -I eth1 -c 5 fe80::a00:69ff:fe12:6992
PING fe80::a00:69ff:fe12:6992(fe80::a00:69ff:fe12:6992) from fe80::a00:69ff:fe12:6a02 eth1: 56 data bytes
64 bytes from fe80::a00:69ff:fe12:6992: icmp_seq=1 ttl=64 time=0.888 ms
64 bytes from fe80::a00:69ff:fe12:6992: icmp_seq=2 ttl=64 time=0.111 ms
64 bytes from fe80::a00:69ff:fe12:6992: icmp_seq=3 ttl=64 time=0.100 ms
64 bytes from fe80::a00:69ff:fe12:6992: icmp_seq=4 ttl=64 time=0.097 ms
64 bytes from fe80::a00:69ff:fe12:6992: icmp_seq=5 ttl=64 time=0.100 ms

--- fe80::a00:69ff:fe12:6992 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4000ms
rtt min/avg/max/mdev = 0.097/0.259/0.888/0.314 ms

vortix2 108% ping6 -c 5 fe80::a00:69ff:fe12:6992
connect: Invalid argument


-----------------------------------------------------------------


# Hmmmm.  looks like a missing socketopt() call when contrasting
  the strace output from a working (has "-I eth1") and failing
  (does not have "-I eth1") case ...

  ... or perhaps a bogus route table entry for my default route attempt

...




< bad >
31680 munmap(0x2000000000044000, 65536) = 0                   
31680 socket(PF_INET6, SOCK_DGRAM, IPPROTO_IP) = 4            

31680 connect(4, {sa_family=AF_INET6, sin6_port=htons(1025), inet_pton(AF_INET6, "fe80::a00:69ff:fe12:6a02", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, 28) = -1 EINVAL (Invalid argument)

< good >

31683 socket(PF_INET6, SOCK_DGRAM, IPPROTO_IP) = 4
31683 setsockopt(4, SOL_SOCKET, SO_BINDTODEVICE, "eth1\0", 5) = 0
31683 connect(4, {sa_family=AF_INET6, sin6_port=htons(1025), inet_pton(AF_INET6, "fe80::a00:69ff:fe12:6a02", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, 28) = 0
31683 getsockname(4, {sa_family=AF_INET6, sin6_port=htons(32776), inet_pton(AF_INET6, "fe80::a00:69ff:fe12:6992", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=if_nametoindex("eth1")}, [28]) = 0
31683 close(4)                          = 0



-----------------------------------------------------------------


---------------------------------------------------------------------
The IPv6 Users Mailing List
Unsubscribe by sending "unsubscribe users" to [email protected]