Skip to content

Commit f8a805d

Browse files
committed
Increase net.unix.max_dgram_qlen
1 parent 21db401 commit f8a805d

File tree

7 files changed

+45
-15
lines changed

7 files changed

+45
-15
lines changed

Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,12 +93,12 @@ pylint:
9393
pylint --disable=R,C wfb_ng/*.py
9494

9595
clean:
96-
rm -rf env wfb_rx wfb_tx wfb_tx_cmd wfb_tun wfb_rtsp wfb_keygen dist deb_dist build wfb_ng.egg-info wfb-ng-*.tar.gz _trial_temp *~ src/*.o
96+
rm -rf env wfb_rx wfb_tx wfb_tx_cmd wfb_tun wfb_rtsp wfb_keygen dist deb_dist build wfb_ng.egg-info wfb_ng-*.tar.gz _trial_temp *~ src/*.o
9797

9898
deb_docker: /opt/qemu/bin
9999
@if ! [ -d /opt/qemu ]; then echo "Docker cross build requires patched QEMU!\nApply ./scripts/qemu/qemu.patch to qemu-7.2.0 and build it:\n ./configure --prefix=/opt/qemu --static --disable-system && make && sudo make install"; exit 1; fi
100100
if ! ls /proc/sys/fs/binfmt_misc | grep -q qemu ; then sudo ./scripts/qemu/qemu-binfmt-conf.sh --qemu-path /opt/qemu/bin --persistent yes; fi
101101
cp -a Makefile docker/src/
102102
TAG="wfb-ng:build-`date +%s`"; docker build --platform linux/$(DOCKER_ARCH) -t $$TAG --build-arg SRC_IMAGE=$(DOCKER_SRC_IMAGE) --build-arg QEMU_CPU=$(QEMU_CPU) docker && \
103-
docker run --platform linux/$(DOCKER_ARCH) -i --rm -v $(PWD):/build $$TAG bash -c "trap 'chown -R --reference=. .' EXIT; export VERSION=$(VERSION) COMMIT=$(COMMIT) SOURCE_DATE_EPOCH=$(SOURCE_DATE_EPOCH) && cd /build && make clean && make test && make deb"
103+
docker run --privileged --platform linux/$(DOCKER_ARCH) -i --rm -v $(PWD):/build $$TAG bash -c "trap 'chown -R --reference=. .' EXIT; export VERSION=$(VERSION) COMMIT=$(COMMIT) SOURCE_DATE_EPOCH=$(SOURCE_DATE_EPOCH) && /sbin/sysctl net.unix.max_dgram_qlen=512 && cd /build && make clean && make test && make deb"
104104
docker image ls -q "wfb-ng:build-*" | uniq | tail -n+6 | while read i ; do docker rmi -f $$i; done

docker/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ RUN apt-get update && \
1212
python3-twisted python3-pyroute2 \
1313
python3-all python3-all-dev \
1414
python3-serial dh-python python3-setuptools python3-msgpack \
15-
libgstrtspserver-1.0-dev
15+
libgstrtspserver-1.0-dev procps net-tools iproute2 iputils-ping
1616

1717
COPY src/Makefile /tmp
1818
ENV ENV=/opt/env

scripts/sysctl/98-wifibroadcast.conf

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
11
net.core.bpf_jit_enable = 1
22
net.core.rmem_max = 5000000
3+
net.core.wmem_max = 5000000
4+
net.unix.max_dgram_qlen=4096

src/rx.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1150,9 +1150,12 @@ int main(int argc, char* const *argv)
11501150
break;
11511151
default: /* '?' */
11521152
show_usage:
1153-
WFB_INFO("Local receiver: %s [-K rx_key] { [-c client_addr] [-u client_port] | [-U unix_socket] } [-p radio_port] [-R rcv_buf] [-s snd_buf] [-l log_interval] [-e epoch] [-i link_id] interface1 [interface2] ...\n", argv[0]);
1154-
WFB_INFO("Remote (forwarder): %s -f [-c client_addr] [-u client_port] [-p radio_port] [-R rcv_buf] [-s snd_buf] [-i link_id] interface1 [interface2] ...\n", argv[0]);
1155-
WFB_INFO("Remote (aggregator): %s -a server_port [-K rx_key] { [-c client_addr] [-u client_port] | [-U unix_socket] } [-R rcv_buf] [-s snd_buf] [-l log_interval] [-p radio_port] [-e epoch] [-i link_id]\n", argv[0]);
1153+
WFB_INFO("Local RX: %s [-K rx_key] { [-c client_addr] [-u client_port] | [-U unix_socket] } [-p radio_port]\n"
1154+
" [-R rcv_buf] [-s snd_buf] [-l log_interval] [-e epoch] [-i link_id] interface1 [interface2] ...\n", argv[0]);
1155+
WFB_INFO("RX forwarder: %s -f [-c client_addr] [-u client_port] [-p radio_port] [-R rcv_buf] [-s snd_buf]\n"
1156+
" [-i link_id] interface1 [interface2] ...\n", argv[0]);
1157+
WFB_INFO("RX aggregator: %s -a server_port [-K rx_key] { [-c client_addr] [-u client_port] | [-U unix_socket] } [-R rcv_buf]\n"
1158+
" [-s snd_buf] [-l log_interval] [-p radio_port] [-e epoch] [-i link_id]\n", argv[0]);
11561159
WFB_INFO("Default: K='%s', connect=%s:%d, link_id=0x%06x, radio_port=%u, epoch=%" PRIu64 ", log_interval=%d, rcv_buf=system_default, snd_buf=system_default\n", keypair.c_str(), client_addr.c_str(), client_port, link_id, radio_port, epoch, log_interval);
11571160
WFB_INFO("WFB-ng version %s\n", WFB_VERSION);
11581161
WFB_INFO("WFB-ng home page: <http://wfb-ng.org>\n");

