Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

My embedded Linux board has 3 interfaces:

  • eth0 - For all outbound traffic
  • eth1 - A hardware loopback (traffic leaves board, but comes immediately back in the same port)
  • lo - Standard loopback interface

ifconfig reveals the following:

eth1      Link encap:Ethernet  HWaddr AA:BB:CC:DD:EE:FF  
          inet addr:169.254.1.1  Bcast:169.254.255.255  Mask:255.255.255.255
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Base address:0x8000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:14 errors:0 dropped:0 overruns:0 frame:0
          TX packets:14 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1561 (1.5 KiB)  TX bytes:1561 (1.5 KiB)

And, route yields:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
169.254.1.1     *               255.255.255.255 UH    0      0        0 eth1
A.B.C.96        *               255.255.255.240 U     0      0        0 eth0
127.0.0.0       *               255.0.0.0       U     0      0        0 lo
default         A.B.C.110       0.0.0.0         UG    0      0        0 eth0

I can ping the eth1 interface's assigned IP, like so:

PING 169.254.1.1 (169.254.1.1): 56 data bytes
64 bytes from 169.254.1.1: seq=0 ttl=64 time=0.143 ms
64 bytes from 169.254.1.1: seq=1 ttl=64 time=0.067 ms

But, all of the packets appear on the lo interface, not eth1, according to the ifconfig reported RX/TX counters.

Why? Is the traffic really ingressing and egressing the eth1 port, but being accounted under the lo interface? Or, is the traffic really all flowing through lo?

Thanks!

share|improve this question
    
See unix.stackexchange.com/a/46448/6622 –  poige Feb 28 '13 at 0:09

2 Answers 2

Local traffic doesn't go through Ethernet interfaces. Fundamentally, local traffic goes through the local interface. The OS has no idea that your eth1 interface has hardware loopback.

share|improve this answer
    
thanks! That's what I also suspected, so why is all the traffic aimed at 169.254.1.1 going through lo instead of eth1? –  Trevor Feb 28 '13 at 14:10
    
Because it's local traffic. –  David Schwartz Feb 28 '13 at 14:36

Linux TCP/IP stack is very flexible one. See:

# — let's add dummy IP-address to Wi-Fi NIC
# ip ad ad 11.1.2.3/24 dev wlan0
# — Now chage its scope from 'local' to 'link'
# ip ro replace 11.1.2.3 dev wlan0 scope link table local

# — with tcpdump we can see now that's traffic to that dummy
# ex-local IP-address actually tries to go out of Wi-Fi NIC:

00:15:22.807607 ARP, Request who-has 11.1.2.3 tell 10.0.0.7, length 28
share|improve this answer
    
Thanks, poige, but I don't understand what any of those lines are doing, much less, why. Sorry. –  Trevor Feb 28 '13 at 14:20
    
@Trevor, comments added, and you can use ip help, ip ad help or ip ro help to become familiar with ip tool. Also, google for LARTC — Linux Advanced Routing & Traffic Control HOWTO. –  poige Feb 28 '13 at 14:51

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.