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