Patent Description:
The subject matter described herein relates to providing guaranteed traffic bandwidth for services in communications networks. More particularly, the subject matter described herein relates to providing guaranteed traffic bandwidth for services at an intermediate proxy node, such as a service communications proxy (SCP), security edge protection proxy (SEPP), intermediate gateway, or service mesh node, that routes messages between service endpoints, such as producer and consumer network functions (NFs).

In <NUM> telecommunications networks, the network node that provides service is referred to as a producer network function (NF). A network node that consumes services is referred to as a consumer NF. A network function can be both a producer NF and a consumer NF depending on whether it is consuming or providing service.

A given producer NF may have many service endpoints, where a service endpoint is a combination of IP address and port number on a network node that hosts a producer NF. Producer NFs register with a network function repository function (NRF). The NRF maintains an NF profile of available NF instances and their supported services. Consumer NFs can subscribe to receive information about producer NF instances that have registered with the NRF.

In addition to consumer NFs, another type of network node that can subscribe to receive information about NF service instances is a service communications proxy (SCP). The SCP subscribes with the NRF and obtains reachability and service profile information regarding producer NF service instances. Consumer NFs connect to the service communications proxy, and the service communications proxy load balances traffic among producer NF service instances that provide the required service or directly routes the traffic to the destination producer NF.

In addition to the SCP, other examples of intermediate proxy nodes or groups of network nodes that route traffic between producer and consumer NFs include the SEPP, the service gateway, and nodes in the <NUM> service mesh. The SEPP is the network node used to protect control plane traffic that is exchanged between different <NUM> PLMNs (Public Land Mobile Networks). As such, the SEPP performs message filtering, policing and topology hiding for all API messages.

The service gateway is a node that sits in front of a group of producer NFs that provide a given service. The service gateway may load balance incoming service requests among the producer NF that provide the service in a manner similar to the SCP.

The service mesh is a name for a group of intermediate proxy nodes that enable communications between producer and consumer NFs. The service mesh may include one or more SCPs, SEPPs, and service gateways.

One problem with the existing 3GPP service architecture is that while message priorities and congestion handling are defined at the 3GPP NFs. But all nodes between consumer and producer NFs cannot register themselves as <NUM> NFs, e.g., intermediate proxies, service gateways between sites of same vendor etc. Therefore, consumer NFs can see the load of target producer NFs only. There are no guidelines from 3GPP to define behavior on intermediate nodes. Also, 3GPP does not define overload handling mechanisms at the intermediate proxy nodes, such as the SCP, SEPP, service gateway or service mesh to avoid service starvation for low priority services. For example, if an SCP is handling traffic between producer and consumer NFs, and the producer NFs are not overwhelmed, the traffic may proceed without invoking congestion control procedures at the SCP. However, the sum of the traffic from the consumer NFs to the producer NFs may overwhelm the SCP. Without a mechanism for handling traffic congestion at the SCP or other intermediate proxy node, such nodes may become congested and drop traffic for low priority services.

Accordingly, there exists a need for methods, systems, and computer readable media for providing guaranteed traffic bandwidth support for services at intermediate proxy nodes.

In <CIT>, a method for handling a service discovery request for a service provided by a service based architecture communications network is disclosed.

In <CIT>, a method, device, and system for guaranteeing a service level agreement of an application is disclosed.

The invention is defined by the independent claims <NUM>, <NUM> and <NUM>. Further embodiments are defined by their respective dependent claims.

The subject matter described herein may be implemented in hardware, software, firmware, or any combination thereof. As such, the terms "function" "node" or "module" as used herein refer to hardware, which may also include software and/or firmware components, for implementing the feature being described. In one exemplary implementation, the subject matter described herein may be implemented using a computer readable medium having stored thereon computer executable instructions that when executed by the processor of a computer control the computer to perform steps. Exemplary computer readable media suitable for implementing the subject matter described herein include non-transitory computer-readable media, such as disk memory devices, chip memory devices, programmable logic devices, and application specific integrated circuits. In addition, a computer readable medium that implements the subject matter described herein may be located on a single device or computing platform or may be distributed across multiple devices or computing platforms.

