Date: Sat, 3 Nov 2001 10:31:46 -0800 (PST) From: Archie Cobbs <archie@dellroad.org> To: Trond Davidsen <trond.davidsen@ii.uib.no> Cc: freebsd-net@FreeBSD.ORG Subject: Re: Mpd with a large number, 200+ , of bundles Message-ID: <200111031831.fA3IVl424031@arch20m.dellroad.org> In-Reply-To: <3BE40BC8.9060504@ii.uib.no> "from Trond Davidsen at Nov 3, 2001 04:22:48 pm"
next in thread | previous in thread | raw e-mail | index | archive | help
Trond Davidsen writes:
> When I try to make 240 bundles, from the log, it seems mpd is makeing
> all the nodes ok, but when I try to establish a connection nothing
> happens, no respons, nothing in the log, and mpd is frozen and needs to
> be killed with kill -9. And then it leaves 720 nodes behind which needs
> to be removed manually.
Hmmm.. sounds like a kernel problem (the fact that kill -9 is required).
> > This is probably due to a fixed size buffer in the base netgraph
> > code somewhere... it doesn't look like libnetgraph can generate
> > an ENOBUFS on its own. Try running ngctl with one or more '-d' flags..
>
> vpn-gw3# ngctl -d -d -d
> Available commands:
> config get or set configuration of node at <path>
> connect Connects hook <peerhook> of the node at <relpath> to <hook>
> debug Get/set debugging verbosity level
> help Show command summary or get more help on a specific command
> list Show information about all nodes
> mkpeer Create and connect a new node to the node at "path"
> msg Send a netgraph control message to the node at "path"
> name Assign name <name> to the node at <path>
> read Read and execute commands from a file
> rmhook Disconnect hook "hook" of the node at "path"
> show Show information about the node at <path>
> shutdown Shutdown the node at <path>
> status Get human readable status information from the node at <path>
> types Show information about all installed node types
> quit Exit program
> + list
> ngctl: SENDING MESSAGE:
> ngctl: SOCKADDR: { fam=32 len=4 addr="." }
> ngctl: NG_MESG :
> ngctl: vers 2
> ngctl: arglen 0
> ngctl: flags 0
> ngctl: token 1
> ngctl: cookie GENERIC (851672668)
> ngctl: cmd 9
> ngctl: args (0 bytes)
> ngctl: sendto(.): No buffer space available
> ngctl: send msg: No buffer space available
I think this error must be coming from the socket code. I wonder
if increasing the receive buffer size on the netgraph socket would
help.. try this patch for example:
Index: main.c
===================================================================
RCS file: /home/cvs/freebsd/src/usr.sbin/ngctl/main.c,v
retrieving revision 1.4.2.3
diff -u -r1.4.2.3 main.c
--- main.c 2001/01/09 06:52:25 1.4.2.3
+++ main.c 2001/11/03 18:29:33
@@ -145,6 +145,13 @@
if (NgMkSockNode(name, &csock, &dsock) < 0)
err(EX_OSERR, "can't create node");
+ {
+ int size = 128 * 1024;
+
+ if (setsockopt(csock, SOL_SOCKET, SO_RCVBUF, &size, sizeof(size)) == -1)
+ err(1, "setsockopt");
+ }
+
/* Do commands as requested */
if (ac == 0) {
if (fp != NULL) {
> When I create 240 bundles, mpd creates 720 netgraph nodes.
> Is there a limit on how many nodes the netgraph system can handle?
No hard limit internally, but there are limits on how large a
control message you can jam through a socket.
> Where is the netgraph system defined? i can find the modules under
> /usr/src/sys/modules/netgraph, but I can't find the 'netgraph base system'.
It's in /sys/netgraph/ng_base.c.
-Archie
__________________________________________________________________________
Archie Cobbs * Packet Design * http://www.packetdesign.com
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-net" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200111031831.fA3IVl424031>
