gw-cs-sd / sd-2017-team-ddos

sd-2017-team-ddos created by GitHub Classroom
0 stars 0 forks source link

Week 14: TCP Replay is finished #4

Open mrdude opened 7 years ago

mrdude commented 7 years ago

@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.

twood02 commented 7 years ago

ok, glad it is working. If you have questions about the demo let me know.