The subject matter described herein relates to a method, a system, and a computer readable medium for providing guaranteed traffic bandwidth for services at an intermediate proxy node between consumer and producer NFs. <FIG> is a block diagram illustrating an exemplary <NUM> system network architecture. The architecture in <FIG> includes NRF <NUM> and SCP <NUM>, which may be located in the same home public land mobile network (HPLMN). As described above, NRF <NUM> may maintain profiles of available producer NF service instances and their supported services and allow consumer NFs or SCPs to subscribe to and be notified of the registration of new/updated producer NF service instances. SCP <NUM> may also support service discovery and selection of producer NFs. In addition, SCP <NUM> may perform load balancing of connections between consumer and producer NFs.

NRF <NUM> is a repository for NF profiles. In order to communicate with a producer NF, a consumer NF or an SCP must obtain the NF profile from NRF <NUM>. The NF profile is a JavaScript object notation (JSON) data structure defined in 3GPP TS <NUM>. The NF profile definition includes at least one of a fully qualified domain name (FQDN), an Internet protocol (IP) version <NUM> (IPv4) address or an IP version <NUM> (IPv6) address.

In <FIG>, any of the nodes (other than SCP <NUM> and NRF <NUM>) can be either consumer NFs or producer NFs, depending on whether they are requesting or providing services. In the illustrated example, the nodes include a policy control function (PCF) <NUM> that performs policy related operations in a network, a user data management (UDM) function <NUM> that manages user data, and an application function (AF) <NUM> that provides application services. The nodes illustrated in <FIG> further include a session management function (SMF) <NUM> that manages sessions between access and mobility management function (AMF) <NUM> and PCF <NUM>. AMF <NUM> performs mobility management operations similar to those performed by a mobility management entity (MME) in <NUM> networks. An authentication server function (AUSF) <NUM> performs authentication services for user equipment (UEs), such as UE <NUM>, seeking access to the network.

A network slice selection function (NSSF) <NUM> provides network slicing services for devices seeking to access specific network capabilities and characteristics associated with a network slice. A network exposure function (NEF) <NUM> provides application programming interfaces (APIs) for application functions seeking to obtain information about Internet of things (IoT) devices and other UEs attached to the network. NEF <NUM> performs similar functions to the service capability exposure function (SCEF) in <NUM> networks.

A radio access network (RAN) <NUM> connects UE <NUM> to the network via a wireless link. Radio access network <NUM> may be accessed using a g-Node B (gNB) (not shown in <FIG>) or other wireless access point. A user plane function (UPF) <NUM> can support various proxy functionality for user plane services. One example of such proxy functionality is multipath transmission control protocol (MPTCP) proxy functionality. UPF <NUM> may also support performance measurement functionality, which may be used by UE <NUM> to obtain network performance measurements. Also illustrated in <FIG> is a data network (DN) <NUM> through which UEs access data network services, such as Internet services.

SEPP <NUM> filters incoming traffic from another PLMN and performs topology hiding for traffic exiting the home PLMN. SEPP <NUM> may communicate with an SEPP in a foreign PLMN which manages security for the foreign PLMN. Thus, traffic between NFs in different PLMNs may traverse two SEPP functions, one for the home PLMN and the other for the foreign PLMN. As indicated above, the SEPP is an example of an intermediate proxy node that may become overwhelmed if appropriate congestion control and/or bandwidth reservation procedures are not implemented at the intermediate proxy node.

In the <NUM> deployment architecture, 3GPP releases <NUM> and <NUM> recommend proxy nodes, such as the SCP or SEPP, that sit between client/consumer NFs and server/producer NFs. Proxy nodes, such as the SCP, provide transport and routing functionality between N consumer NFs and M producer NFs, where N and M are integers. Similarly, a network operator may deploy its own service mesh/intermediate gateway/controller nodes between <NUM> NFs. Service mesh/intermediate gateway/proxy nodes help to perform most common activities among various services, e.g., monitoring, overload control, traffic management, service discovery, etc. In <NUM>, each producer NF can publish its load level to the NRF. Consumer NFs can subscribe for such changes and be reactive to adjust their traffic rates.

