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

Allocate UE IPs based on SEID #378

Merged
merged 3 commits into from Dec 10, 2021
Merged

Allocate UE IPs based on SEID #378

merged 3 commits into from Dec 10, 2021

Conversation

pudelkoM
Copy link
Member

@pudelkoM pudelkoM commented Dec 9, 2021

We encountered a bug when using UE IP allocation and sending multiple PDRs for one session. The code allocated one UE IP per PDR, which leads to incorrect data plane programming and loss of connectivity for the UE.

This PR changes the IP allocation scheme from per-PDR to per-SEID. Only the first time we see a new session we allocate a new IP. Subsequent calls are satisfied with the same IP. On SessionDeletion we free the address.

@krsna1729
Copy link
Member

I feel IPpool should not be aware of pfcp details. We should be able to switch it out for a different IPAM implementation any time. Can we pass the session struct pointer to parsePDI and hold IP in session struct? This way it will allocate only if not set.

@ccascone
Copy link
Contributor

retest this please

@ccascone
Copy link
Contributor

@krsna1729 this is blocking an imminent Aether 1.6 release, so I'm going to merge as-is. @pudelkoM is planning a follow-up PR to address your comment. BTW the hope is that we will stop rushing merges like this one as we add more testing...

@ccascone ccascone merged commit 152a5eb into master Dec 10, 2021
@ccascone ccascone deleted the ip-pool-ue-session branch December 10, 2021 04:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

PFCPagent crashes when sending PDRs that allocate UE IPs and enable_ue_ip_alloc = false
3 participants