Why "No buffer space available"?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,
I have written a program to log the nat behavior. the program works
well when traffic is low. But when the traffic reaches 1Gb, program
always error.
According to the previous discussions about this problem, I even set
the recv buffer size to 50MB and the error still exists.
For every callback, format the data and then put it into the queue
directly.  The formating of data causes less then 1 second for 0.65
million records.
Errors always occurs  when there are less than 10 log records.
Is anyone who can help?
Thanks.

Setting:
    Redhat Enterprise Linux 5
    libnetfilter_conntrack-0.0.100
    libnfnetlink-1.0.0
    recv buffer size: 50MB
    nfct_open(CONNTRACK, NF_NETLINK_CONNTRACK_NEW|NF_NETLINK_CONNTRACK_DESTROY)
    1Gb nat traffic, 0.65 million records per minute
    circular queue size: 1 million

Error:
    nfct_catch error: No buffer space available

Program Structure:
    Callback:
        lock;
        if log number > MAX_LOG_NUM:
            discard
        else:
            put log in circular queue
            log number += 1
        unlock

    Thread 2:
        lock;
        if log number >0 :
            get lock number
        unlock
        process log data in circular queue
        lock
        log number = log number - log number processed
        unlock
--
To unsubscribe from this list: send the line "unsubscribe netfilter" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Netfilter Development]     [Linux Kernel Networking Development]     [Netem]     [Berkeley Packet Filter]     [Linux Kernel Development]     [Advanced Routing & Traffice Control]     [Bugtraq]

  Powered by Linux