One problem with the existing 3GPP network architecture is that not all nodes between consumer and producer NFs can register themselves as a <NUM> NF. These nodes that cannot register include intermediate proxies, service gateways between sites of the same vendor, etc. Because intermediate proxy nodes cannot register with the NRF as a <NUM> NF, consumer nodes may not be aware of the load on the intermediate proxy nodes and may overwhelm the intermediate proxy nodes. Similarly, the NRF provides notifications to service consumers that allows consumers to see the load of target producer nodes. However, because intermediate proxy nodes cannot register as service producers, there are no guidelines from 3GPP to define behavior on an intermediate proxy node for responding to or issuance of such notifications.

Even if an operator plans the capacity of its intermediate proxy nodes, a signaling storm from rogue services/NFs, can overload intermediate network/node/route.

Thus, with the service mesh (or intermediate proxy, such as the SCP/SEPP), there is need to set up policies that ensure guaranteed traffic bandwidth for a given NF service messaging. The subject matter described herein includes enhancements in service mesh/SCP/SEPP/intermediate gateways, etc., for guaranteed severability of multiple services during congestion/overload conditions of intermediate proxy nodes.

Regardless of a shared or dedicated network, intermediate proxy nodes need a way to ensure guaranteed serviceability for all or selected services. Without GTBS, messaging between two services can over-run the capacity of service mesh/intermediate proxy nodes and thus may impact functioning of the intermediate proxy nodes, as well as other services.

<FIG> illustrates how traffic between N nodes can overwhelm a service mesh. In <FIG>, an AMF <NUM> is connected to a UDM <NUM> and another NF <NUM> via a service mesh <NUM>. AMF <NUM> provides service Svc-X. UDM <NUM> provides service Svc-Y. NF <NUM> provides service Svc-Z. Messaging between Svc-X and Svc-Y may exhaust the capacity of intermediate proxy node <NUM> (during a data storm or other such scenario). As a result, Svc-X -> Svc-Z and Svc-Y -> Svc-Z servicing may be adversely impacted.

<NUM> does not provide guidance on message priority to be used for a message within a given service. As per 3GPP TS <NUM>, all messages without priority defined by clients, shall have default priority of <NUM>. Also, it is extremely difficult for vendors/operators to drive/assign a priority for each service message, which can fairly justify the priority compared to other services of other NFs.

At the same time, to ensure stability of intermediate proxy nodes during data storm/overload conditions, operators set up a throttling policy to reject low priority messages, when system capacity is beyond a certain point.

The following are examples of policies that may be implemented at an intermediate proxy node when system capacity is beyond a certain point.

While such policies may be useful, they fail to take into account what happens to the service with low priority messages/traffic during congestion events.

Another problem that occurs when all lower priority messages are rejected in a congestion situation is that if all messages of a given service are of lower priority, then priority-based thresholds may starve a given service. For example, in <FIG>, if all messages of the service Svc-Z have the default priority and the intermediate proxy node goes into overload, all messages for service Svc-Z will be rejected, preventing service Svc-Z from being provided in the network.

In <NUM> deployments, there is the possibility of many-to-many mapping between NFs (network functions) and services, i.e., a given NF may provide multiple services, and a service may be provided by multiple NF instances.

<FIG> is a network diagram illustrating an example where multiple producer NFs provide services to multiple consumer NFs. In the illustrated example, the consumer NFs or AMFs 110a through 110c. The producer NFs are UDM <NUM> and NF instance <NUM>. The producer and consumer NFs are connected via intermediate proxy node <NUM>. In one example, it can be assumed that there are <NUM> AMF instances and <NUM> UDM instances running. Each UDM instance may be capable of handling <NUM> kilobits per second of traffic. However, the multiple AMF instances running service Svc-X may flood intermediate proxy node <NUM> with messaging towards service Svc-Y provided or hosted by each instance of UDM <NUM>. In addition, intermediate proxy node <NUM> may need a policy to ensure that messaging for service Svc-Z can be provided by rejecting messages relating to Svc-X and Svc-Y. The messages for service Svc-Z may have any priority, but there should not be a complete denial of service for service Svc-Z, even though service Svc-Z messages have lower priority than the messaging relating to other services.

