RFC 9113
HTTP/2
Standards Track Obsoletes: RFC 7540 June 2022
Abstract: HTTP/2 is the mandatory transport protocol for 5G Service-Based Interface (SBI) communications. It enables multiplexed streams, header compression, server push, and flow control over a single TCP connection. All NF-to-NF SBI communication uses HTTP/2 over TLS 1.3.
Canonical source: https://www.rfc-editor.org/rfc/rfc9113
| IETF Datatracker
1. Introduction
▶HTTP/2 replaces HTTP/1.1's text-based protocol with a binary framing layer, enabling multiple concurrent request-response exchanges over a single TCP connection. This dramatically reduces latency from head-of-line blocking and connection overhead.
3GPP mandates HTTP/2 for all SBI communication (TS 29.500 §5.2). Every NF service operation (Namf, Nsmf, Nausf, Nudm, etc.) uses HTTP/2 methods (GET, POST, PUT, PATCH, DELETE) with JSON payloads over TLS 1.3.
2. Frame Types
▶| Frame Type | ID | Description | SBI Relevance |
|---|---|---|---|
| DATA | 0x0 | Carries request/response body | JSON payloads for NF services |
| HEADERS | 0x1 | Carries HTTP headers (compressed) | Method, path, status, custom headers |
| PRIORITY | 0x2 | Stream priority (deprecated in RFC 9113) | Replaced by priority signals |
| RST_STREAM | 0x3 | Aborts a stream | Cancel pending NF requests |
| SETTINGS | 0x4 | Connection parameters | Max concurrent streams, window sizes |
| PUSH_PROMISE | 0x5 | Server push initiation | NOT used in SBI |
| PING | 0x6 | Connection liveness check | NF connection health monitoring |
| GOAWAY | 0x7 | Graceful connection shutdown | NF graceful restart/deregistration |
| WINDOW_UPDATE | 0x8 | Flow control | Per-stream and connection-level |
| CONTINUATION | 0x9 | Continuation of HEADERS | Large header blocks |
3. Multiplexing and Streams
▶HTTP/2 multiplexes multiple logical streams over a single TCP connection:
- Streams are identified by odd numbers (client-initiated) or even numbers (server-initiated)
- SETTINGS_MAX_CONCURRENT_STREAMS limits parallel requests per connection
- Flow control prevents fast producers from overwhelming slow consumers
- Stream prioritization can be used to prefer signaling over bulk data
NF Consumer NF Producer
| |
| Stream 1: POST /nsmf-pdusession/v1/... |
|==============================================>>|
| Stream 3: GET /nudm-sdm/v2/... |
|==============================================>>|
| Stream 5: PATCH /namf-comm/v1/... |
|==============================================>>|
| |
| Stream 1: 201 Created {PDU Session} |
|<<=============================================|
| Stream 5: 200 OK {AMF update} |
|<<=============================================|
| Stream 3: 200 OK {SDM data} |
|<<=============================================|
| |
| (All on single TCP + TLS connection) | 4. 5G SBI Connection Management
▶- Connection pooling: NFs maintain persistent HTTP/2 connections to peer NFs
- ALPN negotiation: 'h2' is negotiated during TLS handshake
- SETTINGS frame: MAX_CONCURRENT_STREAMS, INITIAL_WINDOW_SIZE tuned for NF workload
- GOAWAY for graceful shutdown: NF deregistering from NRF sends GOAWAY to peers
- Load balancing: SCP or L7 load balancer distributes across NF instances using HTTP/2 streams
5. Security Considerations
▶- HTTP/2 over TLS (h2) is mandatory for SBI — cleartext HTTP/2 (h2c) is NOT permitted
- HPACK compression is safe against CRIME — uses static/dynamic table, not DEFLATE
- Connection coalescing should be controlled — NFs must validate certificate SAN before coalescing
- Denial of service via stream exhaustion — enforce MAX_CONCURRENT_STREAMS limits