HTTP/2 Client Agent(3.0)
The HTTP/2 Client agent allows you to configure an HTTP client in a real-time workflow. The agent sends requests by converting the UDRs to HTTP 2 requests, and then receives the responses which are then routed into the workflow.
The agent can be used for both HTTP/1 and HTTP/2.
To be able to use the HTTP/2 Client agent, this processing agent must be preceded by an Analysis agent in the workflow that you create. The APL code must include a RequestCycle object as shown in the example APL code below. In the APL code, you must ensure that
req.secure
is set to true
and that req.httpVersion
is set to http2
.
consume { http.RequestCycle req = udrCreate(http.RequestCycle); req.host = "myserver"; req.port = "8181"; req.secure = true; req.httpVersion = "http2"; req.path = "/nf-instance"; req.method = "GET"; debug("sending request"+req); udrRoute(req); }
Prerequisites
The reader of this information should be familiar with:
- 5G architecture and terminology
Hypertext Transfer Protocol version 2 (RFC 7540: https://tools.ietf.org/html/rfc7540)
Hypertext Transfer Protocol version 1.1 (RFC 2616: http://www.ietf.org/rfc/rfc2616.txt)
- The Transport Layer Security (TLS) Protocol version 1.3 (RFC 8446: https://tools.ietf.org/html/rfc8446)
- mTLS (https://tools.ietf.org/html/rfc8446#section-4.4.2.4)
Configuration
The agent consists of three tabs: Client, Extra and Authentication.
Client Tab
The Client tab contains the following settings:
Setting | Description |
---|---|
Use SSL | If you want to use SSL, select this check box. |
Security Profile | If you have selected to use SSL, select which Security (3.0) you want the agent to use. |
Min Connections Per Destination | Specify the minimum number of connections towards an endpoint (identified by host:port) that the agent will try to maintain. A value of 0 indicates "no minimum". This is not a hard limit as there could be more connections created during the spike in traffic. For more details see Algorithm for Minimum Connections. |
Min Connections Per Destination Check Interval(s) | Specify how often you wish to check the established connections. A value of 0 indicates "no check will be performed". After each interval, the agent will try to create additional connections to achieve number set in the Min Connections Per Destination parameter. No connections will be shut down if the current number of connections is greater than the number set in Min Connections Per Destination. For more details, see Algorithm for Minimum Connections. |
Default connection concurrent streams | The initial value of concurrent streams that the client would like to handle per connection. The default value is 1000. Note! This value may be overridden by any value sent by server. |
Request Timeout (sec) | Enter the timeout period in seconds for the request to the HTTP/2 client to wait for a response before timing out. |
Max Requests Queued Per Destination | The size of the message queue in the Jetty server. Default is 20000. Note! Use this property to manage the memory usage. It is recommended that the EC or ECD running the workflow have xmx that is at the minimum (message size X queue size), otherwise there is a risk for out of memory errors. |
Retry Interval For full Queues (ms) | A millisecond value to indicate the time it will take for the request to try again when the queue is full. |
Max Retries For Full Queue | When the Route Error UDR option is checked, this field will be enabled. This field will indicate how many times the request will attempt to retry before routing it to Error UDR. |
Route Error UDR | If this check box is ticked, the request will attempt to be received by the agent until it reached the maximum amount of retries. Once the threshold is reached, the request will be stored in an Error UDR and sent as an output from the HTTP/2 client agent. If the check box is not ticked the request will attempt the retries for an indefinite amount of time, until the workflow is terminated. |
Server Monitor | Check this box to monitor the connection status of all servers that the agent has sent requests to. The monitoring is done by sending regular ping messages to the servers. If the servers are not responding, or there are other communication errors, they will be indicated as Unavailable. A list of the Available and Unavailable servers are available in two MIM values: |
Ping Interval (s) | Define the ping message interval for the Server Monitor. The time unit is seconds and 10 seconds is default. |
OpenAPI/5G
The OpenAPI/5G tab contains the following settings:
Setting | Description |
---|---|
Use OpenAPI Profile | If you want the agent to use an OpenAPI profile, select this check box. |
OpenAPI Profile | If you have selected Use OpenAPI Profile, select which OpenAPI profile you want the agent to use. |
Enable Validation | If you want to validate the OpenAPI profile, select this check box. Warning! Turning this option ON will have a very significant performance impact on the overall performance of the flow. When validation is enabled, each payload will be validated against the Open API schema, an operation that can be very resource-intensive. We recommend to only enable this setting during development and testing and to disable it in a stable production environment. Note! Strict validation is applied against the OpenAPI specification due to the upgrade of third party libraries. For Example, if the response contains the body but the schema doesn't expect the response to contain body then it will causing validation failure. Refer to this link for further information https://bitbucket.org/atlassian/swagger-request-validator/issues/246/validator-does-not-check-a-response-body |
Authentication Tab
The Authentication tab contains the following settings. The settings will change depending on the Authentication Type selected. There are three types to choose from and each comes with its own configuration settings:
Setting | Description |
---|---|
Authentication Type | You can select Basic, OAuth 2.0, Nnrf Access Token or None. If you want to connect to a 5G network, select Nnrf Access Token. If you select None, authentication is not enabled. |
Basic Authentication Type
Setting | Description |
---|---|
Username | Enter a username for an account on the remote server. The username must not include colon (:) characters. |
Password | Enter the password associated with the username. |
OAuth 2.0 Authentication Type
Setting | Description |
---|---|
Grant Type | Select the grant type:
|
Client ID | Enter the unique client identifier issued by the authorization server. |
Client Secret | Enter the client secret. |
Username | Enter the resource owner username, this can be the end-user granting access to a protected resource. This field is required when you have selected Resource Owner Password Credentials from the drop-down list Grant Type. |
Password | Enter the password associated with the username. This field is required when you have selected Resource Owner Password Credentials from the drop-down list Grant Type. |
Additional Parameters | Some authentication servers may require additional parameters in the body of the token requests. To add a parameter, click the Add button and then enter the name of the parameter in the Key field and the value of the parameter in the Value field. Do not use escape characters in the value field, these will be added automatically by the HTTP2 Client agent. For instance, "https://example.com/" will be sent as "https%3A%2F%2example.com%2F". |
Nnrf Access Token Authentication Type
Setting | Description |
---|---|
Authorization Server (NRF) | Enter the full URL path for the authorization server. If you enter an https URL, you must select the check box Use SSL. |
Use SSL | If you want to use encryption, select this check box. |
Security Profile | If you have selected to use SSL, select which Security (3.0) you want the agent to use. |
NF Instance ID | Enter the NF instance ID of the server that you want to send requests from. |
Scope | Enter a string for the service(s) that you want to use, separated by whitespaces. |
NF Type | The NF type available for selection is CHF (charging function). If you select this setting, you must also select Target NF Type. You cannot enter a Target NF Instance ID. |
Target NF Instance ID | Enter the NF instance ID of the server for which the access token is requested. If you enter a value, you cannot select NF Type or Target NF Type, and you cannot add Target S-NSSAI list or NSI list. |
Target NF Type | The NF type available for selection is CHF (charging function). If you select this setting, you must also select NF Type. You cannot enter a Target NF Instance ID. |
MCC | Enter the mobile country code (MCC) for the PLMN (public land mobile network) ID or target PLMN ID. If you enter values for the PLMN ID, you must enter values for the target PLMN ID. |
MNC | Enter the mobile network code (MNC) for the PLMN (public land mobile network) ID or target PLMN ID. If you enter values for the PLMN ID, you must enter values for the target PLMN ID. |
Customize Format | If you want to customize formats for the PLMN ID, Target PLMN ID, Target S-NSSAI list, or Target NSI list, you can enter your format in this field. The default formats are in accordance with RFC 29571-G11. If you enter customized formats, the configuration fields for the relevant section are disabled. |
Target S-NSSAI list | Enter target S-NSSAI(s) (Single Network Slice Selection Assistance Information) of the service producer. If you enter a Target NF Instance ID, you cannot use this list. |
Target NSI list | Enter target NSI(s) (Network Slice Instances). If you have entered a Target NF Instance ID, you cannot use this list. |
Algorithm for Minimum Connections
In case there is a need to run more than one connection towards an endpoint (identified by host:port) irrespective of current traffic, there is an option to configure that using Min Connections Per Destination and Min Connections Per Destination Check Interval(s) parameters.
At the beginning, the agent will try to establish the number of connections set in Min Connections Per Destination and then later try to keep number of open connections for each endpoint. As some connections can be shut down due to any reason, the agent will try to check its status at regular intervals. These check intervals are configured in Min Connections Per Destination Check Interval(s) parameter.
Input/Output Data
Input Data
Output Data
MIM
For information about the MIM and a list of the general MIM parameters, see Administration and Management(3.0).
Publishes
MIM Value | Description |
---|---|
Available Servers | This MIM parameter contains a list of all available HTTP2 servers. |
Unreachable Servers | This MIM parameter contains a list of all unavailable HTTP2 servers. |