In a <NUM> deployment, HTTP connections are on-demand. Thus, it is possible that Svc-X of AMF-instance <NUM> can instantiate multiple connections with the intermediate proxy node, to distribute the traffic on multiple connections. For example, there may be <NUM> connections between SVC-X of AMF-instance <NUM> and SCP/SEPP node. Thus, overall traffic originated by a given Svc-X instance (<NUM> for Svc-Y and <NUM> for Svc-Z), will spread across <NUM> connections, i.e., each connection handles <NUM> only.

Thus, performing ingress control based on a source service or per connection basis is not a viable option for a network that implements a service mesh since there are multiple and even on-demand connections for ingress traffic of a service.

Similarly, the intermediate proxy node may have <NUM> connections with each instance of a UDM and may be connected to <NUM> different instances of a UDM. Thus, performing egress control based on a target node or per connection basis, is not a viable option for a service mesh or intermediate NFs.

The subject matter described herein includes a service mesh node, SCP, SEPP, or other intermediate proxy node between a consumer NF and a producer NF that supports a mechanism so that guaranteed traffic bandwidth can be allocated for a particular service. This mechanism is referred to herein as Guaranteed Traffic Bandwidth for Services (GTBS).

Table <NUM> shown below illustrates an example of guaranteed traffic bandwidth service rates for different services that may be implemented by an intermediate proxy node.

In Table <NUM>, each of services Svc-X, Svc-Y, and Svc-Z has a guaranteed bandwidth service rate which is a percentage of reserved capacity of the intermediate proxy node. For each service, the percentage of the reserved capacity of the intermediate proxy node that will be used exclusively by messages of a given service when the intermediate proxy node is in an overload state, even if the messages of a given service are of lower priority than messages of other services that are rejected by the intermediate proxy node. For example, if a message for service Svc-X is with a priority of <NUM> is received at an intermediate proxy node, the message for service Svc-X may be routed under the guaranteed bandwidth of service Svc-X and another message with a higher priority (higher priority means lower numeric priority value according to 3GPP) is rejected by the intermediate proxy node. In Table <NUM>, service Svc-X is guaranteed <NUM>% of the reserved capacity of the intermediate proxy node, service Svc-Y is guaranteed <NUM>% of the reserved capacity of the intermediate proxy node, and service Svc-Z is guaranteed <NUM>% of the reserved capacity of the intermediate proxy node.

In this model, the network operator configures the following:.

Overall capacity of intermediate proxy node. overall capacity of node/service mesh/SCP etc. is <NUM>. GTB for each supported service through the intermediate proxy node. If overall capacity of the intermediate proxy node is <NUM>, then guaranteed bandwidth or GTB (based on Table <NUM>) will be as follows:.

Thus, regardless of message priority of message across multiple service messages (passing through the intermediate proxy node), each service (with configured GTBS) will have ensured/guaranteed allocated capacity on intermediate proxy nodes.

The following are functional details that may be implemented by an intermediate proxy node, such as an SCP, SEPP, service mesh, or other intermediate proxy node that provides guaranteed traffic bandwidth for services.

With this approach, services with configured GTBS will have guaranteed severability through service mesh/intermediate proxy nodes. This holds true even during data storms or other anomalies in the network.

Each service can be categorized and identified using PATH/URI specified by 3GPP in corresponding Network Function specifications. This approach can also be applied to non-<NUM> messages based on PATH/URI. Thus, a network operator should be able to configure GTB for any service based on path/URI elements. This approach can also be applied to provide GTB to a given producer as well (based on FQDN). This helps in use-cases of managing emergency services and other premium customers. For messages with no priority assigned, application recommends operator should specify default message priority. (As per 3GPP TS <NUM>, all <NUM> core (5GC) messages without priority defined by clients, shall have default priority of <NUM>).

An intermediate proxy node that implements GTBS may also implement the following types of tracking/monitoring to enforce GTBS:.

Table <NUM> shown below illustrates an example of message rates that may be tracked at an intermediate proxy node that implements guaranteed traffic bandwidth for services.

In Table <NUM>, it can be seen that the traffic rate for each of services Svc-X, Svc-Y, and Svc-Z is tracked. In addition, rates for each configured message priority within a given service are also tracked. For example, for service Svc-X, message rates for priority P0 and P5 are tracked. It should be noted that services that are not defined as having guaranteed bandwidth will not have a configured guaranteed bandwidth service rate.

As stated above, in addition to tracking message rates of messages with guaranteed bandwidth service, an intermediate proxy node may also track message rates based on priority for non-GTBS traffic. Table <NUM> shown below illustrates example non-GTBS traffic that may be tracked by an intermediate proxy node.

In Table <NUM>, message rates for non-GTBS traffic are tracked per defined message priority.

Another metric that may be tracked by an intermediate proxy node that implements GTBS service is the total message rate of non-GTBS and GTBS traffic. Table <NUM> shown below illustrates the total message rate that may be tracked by such an intermediate proxy node.

Table <NUM> illustrates the sum of all the traffic rates in Table <NUM> and Table <NUM>, which is the total rate of traffic that is currently being handled by the intermediate proxy node. Such a rate may be compared to the overall message capacity of the node to determine whether the node is in an overloaded state. For example, the network operator may configure the overload triggering state of the node to be <NUM>% of total capacity. If the node is capable of handling <NUM> messages per second and the engineered overload threshold is defined at <NUM>, then the rate of <NUM> in Table <NUM> would indicate that the node is in an overloaded state and trigger GTBS service as described herein.

For a simplified explanation of the GTBS algorithm, the following examples in Table <NUM> assume that overload policy rejects messages at <NUM>% nodal capacity. However, the rejection of messages from the non-GTBS bucket can be applied using an overload policy with multiple throttle levels and message priority mappings (where messages up to a certain priority level will be rejected at a certain system overload level).

In scenario <NUM> in Table <NUM>, a message is received from service A for which there is no guaranteed bandwidth service configured. Accordingly, the message will be processed according to the policies defined for the non-GTBS bucket. The message has a priority of <NUM>. In this example, it is assumed that there are messages in the non-GTBS bucket with priority lower than <NUM> and that there is bandwidth available. Accordingly, the message will be passed and the count for the non-GTBS traffic for priority P4 will be updated.

In scenario <NUM> in Table <NUM>, another message for Svc-A is received. As with example <NUM>, there is no guaranteed bandwidth service configured for the message, so the message will be processed according to the policies defined for the non-GTBS bucket. In scenario <NUM>, the message has a priority of <NUM>. It is assumed that there are no messages in the non-GTBS bucket with priority lower than <NUM>. Accordingly, the message will be routed if there is bandwidth available for the non-GTBS messages of priority <NUM>. If such bandwidth is not available, the message will be rejected.

In scenario <NUM>, a message with priority <NUM> for Svc-A is received. However, it is assumed that the system is running at <NUM>% capacity. Since there is no guaranteed bandwidth service configured for Svc-A, no lower priority messages in process in the non-GTBS bucket, and no system capacity available, the message will be rejected.

In scenario <NUM> in Table <NUM>, a message with priority <NUM> is received for Svc-X. Guaranteed bandwidth service is configured for Svc-X. It is also assumed that there is quota available within the guaranteed rate for Svc-X. Accordingly, the message will be passed and the rate for priority <NUM> traffic of Svc-X will be updated.

In scenario <NUM> in Table <NUM>, a message with priority <NUM> for Svc-X is received. In this example, it is assumed that the system is running at <NUM>% capacity but there is quota available within the guaranteed rate for messages of Svc-X. Accordingly, the messages will be routed, and the quota will be updated for priority <NUM> and Svc-X. It should be noted that the system will reject messages in the non-GTBS bucket when the system is running at <NUM>% capacity even if the messages have higher priority than messages that are allowed within the reserved quota for a given service.

In scenario <NUM> in Table <NUM>, a message with priority <NUM> is received for Svc-Y. It is also assumed that the Svc-Y guaranteed capacity is exhausted. However, there are messages with lower priority than <NUM> in the GTBS bucket of Svc-Y. Accordingly, the message will be allowed from the GTBS bucket for Svc-Y and the GTBS traffic rate for priority P4 will be updated for Svc-Y.

In scenario <NUM> in Table <NUM>, a message with priority <NUM> is received for Svc-Y. It is also assumed that the Svc-Y guaranteed capacity is exhausted and there are no lower priority messages in the GTBS bucket for Svc-Y. Accordingly, the message will be processed from the non-GTBS bucket. The message with either be routed or rejected based on the policy defined for the non-GTBS bucket.

In scenario <NUM>, it is assumed that the system is running at <NUM>% capacity and a message with priority <NUM> is received for Svc-Y. It is also assumed that the Svc-Y guaranteed capacity is exhausted, and there are no lower priority messages in the GTBS bucket for Svc-Y. Thus, the message will be processed from the non-GTBS bucket. The message will be allowed or rejected based on its priority and the policies configured for the non-GTBS bucket.

In scenario <NUM>, it is assumed that the message is running at <NUM>% capacity. A message with priority <NUM> is received for Svc-Y. It is also assumed that Svc-Y guaranteed capacity is exhausted, and there are no lower priority messages in the GTBS bucket for Svc-Y. Thus, the message will be processed from the non-GTBS bucket. In this example, it is assumed that there are no lower priority messages in the non-GTBS bucket since the system is running at <NUM>% capacity and there is no more buffer space to process the message, the message will be rejected.

<FIG> is a block diagram of an intermediate proxy node that implements guaranteed traffic bandwidth for services as described herein. Referring to <FIG>, intermediate proxy node <NUM> may be an SCP, an SEPP, a service mesh node, a service proxy, or other node that routes messages between service consumers and service producers. In the illustrated example, intermediate proxy node <NUM> includes at least one processor <NUM> and memory <NUM>. Intermediate proxy node <NUM> further includes a guaranteed traffic bandwidth for services (GTBS) controller <NUM> that determines whether the intermediate proxy node is in an overloaded state and implements a GTBS service with configured per-service guaranteed minimum bandwidths of the intermediate proxy node as described above. In the illustrated example, the per service guaranteed minimum bandwidths are reserved and tracked using per-service buckets. For example, bucket <NUM> for service Svc-X is configured to allow <NUM> (<NUM>) messages for service Svc-X when intermediate proxy node <NUM> is in an overloaded state. In the illustrated example, the ingress rate for service Svc-X is <NUM>. Accordingly, <NUM> of the higher priority messages for service Svc-X are allowed, while the remaining <NUM> of messages for service Svc-X are passed into non-guaranteed bucket <NUM>, where the messages are allowed or rejected based on the overload control policy for non-guaranteed bandwidth traffic.

Intermediate proxy node <NUM> implements bucket <NUM> for traffic for service Svc-Y. Bucket <NUM> is configured to reserve and track utilization of a guaranteed minimum bandwidth of <NUM> messages for service Svc-Y. In the illustrated example, the ingress message rate for service Svc-Y is <NUM>. Accordingly, <NUM> of the messages for service Svc-Y will be allowed while <NUM> of the messages for service Svc-Y will be passed into non-guaranteed bucket <NUM>, where messages will be allowed or rejected based on the overload control policy of intermediate proxy node <NUM> for non-guaranteed bandwidth traffic.

Intermediate proxy node <NUM> implements a bucket <NUM> for messages for service Svc-Z with a guaranteed minimum bandwidth of <NUM>. In the illustrated example, the ingress message rate for service Svc-Z is <NUM>. Accordingly, <NUM> of the traffic will be passed while <NUM> of the message traffic for service Svc-Z will be passed to non-guaranteed bucket <NUM> where the messages will be passed or rejected based on the overload control policy for non-guaranteed traffic.

Intermediate proxy node <NUM> includes a GTBS configuration interface <NUM> that allows the network operator to configure guaranteed minimum bandwidths for services. GTBS configuration interface <NUM> may allow the user to define service identifying parameters for each service, and per-service guaranteed minimum bandwidths for a plurality of different services. The guaranteed minimum bandwidths may be reserved and tracked using per-service GTBS buckets, such as buckets <NUM> and <NUM>. Non-guaranteed bucket <NUM> may be configured by default to track the non-reserved (system) bandwidth of intermediate proxy node <NUM>.

<FIG> is a flow chart illustrating an exemplary process for implementing guaranteed traffic bandwidth for services at an intermediate proxy node. Referring to <FIG>, in step <NUM>, a message is received at an intermediate proxy node that is in an overloaded state. For example, a message may be received at an SCP, an SEPP, a service mesh node or other intermediate proxy node. "Overloaded state" means that the utilization of the intermediate proxy node has crossed an operator-defined threshold, such as <NUM>% of the available capacity for processing messages.

In step <NUM>, the message is identified as being associated with a guaranteed bandwidth service. For example, GTBS controller <NUM> may identify the message as being associated with guaranteed bandwidth service based on one or more parameters in the message. Examples of such parameters include the URI or other service identifying parameters.

In step <NUM>, it is determined whether there is guaranteed bandwidth available for the service. For example, if the guaranteed bandwidth for the service is <NUM> messages for the current measurement interval and only <NUM> messages have been transmitted, then <NUM> of available bandwidth remains. If the guaranteed bandwidth is available, control proceeds to step <NUM> where the message is passed or routed, and message counts are updated. For example, GTBS controller <NUM> may pass messages below the configured guaranteed bandwidth for each service and update message counts per service, per priority within a service, and overall message count.

In step <NUM>, if it is determined that the guaranteed bandwidth for the service is not available, control proceeds to step <NUM> where it is determined whether lower priority messages exist in the GTBS bucket. For example, suppose the message is for service A and carries a priority value of <NUM>. GTBS controller <NUM> will analyze messages in the GTBS bucket for service A that are waiting to be transmitted. If there is at least one message with priority <NUM> or higher, GTBS controller <NUM> may replace the lower priority message with the message for service A. Control then proceeds to step <NUM> where the message for service A is transmitted and the message counts are updated.

In step <NUM>, if it is determined that there are no lower priority messages in the GTBS bucket, control proceeds to step <NUM> where it is determined whether non-GTBS bandwidth is available. For example, GTBS controller <NUM> may determine whether non-GTBS bandwidth is available by determining whether the non-GTBS bucket has any remaining message processing capacity. Because the non-GTBS bucket does not have any reserved capacity, the determination as to whether the non-GTBS bucket has any available capacity may be determined based on whether there is any system capacity available to process the message. Even though the system is in an overloaded state, there may be some remaining capacity above the overload threshold. If GTBS controller <NUM> determines that there is non-GTBS capacity available, control proceeds to step <NUM> where the message is routed.

In step <NUM>, if it is determined that non-GTBS capacity not available, control proceeds to step <NUM> where it is determined whether lower priority messages exist in the non-GTBS bucket. For example, suppose the message carries a priority value of <NUM>. GTBS controller <NUM> will analyze messages in the non-GTBS bucket that are waiting to be transmitted. If there is at least one message with priority <NUM> or higher, GTBS controller <NUM> may replace the lower priority message with the message having priority <NUM>. Control then proceeds to step <NUM> where the message with priority <NUM> is transmitted, and the message counts are updated. In step <NUM>, if there are no lower priority messages in the non-GTBS bucket, control proceeds to step <NUM> where the message is rejected.

Claim 1:
A method for providing guaranteed minimum intermediate proxy node traffic bandwidth for services, the method comprising:
configuring, at an intermediate proxy node, a plurality of different per-service guaranteed minimum bandwidth buckets (<NUM>) of the intermediate proxy node for reserving and tracking utilization of reserved minimum bandwidths of the intermediate proxy node available to be used by messages associated with a plurality of different services;
receiving (<NUM>) a first message at the intermediate proxy node;
determining, by the intermediate proxy node, that the intermediate proxy node is in an overloaded state;
identifying (<NUM>), by the intermediate proxy node, the first message as being associated with one of the services for which the guaranteed minimum bandwidth is configured;
determining (<NUM>), by the intermediate proxy node, that a portion of the guaranteed minimum bandwidth for the service is available to process the first message; and
routing (<NUM>), by the intermediate proxy node and to a producer network function, NF, that provides the service, the first message and updating a message count for the service.