Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Week 12: TCP connection replay, part 2 #2

Open
mrdude opened this issue Nov 15, 2016 · 1 comment
Open

Week 12: TCP connection replay, part 2 #2

mrdude opened this issue Nov 15, 2016 · 1 comment

Comments

@mrdude
Copy link
Contributor

mrdude commented Nov 15, 2016

@twood02

My goal for this week was to figure out how to implement packet checksums and finish my TCP connection replay feature.

I spent most of the week fiddling around with checksumming packets in a throwaway git branch. I couldn't get hardware checksum offload working initially, so I started working on a software implementation. I used DPDK's checksumming methods at first, but the documentation claimed that they don't support TCP options; I want to be able to support TCP options, so I started writing my own implementations of DPDK's checksumming functions.

After I had rewritten 80% of DPDK's checksum functions, I found a post on the DPDK mailing list that showed me how to turn on the flag for hardware checksumming. Once I committed that, I gave up on my software implementation. I may (depending on time constraints) go back and finish it.

The next two important commits (54a97a and b5a9ca) in my throwaway branch just finish the code for the TCP handshake and sequence number patching.

TODO:

  • Merge the important commits from scratch-checksum into dev-tcpreplay
  • Get a 3rd nimbnode box
  • Start testing dev-tcpreplay, using the third nimbnode as a middlebox
    • Start figuring out how many connections/packets dev-tcpreplay can handle at once
  • Fork tcp_conn_track NF into an athena NF
    • Remove UDP tracking code from athena
    • Clean up TCP connection tracking state machine code
@twood02
Copy link
Contributor

twood02 commented Nov 17, 2016

Talk to Neel ASAP to get the 3rd node setup before he leaves for thanksgiving. Alternatively, you can use the CloudLab testbed.

For the TCP checksum enabling is it correct that all you need to do is create a tx_conf variable and pass it to the function? I would expect that you'd need to set the flags to something other than 0.
https://github.com/mrdude/openNetVM/commit/6ce4cec4cf5adab435805924e4cbe165c9b03986#diff-440c8d0fcfa51fde10327b87318448d2L263

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants