한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

Buku Putih Lag Game › L5 Perangkat jaringan data center

Batas koneksi dan port NAT gateway cloud Cloud NAT gateway connection / port limits

ID penyebab dc-nat-gateway · Penanggung jawab utama Infrastruktur jaringan (Tim Infrastruktur) · Turut terlibat Pengembangan server (Tim Pengembang Game)

Buka kartu interaktif dengan gambar dan simulasi →

Koneksi dari server di subnet privat ke luar (autentikasi platform, pembayaran, API eksternal) dikirim keluar oleh NAT gateway setelah alamat dan portnya diganti. Jika koneksi bersamaan ke tujuan yang sama melebihi batas port gateway, koneksi baru gagal.

Mengapa Server-server membuka banyak koneksi singkat ke alamat eksternal yang sama, seperti autentikasi platform atau pembayaran, atau membiarkan koneksi terbuka lama → Akibatnya NAT gateway tidak bisa lagi mengalokasikan port sumber untuk tujuan itu sehingga koneksi baru gagal → Di layar Di dalam game normal, tetapi hanya fitur yang memanggil layanan eksternal seperti login, pembayaran, dan pemberian hadiah yang gagal atau lambat (tidak bisa masuk / loading tanpa henti, aksi hilang / rollback)

Gejala
Tidak bisa masuk / loading tanpa henti, Aksi hilang / rollback
Faktor
Packet loss, Latensi
Siapa yang mengalami
Fitur tertentu saja, Seluruh server
Kapan
Tepat setelah login atau maintenance, Jam sibuk malam hari, Saat banyak pemain berkumpul
Penanggung jawab
Penanggung jawab utama Infrastruktur jaringan (Tim Infrastruktur) · Turut terlibat Pengembangan server (Tim Pengembang Game)
Tugas Tim Pengembang Game
Pakai ulang koneksi ke API eksternal (HTTP keep-alive, connection pool) dan jangan membuka koneksi baru untuk setiap request, kirim keepalive untuk koneksi idle di pool dengan interval lebih pendek dari idle timeout NAT (AWS 350 detik) atau tutup lebih dulu, jika gagal coba lagi dengan interval yang makin panjang dan disebar secara acak, catat tingkat kegagalan dan latensi per panggilan eksternal.
Tugas Tim Infrastruktur
Tambah alamat IP ke NAT gateway (NAT gateway publik AWS secara default hanya bisa memasang hingga 2 Elastic IP, jadi untuk lebih dari itu ajukan kenaikan kuota), pisahkan gateway per availability zone dan subnet, pasang alert untuk metrik kegagalan alokasi port (AWS ErrorPortAllocation, Failed pada Azure SNAT Connection Count, OUT_OF_RESOURCES pada Google Cloud dropped_sent_packets_count), untuk Google Cloud NAT naikkan jumlah port minimum per VM atau pakai alokasi port dinamis.
Kisaran angka
AWS NAT gateway bisa membuka hingga 55.000 koneksi bersamaan ke tujuan yang sama (IP, port, protokol) per satu alamat IP, dan kapasitasnya bisa ditambah dengan memasang hingga 8 IP. Koneksi yang diam selama 350 detik dihapus, dan paket yang dikirim lewat koneksi itu sesudahnya dibalas RST. Azure NAT Gateway menyediakan 64.512 port SNAT per IP publik (maksimal 16 IP). Google Cloud NAT membagi 64.512 port per NAT IP ke setiap VM, tetapi nilai default port minimum per VM adalah 64 (alokasi statis), sehingga dengan pengaturan default, koneksi bersamaan dari satu VM ke tujuan yang sama umumnya terbatas pada 64.
Di grafik
Mendatar di batas · Jumlah koneksi bersamaan NAT gateway, jumlah kegagalan alokasi port
Yang diperiksa
Untuk AWS, letakkan metrik NAT gateway ErrorPortAllocation, ActiveConnectionCount, dan PacketsDropCount di CloudWatch (Azure: SNAT Connection Count yang difilter ke status Failed serta Dropped Packets; Google Cloud: dropped_sent_packets_count dengan reason OUT_OF_RESOURCES) berdampingan dengan waktu kegagalan panggilan eksternal dari server game
Cocok jika
Pada saat panggilan eksternal gagal, ErrorPortAllocation (Azure: SNAT Connection Count berstatus Failed, Google Cloud: drop OUT_OF_RESOURCES) lebih dari 0, dan kegagalan terkumpul pada panggilan ke satu atau dua tujuan yang menerima banyak koneksi, seperti server autentikasi atau pembayaran
Tidak cocok jika
Kegagalan alokasi port 0, tetapi connect dari server game gagal dengan EADDRNOTAVAIL dan TIME_WAIT mendekati rentang port ephemeral: lebih mungkin “Port ephemeral habis pada koneksi antarserver”. Koneksi berhasil tetapi responsnya saja yang lambat: lebih mungkin “Ketergantungan pada layanan eksternal”
Sarana pemeriksaan
Tools infrastruktur (tanpa perlu kode game)
Pelajari lebih lanjut
Berbeda dengan “Port ephemeral habis pada koneksi antarserver”, yaitu habisnya port ephemeral di satu server, batas ini berlaku di NAT gateway dan dipakai bersama oleh server-server di belakang gateway (Google Cloud NAT membaginya per VM). Jika TIME_WAIT dan rentang port ephemeral di sisi server masih longgar tetapi hanya panggilan ke luar yang gagal, penyebabnya ada di sini. Port dari koneksi yang sudah ditutup juga tidak langsung dipakai lagi untuk tujuan yang sama (di Azure ada cooldown, di Google Cloud tidak bisa dipakai selama TIME_WAIT), sehingga makin sering koneksi singkat diulang, makin cepat batasnya tercapai.