src/tx.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1732,7 +1732,7 @@ int main(int argc, char * const *argv)
17321732
" [-T fec_timeout] [-l log_interval] [-e epoch] [-i link_id] [-f { data | rts }] [-m] [-V] [-Q]\n"
17331733
" [-P fwmark] [-C control_port] interface1 [interface2] ...\n",
17341734
argv[0]);
1735-
WFB_INFO("TX distributor: %s -d [-K tx_key] [-k RS_K] [-n RS_N] [-u udp_port] [-R rcv_buf] [-s snd_buf] [-p radio_port]\n"
1735+
WFB_INFO("TX distributor: %s -d [-K tx_key] [-k RS_K] [-n RS_N] { [-u udp_port] | [-U unix_socket] } [-R rcv_buf] [-s snd_buf] [-p radio_port]\n"
17361736
" [-F fec_delay] [-B bandwidth] [-G guard_interval] [-S stbc] [-L ldpc] [-M mcs_index] [-N VHT_NSS]\n"
17371737
" [-T fec_timeout] [-l log_interval] [-e epoch] [-i link_id] [-f { data | rts }] [-m] [-V] [-Q]\n"
17381738
" [-P fwmark] [-C control_port] host1:port1,port2,... [host2:port1,port2,...] ...\n",

wfb_ng/tests/test_tuntap.py

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,32 @@
33

44
import os
55
import time
6+
from twisted import version as twisted_version
67
from twisted.python import log
78
from twisted.trial import unittest
89
from twisted.internet import reactor, defer
10+
from twisted.internet.utils import getProcessOutputAndValue
11+
from incremental import Version
912
from ..tuntap import TUNTAPTransport, TUNTAPProtocol
1013
from ..common import df_sleep
1114

1215

16+
test_script="""\
17+
set -e
18+
trap 'ip netns delete tuntest' EXIT
19+
ip netns add tuntest
20+
ip link set tuntest2 netns tuntest
21+
ip netns exec tuntest bash -c "ifconfig tuntest2 up 192.168.77.2/24 && ping -c1 -I tuntest2 192.168.77.1"
22+
"""
23+
24+
arch = os.uname().machine
25+
bad_arch = ("mips64", "s390x", "ppc64le")
26+
1327
class TUNTAPTestCase(unittest.TestCase):
14-
skip = ("Root permission is required to test tunnel" if os.geteuid() != 0 or not os.path.exists('/dev/net/tun') else False)
28+
if os.geteuid() != 0 or not os.path.exists('/dev/net/tun') \
29+
or arch in bad_arch \
30+
or twisted_version < Version("Twisted", 19, 7, 0):
31+
skip = "Root requires or system is incompatible"
1532

1633
def setUp(self):
1734
self.p1 = TUNTAPProtocol(mtu=1400)
@@ -28,6 +45,12 @@ def tearDown(self):
2845
self.p2._cleanup()
2946

3047
def test_tuntap(self):
31-
# Test manually via "ping -I tuntest1 192.168.77.2" and "tcpdump -i tuntest2 -nn -p icmp"
32-
return df_sleep(100)
48+
def _got_rc(x):
49+
(out, err, code) = x
50+
log.msg(out.decode('utf-8'))
51+
log.msg(err.decode('utf-8'))
52+
self.assertEqual(code, 0)
53+
54+
return getProcessOutputAndValue('bash', env=os.environ, stdinBytes=test_script.encode())\
55+
.addCallback(_got_rc)
3356

wfb_ng/tests/test_txrx.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,17 +26,19 @@ def batched(iterable, n):
2626

2727

2828
class UDP_TXRX(DatagramProtocol):
29-
def __init__(self, tx_addr, tx_transport=None):
29+
def __init__(self, tx_addr, tx_proto=None):
3030
self.rxq = []
3131
self.tx_addr = tx_addr
32-
self.tx_transport = tx_transport
32+
self.tx_proto = tx_proto
3333

3434
def datagramReceived(self, data, addr):
3535
log.msg("got %r from %s" % (data, addr))
3636
self.rxq.append(data)
3737

3838
def send_msg(self, data):
39-
(self.tx_transport or self.transport).write(data, self.tx_addr)
39+
t = (self.tx_proto.transport if self.tx_proto else self.transport)
40+
t.write(data, self.tx_addr)
41+
log.msg("sent %r to %r" % (data, t,))
4042

4143

4244
def gen_req_id(f):
@@ -443,11 +445,11 @@ def setUp(self):
443445

444446
self.rxp_txp = DatagramProtocol()
445447
self.rx_tx_ep = reactor.listenUDP(0, self.rxp_txp)
446-
self.rxp = UDP_TXRX(('127.0.0.1', 10001), self.rxp_txp.transport)
448+
self.rxp = UDP_TXRX(('127.0.0.1', 10001), self.rxp_txp)
447449

448450
self.txp_rxp = DatagramProtocol()
449451
self.tx_rx_ep = reactor.listenUNIXDatagram(None, self.txp_rxp)
450-
self.txp = UDP_TXRX('\0wfb-tx-test', self.txp_rxp.transport)
452+
self.txp = UDP_TXRX('\0wfb-tx-test', self.txp_rxp)
451453

452454
self.cmdp = TXCommandClient(('127.0.0.1', 7003))
453455

0 commit comments

Comments
 (0)