Supplement · Network

Route lookup, socket lifecycle và packet evidence

“Network lỗi” phải được thu hẹp theo name resolution → route/neighbor → connect/TLS → request/response → close; mỗi layer có counters và packet signatures riêng.

Linux Path

Routing và neighbor

Destination lookup theo policy rules/tables, longest-prefix route, metric và source-address selection; next hop on-link cần ARP/IPv4 hoặc Neighbor Discovery/IPv6. ip route get trả quyết định cho flow cụ thể. Multiple interfaces, asymmetric routing và reverse-path filtering có thể làm request đi nhưng response bị drop.

Namespaces và virtual links

Network namespace có interfaces/routes/firewall/sockets riêng; veth nối namespaces, bridge switch L2, overlay encapsulate. Container port publishing/NAT thay đổi path; inspect trong đúng namespace và host. Kubernetes Service/Ingress thêm kube-proxy/eBPF/load-balancer layers.

NAT và conntrack

SNAT đổi source cho egress, DNAT đổi destination cho published/service traffic; conntrack giữ flow state/reverse translation. Capacity/timeouts/port allocation và asymmetric bypass gây drops. NAT không phải security policy; firewall/SG/NetworkPolicy quyết định allow.

TCP lifecycle

LISTEN → SYN/SYN-ACK/ACK → ESTABLISHED; FIN half-close và TIME_WAIT bảo vệ delayed segments/reuse. RST báo abort/no listener/state mismatch. Retransmission đến từ loss/congestion/path/receiver—not tự chứng minh server down. MSS/PMTU black hole có thể connect được nhưng payload lớn treo.

Ports và sockets

Connection identity gồm protocol + source/destination address/port. Client ephemeral range và NAT tuple capacity có thể cạn dưới churn; keepalive/pooling giảm handshakes nhưng stale/idle limits cần quản. Socket là FD nên RLIMIT, memory buffers và per-cgroup constraints cùng tác động.

Backlogs

TCP có SYN queue cho half-open và accept queue cho established chưa accept; application server còn connection/request/executor queues. Kernel caps/backlog/syncookies platform-specific. Queue đầy có thể drop SYN/ACK, retransmit, timeout hoặc refusal; cần counters cùng app metrics.

Keepalive và timeouts

HTTP keep-alive reuse application connection; TCP keepalive probes idle dead peers; chúng khác nhau. Timeout budget gồm DNS/connect/TLS/pool/read/idle; proxy/client/server mismatches gây premature close, 499/502/504 hoặc resource giữ lâu.

Debug toolkit

ip addr/route/rule/neigh, ss -lntpi/s, nstat, ethtool, conntrack, namespace commands, DNS tools và tcpdump/Wireshark. Capture ở đúng interfaces/namespaces và hai phía nếu có thể; packet payload có secrets/PII nên giới hạn filter/access/retention.

Workflow

Resolve exact endpoint → reproduce với timestamps/source → verify route/neighbor/firewall → socket/listener/backlogs → capture handshake/TLS/data/close → correlate proxy/app/downstream. So sánh healthy vs failing dimensions; không đổi MTU, conntrack, ports hay timeouts hàng loạt.

ip-route(8) · ss(8) · Linux IP sysctl · RFC 9293 TCP · RFC 4787 NAT
← Tổng quanNginx →