ネットワークレイテンシーの最適化
概要
レイテンシー=チェーンに沿った小さな遅延の合計。「ホップ」(Anycast/CDN)の削減、RTT (routes/QoS)の削減、ボルトの削減(DNS/TLS/TCP)、キューの短縮(AQM/ECN)、バイトの最小化(圧縮/キャッシュ)、および絶えずp95/p99を測定して下さい。測定なしの最適化は占いです。
遅延予算: 遅延の構成
TTFB (Time To First Byte)の分解を簡単にしましょう:
TTFB ≈ t_DNS + t_connect + t_TLS + t_queue + t_routing + t_app + t_first_byte
Ubi:
- t_DNS-名前の解像度。
- t_connect-L4設立(TCP/QUIC)。
- t_TLS-TLSハンドシェイク。
- t_queue/t_routing-キュー/トランジション(バッファリング、オーバーロード、NAT)。
- t_app-サーバーは最初のバイトまで処理します。
目標は、各項のSLOを設定し、定期的にチェックすることです。
SLO/メトリック
DNS p95:ローカル≤ 20-30ミリ秒、グローバル≤ 80-120ミリ秒。
TCPはp95: ≤ 80-120 msを地域的に、≤ 200-250 msを地域的に接続します。
TLSハンドシェイクp95: ≤ 80-120ミリ(OCSPステープリング、再開)。
TTFB p95(静的):≤ 120-150 ms地域的に。
TTFB p95 (API): ≤ 200-300 ms。
ジッターP 95 (UDP/RT): ≤ 15-30 mm;損失≤ 0。1–0.3%.
アラート:p95/p99上昇、'SYN retries'サージ、'resumption'秋、'ECN CE'または'パケット損失'上昇。
DNSクイックスタート
Anycast当局+再帰を閉じる(必要に応じてDoH/DoT)。
動的名前のための短いTTL (60-300 s);制御されている負のTTL。
アプリケーションの横にあるDNSキャッシュ。'prefetch'ホットレコード。
不要なCNAME→CNAME→A/AAAA移動を除外します。
TLS/HTTP: ハンドシェイクが少なく、セッションが高速化
TLS 1をオンにします。3のOCSPのステープリング、CAの短い鎖。
セッション再開(チケット/ID)-ALPN ('h2'、 'h3')。
HTTP/2:多重化、接続数の減少→p95より低い。
HTTP/3 (QUIC): 0-RTT (idempotentだけ)、よりよい損失/ジッタ抵抗。
Preconnect/Prewarm (edge/client):ホットドメインの接続を事前に開きます。
トランスポート: TCPとQUICとカーネルスタック
TCP
現代の混雑制御:BBR v2(または保守的ならCUBIC)。
急速な再送のためのラック/TLP;SACKを有効にします。
ECN+AQM (CoDel/FQ_CoDel):バッファブロックとジッタを低減します。
TCP Fast Open-状態が変化するリクエストを避けます。利益は物議を醸しています。
QUIC (HTTP/3)
TCP+TLS+HTTP/2に比べて「ヘッドロック」が少ない。
再発注/損失に対して抵抗力がある;実装を更新します(例:Envoy/HAProxy with H3)。
UDP/443とMTU/フラグメンテーションを監視します。
MTU/PMTUDと断片化
単一のエンド・ツー・エンドのMTU;トンネル(IPsec/WireGuard/VXLAN)については、オーバーヘッドを考慮してください。
PMTUDとICMP「必要な断片化」を有効にします。
QUICの場合-最大データグラムを監視し、周囲のICMPをカットしません。
ルーティングとパス物理
パブリックIP API/エッジフロントのAnycast。
Geo/Latency Routing (GSLB)+ヘルスチェック。
工場のECMPとBFD (Leaf-Spine)では、1秒以下の悪路を排除します。
ユーザー集中領域におけるaplinks/feasts (IX)の整列。
キューとQoS: バッファを短くする
クラス:リアルタイム(RT/VoIP)、インタラクティブ(API)、バルク(バックアップ/ETL)。
LLQ/WRR、一括でのAPI/支払いの優先順位付け。
エッジキュー上のECN (CEマーキング)+AQM (CoDel/FQ_CoDel)。
バックアップと大きなあざを「ピーク分」からカット/転送します。
NAT、プロキシ、ミドルボックス
NAT/フィルターカスケードを最小化します。
ステートフルミドルボックスは、パスの非対称性に重要です。5タプル、ピンニングスレッドのバランス。
長寿命接続(gRPC/WebSocket)のためのキープアライブサポートと合理的なアイドルタイムアウト。
キャッシュとデータ配置
CDN/origin-shield/tiered-cache: originへのトリップが少なくなります。
バージョン管理された資産(不変、1年)。
セミダイナミクスのための短いTTL+'stale-while-revalidate'。
地理配置:ホットデータはユーザー(read-replica/edge-KV)に近く、「真実の源」に書き込みます。
アプリケーションレベルの最適化
リクエストの数を減らします(プッシュbundling/HTTP/2が流行しなくなりました-プリフェッチ/プリコネクトの方が良いです)。
ペイロードの削減:圧縮(Brotli)、 Web画像フォーマット、バイナリプロトコル(gRPC)。
idempotence→セキュアレトレイとアグレッシブなタイムアウトをリクエストします。
非同期/ストリーミング(SSE/gRPCストリーミング)でTTFBを削減。
観測可能性: 何を測定するか
クライアント遠隔測定(RUM): DNS/connect/TLS/TTFB、 Geo/ASN、デバイス。
ネットワーク:RTT、損失、ジッタ、ECN CE/ECT (0/1)、インターフェイスキュー、エラー/オーバーフロー。
レトルトランスミット、アウトオブオーダー、cwnd/BBR状態、ハンドシェイク統計、再開。
L7: p50/p95/p99、エラー率、ペイロードサイズ、ルートヒストグラム/PoP。
リージョン/ASN/キャリアごとにメトリックをセグメント化-ホットスポットが非表示になります。
ミニプレイブック
1)速い監査p95
1.RUMからレイテンシーバジェット(DNS/TLS/connect/TTFB)を構築します。
2.PoP/ASNでネットワークメトリック(RTT/loss/ECN)にマップします。
3.'connect'と'TLS'が支配する場合は→preconnect/resumption/HTTP/3を有効にします。
4.'TTFB'が高い場合→キャッシュ/エッジ/レプリカとアプリケーションの最適化。
2)損失/ジッタースパイク
1.アップリンク/インターフェイス(ドロップ/キュー)をチェックします。
2.AQM (FQ_CoDel)を有効/微調整し、バルククラスを削減します。
3.BFD/ECMPパスをチェックし、フラップリンクを除外します。
4.顧客のために、一時的にリトレイを上げ、間の時間を減らします。
3)地域の劣化
1.GSLBを隣接するPoPに切り替えます。劣化したAnycast/32を撤回します。
2.TTLを減らし、'stale-while-revalidate'を有効にします。
3.ステータスをステータスページに送信し、RCAを開始します。
4) HTTP/3への移行
1. を開き、 'h3' 有効にします。
2.A/Bの実行:p95 TTFBとエラー率を比較します。
3.'udp loss '/active clients/cwnd oscillationsを観察します。
コンフィグベビーベッド
Nginx (HTTP/2、 OCSP、 TLS 1。3、 Brotli)
nginx server {
listen 443 ssl http2 reuseport;
ssl_protocols TLSv1. 2 TLSv1. 3;
ssl_stapling on; ssl_stapling_verify on;
add_header Strict-Transport-Security "max-age=31536000" always;
Compression brotli on; brotli_comp_level 5; gzip on;
Cache static location/static/{
add_header Cache-Control "public, max-age=31536000, immutable" always;
try_files $uri =404;
}
Proxy to API location/api/{
proxy_set_header Connection "";
proxy_http_version 1. 1;
proxy_read_timeout 5s;
proxy_connect_timeout 1s;
proxy_pass https://backend;
}
}
sysctl (Linuxネットワーク: ECN/SACK/RACKカーネルサブシステム-おおよそのパラメータ)
bash
SACK/RACK/TLP are typically included in modern cores; specify sysctl -w net for your distribution. ipv4. tcp_sack=1 sysctl -w net. ipv4. tcp_ecn=1 sysctl -w net. ipv4. tcp_fastopen=0 # carefully with TFO sysctl -w net. core. default_qdisc=fq_codel sysctl -w net. ipv4. tcp_congestion_control=bbr
QoS(シスコスタイル、コンセプト)
class-map match-any REALTIME match dscp ef class-map match-any INTERACTIVE match dscp af31 af21 class-map match-any BULK match dscp cs1 policy-map WAN-QOS class REALTIME priority percent 10 class INTERACTIVE bandwidth percent 50 class BULK bandwidth percent 20 random-detect ecn
プロセスと運用プラクティス
容量計画:ピーク時の容量マージン≥ 30%です。
変更制御:ルート/PoR/ゲートウェイのカナリア変更。
規則的なPMTUDテストおよびICMP制御。
パスのドキュメンテーション:所有者であるMTUが所有するNAT/proxy/AQM/QoSはどこにあります。
L7とネットワークのリトレース間のタイムアウト契約。
iGaming/fintech固有の
イベント時間(試合/トーナメント):CDN/PoPのウォームアップ、重要なドメインへの事前接続、再開プールの一時的な増加、ボットのための「灰色」ルート。
支払い手順:専用のQoSクラス、Anycastエンドポイント、短いTLSチェーン、厳格なバージョン/暗号;リトリートは馬鹿だ。
地域の制限/PSP:ジオルーティング+ASN/IPホワイトリスト;エグレスプールを修正しました。
モバイルネットワーク:ChaCha20-Poly1305の好み(顧客の弱いAES-NI)、積極的な圧縮とHTTP/3。
実装チェックリスト
- 遅延予算(DNS/TLS/connect/TTFB)およびリンクあたりのSLO。
- パブリックAPI/エッジ、 バックアップPoP用のAnycast/ジオルーティング。
- TLS 1。3、 OCSPのステープリング、再開 70%、含まれている 。
- BBR+FQ_CoDel、 ECN、 SACK;PMTUDは動作し、ICMPはブロックされません。
- チェーンに沿った単一のMTU、トンネルのオーバーヘッドを占めています。
- QoS:リアルタイム/インタラクティブ/バルク、過負荷インターフェイス上のAQMクラス。
- CDN/Tiered-cache/Origin-shield;バージョン管理された資産とSWR。
- RUM+Geo/ASNネットワークメトリック;p95/p99/ECN/lossesへのアラート。
- プレイブック:地域の劣化、損失の急増、交通移動。
よくあるエラー
ICMP/PMTUDブロック→断片化/再送信と高いp95。
AQM→バッファブロックとジッタのない「厚い」バッファ。
長いCAチェーンとないOCSPステープル→高価なTLS。
ステートフルフィルタ→リトレイ/タイムアウトのNATステージと非対称性。
過剰な'Vary'/非バージョン化アセット→低ヒット率CDN。
QoSセグメンテーション→APIはピーク時にバックアップと競合しません。
合計
遅延の最適化は、ネットワークエンジニアリング、適切な転送、およびDNS/TLS/キャッシュの「ボルト」節約の組み合わせです。Anycast/Geo-routingの実装、TLS 1。3+再開、HTTP/3、 BBR+FQ_CoDel/ECN、 MTUのネゴシエート、QoSとSLOの設定、p95/p99の測定、プレイブックの自動化。その後、ユーザーは、最も「燃焼」分であっても迅速な応答を受信します、プラットフォーム-予測可能性と安全性のマージン。