-
Notifications
You must be signed in to change notification settings - Fork 34
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
feat: request UPF to allocate F-TEID #334
Conversation
Signed-off-by: Guillaume Belanger <[email protected]>
Signed-off-by: Guillaume Belanger <[email protected]>
Signed-off-by: Guillaume Belanger <[email protected]>
Signed-off-by: Guillaume Belanger <[email protected]>
Not reviewing since its in draft state ! |
Signed-off-by: Guillaume Belanger <[email protected]>
Signed-off-by: Guillaume Belanger <[email protected]>
Signed-off-by: Guillaume Belanger <[email protected]>
Signed-off-by: Guillaume Belanger <[email protected]>
Signed-off-by: Guillaume Belanger <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Overall, everything looks good
Signed-off-by: Guillaume Belanger <[email protected]>
Signed-off-by: Guillaume Belanger <[email protected]>
I believe I made the proper changes in the upf pfcp adapter here but I'm not very confident since I have no environment to validate this and the tests for this part of the code are non-existent. |
I am not sure I understand this comment. You mentioned that you have made the proper changes in the upf adapter, but, I do not see any PR open in that repo (https://github.com/omec-project/upfadapter/pulls). Or are you referring to the changes in |
I was referring to the changes in this commit: 1f33efe I haven't changed upfadapter indeed, I can do my best to make the changes over there but I have not proper way of testing them. |
Signed-off-by: Guillaume Belanger <[email protected]>
I just looked at the upfadapter code and it's quite unclear to me what needs to be changed. Note: This project has no README.md, which doesn't help in understanding its purpose. |
@gab-arrobo were you able to re-test with the changes in the smf's pfcp adapter changes. I just looked at |
I think I did run a test, but it did not work. Let me run another test this afternoon and I can provide logs. |
@gruyaume the PRs are now working as expected when using the @thakurajayL, were all of your comments addressed? There is no more comments from my side
|
Awesome, the issues were in the smf's pfcp adapter code then/ |
@@ -534,37 +476,19 @@ func (dpNode *DataPathNode) ActivateUpLinkPdr(smContext *SMContext, defQER *QER, | |||
|
|||
curULTunnel := dpNode.UpLinkTunnel | |||
for name, ULPDR := range curULTunnel.PDR { | |||
ULDestUPF := curULTunnel.DestEndPoint.UPF |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why this code is deleted?
ULPDR.QER = append(ULPDR.QER, defQER) | ||
|
||
// Set Default precedence | ||
if ULPDR.Precedence == 0 { | ||
ULPDR.Precedence = defPrecedence | ||
} | ||
|
||
var iface *UPFInterfaceInfo |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What was motivation to delete this code?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This instance of iface
was only used to get the user plane IP address and set the PDR F-TEID accordingly. Now that the F-TEID is set by the UPF, this is not needed anymore
Old code:
var iface *UPFInterfaceInfo
if dpNode.IsANUPF() {
iface = ULDestUPF.GetInterface(models.UpInterfaceType_N3, smContext.Dnn)
} else {
iface = ULDestUPF.GetInterface(models.UpInterfaceType_N9, smContext.Dnn)
}
if upIP, err := iface.IP(smContext.SelectedPDUSessionType); err != nil {
logger.CtxLog.Errorf("activate UpLink PDR[%v] failed %v", name, err)
return err
} else {
ULPDR.PDI.SourceInterface = SourceInterface{InterfaceValue: SourceInterfaceAccess}
ULPDR.PDI.LocalFTeid = &FTEID{
V4: true,
Ipv4Address: upIP,
Teid: curULTunnel.TEID,
}
ULPDR.PDI.UEIPAddress = &ueIpAddr
ULPDR.PDI.NetworkInstance = util_3gpp.Dnn(smContext.Dnn)
}
} | ||
|
||
if upIP, err := iface.IP(smContext.SelectedPDUSessionType); err != nil { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we are removing code which supports iUPF
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What's iUPF?
The code you are referring to is not needed anymore as the F-TEID is generated by the UPF.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@gruyaume, FYI, iUPF is the intermediate UPF (N3 and N9 interfaces)
Signed-off-by: Guillaume Belanger <[email protected]>
@gab-arrobo @thakurajayL can you please review this PR? |
Description
As of 3GPP release 16, the F-TEID should be allocated by the UPF (and not by the SMF). Here we make the necessary changes for the SMF to request the UPF to allocate the F-TEID through PFCP and we remove the F-TEID allocation from the SMF.
Context
From the 3GPP specification referenced below:
Reference