commit | 416104dec2d34973aa307f2b29bdc11295ca1d25 | [log] [tgz] |
---|---|---|
author | Bhasker Hariharan <bhaskerh@google.com> | Tue Feb 19 18:22:59 2019 -0800 |
committer | Shentubot <shentubot@google.com> | Tue Feb 19 18:23:27 2019 -0800 |
tree | 409a0ca560561f246d63ac418c0b6c5beb1e0427 | |
parent | 352f7fab0a01eb49bd0b90a835d7c33c13d43c4d [diff] |
Updates tcp_proxy to use an AF_PACKET and veth devices. tcp_proxy now uses an AF_PACKET socket as the FD for netstack link layer endpoint instead of a tap device. It also changes the link layer endpoint to use PacketMMap dispatch instead of Readv. This reduces overall cpu and reflects the current runsc setup which uses PacketMMap and also uses veth devices to receive packets. Also fixed a bug in gonet where Read() was not doing coalescing read and would read small amounts at a time. PiperOrigin-RevId: 234714768
Netstack is a network stack written in Go.
Try it out on Linux by installing the tun_tcp_echo demo:
go install github.com/google/netstack/tcpip/sample/tun_tcp_echo
Create a TUN device with:
[sudo] ip tuntap add user <username> mode tun <device-name> [sudo] ip link set <device-name> up [sudo] ip addr add <ipv4-address>/<mask-length> dev <device-name>
Then run with:
tun_tcp_echo <device-name> <ipv4-address> <port>
Please see CONTRIBUTING.md for more details.
This is not an official Google product (experimental or otherwise), it is just code that happens to be owned by Google.