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

Create Simple_Edge_Discovery_User_story.md #119

Closed
wants to merge 3 commits into from
Closed

Conversation

Kevsy
Copy link
Collaborator

@Kevsy Kevsy commented Jul 18, 2023

No description provided.

Fixed some copy/paste errors

| ***Activities/Steps*** | **Starts when:** The customer application server|client makes a GET request to the EDS API to query the closest MEC platofrm to the end user terminal. The end user terminal is either implicitly identified (e.g. by its source IP when attached to a cellular network) or explicitly identified (the identity is passed in the request querystring)<br>**Ends when:** The EDS API responds to the customer application server|client . |
| ***Activities/Steps*** | **Starts when:** The customer application server|client makes a GET request to the EDS API to query the closest MEC platform to the target UE (an end user terminal). The target UE is either implicitly identified (e.g. by its source IP when attached to a cellular network) or explicitly identified (the identity is passed in the request querystring)<br>**Ends when:** The EDS API responds to the customer application server|client . |
Copy link
Collaborator

@nicolacdnll nicolacdnll Jul 25, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I know this is outside the changes proposed by this PR. But, on 5G networks, wouldn't be better to identify UEs using the Location Area Code/Tracking Area Code (LAC/TAC) rather than their IPs?

If we use IPs on the N6, I believe there are cases when it won't be possible to distinguish between UEs connected to different UPFs. Considering that UEs' IPs on the N6 can be local to the UPF's network; when using distributed UPFs each UPF can use the same pool of IPs for the UEs. This means that two UEs on different UPFs could have the same IP.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@nicolacdnll The IP assumes in EDS is the public IP. N6, in most of the cases, is the network on a public DNN (except for private network). Hence N6 IP is uniquely identified and routable. UPF could assign private local IP, to the device, from the common pool on internal network, and perform NAT'ing for outside interface (N6).

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's see if I understood you: Are you suggesting that on a telco's public DNN, each UE gets an unique IP? Yeah, it makes sense, and I'm probably biased by MPNs.

If that's it, good and thanks. Otherwise, I think I've missed the point.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the above point is very important, indeed the IP submitted needs to be the private, unique IP and not the public (NATted) IP. This needs to be emphasized in the corresponding documentation to developers.

In general @nicolacdnll's suggestion to rather use location data than IP makes a lot of sense as this would remove the need for the network to perform the function of translating the private IP address into a location information. I would though not use network specific location data (i.e. LAC/TAC) but absolute geocordinates which can be obtained by the device using device-specific mechanisms irrespective of the access technology. In that way e.g. also devices using non-3GPP access could be supported.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm now even more confused and I would love to clear the matter.

I understood that @SyeddR was suggesting to use the public IP, but @ThomasEdgeXR you are now saying the opposite and that it should be the private IP, and this should be unique. If I got you right, maybe we should discuss this in weekly call.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, with public IP in telco network, the binding of an public IP:Port may change with time and can be assigned to other users if the current user becomes Inactive for any reason e.g. device get powered off. So there could be a chance that information become stale which may provide incorrect information at times. So the reliability shall be ensured while defining the behavior.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Exactly my point Syed. However, if we use the public IP I think that the telco systems need a way to bind/map cloudlets at edge to the DN they are in or to the DN's Public IP. If that is not done, imagining the scenario in the sketch below (oversimplified I know!), how could the system know, and suggest, to the UEs behind the distributed UPF that the Cloudlet @edge has lower latency than the Cloudlet @core?

@nicolacdnll good point. However, i think it would depend on a operator specific implementation how to define the closest edge. The closest edge could be a lowest latency candidate or it could be a closest hop w.r.t to UE's anchor point.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, with public IP in telco network, the binding of an public IP:Port may change with time and can be assigned to other users if the current user becomes Inactive for any reason e.g. device get powered off. So there could be a chance that information become stale which may provide incorrect information at times. So the reliability shall be ensured while defining the behavior.

@gunjald This could be addressed by exposing a notification endpoint for IP changes due to mobility or other factors.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@nicolacdnll good point. However, i think it would depend on a operator specific implementation how to define the closest edge. The closest edge could be a lowest latency candidate or it could be a closest hop w.r.t to UE's anchor point.

Sounds fair, but if that's the case I would suggest we add this consideration to the user story or assumptions.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, with public IP in telco network, the binding of an public IP:Port may change with time and can be assigned to other users if the current user becomes Inactive for any reason e.g. device get powered off. So there could be a chance that information become stale which may provide incorrect information at times. So the reliability shall be ensured while defining the behavior.

@gunjald This could be addressed by exposing a notification endpoint for IP changes due to mobility or other factors.

Similar to the other point, wouldn't it make sense that it's up to each operator implementation to keep track of the mapping of each UE's publicIP:port>? Unless there is a real use case, this mapping should be completely transparent for UE's and developers.

Copy link
Collaborator

@gunjald gunjald left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Post Condition says the API client connects with the application server on MEC platform. While the API itself doesn't talk about any information related to application server endpoint on MEC platform, so in my opinion some indications should be given on how the external clients can retrieve application information on the discovered MEC platform. May be a separate API for this purpose.

@Kevsy
Copy link
Collaborator Author

Kevsy commented Aug 3, 2023

On Public IP:

Also, with public IP in telco network, the binding of an public IP:Port may change with time and can be assigned to other users if the current user becomes Inactive for any reason e.g. device get powered off. So there could be a chance that information become stale which may provide incorrect information at times. So the reliability shall be ensured while defining the behavior.

Agreed, NAT bindings may not last long: but in general the Simple Edge Discovery API would be requested once at start of the application session. I would expect more complex functionality (notifications of new closest MEC following mobility event etc) be handled in the 'full' discovery API.

Similar to the other point, wouldn't it make sense that it's up to each operator implementation to keep track of the mapping of each UE's publicIP:port>? Unless there is a real use case, this mapping should be completely transparent for UE's and developers.

Yes, that's up to the operator implementation. Other mappings (e.g. based on MSISDN) may be implemented too.

The closest edge could be a lowest latency candidate or it could be a closest hop w.r.t to UE's anchor point.

For Simple Edge Discovery I recommend it's the lowest propagation delay client-server: which of course takes into account the location of the UE anchor point.

@ThomasEdgeXR
Copy link
Collaborator

As discussed in the last call i looked at this again. I'm not sure if the IP topic is fully solved. I'm not an operator so can't fully judge but i know cases of operators we worked with which were not able to use the (NAT)ted public IP as their systems did not allow to map back to the unique, network internal IP which was the input for the other systems to be used. In conclusion this is really a question to the operators, if all the operators are fine with using the public IP than from a vendor/implementor perspective there is nothing speaking against this.

@gunjald
Copy link
Collaborator

gunjald commented May 7, 2024

As discussed in the last call i looked at this again. I'm not sure if the IP topic is fully solved. I'm not an operator so can't fully judge but i know cases of operators we worked with which were not able to use the (NAT)ted public IP as their systems did not allow to map back to the unique, network internal IP which was the input for the other systems to be used. In conclusion this is really a question to the operators, if all the operators are fine with using the public IP than from a vendor/implementor perspective there is nothing speaking against this.

I also tend to agree that there will be cases where the Public NATed dynamic IP assignments by mobile networks can lead to inaccurate responses in corner cases due to the changes in the mapping. Also, from a application level purview it needs to ensure that it is not using any cached value from previous sessions to avoid landing into any undesired behaviors. To me using public IPs seems to pose bit stricter requirements on its usage and we may need more details on what should be the appropriate strategy to using Public IP.

@Kevsy
Copy link
Collaborator Author

Kevsy commented May 7, 2024

I can only speak from our experience, but we (Vodafone) do not need to map the Public (post CGNAPT) to Private (pre CGNAPT) IP address. All we need is the public IP address, because that comes from a subnet issued by a particular packet gateway. As long as we know which gateway, we can then calculate the nearest Edge Cloud Zone. My understanding is that other operators who have tested have done the same (certainly in 5GFF)

@SyeddR
Copy link
Collaborator

SyeddR commented May 7, 2024

In addition to @Kevsy comment. Public IP addresses are unique and not re-used across operator's gateway. Public IP address is a sufficient identifier to determine which gateway UE is connected to.

@gunjald
Copy link
Collaborator

gunjald commented May 7, 2024

In addition to @Kevsy comment. Public IP addresses are unique and not re-used across operator's gateway. Public IP address is a sufficient identifier to determine which gateway UE is connected to.

A question is what happens if a UE moves to a location served by a different gateway? Would the gateway reassignment if happen will cause the UE Public IP to change? If so then the API consumer would need to take care of ensuring to obtain the current IP of the UE and never cache it. Is this a fair understanding?

@Kevsy
Copy link
Collaborator Author

Kevsy commented May 9, 2024

@gunjald yes that is a fair understanding.

A question is what happens if a UE moves to a location served by a different gateway?

It is a rare occurrence that the Packet Gateway would change during a session. A moving user may handoff between nodeBs, and for a longer journeys that may may result in a change of Serving Gateway (which a cluster of nodeBs connect to), but changing a Packet Gateway typically requires travelling a large distance and is unlikely to occur across the duration of a session.

So for Simple Edge Discovery that's fine - and can be accounted for in other Edge Cloud APIs if required.

@nicolacdnll
Copy link
Collaborator

nicolacdnll commented May 9, 2024

Tring to considering all input received so far, and it seems that we all agree that a UE could be identified by a IP[:Port] and that the mapping function is something that is internal to the platform and that needs some input from the operators for which the platform has agreements.

