The data plane configuration file is located at gateway/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 nodeIdstring dp-localUnique identifier for this data plane instance clusterstring defaultLogical cluster name this instance belongs to
The nodeId 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 controlPlaneAddrstring http://127.0.0.1:18080Address of the control plane gRPC server adminAddrstring 127.0.0.1:19080Address for the data plane’s own admin HTTP server
The controlPlaneAddr 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 adminAddr 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.addSourcebool falseInclude source file and line number log.includeTargetbool falseInclude the tracing target (Rust module path) log.includeThreadIdsbool falseInclude thread IDs log.includeThreadNamesbool falseInclude thread names log.nonBlockingbool trueUse non-blocking log output log.nonBlockingBufferedLinesint 65536Ring buffer capacity for non-blocking logging log.dropWhenFullbool 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.openTelemetry.enabledbool falseExport logs via OpenTelemetry log.openTelemetry.endpointstring ""OTLP collector endpoint log.openTelemetry.protocolstring grpcOTLP protocol: grpc or http log.openTelemetry.timeoutMsint 3000Export timeout in milliseconds log.openTelemetry.insecurebool falseUse insecure connection to the collector log.openTelemetry.sampleRatiofloat 1.0Sampling ratio (0.0 to 1.0) log.openTelemetry.serviceNamestring nantian-dataplaneService name in exported data log.openTelemetry.serviceNamespacestring ""Service namespace in exported data
Parameter Type Default Description adminAuth.bearerTokenstring ""Static bearer token for admin API authentication adminAuth.bearerTokenFilestring ""Path to a file containing the bearer token
Access logs record every request processed by the data plane:
Parameter Type Default Description accessLog.enabledbool falseEnable access logging accessLog.pathstring stdoutOutput path (stdout, stderr, or file path) accessLog.formatstring (see below) Log format string with placeholders accessLog.modestring jsonOutput mode: json or text accessLog.sampleRatefloat 0.01Sampling rate (0.0 to 1.0) accessLog.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%.
Core runtime settings for the data plane proxy:
Parameter Type Default Description runtime.httpListenAddrstring 0.0.0.0:10080Address for the HTTP listener runtime.enableIpv6bool trueEnable IPv6 support runtime.enableHttp3bool falseEnable HTTP/3 (QUIC) support runtime.tlsMinVersionstring 1.2Minimum TLS version accepted runtime.tlsMaxVersionstring 1.3Maximum TLS version offered runtime.tlsAssetDirstring ""Directory for TLS certificate assets
Performance tuning parameters for the data plane:
Parameter Type Default Description runtimeTuning.httpReloadRetryIntervalMsint 1000Retry interval for HTTP listener reload (ms) runtimeTuning.streamReloadRetryIntervalMsint 1000Retry interval for stream listener reload (ms) runtimeTuning.downstreamReadTimeoutMsint 60000Timeout for reading from downstream clients (ms) runtimeTuning.httpMaxConnectionAgeMsint 0Maximum HTTP connection age (0 = unlimited) runtimeTuning.httpKeepaliveRequestLimitint 0Maximum requests per keepalive connection (0 = unlimited) runtimeTuning.upstreamConnectionTimeoutMsint 5000Timeout for establishing upstream connections (ms) runtimeTuning.upstreamReadTimeoutMsint 30000Timeout for reading from upstream services (ms) runtimeTuning.upstreamIdleTimeoutMsint 60000Idle timeout for upstream connections (ms)
Parameter Type Default Description runtimeTuning.httpCapacity.workerThreadsint 0Worker thread count (0 = CPU count) runtimeTuning.httpCapacity.acceptConcurrencyint 16Concurrent TCP accept operations runtimeTuning.httpCapacity.upstreamKeepalivePoolSizeint 32768Maximum idle connections in the upstream pool runtimeTuning.httpCapacity.reusePortbool nullEnable SO_REUSEPORT (null = auto-detect)
Parameter Type Default Description runtimeTuning.requestMirrorMaxConcurrencyint 1024Maximum concurrent mirrored requests
Parameter Type Default Description runtimeTuning.udpResponseIdleTimeoutMsint 500Idle timeout for UDP responses (ms)
Parameter Type Default Description runtimeTuning.tcpProxyBufferBytesint 16384Buffer size for TCP proxy connections runtimeTuning.tcpSessionIdleTimeoutMsint 0TCP session idle timeout (0 = unlimited) runtimeTuning.tcpMaxConnectionAgeMsint 0Maximum TCP connection age (0 = unlimited)
Parameter Type Default Description runtimeTuning.retryBudgetEnabledbool trueEnable retry budget for circuit breaking runtimeTuning.retryBudgetRatioPercentint 20Ratio of retries to total requests (%) runtimeTuning.retryBudgetBurstint 16Maximum burst of retries allowed
Parameter Type Default Description runtimeTuning.streamUpstreamPoolSizeint 128Maximum idle stream connections in the upstream pool runtimeTuning.streamUpstreamPoolIdleTimeoutMsint 30000Idle timeout for stream upstream connections (ms)
Parameter Type Default Description runtimeTuning.workStealingbool trueEnable Tokio work-stealing across worker threads
Parameter Type Default Description runtimeTuning.httpCache.enabledbool falseEnable HTTP response caching runtimeTuning.httpCache.maxSizeMbint 256Maximum cache size in megabytes runtimeTuning.httpCache.defaultTtlSecondsint 60Default cache TTL in seconds
Parameter Type Default Description runtimeTuning.gracefulDrainPeriodMsint 0Grace period for draining connections on shutdown (ms)
Parameter Type Default Description runtimeTuning.activeHealthCheckEnabledbool falseEnable active health checking of backends runtimeTuning.activeHealthCheckIntervalMsint 5000Interval between health checks (ms) runtimeTuning.activeHealthCheckTimeoutMsint 1000Timeout for health check requests (ms) runtimeTuning.activeHealthCheckUnhealthyThresholdint 2Consecutive failures before marking unhealthy
Parameter Type Default Description runtimeTuning.downstreamTcpKeepalive.enabledbool falseEnable TCP keepalive for downstream connections runtimeTuning.downstreamTcpKeepalive.idleMsint 60000Idle time before sending keepalive probes (ms) runtimeTuning.downstreamTcpKeepalive.intervalMsint 15000Interval between keepalive probes (ms) runtimeTuning.downstreamTcpKeepalive.probeCountint 4Number of probes before declaring dead runtimeTuning.downstreamTcpKeepalive.userTimeoutMsint 0User timeout for keepalive (0 = OS default)
Parameter Type Default Description runtimeTuning.upstreamTcpKeepalive.enabledbool trueEnable TCP keepalive for upstream connections runtimeTuning.upstreamTcpKeepalive.idleMsint 60000Idle time before sending keepalive probes (ms) runtimeTuning.upstreamTcpKeepalive.intervalMsint 15000Interval between keepalive probes (ms) runtimeTuning.upstreamTcpKeepalive.probeCountint 4Number of probes before declaring dead runtimeTuning.upstreamTcpKeepalive.userTimeoutMsint 0User timeout for keepalive (0 = OS default)
Parameter Type Default Description runtimeTuning.downstreamTcpFastopenbool nullEnable TCP Fast Open for downstream (null = auto-detect) runtimeTuning.downstreamDscpint nullDSCP marking for downstream connections (null = disabled) runtimeTuning.upstreamTcpRecvBufint 0Upstream TCP receive buffer size in bytes (0 = OS default) runtimeTuning.upstreamTcpFastOpenbool trueEnable TCP Fast Open for upstream connections runtimeTuning.upstreamDscpint 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 runtimeProtection.httpGlobalInflightLimitint 0Maximum concurrent in-flight HTTP requests (0 = unlimited) runtimeProtection.httpGlobalRateLimitRequestsPerSecondint 0Global rate limit (requests/second, 0 = unlimited) runtimeProtection.httpGlobalRateLimitBurstint 0Burst allowance for global rate limit
Parameter Type Default Description runtimeProtection.httpListenerInflightLimitint 0Maximum concurrent requests per listener (0 = unlimited) runtimeProtection.httpListenerRateLimitRequestsPerSecondint 0Per-listener rate limit (0 = unlimited) runtimeProtection.httpListenerRateLimitBurstint 0Burst allowance for listener rate limit
Parameter Type Default Description runtimeProtection.httpRouteInflightLimitint 0Maximum concurrent requests per route (0 = unlimited) runtimeProtection.httpRouteRateLimitRequestsPerSecondint 0Per-route rate limit (0 = unlimited) runtimeProtection.httpRouteRateLimitBurstint 0Burst allowance for route rate limit
Parameter Type Default Description runtimeProtection.httpBackendCircuitBreakerMaxRequestsint 0Maximum concurrent requests per backend (0 = unlimited)
Parameter Type Default Description runtimeProtection.httpMaxRequestBodyBytesint 0Maximum request body size in bytes (0 = unlimited) runtimeProtection.httpMaxRequestHeaderBytesint 0Maximum request header size in bytes (0 = unlimited)
Parameter Type Default Description runtimeProtection.tcpGlobalConnectionLimitint 0Maximum concurrent TCP connections (0 = unlimited) runtimeProtection.tcpListenerConnectionLimitint 0Maximum TCP connections per listener (0 = unlimited) runtimeProtection.udpGlobalDatagramLimitint 0Maximum concurrent UDP datagrams (0 = unlimited) runtimeProtection.udpListenerDatagramLimitint 0Maximum UDP datagrams per listener (0 = unlimited)
Parameter Type Default Description sessionPersistence.secretKeystring ""Secret key for session cookie signing sessionPersistence.secretKeyFilestring ""Path to file containing the secret key
TLS configuration for the xDS connection to the control plane:
Parameter Type Default Description xdsTls.enabledbool falseEnable TLS for the xDS connection xdsTls.caPathstring ""Path to the CA certificate for verifying the control plane xdsTls.certPathstring ""Path to the client certificate (for mTLS) xdsTls.keyPathstring ""Path to the client private key (for mTLS) xdsTls.domainNamestring ""Expected server name for certificate validation
Parameter Type Default Description xdsTransport.connectTimeoutMsint 5000Timeout for establishing the xDS connection (ms) xdsTransport.keepaliveIntervalMsint 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:
controlPlaneAddr : " http://127.0.0.1:18080 "
adminAddr : " 127.0.0.1:19080 "
level : " info,nantian_core::connectors=off "
includeThreadNames : false
nonBlockingBufferedLines : 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- "
httpListenAddr : " 0.0.0.0:10080 "
httpReloadRetryIntervalMs : 1000
streamReloadRetryIntervalMs : 1000
downstreamReadTimeoutMs : 60000
httpMaxConnectionAgeMs : 0
httpKeepaliveRequestLimit : 0
upstreamConnectionTimeoutMs : 5000
upstreamReadTimeoutMs : 30000
upstreamIdleTimeoutMs : 60000
upstreamKeepalivePoolSize : 32768
requestMirrorMaxConcurrency : 1024
udpResponseIdleTimeoutMs : 500
tcpProxyBufferBytes : 16384
tcpSessionIdleTimeoutMs : 0
retryBudgetRatioPercent : 20
streamUpstreamPoolSize : 128
streamUpstreamPoolIdleTimeoutMs : 30000
downstreamTcpFastopen : null
upstreamTcpFastOpen : true
activeHealthCheckEnabled : false
activeHealthCheckIntervalMs : 5000
activeHealthCheckTimeoutMs : 1000
activeHealthCheckUnhealthyThreshold : 2
httpGlobalInflightLimit : 0
httpListenerInflightLimit : 0
httpRouteInflightLimit : 0
httpBackendCircuitBreakerMaxRequests : 0
httpGlobalRateLimitRequestsPerSecond : 0
httpGlobalRateLimitBurst : 0
httpListenerRateLimitRequestsPerSecond : 0
httpListenerRateLimitBurst : 0
httpRouteRateLimitRequestsPerSecond : 0
httpRouteRateLimitBurst : 0
httpMaxRequestBodyBytes : 0
httpMaxRequestHeaderBytes : 0
tcpGlobalConnectionLimit : 0
tcpListenerConnectionLimit : 0
udpGlobalDatagramLimit : 0
udpListenerDatagramLimit : 0
keepaliveIntervalMs : 10000
initialReconnectBackoffMs : 2000
maxReconnectBackoffMs : 30000
staleStreamTimeoutMs : 30000
snapshotFreshnessTimeoutMs : 90000
enableExperimentalGateway : false