The data plane configuration file is located at dataplane/configs/dataplane/config.yaml. It controls every aspect of the data plane process: node identity, control plane connection, logging, access logging, runtime behavior, performance tuning, protection limits, TLS, and feature flags.
Parameter Type Default Description node_idstring dp-localUnique identifier for this data plane instance clusterstring defaultLogical cluster name this instance belongs to
The node_id must be unique across all data plane instances connected to the same control plane. In Kubernetes, the Helm chart sets this to the pod name automatically. The cluster field groups data planes into logical clusters for multi-cluster deployments.
Parameter Type Default Description control_plane_addrstring http://127.0.0.1:18080Address of the control plane gRPC server admin_addrstring 127.0.0.1:19080Address for the data plane’s own admin HTTP server
The control_plane_addr is the gRPC endpoint where the data plane connects to receive configuration snapshots. Use https:// when TLS is enabled on the control plane’s gRPC server.
The admin_addr is the data plane’s own admin HTTP server, used by the control plane for health checks and aggregation.
The data plane uses Rust’s tracing framework with fine-grained per-module control:
Parameter Type Default Description log.levelstring info,nantian_core::connectors=offTracing filter directives log.formatstring jsonOutput format: json or text log.add_sourcebool falseInclude source file and line number log.include_targetbool falseInclude the tracing target (Rust module path) log.include_thread_idsbool falseInclude thread IDs log.include_thread_namesbool falseInclude thread names log.non_blockingbool trueUse non-blocking log output log.non_blocking_buffered_linesint 65536Ring buffer capacity for non-blocking logging log.drop_when_fullbool trueDrop logs when the buffer is full
The level field accepts tracing filter syntax for per-module granularity: info,hyper=warn,tower=debug.
Parameter Type Default Description log.open_telemetry.enabledbool falseExport logs via OpenTelemetry log.open_telemetry.endpointstring ""OTLP collector endpoint log.open_telemetry.protocolstring grpcOTLP protocol: grpc or http log.open_telemetry.timeoutMsint 3000Export timeout in milliseconds log.open_telemetry.insecurebool falseUse insecure connection to the collector log.open_telemetry.sampleRatiofloat 1.0Sampling ratio (0.0 to 1.0) log.open_telemetry.serviceNamestring nantian-dataplaneService name in exported data log.open_telemetry.serviceNamespacestring ""Service namespace in exported data
Parameter Type Default Description admin_auth.bearer_tokenstring ""Static bearer token for admin API authentication admin_auth.bearer_token_filestring ""Path to a file containing the bearer token
Access logs record every request processed by the data plane:
Parameter Type Default Description access_log.enabledbool falseEnable access logging access_log.pathstring stdoutOutput path (stdout, stderr, or file path) access_log.formatstring (see below) Log format string with placeholders access_log.modestring jsonOutput mode: json or text access_log.sample_ratefloat 0.01Sampling rate (0.0 to 1.0) access_log.routeAnnotationPrefixstring gateway.nantian.dev/access-log-Annotation prefix for per-route log configuration
Available format placeholders: %TIMESTAMP%, %EVENT%, %PROTOCOL%, %LISTENER%, %CLIENT_IP%, %HOST%, %METHOD%, %PATH%, %REQUEST_ID%, %ROUTE_NAMESPACE%, %ROUTE_NAME%, %BACKEND%, %STATUS%, %LATENCY_MS%, %BYTES_RECEIVED%, %BYTES_SENT%, %SNAPSHOT_VERSION%, %RETRY_ATTEMPTS%, %RESPONSE_FLAGS%.
The %RESPONSE_FLAGS% placeholder expands to a comma-separated list of flags indicating
why a request was handled the way it was. An empty value or none means the request completed
normally.
HTTP flags:
Flag HTTP Status Description none— Request completed normally with no errors NR500 No route matched the request UH503 No healthy backend available CB503 Circuit breaker is open for the upstream IB500 BackendRefs configuration is invalid UF500 Route references an unsupported/unknown filter UT504 Upstream connection or response timed out DC499 Client closed the connection before response IT408 Downstream idle timeout before request completed UC502 Upstream connection closed unexpectedly OL503 Global overload protection rejected the request RL429 Global rate limiter rejected the request RH431 Request headers exceeded maxRequestHeaderBytes RB413 Request body exceeded maxRequestBodyBytes MA— Connection closed due to httpMaxConnectionAgeMs
TCP/TLS stream flags:
Flag Description NEGeneric network-level error UEUpstream connection error DEDownstream connection error MCConnection closed due to max connections
Core runtime settings for the data plane proxy:
Parameter Type Default Description runtime.http_listen_addrstring 0.0.0.0:80Address for the HTTP listener runtime.enable_ipv6bool trueEnable IPv6 support runtime.enable_http3bool falseEnable HTTP/3 (QUIC) support runtime.tls_min_versionstring 1.2Minimum TLS version accepted runtime.tls_max_versionstring 1.3Maximum TLS version offered runtime.tlsAssetDirstring ""Directory for TLS certificate assets
Performance tuning parameters for the data plane:
Parameter Type Default Description runtime_tuning.httpReloadRetryIntervalMsint 1000Retry interval for HTTP listener reload (ms) runtime_tuning.streamReloadRetryIntervalMsint 1000Retry interval for stream listener reload (ms) runtime_tuning.downstreamReadTimeoutMsint 60000Timeout for reading from downstream clients (ms) runtime_tuning.httpMaxConnectionAgeMsint 0Maximum HTTP connection age (0 = unlimited) runtime_tuning.httpKeepaliveRequestLimitint 0Maximum requests per keepalive connection (0 = unlimited) runtime_tuning.upstream_connection_timeout_msint 5000Timeout for establishing upstream connections (ms) runtime_tuning.upstream_read_timeout_msint 30000Timeout for reading from upstream services (ms) runtime_tuning.upstream_idle_timeout_msint 60000Idle timeout for upstream connections (ms)
Parameter Type Default Description runtime_tuning.http_capacity.workerThreadsint 0Worker thread count (0 = CPU count) runtime_tuning.http_capacity.acceptConcurrencyint 16Concurrent TCP accept operations runtime_tuning.http_capacity.upstreamKeepalivePoolSizeint 32768Maximum idle connections in the upstream pool runtime_tuning.http_capacity.reusePortbool nullEnable SO_REUSEPORT (null = auto-detect)
Parameter Type Default Description runtime_tuning.requestMirrorMaxConcurrencyint 1024Maximum concurrent mirrored requests
Parameter Type Default Description runtime_tuning.udpResponseIdleTimeoutMsint 500Idle timeout for UDP responses (ms)
Parameter Type Default Description runtime_tuning.tcpProxyBufferBytesint 16384Buffer size for TCP proxy connections runtime_tuning.tcpSessionIdleTimeoutMsint 0TCP session idle timeout (0 = unlimited) runtime_tuning.tcpMaxConnectionAgeMsint 0Maximum TCP connection age (0 = unlimited)
Parameter Type Default Description runtime_tuning.retryBudgetEnabledbool trueEnable retry budget for circuit breaking runtime_tuning.retryBudgetRatioPercentint 20Ratio of retries to total requests (%) runtime_tuning.retryBudgetBurstint 16Maximum burst of retries allowed
Parameter Type Default Description runtime_tuning.streamUpstreamPoolSizeint 128Maximum idle stream connections in the upstream pool runtime_tuning.streamUpstreamPoolIdleTimeoutMsint 30000Idle timeout for stream upstream connections (ms)
Parameter Type Default Description runtime_tuning.work_stealingbool trueEnable Tokio work-stealing across worker threads
Parameter Type Default Description runtime_tuning.http_cache.enabledbool falseEnable HTTP response caching runtime_tuning.http_cache.maxSizeMbint 256Maximum cache size in megabytes runtime_tuning.http_cache.defaultTtlSecondsint 60Default cache TTL in seconds
Parameter Type Default Description runtime_tuning.graceful_drain_period_msint 0Grace period for draining connections on shutdown (ms)
Parameter Type Default Description runtime_tuning.activeHealthCheckEnabledbool falseEnable active health checking of backends runtime_tuning.activeHealthCheckIntervalMsint 5000Interval between health checks (ms) runtime_tuning.activeHealthCheckTimeoutMsint 1000Timeout for health check requests (ms) runtime_tuning.activeHealthCheckUnhealthyThresholdint 2Consecutive failures before marking unhealthy
Parameter Type Default Description runtime_tuning.downstreamTcpKeepalive.enabledbool falseEnable TCP keepalive for downstream connections runtime_tuning.downstreamTcpKeepalive.idleMsint 60000Idle time before sending keepalive probes (ms) runtime_tuning.downstreamTcpKeepalive.intervalMsint 15000Interval between keepalive probes (ms) runtime_tuning.downstreamTcpKeepalive.probeCountint 4Number of probes before declaring dead runtime_tuning.downstreamTcpKeepalive.userTimeoutMsint 0User timeout for keepalive (0 = OS default)
Parameter Type Default Description runtime_tuning.upstream_tcp_keepalive.enabledbool trueEnable TCP keepalive for upstream connections runtime_tuning.upstream_tcp_keepalive.idleMsint 60000Idle time before sending keepalive probes (ms) runtime_tuning.upstream_tcp_keepalive.intervalMsint 15000Interval between keepalive probes (ms) runtime_tuning.upstream_tcp_keepalive.probeCountint 4Number of probes before declaring dead runtime_tuning.upstream_tcp_keepalive.userTimeoutMsint 0User timeout for keepalive (0 = OS default)
Parameter Type Default Description runtime_tuning.downstream_tcp_fastopenbool nullEnable TCP Fast Open for downstream (null = auto-detect) runtime_tuning.downstream_dscpint nullDSCP marking for downstream connections (null = disabled) runtime_tuning.upstream_tcp_recv_bufint 0Upstream TCP receive buffer size in bytes (0 = OS default) runtime_tuning.upstream_tcp_fast_openbool trueEnable TCP Fast Open for upstream connections runtime_tuning.upstream_dscpint nullDSCP marking for upstream connections (null = disabled)
TCP Fast Open reduces connection latency by allowing data to be sent during the initial TCP handshake. DSCP (Differentiated Services Code Point) marking enables QoS prioritization at the network level.
Protection limits to prevent overload and resource exhaustion:
Parameter Type Default Description runtime_protection.httpGlobalInflightLimitint 16384Maximum concurrent in-flight HTTP requests (0 = unlimited) runtime_protection.httpGlobalRateLimitRequestsPerSecondint 10000Global rate limit (requests/second, 0 = unlimited) runtime_protection.httpGlobalRateLimitBurstint 20000Burst allowance for global rate limit
Parameter Type Default Description runtime_protection.httpListenerInflightLimitint 8192Maximum concurrent requests per listener (0 = unlimited) runtime_protection.httpListenerRateLimitRequestsPerSecondint 5000Per-listener rate limit (0 = unlimited) runtime_protection.httpListenerRateLimitBurstint 10000Burst allowance for listener rate limit
Parameter Type Default Description runtime_protection.httpRouteInflightLimitint 4096Maximum concurrent requests per route (0 = unlimited) runtime_protection.httpRouteRateLimitRequestsPerSecondint 2000Per-route rate limit (0 = unlimited) runtime_protection.httpRouteRateLimitBurstint 4000Burst allowance for route rate limit
Parameter Type Default Description runtime_protection.httpBackendCircuitBreakerMaxRequestsint 4096Maximum concurrent requests per backend (0 = unlimited)
Parameter Type Default Description runtime_protection.httpMaxRequestBodyBytesint 10485760Maximum request body size in bytes (0 = unlimited) runtime_protection.httpMaxRequestHeaderBytesint 65536Maximum request header size in bytes (0 = unlimited)
Parameter Type Default Description runtime_protection.tcpGlobalConnectionLimitint 32768Maximum concurrent TCP connections (0 = unlimited) runtime_protection.tcpListenerConnectionLimitint 8192Maximum TCP connections per listener (0 = unlimited) runtime_protection.udpGlobalDatagramLimitint 100000Maximum concurrent UDP datagrams (0 = unlimited) runtime_protection.udpListenerDatagramLimitint 50000Maximum UDP datagrams per listener (0 = unlimited)
Parameter Type Default Description session_persistence.secret_keystring ""Secret key for session cookie signing session_persistence.secret_key_filestring ""Path to file containing the secret key
TLS configuration for the xDS connection to the control plane:
Parameter Type Default Description xds_tls.enabledbool falseEnable TLS for the xDS connection xds_tls.ca_pathstring ""Path to the CA certificate for verifying the control plane xds_tls.cert_pathstring ""Path to the client certificate (for mTLS) xds_tls.key_pathstring ""Path to the client private key (for mTLS) xds_tls.domain_namestring ""Expected server name for certificate validation
Parameter Type Default Description xdsTransport.connect_timeout_msint 5000Timeout for establishing the xDS connection (ms) xdsTransport.keepalive_interval_msint 10000Interval for xDS keepalive pings (ms) xdsTransport.keepaliveTimeoutMsint 5000Timeout for xDS keepalive ping responses (ms) xdsTransport.initialReconnectBackoffMsint 2000Initial backoff for xDS reconnection (ms) xdsTransport.maxReconnectBackoffMsint 30000Maximum backoff for xDS reconnection (ms) xdsTransport.applyTimeoutMsint 3000Timeout for applying a received configuration snapshot (ms) xdsTransport.applyPollIntervalMsint 100Polling interval when waiting for snapshot application (ms) xdsTransport.staleStreamTimeoutMsint 30000Time before considering a stale xDS stream as failed (ms) xdsTransport.snapshotFreshnessTimeoutMsint 90000Time before considering the current snapshot as stale (ms)
Parameter Type Default Description experimental.enableExperimentalGatewaybool falseEnable experimental Gateway API features experimental.enableAiGatewaybool falseEnable the built-in AI gateway module
The following is a complete data plane configuration with all available options:
control_plane_addr : " http://127.0.0.1:18080 "
admin_addr : " 127.0.0.1:19080 "
level : " info,nantian_core::connectors=off "
include_thread_ids : false
include_thread_names : false
non_blocking_buffered_lines : 65536
serviceName : " nantian-dataplane "
format : " %TIMESTAMP% %EVENT% %PROTOCOL% %LISTENER% %CLIENT_IP% %HOST% %METHOD% %PATH% %REQUEST_ID% %ROUTE_NAMESPACE% %ROUTE_NAME% %BACKEND% %STATUS% %LATENCY_MS% %BYTES_RECEIVED% %BYTES_SENT% %SNAPSHOT_VERSION% %RETRY_ATTEMPTS% %RESPONSE_FLAGS% "
routeAnnotationPrefix : " gateway.nantian.dev/access-log- "
http_listen_addr : " 0.0.0.0:80 "
httpReloadRetryIntervalMs : 1000
streamReloadRetryIntervalMs : 1000
downstreamReadTimeoutMs : 60000
httpMaxConnectionAgeMs : 0
httpKeepaliveRequestLimit : 0
upstream_connection_timeout_ms : 5000
upstream_read_timeout_ms : 30000
upstream_idle_timeout_ms : 60000
upstreamKeepalivePoolSize : 32768
requestMirrorMaxConcurrency : 1024
udpResponseIdleTimeoutMs : 500
tcpProxyBufferBytes : 16384
tcpSessionIdleTimeoutMs : 0
retryBudgetRatioPercent : 20
streamUpstreamPoolSize : 128
streamUpstreamPoolIdleTimeoutMs : 30000
downstream_tcp_fastopen : null
upstream_tcp_fast_open : true
graceful_drain_period_ms : 0
activeHealthCheckEnabled : false
activeHealthCheckIntervalMs : 5000
activeHealthCheckTimeoutMs : 1000
activeHealthCheckUnhealthyThreshold : 2
httpGlobalInflightLimit : 16384
httpListenerInflightLimit : 8192
httpRouteInflightLimit : 4096
httpBackendCircuitBreakerMaxRequests : 4096
httpGlobalRateLimitRequestsPerSecond : 10000
httpGlobalRateLimitBurst : 20000
httpListenerRateLimitRequestsPerSecond : 5000
httpListenerRateLimitBurst : 10000
httpRouteRateLimitRequestsPerSecond : 2000
httpRouteRateLimitBurst : 4000
httpMaxRequestBodyBytes : 10485760
httpMaxRequestHeaderBytes : 65536
tcpGlobalConnectionLimit : 32768
tcpListenerConnectionLimit : 8192
udpGlobalDatagramLimit : 100000
udpListenerDatagramLimit : 50000
keepalive_interval_ms : 10000
initialReconnectBackoffMs : 2000
maxReconnectBackoffMs : 30000
staleStreamTimeoutMs : 30000
snapshotFreshnessTimeoutMs : 90000
enableExperimentalGateway : false