[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAG-2HqXW+ULp_K-873+DG3T_4FxcxaSy5aGQ+wf6P9m=015zgQ@mail.gmail.com>
Date: Mon, 31 Mar 2014 20:43:04 +0200
From: Tom Gundersen <teg@...m.no>
To: netdev <netdev@...r.kernel.org>
Cc: Kay Sievers <kay@...y.org>
Subject: [BUG?] the first bind() of an AF_PACKET socket to an interface is slow
Hi,
I'm observing some strange behavior using bind().
For any given process, and any given interface, the first time I bind
a socket to the interface it takes a very long time. Subsequent binds
to the same interface in the same process are instantaneous.
The time it takes seems independent of the interface, so also affects
the loopback interface, but binding to all interfaces (ifindex=0) is
instantaneous.
It is also peculiar to note that the time it takes to bind is
seemingly randomly chosen on my machine from 9ms, 19ms, 29ms, 39ms,
49ms and 59 ms, but I never observed any other values.
The attached test program illustrates the problem, binding to
ifindex=0 (all) and ifindex=1 (loopback).
Sample run:
# strace -f -T -ebind ./bind
bind(3, {sa_family=AF_PACKET, proto=0x800, if0, pkttype=0x40 /* ? */,
addr(6)={1328, ffffffffffff}, 20) = 0 <0.000036>
bind(3, {sa_family=AF_PACKET, proto=0x800, if0, pkttype=0x40 /* ? */,
addr(6)={1328, ffffffffffff}, 20) = 0 <0.000033>
bind(3, {sa_family=AF_PACKET, proto=0x800, if1, pkttype=0x40 /* ? */,
addr(6)={1328, ffffffffffff}, 20) = 0 <0.059706>
bind(3, {sa_family=AF_PACKET, proto=0x800, if1, pkttype=0x40 /* ? */,
addr(6)={1328, ffffffffffff}, 20) = 0 <0.000111>
Can anyone enlighten me to what is going on? Is this expected behavior
or a bug? Any suggestions for a work-around?
Cheers,
Tom
View attachment "bind.c" of type "text/x-csrc" (664 bytes)
Powered by blists - more mailing lists