Skip to content

Week 14: TCP Replay is finished #4

@mrdude

Description

@mrdude

@twood02
As of commit 0b5a7b1, TCP replay works.

As usual, the problems were caused by a handful of subtle bugs:

  1. When Athena responds to a SYN packet, it needs to set tcp->recv_ack to sequence number of SYN packet + 1. I didn't take endianness into account, so adding 1 to a big-endian number on a little endian system gave me the wrong ack number.
  2. When Athena receives a SYN and ACK during the handshake, it needs to save copies of those packets. I wasn't copying the packets correctly, so when Athena would replay the handshake for the server, it would send empty packets.
  3. The state machine in ct_update_connection() skipped the state that would complete the server's TCP handshake, so connections would never actually start sending data.

Now that I have a working TCP replay implementation, I'm going to move the relevant changes to my dev-tcpreplay branch, and start load testing with Vegeta.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions