TCP Tunnel
A demonstration of an IPv4 tunnel (over TCP) between the Node A and Node B subnets.
- GitHub Link: https://github.com/packetcord/packetcord.io/tree/main/apps/l3_tcp_tunnel
- Topology File: topology_examples/l3_tunnel_example.json
Topology diagram
Steps
Build the project (all examples)
cd packetcord.io
mkdir build
cd build
cmake .. --fresh
make
Start the topology
Load the l3_tunnel_example.json project file. On the two TEP nodes (A and B), change the network app field to point to the corresponding TCP tunnel compiled binaries (TEP A is client and TEP B is server).
Note: Complete example topology file will be added as part of the next release of Network Builder IDE.
Save the project file after the changes. Then Validate, Generate and Launch the topology.
Inside the shell of TEP B
cd /root
./l3_tcp_tunnel_tep_s_app
Inside the shell of TEP A
cd /root
./l3_tcp_tunnel_tep_c_app
Result
Open the shells of Node A and Node B. Try to ping each other (11.11.11.100 and 192.168.111.100).
# ping -c4 192.168.111.100
PING 192.168.111.100 (192.168.111.100): 56 data bytes
64 bytes from 192.168.111.100: seq=0 ttl=64 time=0.142 ms
64 bytes from 192.168.111.100: seq=1 ttl=64 time=0.249 ms
64 bytes from 192.168.111.100: seq=2 ttl=64 time=0.182 ms
64 bytes from 192.168.111.100: seq=3 ttl=64 time=0.350 ms
Let's also run iperf3 between Node A (client) and Node B (server):
Inside the shell of Node B
iperf3 -s
Inside the shell of Node A
iperf3 -c 192.168.111.100 -M 1360
Connecting to host 192.168.111.100, port 5201
[ 5] local 11.11.11.100 port 37694 connected to 192.168.111.100 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 1.75 MBytes 14.7 Mbits/sec 395 2.63 KBytes
[ 5] 1.00-2.00 sec 128 KBytes 1.05 Mbits/sec 48 2.63 KBytes
[ 5] 2.00-3.00 sec 128 KBytes 1.05 Mbits/sec 50 2.63 KBytes
[ 5] 3.00-4.00 sec 128 KBytes 1.05 Mbits/sec 48 2.63 KBytes
[ 5] 4.00-5.00 sec 128 KBytes 1.05 Mbits/sec 48 2.63 KBytes
[ 5] 5.00-6.00 sec 128 KBytes 1.05 Mbits/sec 50 2.63 KBytes
[ 5] 6.00-7.00 sec 128 KBytes 1.05 Mbits/sec 48 2.63 KBytes
[ 5] 7.00-8.00 sec 128 KBytes 1.05 Mbits/sec 50 2.63 KBytes
[ 5] 8.00-9.00 sec 128 KBytes 1.05 Mbits/sec 48 2.63 KBytes
[ 5] 9.00-10.00 sec 128 KBytes 1.05 Mbits/sec 48 2.63 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 2.88 MBytes 2.41 Mbits/sec 833 sender
[ 5] 0.00-10.25 sec 2.88 MBytes 2.35 Mbits/sec receiver
Note:
Our TCP tunnel example does not handle:
1) Fragmentation
2) Packet buffering and looped TX/RX until all bytes are sent/received
Terminate
Use the Destroy button to terminate the emulation.