[2613] in linux-net channel archive

home help back first fref pref prev next nref lref last post

Re: kernel: IP: create: no memory left !

daemon@ATHENA.MIT.EDU (Paul Gortmaker)
Sun Apr 21 05:52:00 1996

From: Paul Gortmaker <gpg109@rsphy1.anu.edu.au>
To: jlewis@inorganic5.fdt.net (Jon Lewis)
Date: 	Sun, 21 Apr 1996 18:40:15 +1000 (EST)
Cc: linux-net@vger.rutgers.edu
In-Reply-To: <Pine.LNX.3.91.960421001626.27145C-100000@inorganic5.chem.ufl.edu> from "Jon Lewis" at Apr 21, 96 00:23:47 am

> 
> On a system running 1.2.13 and an IRC server on a small IRC netwrok, I 
> just got a bunch of errors today:
> 
> Apr 20 15:22:33 irc kernel:  no memory left !
> Apr 20 15:22:34 irc kernel: IP: create: no memory left !
> Apr 20 15:22:34 irc last message repeated 16 times
[...]
> Apr 20 15:22:34 irc kernel: eth0: Couldn't allocate a sk_buff of size 1514
> Apr 20 15:22:34 irc kernel: eth0: Couldn't allocate a sk_buff of size 1514.
> Apr 20 15:22:34 irc last message repeated 12 times
> 
> followed by several screens of
> 
> Apr 20 15:30:19 irc kernel: IP: queue_glue: no memory for gluing queue 
> 0x945CD8
[...]
> Apr 20 15:30:20 irc kernel: Couldn't get a free page.....
> 
> Shortly after which everything went back to normal.  Could this have been 
> the result of some kind of luser's IRC attack?

Somebody is spraying your machine with lots of fragments. Kernel v1.3.x
is more intelligent as to how much memory it will allocate to holding
onto unassembled IP fragments (see ip_evictor). You will still get the
"no memory for gluing queue 0xNNNNN" messages, as ip_glue tries to 
dev_alloc_skb() an area the size of the assembled packet. If you are
getting hit with packets > 16kB, then the dev_alloc_skb() is pretty much
guaranteed to fail. Reason it will fail even on machines with lots of
RAM is because memory fragmentation will eventually leave you with all
of your free pages in 4kB blocks, and nearly zero 8, 16, 32 or 64kB blocks
available.

Paul.


home help back first fref pref prev next nref lref last post