-
Notifications
You must be signed in to change notification settings - Fork 60
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Adds service provider defined QoS profiles #125
Comments
Thanks @RandyLevensalor Can you clarify the scope of the What does a I assume Is Is the intention that the qos profile applies to all protocols, or is a Mobile connections are usually asymmetric, with much higher throughputs both available and required on the downlink than the uplink. Separate throughput (aka bandwidth) parameters are required for uplink and downlink. Otherwise, it will be very limited what can be offered on the downlink if that also has to be supported on the uplink. |
@eric-murray Thanks for the excellent questions.
Correct. The id in QoSProfile is scope to the QoSProfile and is different than id in session id. All devices requesting the Qos Profile id:"123e4567-e89b-12d3-a456-426614174000" will get the same profile. The intent is for the id to be unique for the service provider or at least the service provide endpoint.
Yes, Active status means that it can be requested. Deprecated status is used for QoS profiles that are in use, but can't be used to create a new QoD session. Inactive status means that they are not in use and can't be used. This is an attempt to enable a level of lifecycle management for a QoS profile.
Exactly
I was thinking that name will not be required to be unique where the id is unique. So you could use the full or partial name as the query string and get all matching profiles. For instance, QCI profile for voice doesn't specify how much bandwidth will be allowed. So there could be multiple QCI_1_voice profiles or the name could be much more descriptive "Profile for voice calls on a device connected using mid-band spectrum".
Interesting question. Protocol or other flow identifies could be added to either the QoS Profile or the QoD Session. I had assumed that the session would provide the classification data. Now that you ask, it could make for sense to include this in the QoS profile. Happy to discuss further and would love to hear more input on this.
I added the directionality, so that this profile could be applied to either upstream or downstream. I can think of three options to address this. I'm sure I'm missing something and would love to hear more thoughts on this.
|
Nobody else has contributed yet, so I will give my opinion:
So
The problem with separate QoS profiles for uplink and downlink is that, whilst it can make sense to have separate and independent throughputs for uplink and downlink, it does not really make sense for delay budget. Whilst the concept of "one way" latency is valid, it is really round trip delay that (generally) matters because:
So my preference would be to expand the current proposal to include separate "uplink" and "downlink" bandwidth parameters, but retain the common To support "uni-directional" QoS profiles where a QoS profile is only applied in one-direction. I'd suggest to allow the value BTW - I'm originally an RF engineer, so for me, "bandwidth" will always be measured in MHz. Anything measured in Mb/s, I'm going to call "throughput". |
@eric-murray Thanks for the feedback. I've incorporated your feedback regarding throughput for both up stream (US) and down stream (DS). {
id:"123e4567-e89b-12d3-a456-426614174000",
name:"QCI_1_voice",
status:"Active",
minUSThroughput:{ value:1 unit:"Mbps"},
maxUSThroughput: { value:1 unit:"Mbps"},
minDSThroughput:{ value:1 unit:"Mbps"},
maxDSThroughput: { value:1 unit:"Mbps"},
minDuration: { value:1 unit:"Seconds"},
maxDuration: { value:24 unit:"Hours"},
priority: 2.0,
DelayBudget: { value:100 unit:"ms"},
packetErrorLossRate: 2
} |
Thanks @RandyLevensalor Looks good. I see that you did not adopt my proposal to use I'd still like to see some way to specify that either the "up" or "down" parameters will retain their "default" values (which may be device specific) rather than always be explicitly specified. I guess if those are optional parameters in the profile, they could just not be included if the default would apply. We can discuss in the meeting. |
That was a copy paste error for the json, which I corrected. This diagram had the change to Throughput.
Happy to have a debate about us vs down. I'd say if no max throughput is specified, then it would not change. Overloading the API to allow for a throughput to be a speed or a string is something I'd like to avoid. |
@RandyLevensalor, @eric-murray, |
We have to be careful not to couple this API too tightly to the SCEF / NEF, as other backend systems will be possible. I would not expect the NEF to be used for the fixed connectivity use cases of interest to Randy, for example. And I'm still waiting for our first production NEF to be deployed in Vodafone. But to your specific point, the parameter used by the SCEF / NEF T8 to specify the required profile, As for how that So we don't need CAMARA to specify paths for this API that allow new QoS profiles to be "uploaded" or existing profiles modified. That was the issue that I had with Randy's original proposal because it (a) allowed the end user to specify the QoS profile they wanted and (b) exposed to "the internet" a mechanism to modify the available QoS profiles that could never be guaranteed to be secure (and just does not need to be exposed in this way). Of course, this all implies that particular QoS profile parameter values, such as A separate but related issue is whether CAMARA specifies a set of common QoS profiles, with a common |
QosProfileThis is a revised proposal based on feedback. id: string (required)The id is a unique string for the QoS profile following the UUID format. name: string (required)The name is a descriptive string for the profile. This is not unique. status: QosProfileStatusEnum (required)The status is the current state for the QoS profile with one of the following values:
guaranteedUpstreamRate: Rate (Optional)This is the guaranteed or minimum upstream rate for this profile. maxUpstreamRate: Rate (Optional)This is the maximum sustained upstream rate for this profile. If this is undefined, then the maxUpstream rate will not change. If this rate is lower than the current provisioned maximum sustained rate, then the current rate is used. maxUpstreamBurstRate: Rate (Optional)This is the maximum burst upstream rate for this profile. If this is undefined, then the maxUpstream rate will not change. If this rate is lower than the current provisioned maximum rate, then the current maximum burst rate is used. guaranteedDownstreamRate: Rate (Optional)This is the guaranteed or minimum downstream rate for this profile. maxDownstreamRate: Rate (Optional)This is the maximum sustained downstream rate for this profile. If this is undefined, then the maxUpstream rate will not change. If this rate is lower than the current provisioned maximum sustained rate, then the current rate is used. maxDownstreamBurstRate: Rate (Optional)This is the maximum burst downstream rate for this profile. If this is undefined, then the maxUpstream rate will not change. If this rate is lower than the current provisioned maximum rate, then the current maximum burst rate is used. minDuration: Duration (Optional)The minium period of time that this profile can be allocated. maxDuration: Duration (Optional)The maximum period of time that this profile can be allocated. priority: float (required)The priority of the traffic. This is a float between 1 and 10. The lower the value the higher the priority. packetDelayBudget: Duration (Optional)The packet delay budget defines an upper bound for the time that a packet may be delayed between the user device and the core network. This is the round trip latency of the access network, and doesn't include any transit or other network elements. packetErrorLossRate: int (Optional)This is a negative integer for the the exponent for the loss rate. Where a loss rate of '-5' would mean that no more than 10−5 packets will be lost. ExamplesConversational voice{
id:"123e4567-e89b-12d3-a456-426614174000",
name:"QCI_1_voice",
status:"Active",
guaranteedUpstreamRate:{ value:128 unit:"Kbps"},
guaranteedDownstreamRate: { value:128 unit:"Kbps"},
priority: 2.0,
DelayBudget: { value:100 unit:"ms"},
packetErrorLossRate: 2
} OTT Streaming Video with Buffering{
id:"123e4567-e89b-12d3-a456-426614174000",
name:"QCI_6_buffered_video",
status:"Active",
maxUpstreamRate:{ value:512 unit:"Kbps"},
maxDownstreamRate: { value:512 unit:"Kbps"},
priority: 6.0,
DelayBudget: { value:300 unit:"ms"},
packetErrorLossRate: 6
} |
Hi @eric-murray, |
Unfortunately I was not able to attend the last QoD meeting, so do not know what was discussed, but I would have a problem using the term "guaranteed" in the parameter names, as throughputs just cannot be "guaranteed" for mobile radio links. Now I know that 3GPP use the term GBR, but "guaranteed" in that context is a technical term and not a guarantee as would be understood by the man on the Clapham omnibus. GBR is not a term that we use with customers. Given that these APIs will be made available to external developers, we need to be careful not to raise false expectations. Our legal team would not allow us to use language that implies the customer will always get at least the specified minimum data throughput irrespective of radio network conditions, because we know where that will lead when they inevitably don't get it at some point. There is no way that we can attach "small print" or SLAs directly to the profile descriptions, and nobody reads the small print anyway. So I would suggest more "radio friendly" terminology, such as Regarding |
@RandyLevensalor, @eric-murray
I also prefer targetMinimum to guaranteed
IMHO Up and Down should be ok because all developper Upload/Download files frequently. |
@RandyLevensalor #129 is finally merged, so the way is free for the next PRs. Would it be able for you to create your PR before the next call on April 21st (to follow the proposed timeline in #136)? |
@hdamker Thanks for the update. I will create the PR ahead of the meeting. I will miss the meeting on the 21st, but someone else from CableLabs will be on the call to discuss the PR. |
I'm happy to make the change from guaranteed to targetMinimum. How strongly do you feel about DataRate vs Rate? I can't imaging someone confusing an upstream/downstream rate measured in bits per second to be anything other than data rate. Adding Data seems a bit redundant and targetMinimumUpstreamDataRate is on the long side without adding data. Are there any other opinions on this one. |
Yes, you can drop the "Data" bit. We can put a full explanation in the documentation. One additional request. When reviewing this internally, it was requested to include some metric for maximum "jitter". Now I really don't like the term "jitter" as it is so badly defined, but it at least has the benefit of having a short name. My preferred term is "packet delay variation", but then we would end up with Of course, we would still need a definition for Packet Delay Variation in the documentation, as there are several in use. Nothing is ever that simple. |
@eric-murray How do you see "jitter" comparing to the "maximumDelayBudget." While I agree that "jitter" is a bit of an ambiguous term and many will scoff at its use. I think that more people would understand jitter than targetMaximumPacketDelayVariation. I'm open to including this. Would defining jitter as:
I'll get some additional guidance from some colleagues that have been active in measuring and improving jitter. Please take this comment as an initial thought and not a final proposal. |
Well, they are different but related metrics:
So Maximum Delay Budget is not something that is measured - it defines when a packet is considered so delayed that it counts as dropped - whereas Packet Delay Variation is something that can be measured and compared to the "target maximum". If the minimum latency is very small, then 99%ile PDV will indeed be similar to 99%ile latency. But the minimum latency will not be that small for mobile communications (maybe 20 - 50 ms, or even higher for remote servers). And some measures of PDV are one-way rather than round-trip, which is why it is important to clarify what definition is being used. I'm happy to adopt 99%ile round-trip PDV as defined by ITU Y.1540 as our definition for "Packet Delay Variation", though others may have different opinions. As for the name used within the API definition, well I don't want to be the one to perpetuate the use of the term "jitter", but so long as the definition is clear, maybe it doesn't matter so much. |
From implementation point of view, which network function shall owns the QoS profile data? |
Hi @RandyLevensalor, Hi @eric-murray, Hi all, I have one comment on the parameters targetMinimumUpstreamRate and targetMinimumDownstreamRate. Changing from guaranteedUpstreamRate and guaranteedDownstreamRate to targetMinimumUp/DownstreamRate respectively for external developers sake is ok. However, I understand that these parameters are supposed to be mapped to 3GPP NEF/SCEF GBR (Guaranteed Bit Rate) parameters for mobile networks. The Conversational voice example in the YAML is a very good example, where its name is QCI_1_voice and targetMinimumUpstreamRate and targetMinimumDownstreamRate are defined. (QCI=1 is GBR, as we all know.) We should document this somewhere, in order to avoid ambiguity in mapping: e.g. targetMinimumUpstreamRate and targetMinimumDownstreamRate are mapped to 3GPP NEF/SCEF guaranteedUpstream/DownstreamRate parameters. Sorry for the late comment. |
Thanks for driving this effort. I have a question on the PR. The GET /qos-profiles endpoint seems to return only Having said that, I would like to propose the merge of All, Assuming if we go with this idea, we need some changes in the
We can assume that there will be SLAs & charges associated with these profiles that are already documented/communicated and agreed upon (outside the scope of this spec). With this convergence, I want to list out some of the advantageous below:
For an operator supporting hundreds of profiles, all the above would still hold true + there is no loss of functionality. Assuming there is naming strategy of Thoughts! |
Hi @RandyLevensalor, Hi @eric-murray, Hi all, Further to my privious comment a couple of days ago, I would like to propose to use guaranteedUpstreamRate and guaranteedDownstreamRate, rather than targetMinimumUpstreamRate and targetMinimumDownstreamRate. I believe 'targetMinimum' is not used in 3GPP but 'guaranteed' (e.g. GBR) is used in 3GPP, so, by using guaranteedUpstreamRate and guaranteedDownstreamRate, we can avoid ambiguity in mapping QoD API to Southbound Network API (i.e. NEF/SCEF). Thanks. |
I have the same question as Emil's. An important point to see if the API is implementable, I think. Thanks. |
I disagree with this proposal for 3 reasons:
Imagine that you bought an expensive camera in a shop, and were told "this camera is guaranteed to work, unless it stops working, in which case we'll send you a letter saying it is not guaranteed any more". Not much of a "guarantee", is it? I think the term "targetMinimum" explains far better to the API consumer what they will get than "guaranteedMinimum", and each API provider can attach their own SLA to the agreed QoS profile (e.g. "the target minimum throughput will be achieved for no less than 95% of the session duration"). If it is important to explain the mapping of a particular QoS profile to a 3GPP profile, that can be captured in the QoS profile |
@ToshiWakayama-KDDI, @emil-cheung
This question confuses me. If we are considering an implementation for a 3GPP network, then for many years now the 3GPP AsSessionWithQoS interface has included the parameter:
Is there no known solution for the SCEF/NEF to maintain these pre-defined QoS profiles? |
@eric-murray My personal understanding is that QoS references shall be defined by BSS/OSS and then provisioned into NEF/SCEF. Additionally, it seems like the community agreed (in the meeting on April 21st) that QoS profile discovery will start from providing the information of QoS profiles in the initial phase. In later phases, it may be extended to eligibility aspect considering the UE subscription. If the solution is purely based on NEF/SCEF, the eligibility/subscription aspect may be difficult to fulfilled, but BSS/OSS based solution could better support that. |
@emil-cheung But CAMARA do not need to define how this will work. |
I'm happy for I also do not want If kept, the |
@jlurien @eric-murray @RandyLevensalor Thanks for the positive follow-up on the proposal. Adding my comments here as it is easy to follow a discussion than in the PR.
I am OK with the above suggestions. Having said that, I am also wondering would it benefit the developer to have one (or maybe two) default QoS profile name that is defined in the guidelines? For e.g. say QOD_PREMIUM (to differentiate it is something more than STANDARD) could be a default I assume this should not hinder an operator in exposing multiple/varied profiles that they want to showcase. More on this further down.
Agreed. I would also like to keep I am open to both options - No default Tagging other active participants here so that we can keep the discussion here in the issue than in the PR. |
Hi @eric-murray, Thank you for your comments to my proposal (targetMinimum -> guaranteed).
May I ask in which 3GPP document I can find the meaning of the term GBR, please? ("the bearer can support this minimum bitrate until it is determined that it cannot, in which case a notification will be sent saying it is no longer guaranteed" ) Many thanks, |
@ToshiWakayama-KDDI
|
Hi @eric-murray, Thank you so much. I could not find it by myself. As you pointed out, the API is used not only for 3GPP Network, but in practice, the API will be used mostly for 3GPP Network. And I understand that the whole point of CAMARA is to provide "friendly" interfaces to developers who are not familiar with the technical definitions and terminology of telecommunications networks (3GPP or otherwise). But at the same time, we should remove aubiguity in mapping between Northbound Service API and Southbound Network API (NEF/SCEF) as much as possible, so that we could avoid multiple interpretation among operators/service providers as much as possible and we could stick to the notion of CAMARA (and Open Gateway) of defining common APIs. This is my point which I raised for the v0.8.0 mapping discussions in November - December last year, if I remember correctly. On 24th March we had some discussion on adding a type of profile (best effort or guaranteed), which I don't think has been concluded. So, could we consider adding this ('best effort' or 'guaranteed')? Or, wouldn't it be possible to add the 5QI/QCI value directly as a parameter? Operators/service providers, have a 5QI/QCI value for a profile, and operators/service providers could put it in a profile but developers just don't care it. Just an idea, but what do you and others think? Thanks. |
We can provide examples of how the 5QI values could be mapped into these profiles. Since these also apply to non-3GPP networks, we can't overly burdon these APIs with 3GPP specific nomenclature. These profile definitions are intended to map to PON and DOCSIS networks as well. Mapping this API to NEF could cause additional challenges when mapping to these wireline networks. Since this API is intended for 3rd party developer, we should make it as straightforward as possible. |
Hi @RandyLevensalor, Hi @eric-murray, My question on relation between targetMinimumUp/DownstreamRate and 3GPP GBR was cleared at the last QoD meeting. Then I have another question. Is it correct understanding that 'maxUp/DownstreamRate' is non-GBR/best effort rate for 3GPP? Many thanks, |
@ToshiWakayama-KDDI |
Done by #138 |
The current enum of 4 predefined QoS profiles will be replaced with service provider-defined profiles. 3GPP TS 23.203 Rel-15 supports 21 different QoS Class Identifiers (QCIs), and each QCI can be mapped to multiple QoS profiles. Wireline broadband operators typically deploy 50 or more QoS profiles to a single distribution network to address a combination of enterprise and residential needs.
These profiles will be searchable based on profile and end device identifier attributes. Each QoSProfile will contain attributes that describe the profile along with a required name and unique ID. The only change to the Qod session is replacing QoS with a QosId.
Here is an example QoSProfile payload for a QoS profile based on the 3GPP QCI_1 profile for voice:
The diagram below shows the new endpoints, components, and schemas for the proposed change.
A partial implementation of the above change can be viewed in this fork
The text was updated successfully, but these errors were encountered: