You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
As usual, the problems were caused by a handful of subtle bugs:
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.
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.
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.
The text was updated successfully, but these errors were encountered:
@twood02
As of commit 0b5a7b1, TCP replay works.
As usual, the problems were caused by a handful of subtle bugs:
tcp->recv_ack
tosequence 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.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.
The text was updated successfully, but these errors were encountered: