route packets through hardware loopback interface, not lo
5,756
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.
Related videos on Youtube
Author by
Trevor
Updated on September 18, 2022Comments
-
Trevor almost 2 years
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 theifconfig
reported RX/TX counters.Why? Is the traffic really ingressing and egressing the
eth1
port, but being accounted under thelo
interface? Or, is the traffic really all flowing throughlo
?Thanks!
-
Trevor over 11 yearsthanks! 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 over 11 yearsThanks, poige, but I don't understand what any of those lines are doing, much less, why. Sorry.
-
David Schwartz over 11 yearsBecause it's local traffic.
-
poige over 11 years@Trevor, comments added, and you can use
ip help
,ip ad help
orip ro help
to become familiar withip
tool. Also, google for LARTC — Linux Advanced Routing & Traffic Control HOWTO. -
Alex over 3 yearsit is not generally true indeed. if you ping some local IP - yes it goes to LO. however all local traffic that goes inside host with docker containers do NOT go to lo indeed. it depends of actual case not in general.