Netem Support

Suggest improvements and new features for Gargoyle.

Moderator: Moderators

Post Reply
Statix
Posts: 21
Joined: Fri Aug 10, 2012 7:42 am

Netem Support

Post by Statix »

I've used the Netem utility in the past, and it's a very useful diagnostic tool for me to simulate latency and packet loss on a network. I can easily use and readily install kmod-netem in the past couple snapshots of OpenWRT I've installed. I used to be able to install and use Netem in Gargoyle, but for some reason, it doesn't appear to be compatible or available anymore with the later versions of Gargoyle.

I highly suggest for the devs that a Netem plug-in be created, or for it to be implemented back into future releases of Gargoyle. It's pretty much the only thing I miss migrating from OpenWRT.
Netgear WNDR3700v2 - Gargoyle 1.6.1

Isanderthul
Posts: 4
Joined: Tue Aug 19, 2014 10:57 am

Re: Netem Support

Post by Isanderthul »

I would also like to be able to support this feature, I would like to use Gargoyle for packet shaping and simulated packet loss as per http://wiki.openwrt.org/doc/howto/packe ... r#examples, applying a set quantity of packet loss and latency to a connection.

Isanderthul
Posts: 4
Joined: Tue Aug 19, 2014 10:57 am

Re: Netem Support

Post by Isanderthul »

the problem is that using the qos script http://kevin-read.com/post/86601925386/ ... -337295977.

Code: Select all

qdisc add dev eth0 root handle 1:1 netem delay $LATENCY $JITTER 
returns
RTNETLINK answers :No such file or directory

Isanderthul
Posts: 4
Joined: Tue Aug 19, 2014 10:57 am

Re: Netem Support

Post by Isanderthul »

donated $25 to bump this feature request, hope you don't mind!
Confirmation number: 3CM64279PY032145G

Isanderthul
Posts: 4
Joined: Tue Aug 19, 2014 10:57 am

Re: Netem Support

Post by Isanderthul »

This so post indicates that it might require a kernel change. Not sure... http://stackoverflow.com/questions/9513 ... tory-error

n0pin
Posts: 129
Joined: Thu Jan 09, 2014 6:39 am

Re: Netem Support

Post by n0pin »

I compiled image with kmod-netem. Seems like some libraries are missing. Will look further when I find some time.

Code: Select all

/root$ strace tc qdisc add dev eth0 root handle 1:1 netem delay 100ms
execve("/usr/sbin/tc", ["tc", "qdisc", "add", "dev", "eth0", "root", "handle", "1:1", "netem", "delay", "100ms"], [/* 8 vars */]) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|0x4000000, -1, 0) = 0xb777a000
stat("/etc/ld.so.cache", 0xbfb2adb8)    = -1 ENOENT (No such file or directory)
open("/lib/libm.so.0", O_RDONLY)        = 3
fstat(3, {st_mode=S_IFREG|0755, st_size=49224, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|0x4000000, -1, 0) = 0xb7779000
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0 \33\0\0004\0\0\0"..., 4096) = 4096
mmap2(NULL, 57344, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb776b000
mmap2(0xb776b000, 45812, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0xb776b000
mmap2(0xb7777000, 4168, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0xb) = 0xb7777000
close(3)                                = 0
munmap(0xb7779000, 4096)                = 0
open("/lib/libdl.so.0", O_RDONLY)       = 3
fstat(3, {st_mode=S_IFREG|0755, st_size=12381, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|0x4000000, -1, 0) = 0xb7779000
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0P\v\0\0004\0\0\0"..., 4096) = 4096
mmap2(NULL, 20480, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7766000
mmap2(0xb7766000, 8400, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0xb7766000
mmap2(0xb7769000, 4189, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x2) = 0xb7769000
close(3)                                = 0
munmap(0xb7779000, 4096)                = 0
open("/lib/libgcc_s.so.1", O_RDONLY)    = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=119216, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|0x4000000, -1, 0) = 0xb7779000
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\240\37\0\0004\0\0\0"..., 4096) = 4096
mmap2(NULL, 122880, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7748000
mmap2(0xb7748000, 118096, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0xb7748000
mmap2(0xb7765000, 432, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x1d) = 0xb7765000
close(3)                                = 0
munmap(0xb7779000, 4096)                = 0
open("/lib/libc.so.0", O_RDONLY)        = 3
fstat(3, {st_mode=S_IFREG|0755, st_size=332602, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|0x4000000, -1, 0) = 0xb7779000
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\220\233\0\0004\0\0\0"..., 4096) = 4096
mmap2(NULL, 356352, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb76f1000
mmap2(0xb76f1000, 330264, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0xb76f1000
mmap2(0xb7742000, 4922, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x50) = 0xb7742000
mmap2(0xb7744000, 14568, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7744000
close(3)                                = 0
munmap(0xb7779000, 4096)                = 0
open("/lib/libc.so.0", O_RDONLY)        = 3
fstat(3, {st_mode=S_IFREG|0755, st_size=332602, ...}) = 0
close(3)                                = 0
open("/lib/libc.so.0", O_RDONLY)        = 3
fstat(3, {st_mode=S_IFREG|0755, st_size=332602, ...}) = 0
close(3)                                = 0
stat("/lib/ld-uClibc.so.0", {st_mode=S_IFREG|0755, st_size=28677, ...}) = 0
open("/lib/libc.so.0", O_RDONLY)        = 3
fstat(3, {st_mode=S_IFREG|0755, st_size=332602, ...}) = 0
close(3)                                = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|0x4000000, -1, 0) = 0xb7779000
set_thread_area({entry_number:-1 -> 6, base_addr:0xb7779690, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
mprotect(0xb7777000, 4096, PROT_READ)   = 0
mprotect(0xb7769000, 4096, PROT_READ)   = 0
mprotect(0xb7742000, 4096, PROT_READ)   = 0
mprotect(0xb7782000, 4096, PROT_READ)   = 0
ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbfb2acac) = -1 EINVAL (Invalid argument)
ioctl(1, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbfb2acac) = -1 EINVAL (Invalid argument)
brk(0)                                  = 0x94e1000
brk(0x94e2000)                          = 0x94e2000
open("/proc/net/psched", O_RDONLY)      = 3
ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbfb2af24) = -1 ENOTTY (Inappropriate ioctl for device)
brk(0x94e3000)                          = 0x94e3000
read(3, "000003e8 00000040 000f4240 3b9ac"..., 4096) = 36
close(3)                                = 0
socket(PF_NETLINK, SOCK_RAW, 0)         = 3
setsockopt(3, SOL_SOCKET, SO_SNDBUF, [32768], 4) = 0
setsockopt(3, SOL_SOCKET, SO_RCVBUF, [1048576], 4) = 0
bind(3, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 0
getsockname(3, {sa_family=AF_NETLINK, pid=6076, groups=00000000}, [12]) = 0
time(NULL)                              = 1408569497
open("/usr/lib//tc//q_netem.so", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/q_netem.so", O_RDONLY)       = -1 ENOENT (No such file or directory)
open("/usr/lib/q_netem.so", O_RDONLY)   = -1 ENOENT (No such file or directory)
send(3, "\24\0\0\0\22\0\1\3\232\20\365S\0\0\0\0\0\0\0\0", 20, 0) = 20
recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{" \2\0\0\20\0\2\0\232\20\365S\274\27\0\0\0\0\4\3\1\0\0\0I\0\1\0\0\0\0\0"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 3404
recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"\30\2\0\0\20\0\2\0\232\20\365S\274\27\0\0\0\0\377\377\7\0\0\0\200\0\0\0\0\0\0\0"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 1072
recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"\24\0\0\0\3\0\2\0\232\20\365S\274\27\0\0\0\0\0\0\7\0\0\0\200\0\0\0\0\0\0\0"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 20
sendmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"L\0\0\0$\0\5\6\233\20\365S\0\0\0\0\0\0\0\0\4\0\0\0\0\0\1\0\377\377\377\377"..., 76}], msg_controllen=0, msg_flags=0}, 0) = 76
recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"`\0\0\0\2\0\0\0\233\20\365S\274\27\0\0\376\377\377\377L\0\0\0$\0\5\6\233\20\365S"..., 16384}], msg_controllen=0, msg_flags=0}, 0) = 96
write(2, "RTNETLINK answers", 17RTNETLINK answers)       = 17
write(2, ": ", 2: )                       = 2
write(2, "No such file or directory", 25No such file or directory) = 25
write(2, "\n", 1
)                       = 1
close(3)                                = 0
exit_group(2)                           = ?

Post Reply