Where does loopback short circuit ?

Neil Horman nhorman at redhat.com
Fri Aug 30 11:48:03 UTC 2013


On Fri, Aug 30, 2013 at 07:09:16AM -0400, Steve Clark wrote:
> On 08/29/2013 04:28 PM, Neil Horman wrote:
> >On Thu, Aug 29, 2013 at 01:06:23PM -0700, Les Howell wrote:
> >>On Thu, 2013-08-29 at 18:04 +0100, Richard W.M. Jones wrote:
> >>>On Thu, Aug 29, 2013 at 10:02:27AM -0700, John Chludzinski wrote:
> >>>>I've had a debate with some co-workers about whether or not a message
> >>>>that's sent to the loopback interface makes it way into the IP layer and
> >>>>is fragmented before flowing back up the network stack.  Does it?
> >>>Can you please not keep creating new top level threads.
> >>>
> >>>Furthermore, this is not an appropriate mailing list to discuss any
> >>>general (not even Linux) networking issues that you may have.  It's
> >>>more appropriate for a venue such as stackoverflow.
> >>>
> >>>Rich.
> >>I am unsure of the standards for this.  I am also curious about the
> >>Fedora implementation.  I would suspect that the loopback mechanism
> >>would be implementation dependent, and that the method used on a
> >>particular system would provide valuable information.
> >>
> >>A usergroup such as stackoverflow would not likely have that
> >>information.  Therefore this would seem to be the most accurate source
> >>for such information IMO.
> >>
> >>A short and reasonable answer would be beneficial to the group.
> >>
> >The answer is simple, and as always, contained in the source.  lo is defined in:
> >drivers/net/loopback.c
> >
> >It registers an interface using the network driver api, and contains a transmit
> >routine.  Therefore, all frames that go to the loopback interface go through the
> >entire routing stack, and get looped at the driver.
> >
> >honestly, doing anything less tends to get pretty messy anyway, as you start to
> >have to handle all sorts of special cases.  Consider the possibility that a
> >packet socket is listening on lo when you transmit a tcp frame out of it.  If
> >you looped it back higher in the stack, you'd have to be sure to clone the skb
> >and offer the packet to the packet protocol somewhere in the ip stack.  Multiply
> >that by every protocol listener available in the kernel and the fan out gets
> >unmanageable.  Its better to just go down to the driver layer and loop there.
> >
> >Neil
> >
> >>-- 
> >>devel mailing list
> >>devel at lists.fedoraproject.org
> >>https://admin.fedoraproject.org/mailman/listinfo/devel
> >>Fedora Code of Conduct: http://fedoraproject.org/code-of-conduct
> Hello,
> 
> I believe in later kernels there is the option to bypass the tcp stack on the loopback
> which will be enabled by default. See this thread.
> http://marc.info/?l=linux-netdev&m=134456025709318&w=3
> 

It didn't work properly, for exactly the reason I pointed out above and
several others, so it never got integrated.  See:
http://marc.info/?l=linux-netdev&m=134572202724967&w=3

Note the thread is from last september, and it never got picked up.

Neil
 
> 
> 
> -- 
> Stephen Clark
> *NetWolves*
> Director of Technology
> Phone: 813-579-3200
> Fax: 813-882-0209
> Email: steve.clark at netwolves.com
> http://www.netwolves.com


More information about the devel mailing list