Sumber

  1. NAT gateway basics AWS
    55.000 koneksi bersamaan ke tujuan yang sama (IP, port, dan protokol tujuan) per alamat IPv4, bisa ditambah dengan memasang hingga 8 IP (Elastic IP pada NAT gateway publik default 2, ditambah lewat permintaan kenaikan kuota); bandwidth naik otomatis dari 5 Gbps hingga 100 Gbps dan throughput dari 1 juta hingga 10 juta paket per detik, dan paket dibuang jika batas itu terlampaui
  2. NAT gateway metrics and dimensions AWS
    ErrorPortAllocation: berapa kali port sumber gagal dialokasikan (jika lebih dari 0, koneksi bersamaan terlalu banyak), ActiveConnectionCount, IdleTimeoutCount (koneksi yang dibersihkan karena idle 350 detik), PacketsDropCount
  3. Troubleshoot NAT gateways AWS
    Jika idle 350 detik, koneksi kedaluwarsa dan pengiriman berikutnya dibalas RST; disarankan keepalive lebih pendek dari 350 detik; jika batas koneksi tercapai, tambah gateway per availability zone, tambah IP, atau kurangi jumlah koneksi
  4. Source Network Address Translation (SNAT) with Azure NAT Gateway Microsoft Azure
    64.512 port SNAT per IP publik (maksimal 16 IP); setiap koneksi ke tujuan yang sama memerlukan port yang berbeda; port yang sudah ditutup melewati cooldown sebelum dipakai lagi untuk tujuan yang sama
  5. Metrics and alerts for Azure NAT Gateway Microsoft Azure
    Jika SNAT Connection Count yang difilter ke status Failed lebih dari 0, kemungkinan port SNAT habis; Dropped Packets
  6. IP addresses and ports Google Cloud
    64.512 port masing-masing untuk TCP dan UDP per NAT IP; default port minimum per VM 64 (alokasi statis) dan 32 (alokasi dinamis); jumlah port yang dicadangkan untuk VM membatasi jumlah koneksi bersamaan ke tujuan yang sama; port dari koneksi yang sudah ditutup tidak bisa dipakai selama TIME_WAIT
  7. Logs and metrics Google Cloud
    dropped_sent_packets_count dengan reason OUT_OF_RESOURCES: paket yang dibuang karena NAT IP atau port tidak cukup

Lihat juga

Lapisan yang sama: L5 Perangkat jaringan data center

Penyebab di lapisan lain dengan gejala yang sama (Tidak bisa masuk / loading tanpa henti)

Lihat kartu interaktif dengan gambar dan simulasi