I think that this would cover most, if not all, cases:

  • The case where the platform is hosted by the operator. In this case the IP[:Port] could be pre CGNAPT; but it's always up to the telco network; and the platform needs to be aware of the network layout with respect to the edge cloud site.
  • The case where the platform is hosted by 3rd parties on the public internet. In this case the IP[:Port] would be post CGNAPT. And as part of agreement with the operators, the platform should be able to map the post CGNAPT IP[:Port] to one (or more) sites of an operator. Someone also commented in a call that a post-CGNAPT IP could be the same for different operators; but that each operator will have its dedicated port range. This is when the optional :port becomes essential for the mapping function).

Did I miss some scenario?

@Kevsy
Copy link
Collaborator Author

Kevsy commented May 14, 2024

Thanks @nicolacdnll -

And as part of agreement with the operators, the platform should be able to map the post CGNAPT IP[:Port] to one (or more) sites of an operator

None of the implementations I have seen (3 operators) require port - just the public IP address.

Also I'm not aware of a consistent method for the API consumer to obtain the private IP address for a device - do you know of one...?

@nicolacdnll
Copy link
Collaborator

None of the implementations I have seen (3 operators) require port - just the public IP address.

Fine by me. I was just considering when multiple operators use the same post-CGNAPT public IP, but they split the port range. Not sure how common this is; thus, it's something we can ignore for now.

Also I'm not aware of a consistent method for the API consumer to obtain the private IP address for a device - do you know of one...?

Not sure why this question, but I think that's common practice and also not sure how useful it would be. Is there a use for it?

@Kevsy
Copy link
Collaborator Author

Kevsy commented May 21, 2024

Thanks @nicolacdnll

Also I'm not aware of a consistent method for the API consumer to obtain the private IP address for a device - do you know of one...?

Not sure why this question,

Sorry, I should have been clearer - I should have said "I'm not aware of a consistent method for the API consumer to obtain the cellular network private IP address for a device", i.e. the pre-CGNAPT IP address.

If this private IP address was consistently available then the API consumer could pass it in the API call for the cellular operator to mapping it to the closest Edge Zone, because it is issued by/anchored to a particular PDN-GW (LTE EPC) or UPF (5G SA). But as I say, the operators using SED so far have simply relied on public IP address, because it is easily available to the API consumer, and allows the same mapping.

but I think that's common practice

I'm not aware of it being used by apps on cellular networks...for fixed networks it would be the home-router issued IP address, which I'm not sure is useful.

and also not sure how useful it would be. Is there a use for it?

I agree - since public IP is available and does the same thing, I'm not sure it's needed. But that may not be the case for other access networks, I'm not sure.

@gunjald
Copy link
Collaborator

gunjald commented May 31, 2024

Thanks @nicolacdnll

Also I'm not aware of a consistent method for the API consumer to obtain the private IP address for a device - do you know of one...?

Not sure why this question,

Sorry, I should have been clearer - I should have said "I'm not aware of a consistent method for the API consumer to obtain the cellular network private IP address for a device", i.e. the pre-CGNAPT IP address.

If this private IP address was consistently available then the API consumer could pass it in the API call for the cellular operator to mapping it to the closest Edge Zone, because it is issued by/anchored to a particular PDN-GW (LTE EPC) or UPF (5G SA). But as I say, the operators using SED so far have simply relied on public IP address, because it is easily available to the API consumer, and allows the same mapping.

but I think that's common practice

I'm not aware of it being used by apps on cellular networks...for fixed networks it would be the home-router issued IP address, which I'm not sure is useful.

and also not sure how useful it would be. Is there a use for it?

I agree - since public IP is available and does the same thing, I'm not sure it's needed. But that may not be the case for other access networks, I'm not sure.

As I commented for #123 , the QoD API defines the ipv4Address as shown below,
"ipv4Address": {
"publicAddress": "203.0.113.0",
"publicPort": 59765
}

I think in theory there may not be possibly any impact of SED API if publicPort is not available but it will be good to still keep this parameter publicPort as part of ipv4Address to have consistent uniqueness criteria across all APIs in alignment with other API families. And may be there could be scenario where an app provider may need to refer to unique devices e.g. 2 UEs attached to same GW and mapped to same "publicAddress" where the "publicPort" can help to identify these devices uniquely and help provide different treatment as needed from app logic.

And then we may avoid using notion of using private IP addresses in these APIs as they be reused in the network and the APIs needs to solve the complexities arising out of overlapping private IP addresses.

@Kevsy
Copy link
Collaborator Author

Kevsy commented Jul 9, 2024

As agreed, I will add public port to the SED API for next update (along with the Commonalities alignment)

@Kevsy
Copy link
Collaborator Author

Kevsy commented Jul 23, 2024

Now completed as part of SimpleEdgeDiscovery v0.11.0-rc.1

@Kevsy Kevsy closed this Jul 23, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants