Allow application servers to be identified by domain name#522
Allow application servers to be identified by domain name#522eric-murray wants to merge 8 commits intocamaraproject:mainfrom
Conversation
Updated the description of application server identifiers and clarified the requirements for domain name resolution.
Removed unnecessary blank lines in the YAML file.
|
I find this suggested extension reasonable but have one remark. If an API consumer has the ability to resolve a given domain name into a list of IP addresses automatically on the provider side and apply all of them to QoS flows, then the API should also allow the consumer to create a session using such an IP address list for the application server, rather than being limited to a single single network segment (single IP in particular case). For example: Also we could think about a limitation of number of addresses in this list but also now many addresses can be used in case of DNS resolution on service provider side. Current classical DNS implementation has a limitation of the record size but still can return up to 15 addresses. As already mentioned, DNS resolution results may differ from the consumer’s own resolution, even when using the same DNS server, due to region-based responses and load balancing. This behavior should be explicitly documented as warning to consumers. |
My understanding is that the API consumer CANNOT resolve the IP address(es). This is a common issue, when content is hosted within a CDN. The Application Client resolves the IP addresses using an FQDN. The API consumer only knows the FQDN, which is used by the Application Client (can be multiple). The API consumer and the Application Client belong to the same Application (same Application Service Provider). @eric-murray please correct, when my understanding is wrong. |
@tlohmar the important word is here "also" ... when the API anyway allows to work with list of IP addresses (in the result), then it make sense to allow such a list also as input. |
|
thx for the clarification. I misunderstood this. Could make sense to modify the ApplicationServer parameter, allowing a list of IPs. |
|
Some comments/considerations:
|
Co-authored-by: tlohmar <Thorsten.Lohmar@ericsson.com>
The original issue did indeed propose allowing the API consumer to pass a list (i.e. array) of IP addresses. See "Alternative Solution". That would be a breaking change unless we kept the existing properties, so we would end up with four possible ways of specifying IP addresses, all of which could be used in a single request: My (i.e. Vodafone's) requirements would be met just by adding the additional Trying to restrict the schema to only allow |
The specific issue was that our (potential) API consumer did not know which IP address was actually in use by the application. Their SDK could call DNS and obtain the list of IP addresses, but that DNS call would likely return the IP addresses in a different order to that returned to the application. So they would not know which IP address from the list that the application was actually using. So either the |
So all specified Typically, the application server port will be 443. Indeed, this is Vodafone's "default" if If someone has a use case where different application server ports must be prioritised for different application server IP addresses as part of the same QoS session, they might like to propose a scheme to link specific ports to specific application server IP addresses. |
For this PR, yes - indeed, it will usually not be possible to express the IP addresses associated a domain name using the current schema based on a single IPv6 and/or IPv6 subnet. But I will separately propose a breaking change whereby the session creation response includes a list (i.e. array) of all application server IP addresses included in the QoS session, rather than the current |
I have now opened issue #529 |
Added 'ipAddresses' property to application server identifiers and defined 'ApplicationServerIPAddressList' schema.
Co-authored-by: tlohmar <Thorsten.Lohmar@ericsson.com>
Removed unnecessary notes regarding DNS and WebRTC IP address handling.
|
I added Some considerations for the sub-project:
|
|
The last proposal considers one single domain and/or a list of IPv4/v6 addresses which may include subnets. Would it make sense to allow also a list of domains? |
I'm proposing to drop support for subnets - see my comment here Regarding domains, my preference would be that separate domains require separate QoS sessions. Of course, separate domains could be implicitly specified in the list of IP addresses, but I would prefer not to add explicit support for this. If there are reasons that other domains need to be included, maybe for "net neutrality" reasons or to prioritise other domains to which the device may be redirected when using the specified domain, I think it is for the API provider to implement that "behind the scenes" rather than requiring the API consumer to be explicitly aware they need to specify it. |
What type of PR is this?
What this PR does / why we need it:
Currently, application servers can only be identified by a contiguous set of IP addresses within a defined subnet. This PR allows application servers to be identified by a domain name that resolves (at least within the network operator's own DNS service) to a limited list of IPv4 and IPv6 addresses.
Which issue(s) this PR fixes:
Fixes #513
Special notes for reviewers:
None
Changelog input
Additional documentation
None