#embed #machine #tun #network #simulator #namespace #adapter #future #separate

netsim-embed-machine

Runs a future in a separate network namespace with a TUN adapter

13 unstable releases (4 breaking)

new 0.6.2 Jan 11, 2022
0.5.0 Dec 31, 2021
0.4.3 Jul 27, 2021
0.2.1 Mar 24, 2021
0.1.0 Jul 20, 2020
Download history 26/week @ 2021-09-27 1/week @ 2021-10-04 17/week @ 2021-10-11 2/week @ 2021-10-18 2/week @ 2021-10-25 1/week @ 2021-11-01 9/week @ 2021-11-08 9/week @ 2021-11-15 11/week @ 2021-11-22 16/week @ 2021-11-29 15/week @ 2021-12-06 8/week @ 2021-12-13 1/week @ 2021-12-20 33/week @ 2021-12-27 42/week @ 2022-01-03 58/week @ 2022-01-10

134 downloads per month
Used in netsim-embed

MIT license

49KB
1.5K SLoC

netsim-embed

A small embeddable network simulator based on the currently unmaintained netsim.

If you get a no such device error make sure that the tun kernel module is loaded (insmod tun) and that the tun device file exists (/dev/net/tun).

Run the example:

cargo run --example smol
    Finished dev [unoptimized + debuginfo] target(s) in 0.03s
     Running `target/debug/examples/smol`
[2020-07-09T16:09:17Z TRACE netsim_embed_machine::namespace] created network namespace: /proc/10753/task/10850/ns/net
[2020-07-09T16:09:17Z TRACE netsim_embed_machine::namespace] created network namespace: /proc/10753/task/10849/ns/net
[2020-07-09T16:09:17Z INFO  netsim_embed_machine] machine 192.168.1.5: sending packet
[2020-07-09T16:09:17Z INFO  netsim_embed_machine] machine 8.8.8.4: sending packet
[2020-07-09T16:09:17Z INFO  netsim_embed_machine] machine 192.168.1.5: sending packet
[2020-07-09T16:09:17Z INFO  netsim_embed_nat::nat] nat 8.8.8.8: dropping invalid outbound packet
[2020-07-09T16:09:17Z INFO  netsim_embed_router] router 8.8.8.1: dropping unroutable packet to 71.23.170.98
[2020-07-09T16:09:17Z INFO  netsim_embed_router] router 8.8.8.1: dropping unroutable packet to 71.23.170.98
[2020-07-09T16:09:17Z INFO  netsim_embed_nat::nat] nat 8.8.8.8: rewrote packet source address: 192.168.1.5:33542 => 8.8.8.8:49152
[2020-07-09T16:09:17Z INFO  netsim_embed_router] router 8.8.8.1: dropping unroutable packet to 8.8.8.4
[2020-07-09T16:09:17Z INFO  netsim_embed_router] router 8.8.8.1: routing packet on route Ipv4Route { dest: 8.8.8.4/32, gateway: None }
[2020-07-09T16:09:17Z INFO  netsim_embed_machine] machine 8.8.8.4: received packet
received ping
[2020-07-09T16:09:17Z INFO  netsim_embed_machine] machine 8.8.8.4: sending packet
[2020-07-09T16:09:17Z INFO  netsim_embed_router] router 8.8.8.1: routing packet on route Ipv4Route { dest: 8.8.8.8/32, gateway: None }
[2020-07-09T16:09:17Z INFO  netsim_embed_nat::nat] nat 8.8.8.8: rewrote destination of inbound packet 8.8.8.8:49152 => 192.168.1.5:33542.
[2020-07-09T16:09:17Z INFO  netsim_embed_machine] machine 192.168.1.5: received packet
received pong

Enter the network namespace and debug dropped packets with netstat:

sudo nsenter --net=/proc/10753/task/10850/ns/net
[root@dvc-xps13-2020 dvc]# netstat -suna
Udp:
    0 packets received
    0 packets to unknown port received
    0 packet receive errors
    1 packets sent
    0 receive buffer errors
    0 send buffer errors
UdpLite:
IpExt:
    OutOctets: 32
MPTcpExt:

License

MIT OR Apache-2.0

Dependencies

~3.5–4.5MB
~101K SLoC

a