Re: specifying scopid's for link-local IPv6 addrs
From: Bill Fink <hidden>
Date: 2007-07-25 06:15:12
On Tue, 24 Jul 2007, Sridhar Samudrala wrote:
On Tue, 2007-07-24 at 10:13 -0700, Rick Jones wrote:quoted
quoted
Rick, I don't see any way around this. For example, on one of my test systems, I have the following link local routes: chance% netstat -A inet6 -rn | grep fe80::/64 fe80::/64 :: U 256 0 0 eth0 fe80::/64 :: U 256 0 0 eth2 fe80::/64 :: U 256 0 0 eth3 fe80::/64 :: U 256 0 0 eth4 fe80::/64 :: U 256 0 0 eth5 fe80::/64 :: U 256 0 0 eth6 So if I want to run a link local test to fe80::202:b3ff:fed4:cd1, the system has no way to choose which is the correct interface to use for the test, and will give an error if the interface isn't specified.Yeah, I was wondering about that. I'm not sure if the attempts on "those other OSes" happened to involve multiple interfaces or not. Even so, it "feels" unpleasant for an application to deal with and I wonder if there is a way for a stack to deal with it on the application's behalf. I guess that might involve some sort of layer violation between neightbor discovery and routing (typing while I think about things I know little about...) Is there RFC chapter and verse I might read about routing with multiple link-local's on a system?quoted
You must explicitly specify the desired interface. For example, on my test system, the correct interface is eth6 which is interface 8 (lo eth0 eth1 eth2 ... eth5 eth6). Here is an example nuttcp test specifying interface 8: chance% nuttcp -P5100 fe80::202:b3ff:fed4:cd1%8 1178.5809 MB / 10.02 sec = 986.2728 Mbps 12 %TX 15 %RX nuttcp uses getaddrinfo() which parses the "%<ifindex>" field, and then copies the sin6_scope_id from the res structure to the server's sockaddr_in6 structure before initiating the connect().OK, I'll give that a quick try with netperf: [root@hpcpc106 ~]# netperf -H 192.168.2.107 -c -C -i 30,3 -- -s 1M -S 1M -m 64K -H fe80::207:43ff:fe05:9d%2We can even specify the interface name instead of the interface index <link-local>%ethX getaddrinfo() uses if_nametoindex() internally to get the index. Thanks Sridhar
Cool! That's much easier and works great. :-) chance% nuttcp -P5100 fe80::202:b3ff:fed4:cd1%eth6 1178.5468 MB / 10.02 sec = 986.3239 Mbps 13 %TX 15 %RX Still learn something new every day. Now if I just could remember it all when I needed it later. :-) -Thanks -Bill