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

Connection Tracking: Too loose, UDP and Aging #10

Open
mitalum opened this issue Dec 1, 2021 · 2 comments
Open

Connection Tracking: Too loose, UDP and Aging #10

mitalum opened this issue Dec 1, 2021 · 2 comments
Assignees

Comments

@mitalum
Copy link

mitalum commented Dec 1, 2021

Does the model remove the flow entirely on the FIN flag? Or does it wait for some time after the FIN flag so that the final ACKs can be forwarded? Is this too loose? The connection should be active only until an ACK packet in each direction covers the sequence number of the FIN packet in the other direction or timeout, whichever occurs first. I believe it would take ~7 states per direction to strictly track the TCP state. Should TCP connection tracking also support TCP window tracking?

What about support for UDP "connections" and the behavior of aging of both UDP and TCP flows?

What is the desired behavior when an ACL or route table configuration changes that potentially affects the forwarding behavior of an established flow? The specifications describe a slow path and fast path where the ACL and route lookups are avoided in the fast path (for performance). The current behavioral model appears to execute the ACL and route lookup on each and every packet. As a result there is no behavioral difference between the slow path and a fast path. This implies that implementations with both a fast and a slow path must re-evaluate ACL/route lookups for flows whenever configuration changes occurs that may affect the flows. Is this correct? Should the behavioral model explicitly model a fast and a slow path?

https://github.com/Azure/DASH/blob/6b2a638d6f620469fdff59716c65bb7286b5ef61/sirius-pipeline/sirius_conntrack.p4#L42

See PR PNA compatible connection tracking #21

@KrisNey-MSFT
Copy link
Collaborator

We are in agreement that this will require more polishing as we move forward. Will bring up for discussion in the Community meeting again for Comments/help. @GeraldatMicrosoft

@mariobaldi
Copy link
Collaborator

The fact that ACL are applied to each and single packet might be due to a mistake (having forgotten a "!") that should be fixed by this PR: 30b13ba
The rest of the code seems to indeed have been written to support ACL matching only before installing connection state.

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

No branches or pull requests

4 participants