Skip to content

[help] testing userspace TCP #97

@commmrade

Description

@commmrade

As I was implementing TCP on top of TUN in user-space I remembered that there is a thing called tests and that you should kinda write them. So I decided to find some tools that could help me with this and I came across packetdrill. That looked like a perfect tool for my case so I decided to try it out, which did not really work out, because I don't really know how to test user-space TCP implementations with this and would like some help.

Basically, my TCP implementation creates a TUN interface (called tun1) and traffic must go through this TUN to get to the TCP. I decided to use wire server and wire client to make this happen and this "kinda" works. My TCP implementation is able to receive SYNs, for example, but when it sends a SYNACK, packetdrill does not receive this and times out. I have no idea how to fix it.
.pkt is this:

    0 socket(..., SOCK_STREAM, IPPROTO_TCP) = 3
  +.1...0.200 connect(3, ..., ...) = 0
   +0 > S 0:0(0) <...>
  +.1 < S. 0:0(0) ack 1 win 4380 <mss 1460>
   +0 > . 1:1(0) ack 1

Also, I used these commands:

sudo ./packetdrill/packetdrill --wire_server &
sudo ./packetdrill/packetdrill --ip_version=ipv4 --local_ip=10.0.0.1 --remote_ip=10.0.0.2 --connect_port=8090 --wire_client_dev=tun1 tcp/blocking/blocking-connect.pkt

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions