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!
Best Answer
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.