-
Notifications
You must be signed in to change notification settings - Fork 238
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
Some TCP keepalives corrupt the extracted data streams #253
Comments
Hi. I understand that you cannot post the pcap from your confidential data. However, perhaps you can use the system in quest to create a PCAP file that exhibits the problem? If you cannot use the system in question, perhaps you could spin up a RHEL7 system somewhere? I simply cannot debug this without a pcap file that demonstrates the problem. Thanks. |
I'll see what I can do, but it won't be easy. It's not RHEL7 that I need mainly, but a system with that 4.2BSD quirk in its TCP implementation and I don't know which ones have it ... |
Sorry, I'm not familiar with this issue tracker, and didn't intend to close the isse. Reopen. |
By policy, I won't make changes without having test data so that the bug and then the fix can both be validated. |
This bug report is unfortunately vague, but it might interest you anyway since it's a pure TCP segment assembly problem, having nothing to do with HTTP et cetera.
At work we asked for and got pcap files from a customer. My plan was to use tcpflow to extract the TCP streams for further processing, but when I did that, I discovered corruption of single octets here and there.
The TCP connection used SO_KEEPALIVE heavily, with maybe 5 seconds between probes. I also have reason to believe one peer was running some BSD derivate (because the customer calls these machines "SOMETHING-BSD").
What I think happened, was:
I understand you'd like an example pcap file, but I cannot distribute the data. I spent some time at home trying to reproduce this with OpenBSD, but it seems not to have this variant of keepalives. Linux of course doesn't. I suppose the customer used either NetBSD or FreeBSD, possibly an ancient release.
Another sad fact is I used an ancient tcpflow: the one in RHEL7 so I guess it would have been 1.4.5. I see keepalive support was added before that, in tcpflow-1.4.0beta1-129-g9915ef4. I could have used tcpflow from Ubuntu 22 and maybe I did, but I cannot easily find out now (this all happened in April).
[1] Quoting Stevens (TCP/IP Illustrated vol 1, p 335):
The text was updated successfully, but these errors were encountered: