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

TCP2 does not implement queing for incoming packets #30364

Closed
jukkar opened this issue Dec 1, 2020 · 0 comments · Fixed by #30981
Closed

TCP2 does not implement queing for incoming packets #30364

jukkar opened this issue Dec 1, 2020 · 0 comments · Fixed by #30981
Assignees
Labels
area: Networking Enhancement Changes/Updates/Additions to existing features

Comments

@jukkar
Copy link
Member

jukkar commented Dec 1, 2020

Is your enhancement proposal related to a problem? Please describe.
We do not queue incoming TCP segments. This means that if one TCP segment is lost, all the segments received after that are discarded until the peer re-transmits the missing data. In practice this means that currently all the TCP segements must be received in order.

Describe the solution you'd like
We should be able to queue incoming data. Max size of the queue would be the receive window size.

Note that this does not affect TCP functionality, but lowers the overall performance of the TCP sockets.

@jukkar jukkar added Enhancement Changes/Updates/Additions to existing features area: Networking labels Dec 1, 2020
@jukkar jukkar self-assigned this Dec 23, 2020
jukkar added a commit to jukkar/zephyr that referenced this issue Jan 12, 2021
If we receive data that is out-of-order, queue sequential
TCP segments until we have received earlier segment or a timeout
happens.

Note that we only queue data sequentially in current version i.e.,
there should be no holes in the queue. For example, if we receive
SEQs 5,4,3,6 and are waiting SEQ 2, the data in segments 3,4,5,6 is
queued (in this order), and then given to application when we receive
SEQ 2. But if we receive SEQs 5,4,3,7 then the SEQ 7 is discarded
because the list would not be sequential as number 6 is be missing.

Fixes zephyrproject-rtos#30364

Signed-off-by: Jukka Rissanen <[email protected]>
jukkar added a commit that referenced this issue Jan 12, 2021
If we receive data that is out-of-order, queue sequential
TCP segments until we have received earlier segment or a timeout
happens.

Note that we only queue data sequentially in current version i.e.,
there should be no holes in the queue. For example, if we receive
SEQs 5,4,3,6 and are waiting SEQ 2, the data in segments 3,4,5,6 is
queued (in this order), and then given to application when we receive
SEQ 2. But if we receive SEQs 5,4,3,7 then the SEQ 7 is discarded
because the list would not be sequential as number 6 is be missing.

Fixes #30364

Signed-off-by: Jukka Rissanen <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area: Networking Enhancement Changes/Updates/Additions to existing features
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant