Patent Publication Number: US-10778527-B2

Title: Methods, systems, and computer readable media for providing a service proxy function in a telecommunications network core using a service-based architecture

Description:
TECHNICAL FIELD 
     The subject matter described herein relates to telecommunications network cores using a service-based architecture. More particularly, the subject matter described herein relates to methods, systems, and computer readable media for providing a service proxy function in a telecommunications network core using a service-based architecture. 
     BACKGROUND 
     The 3 rd  Generation Partnership Project (3GPP) is a collaboration between groups of telecommunications standards associations. The 3GPP defined mobile phone system specifications for telecommunications networks including 3G, 4G, and Long Term Evolution (LTE) networks. The next generation network for 3GPP is the 5G network. The 5G specifications target high data rates, reduced latency, energy saving, cost reduction, higher system capacity, and increasing numbers of connected devices. 
     The 3GPP has defined a service-based architecture for its next generation 5G core network. In a service-based architecture, services are provided to software components by application components, typically through a communication protocol over a data communications network. A service can be, e.g., a discrete function that can be accessed remotely and consumed and updated independently of other services in the system. Different services can be used together to provide the functionality of a larger functional system such as a software application. The service-based architecture can integrate distributed and separately-maintained software components. 
     In order to enable service consumers to communicate with service producers, consumers are expected to discover producers via a discovery service and then directly communicate with the producers. For example, in the 5G core network, services perform these functions using RESTful APIs over HTTP/2. While the approach defined by 3GPP works, it places a lot of the burden on the service consumers and producers to implement networking functionality such as service discovery, load balancing, overload control, circuit breaker, retries, timeouts, and the like. 
     Accordingly, there exists a need for methods, systems, and computer readable media for providing a service proxy function in a telecommunications network core using a service-based architecture. 
     SUMMARY 
     The subject matter described herein includes methods, systems, and computer readable media for providing a service proxy function in a telecommunications network core using a service-based architecture. An example system includes at least one service proxy controller and a number of service proxy workers. The service proxy controller is configured for providing routing policies for the telecommunications network core. The telecommunications network core includes network functions communicating using a service-based architecture. Each service proxy worker is configured for routing telecommunications network core messages between a respective subset of the network functions by consuming the routing policies from the service proxy controller and enforcing the routing policies from the service proxy controller. Each service proxy worker is configured for providing network status reports to the service proxy controller based on the telecommunications network core messages. 
     An example method for providing a service proxy function includes providing, from a service proxy controller implemented on at least one processor, routing policies for a telecommunications network core, the telecommunications network core including network functions communicating using a service-based architecture. The method includes routing, at each service proxy worker of a number of service proxy workers implemented on the at least one processor, telecommunications network core messages between a respective subset of the network functions by consuming the routing policies from the service proxy controller and enforcing the routing policies from the service proxy controller. The method includes providing, at each service proxy worker, network status reports to the service proxy controller based on the telecommunications network core messages. 
     In some examples, providing routing policies includes performing load balancing between at least a first subset of network functions based on the network status reports from the service proxy workers. In some examples, routing telecommunications network core messages includes re-routing, at the service proxy worker, at least a first telecommunications network core message destined for a first network function based on a health status indicator for the first network function. In some examples, routing telecommunications network core messages includes re-trying, at the service proxy worker, a failed transmission of a first telecommunications network core message from a first network function to a second network function. 
     In some examples, the service proxy workers are deployed alongside instances of the network functions in a distributed computing system, and routing telecommunications network core messages includes acting as a default outbound proxy for the instances of the network functions. In some examples, providing routing policies for the telecommunications network core includes providing a traffic prioritization policy, and enforcing the routing policies includes shedding lower priority network traffic in response to detecting an overload condition according to the traffic prioritization policy. 
     In some examples, providing network status reports includes providing one or more of: request and response counts for each network function; a message rate for each network function; and an average transmission latency for each network function. In some examples, the service proxy controller is configured for determining a network load for at least a first network function based on: capacity information published by the first network function during registration; load information published by the first network function; and a first network status report characterizing the network load of the first network function. 
     In some examples, the telecommunications network core is a 3rd Generation Partnership Project (3GPP) 5G telecommunications network core, and the network functions include at least an access and mobility management function (AMF), a policy control function (PCF), a unified data management (UDM) function, a session management function (SMF), and a network slice selection function (NSSF). In some examples, providing routing policies for the telecommunications network core includes receiving network function status information from a network function repository function (NRF) and providing additional network function status information to the NRF. 
     The subject matter described herein may be implemented in hardware, software, firmware, or any combination thereof. As such, the terms “function” “node” or “engine” 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 non-transitory 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. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a block diagram illustrating an example telecommunications network core that uses a service-based architecture; 
         FIG. 2  is a block diagram illustrating an example implementation of the service proxy function; 
         FIG. 3  is a signaling diagram illustrating an example message exchange for load-aware discovery and request routing; 
         FIG. 4  is a signaling diagram illustrating an example message exchange for telecommunications-aware alternate routing; 
         FIG. 5  is a signaling diagram illustrating an example message exchange for routing optimization carried out with the NRF; 
         FIG. 6  is a signaling diagram illustrating an example message exchange for overload/egress congestion control; 
         FIG. 7  is a signaling diagram illustrating an example message exchange for handling a network function failure or degradation; 
         FIG. 8  is a signaling diagram illustrating an example message exchange for implementing canary releases; and 
         FIG. 9  is a flow diagram illustrating an example method for providing a service proxy function in a telecommunications network core using a service-based architecture. 
     
    
    
     DETAILED DESCRIPTION 
     Methods, systems, and computer readable media for providing a service proxy function in a telecommunications network core using a service-based architecture are disclosed. In particular, the disclosed subject matter presents a distributed service proxy function using at least one service proxy controller and a number of service proxy workers. 
     The 3GPP 5G specifications significantly change the way that components in the telecommunication network core communicate with each other. The core network in 5G follows a service-based architecture where network elements advertise and provide services which can be consumed using REST APIs by other network elements in the telecommunications network core. This allows for the adoption of web scale technologies and software in telecommunications networks. 
     In the 5G architecture, the focus is on loosely coupled services as opposed to tightly coupled functions and point-to-point interfaces. HTTP/2 is used as a service-based application layer protocol. The 5G architecture supports native control and user plane separation. The 5G architecture supports the unified data management framework, an expanded and unified policy framework, and an expanded network exposure functionality. 
     Web scale technologies often rely primarily on open source software and bring in significant amount of automation, e.g., especially in the deployment and operational aspects of implementing a system. Web scale technology solutions are based on informational elements present in messages below the telecommunications network core layer. The service proxy function described in this specification brings telecommunications-awareness to networking components in a telecommunications network core and can help to resolve issues such as congestion control, traffic prioritization, overload control, optimized routing, and others. 
       FIG. 1  is a block diagram illustrating an example telecommunications network core  100  that uses a service-based architecture. Telecommunications network core  100  can be, e.g., a 3GPP 5G telecommunications network core. As shown in  FIG. 1 , telecommunications network core  100  includes a service proxy function  102  and a number of network functions communicating with each other using service proxy function  102 . 
     The networks functions illustrated in  FIG. 1  are examples of network functions in telecommunications network core  100 . Other types of appropriate network functions can be included, and in some examples, telecommunications network core  100  will include fewer network functions. As shown in  FIG. 1 , telecommunications network core  100  includes a network slice selection function (NSSF)  104 , a network exposure function (NEF)  106 , a network function repository function (NRF)  108 , a policy control function (PCF)  110 , a unified data management (UDM) function  112 , an application function (AF)  114 , a security edge protection proxy (SEPP)  116 , an EIR  118 , an interworking function (IWF)  120 , an access and mobility management function (AMF)  122 , an authentication server function (AUSF), a bootstrapping server function (BSF)  126 , and a session management function (SMF)  128 . 
     Some of the network functions shown in  FIG. 1  are used for 5G-4G interworking. For example, NSSF  104 , NEF  106 , NRF  108 , SEPP  116 , EIR  118 , IWF  120 , and BSF  126  can be used to facilitate 5G-4G interworking. 
     Service proxy function  102  can be deployed in a cloud computing environment along side of the network functions to provide various services to facilitate a service-based architecture, e.g., routing control, resiliency, and observability to telecommunications network core  100 . Service proxy function  102  provides, generally, a service mesh solution to telecommunications network core  100 , thereby alleviating various computation burdens from the network functions and reducing the risk of network errors resulting from compliance with the service-based architecture. 
     In general, service proxy function  102  is a dedicated common service for handling communication between network functions. Service proxy function  102  can be implemented as a software layer that is separate and shared by other services deployed in a cloud computing environment. Service proxy function  102  offloads inter-service communication concerns from network functions and makes inter-service communication safe, fast, and reliable. 
     In some examples, service proxy function  102  provides one or more of the following advantages to services in telecommunications network core  100 :
         Enables uniform visibility and control of inter-service communication flows   Has capabilities such as circuit-breaking, latency-aware load-balancing, eventually-consistent service discovery, transaction retries, and transaction deadlines   Provides both point-wise resilience and service-wise resilience   Implements a control plane and a data plane       

     In some examples, NRF  108  and service proxy function  102  are combined or configured to communicate with one another to facilitate certain tasks such as load balancing. NRF  108  can store real-time information on, for example:
         Failed network functions or non-responsive network functions   Load conditions of each network function   Network function response times   Network function connection health       

     Storing such information at NRF  108  can lead to better network function selection decision making at NRF  108 . NRF  108  can also use such information to reduce initial service requests, e.g., by eliminating separate NRF queries. In some examples, combining NRF  108  and service proxy function  102  can enable dynamic re-routing of messages. 
     Service proxy function  102  can provide improved visibility of the overall health of telecommunications network core  100 . It is critical for operators to have visibility into the health of the network. Some functions partially fulfill this need, e.g., in a limited capacity by providing the health of a slice. Service proxy function  102  can alleviate the need for additional monitoring functions to identify the failed or degraded network functions. 
     Service proxy function  102  can provide improved load balancing across available network functions by virtue of having a complete view of all the messages arriving for a given type of network function. Service proxy function  102  can support technology such as round robin, weighted round robin, transaction latency, and other appropriate load balancing based on current load and network function availability. 
     By leveraging its position in the network, service proxy function  102  can provide better routing control and bring resiliency to telecommunications network core  100 . Service proxy function  102  relieves consumer network functions of remembering and interpreting complex routing rules associated with next hop selection and at the same time making re-routing decisions based on load conditions and health status of network functions. 
     In the absence of an alternate route, service proxy function  102  can quickly reject requests destined to a failed or degraded network function, thereby acting as a circuit breaker. This can prevent valuable resources at the consumer network functions from being tied up waiting for responses from providers. Service proxy function  102  can also attempt retries on behalf of the service consumer thereby relieving the service consumer of this burden and leaving it to focus on the application. 
     Service proxy function  102  can be useful to reduce connections to and from network functions. In the absence of service proxy function  102 , network function instances would typically setup connections with every other network function instance. By being deployed along side network function instances and acting as an outbound proxy for the network function instances, service proxy function  102  eliminates the need for network function instances to setup direct connections between each other. Connections can be optimized such that each network function instance maintains a set of redundant connections to service proxy function  102  and uses those connections for all out bound requests. 
       FIG. 2  is a block diagram illustrating an example implementation of the service proxy function  102 . Service proxy function  102  includes a service proxy controller  202  and a number of service proxy workers  204 ,  206 ,  208 , and  210 . Service proxy function  102  includes a control plane and a data plane as indicated in  FIG. 2 . Service proxy workers  204 ,  206 ,  208 , and  210  using the control plane, and service proxy workers  204 ,  206 ,  208 , and  210  communicate with each other to route telecommunications network core messages using the data plane. 
     Service proxy controller  202  can be implemented as a number of different instances of a service proxy controller function. In some examples, the functions of service proxy controller  202  are divided across a multitude of controller microservices. 
     Each service proxy worker is coupled to one or more network functions. Service proxy worker  204  is coupled to a first AMF instance  212 , a second AMF instance  214 , and a SMF instance  216 . Service proxy worker  206  is coupled to an AUSF  218  instance and a PCF instance  220 . Service proxy worker  208  is coupled to a first SMF instance  222  and a second SMF instance  224 . Service proxy worker  210  is coupled to a UDM instance  226 . 
     In some examples, service proxy function  102  is implemented such that no service proxy worker is coupled to any particular network function, and instead all service proxy workers collectively share a network identity and are used collectively as a default proxy by all network functions in the domain of the service proxy function instance. Cloud load balancer functions may be used to distribute network function consumer loads across the set of service proxy workers. 
     In operation, service proxy workers  204 ,  206 ,  208 , and  210  facilitate communications between the network functions in accordance with the service-based architecture of telecommunications network core  100 . Service proxy controller  202  is configured, by virtue of appropriate programming, for providing routing policies for telecommunications network core  100  to service proxy workers  204 ,  206 ,  208 , and  210 . 
     Each of service proxy workers  204 ,  206 ,  208 , and  210  is configured, by virtue of appropriate programming, for routing telecommunications network core messages between network functions by consuming the routing policies from service proxy controller  202  and enforcing the routing policies from service proxy controller  202 . Each of service proxy workers  204 ,  206 ,  208 , and  210  is also configured for providing network status reports to service proxy controller  202  based on the telecommunications network core messages. Typically, a network function comprises a collection of services, and the network status is reported for each network function and each network function service. Service proxy controller  202  can use the network status reports to generate and push new routing policies. 
     The network status reports can include, e.g., notifications that network functions have failed or degraded, or other appropriate metrics, key performance indicators (KPIs), and reports related to message processing. For example, the network status reports can include request and response counts for each network function instance, or message rates or average transaction latency for each network function instance. The network status reports can include success and error counts. With this information service proxy controller  202  is in a unique position to provide a view of the network health and to provide routing policies based on current information. 
     Service proxy controller  202  and service proxy workers  204 ,  206 ,  208 , and  210  are implemented using at least one processor and, in general, are implemented using a distributing computing system, e.g., a cloud computing system or other appropriate computing system. Service proxy function  102  can be deployed, e.g., as a default outbound proxy to network functions instances or as a side car in cloud native environments. Service proxy function  102  can provide one or more of the following benefits to telecommunications network core  100 : 
     Improved Load Balancing 
     Routing Control &amp; Resiliency—timeouts, retries &amp; alternate routing 
     Rate Limiting—Ingress and Egress 
     Traffic Prioritization 
     Network visibility reports—metrics, KPIs, logging 
     HTTP/2 and payload mediation 
     Circuit Breaking 
     Canary and A/B testing 
     Traffic Shadowing—Message copy 
     Fault injection/Chaos testing 
     In some examples, providing routing policies includes performing load balancing between at least a first subset of network functions based on the network status reports from service proxy workers  204 ,  206 ,  208 , and  210 . In some examples, routing telecommunications network core messages includes re-routing, at a service proxy worker, at least a first telecommunications network core message destined for a first network function based on a health status indicator for the first network function. In some examples, routing telecommunications network core messages includes re-trying, at a service proxy worker, a failed transmission of a first telecommunications network core message from a first network function to a second network function. 
     In some examples, service proxy workers  204 ,  206 ,  208 , and  210  are deployed alongside instances of the network functions in a distributed computing system, and routing telecommunications network core messages includes acting as a default outbound proxy for the instances of the network functions. Alternatively, the network functions can configure service proxy workers  204 ,  206 ,  208 , and  210  as an outbound proxy for inter-network function communications but not as the default proxy for all possible flows. In some examples, providing routing policies for telecommunications network core  100  includes providing a traffic prioritization policy, and enforcing the routing policies includes shedding lower priority network traffic in response to detecting an overload condition according to the traffic prioritization policy. 
     In some examples, providing network status reports includes providing one or more of: request and response counts for each network function; a message rate for each network function; and an average transmission latency for each network function. In some examples, service proxy controller  202  is configured for determining a network load for at least a first network function based on: capacity information published by the first network function during registration; load information published by the first network function; and a first network status report characterizing the network load of the first network function. 
       FIG. 3  is a signaling diagram illustrating an example message exchange  300  for load-aware discovery and request routing.  FIG. 3  shows an AMF instance  302 , a service proxy worker  304 , the NRF  108 , the service proxy controller  202 , another service proxy worker  306 , and a PCF instance  308 . 
     Load balancing across the available network functions in a service-based 5G core is primarily a function of NRF  108  and the logic implemented at the consumer network function. NRF  108  factors in the relative capacity and load information provided by the network functions during the network function discovery process.
         Relative capacity information published to NRF  108 : This is the information provided by the network function as part of network function registration or network function updates. The capacity being relative can create some confusion with respect to the interpretation of this value.   Load information published to NRF  108 : This is the information provided by the network function as part of network function updates. The load information provided is valuable if it is updated frequently and consumed quickly. However, if there is significant amount of time between the updates, the load information may not be all that useful.       

     Based on the above information, NRF  108  can return (in response to a discovery request) multiple results in an ordered list based on the most preferred to the least preferred. However, the order loses value if the consumer network function cache this information for a significant amount of time as load information can change quickly by the second. There is also no standard around what kind of the load balancing strategy a consumer NF should use when it sees multiple results and this will result in vendors implementing their own strategies their by making is hard to achieve load balancing of the providers. 
     Service proxy controller  202  can provide valuable information to NRF  108  that may otherwise not be available to NRF  108 . For example, service proxy controller  202  can report additional metrics and a more up to date status information of the network functions. The metrics reported by service proxy function  102  combined with view of the data at NRF  108  reported by the network functions provides a current load, i.e., a “true load” on the network function, which can lead to better network function selection (for discovery requests) as well as avoid providing stale results in response to discovery requests. 
     The “true load” factors in the following information for a given network function instance:
         Capacity information published by the network function instance during a register operation   Load as reported by the network function instance to NRF  108  via an update operation   Messages per second being handled by the network function instance or a message rate relative to the load/capacity   Latency distribution per request/service type   Number of outstanding transactions   Error-response distribution       

     Message exchange  300  begins with service proxy controller  202  sending messages  310  to push routing policies to service proxy workers  304  and  306 . Service proxy controller  202  also exchanges messages  312  with NRF  108  to continuously update NRF  108  of current load information of network function instances. 
     AMF  302  sends a message  314  to service proxy worker  304  to discover an network service. For example, message  314  can specify NRF  108  as a destination and specify the type of network service as PCF. Service proxy worker  304  routes the message  316  to NRF  108 . 
     NRF  108  selects an appropriate network function based on network loads determined in conjunction with service proxy controller  202 . For example, NRF  108  can select PCF  308  because it currently is experiencing the lowest load among a pool of available PCFs. NRF  108  responds by sending a message  318  to service proxy worker  304  identifying PCF  308 . Service proxy worker  304  routes the message  320  to AMF  302 . 
     AMF  302  can then send a message  322  requesting service from PCF  308  to service proxy worker  304 . Service proxy worker  304  routes the message  324  to service proxy worker  306 . Service proxy worker  306  routes the message  326  to PCF  308 . 
       FIG. 4  is a signaling diagram illustrating an example message exchange  400  for telecommunications-aware alternate routing.  FIG. 4  shows an SMF instance  402 , a service proxy worker  404 , the NRF  108 , the service proxy controller  202 , another service proxy worker  406 , a first PCF instance  308 , and a second PCF instance  410 . 
     Typically, the next hop selection is a function of NRF  108 . Sometimes, NRF  108  may provide complex routing rules that a consumer network function has to interpret and process. Similarly, a consumer network function has to implement logic associated with alternate routing in the case of an error message from the provider or retry the request with the same provider in the case of a timeout. 
     To support these aspects of a service-based architecture, consumer network functions would have to implement logic that is not associated with the application or service the network function is providing but purely to handle the various routing issues. Service proxy function  102  can alleviate these concerns by handling routing, alternate routing, and/or retries, for example, as illustrated by message exchange  400 . 
     Message exchange  400  begins with service proxy controller  202  sending messages  412  to push routing policies to service proxy workers  404  and  406 . SMF  402  has discovered PCF  408 ; the discovery of PCF  408  is not shown. Then, PCF  408  fails. 
     Service proxy worker  406  detects the failure. Service proxy worker  406  and service proxy controller  202  exchange messages  416  in response to the failure. Messages  416  inform service proxy controller  202  of the failure and provide service proxy worker  406  with alternates from service proxy controller  202 . 
     SMF  402  then sends a session creation request message  418  to create a session with PCF  408 . Service proxy worker  404  routes the message  426  to service proxy worker  406 . Service proxy worker  406  re-targets the creation request  422  to PCF  410 . 
     In some cases, SMF  402  then sends a session update request message  424  to service proxy worker  404 , addressed for PCF  408 . Service proxy worker  404  routes the message  426  to service proxy worker  406 . Service proxy worker  406  can, in response, reject the update request or route, e.g., by sending a service unavailable message  428  to service proxy worker  404 . Service proxy worker  404  then routes the message  430  to SMF  402 . Alternatively, service proxy worker  404  can route to another destination. 
       FIG. 5  is a signaling diagram illustrating an example message exchange  500  for routing optimization carried out with the NRF.  FIG. 5  shows an SMF instance  502 , a service proxy worker  504 , the NRF  108 , the service proxy controller  202 , another service proxy worker  506 , and a PCF instance  508 . The routing optimization can be performed, e.g., on a per-service basis. 
     Message exchange  500  begins with service proxy controller  202  exchanging messages  510  with NRF  108  for the purpose of routing optimization, e.g., without discovery. Service proxy controller  202  sends messages  512  to push routing policies to service proxy workers  404  and  406 . The routing policies can be specific to the network functions attached to the given service proxy workers. For example, the routing policies for service proxy worker  504  are specific to SMF  502 , and the routing policies for service proxy worker  506  are specific to PCF  508 . 
     SMF  502  sends a service request message  514  without PCF discovery. Service proxy worker  504  inspects the service request and routes the request  516  to service proxy worker  506 , addressed to PCF  508 . Service proxy worker  506  routes the message  518  to PCF  508 . 
       FIG. 6  is a signaling diagram illustrating an example message exchange  600  for overload/egress congestion control.  FIG. 6  shows an SMF instance  602 , a service proxy worker  604 , the NRF  108 , the service proxy controller  202 , another service proxy worker  606 , and a PCF instance  608 . 
     Message exchange  600  begins with service proxy controller  202  exchanging messages  610  with service proxy workers  604  and  606  to push routing policies. Then, PCF  608  becomes congested  612 . 
     Service proxy worker  606  determines that PCF  608  is congested by monitoring telecommunications network core messages exchanged with PCF  608 . Service proxy worker  606  exchanges messages  614  with service proxy controller  202  to inform the service proxy controller  202  that PCF  608  is congested and to send prioritization policies from service proxy controller  202  to service proxy worker  606 . 
     Message exchange  600  continues with multiple service requests  616  being sent to service proxy worker  606  that are addressed to PCF  608 . Service proxy worker  606  routes high priority requests  618  and  622  to PCF  608 . Service proxy worker  606  rejects low priority requests  622  and  624  when no alternate servers are available, e.g., with  503  status, or service proxy worker  606  can divert some requests to alternate PCFs when available. 
     Egress can be based on capacity published during network function registration. Ingress controls can be based on, e.g., sudden increases in traffic rate. 
       FIG. 7  is a signaling diagram illustrating an example message exchange  700  for handling a network function failure or degradation.  FIG. 7  shows an SMF instance  702 , a service proxy worker  704 , the NRF  108 , the service proxy controller  202 , another service proxy worker  706 , and a PCF instance  708 . 
     In the 5G architecture, for example, network functions are expected to be designed as cloud native microservices and when one consumer service synchronously invokes a service on the provider, there is a possibility that the provider service is unavailable or is exhibiting high latency. This may lead to resource exhaustion at the consumer, which would make the consumer service unable to handle other requests. The failure of one service can potentially cascade to other services within the network. Service proxy function  102  can potentially avoid such cascading failures by considering telecommunications network core messages, for example, as illustrated by message exchange  700 . 
     Message exchange  700  begins with service proxy controller  202  exchanging messages  710  with NRF  108  to push routing policies. SMF  702  discovers PCF  708 . Then, PCF  708  fails. 
     Service proxy worker  706  determines that PCF  708  has failed by monitoring telecommunications network core messages exchanged with PCF  708 . Service proxy worker  706  exchanges messages  714  with service proxy controller  202  to inform the service proxy controller  202  that PCF  608  is congested, and service proxy controller  202  responds with no alternates. 
     Then, SMF  702  sends a message  716  to service proxy worker  704  requesting a service from PCF  708 . Service proxy worker  704  routes the message  718  to service proxy worker  706 . Service proxy worker  706  “opens circuit.” Service proxy worker  706  responds to the request by sending a rejection message  720  to service proxy worker  704 , e.g., with  503  status. Service proxy worker  704  routes the message  722  to SMF  702 . If service proxy controller  202  determines alternate PCF instances, service proxy controller  202  can identify the alternate PCF instances to service proxy worker  706 , and service proxy worker  706  can divert requests addressed to PCF  708  to the alternates. 
       FIG. 8  is a signaling diagram illustrating an example message exchange  800  for implementing canary releases.  FIG. 8  shows an SMF instance  802 , a service proxy worker  804 , the NRF  108 , the service proxy controller  202 , another service proxy worker  806 , a first PCF instance  808 , and a second PCF instance  810 . 
     Service proxy function  102  can play an important role in the roll out of new network function releases. Service proxy function  102  can support mechanisms that allow for a new release to be exposed to a fraction of the users or friendly users. Once successful, service proxy function  102  can slowly open up additional users to the new release in a controlled manner, providing confidence to the operator during the roll out. Service proxy function  102  can also facilitate blue-green deployments where operators can quickly stage a new network function release and after thorough testing, can roll over traffic in an instant to the newer release. 
     Message exchange  800  begins with service proxy controller  202  exchanging messages  812  with service proxy workers  804  and  806  to push routing policies. Service proxy controller  202  also exchanges messages  814  with NRF  108  to apply any appropriate NRF updates. 
     Then, a network operator configures a canary policy at service proxy controller  202 . Policies can be, for example, static or based on supported versions. Service proxy controller  202  exchanges messages  816  with service proxy worker  806  to push the appropriate portions of the canary policy to service proxy worker  806 . 
     In this example, the canary policy specifies that service proxy worker  806  is to distribute traffic addressed to PCF  808  across PCF  808  and PCF  810  in, e.g., a 75-25 ratio or other appropriate ratio. Service proxy worker  806  then receives multiple service requests  818  addressed to PCF  808 . Service proxy worker  806  routes some of the service requests  820  to PCF  808  and the remaining service requests to PCF  810  in accordance with the canary policy. 
       FIG. 9  is a flow diagram illustrating an example method  900  for providing a service proxy function in a telecommunications network core using a service-based architecture. Method  900  can be performed, e.g., by the service proxy controller  202  and service proxy workers  204 ,  206 ,  208 , and  210  of  FIG. 2 . 
     Method  900  includes providing, from a service proxy controller implemented on at least one processor, routing policies for a telecommunications network core, e.g., the telecommunications network core  100  of  FIG. 1  ( 902 ). The telecommunications network core includes network functions communicating using a service-based architecture. For example, the telecommunications network core can be a 3GPP 5G telecommunications network core, and the network functions include at least an AMF, a PCF, a UDM function, a SMF, and a NSSF. In some examples, the network functions include one or more of: a unified data repository (UDR), an authentication server function (ASF), and a network function repository function (NRF). 
     Method  900  includes routing, at each service proxy worker of a number of service proxy workers implemented on the at least one processor, telecommunications network core messages between a respective subset of the network functions ( 904 ). Routing the telecommunications network messages includes consuming the routing policies from the service proxy controller and enforcing the routing policies from the service proxy controller while routing the telecommunications network core messages ( 906 ). 
     Method  900  includes providing, at each service proxy worker, network status reports to the service proxy controller based on the telecommunications network core messages ( 908 ). Method  900  can include receiving topology information, e.g., from the NRF and providing routing policies based on the topology information. 
     In some examples, providing routing policies includes performing load balancing between at least a first subset of network functions based on the network status reports from the service proxy workers. In some examples, routing telecommunications network core messages includes re-routing, at the service proxy worker, at least a first telecommunications network core message destined for a first network function based on a health status indicator for the first network function. In some examples, routing telecommunications network core messages includes re-trying, at the service proxy worker, a failed transmission of a first telecommunications network core message from a first network function to a second network function. 
     In some examples, the service proxy workers are deployed alongside instances of the network functions in a distributed computing system, and routing telecommunications network core messages includes acting as a default outbound proxy for the instances of the network functions. In some examples, providing routing policies for the telecommunications network core includes providing a traffic prioritization policy, and enforcing the routing policies includes shedding lower priority network traffic in response to detecting an overload condition according to the traffic prioritization policy. 
     In some examples, providing network status reports includes providing one or more of: request and response counts for each network function; a message rate for each network function; and an average transmission latency for each network function. In some examples, the service proxy controller is configured for determining a network load for at least a first network function based on: capacity information published by the first network function during registration; load information published by the first network function; and a first network status report characterizing the network load of the first network function. 
     Although specific examples and features have been described above, these examples and features are not intended to limit the scope of the present disclosure, even where only a single example is described with respect to a particular feature. Examples of features provided in the disclosure are intended to be illustrative rather than restrictive unless stated otherwise. The above description is intended to cover such alternatives, modifications, and equivalents as would be apparent to a person skilled in the art having the benefit of this disclosure. 
     The scope of the present disclosure includes any feature or combination of features disclosed in this specification (either explicitly or implicitly), or any generalization of features disclosed, whether or not such features or generalizations mitigate any or all of the problems described in this specification. Accordingly, new claims may be formulated during prosecution of this application (or an application claiming priority to this application) to any such combination of features. In particular, with reference to the appended claims, features from dependent claims may be combined with those of the independent claims and features from respective independent claims may be combined in any appropriate manner and not merely in the specific combinations enumerated in the appended claims.