Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

章 8. 網路

RHEL 的網路堆疊已與時俱進,升級了數項自動優化功能。對於大部份工作量來說,自動配置的網路設定能提供優化的效能。
在大部份情況下,網路效能問題實際上是因為硬體功能發生問題,或是設備發生了錯誤。這些問題的討論範圍不包含在本指南中;本章節提到的效能問題和解決方法,僅適用於優化可正常運作的系統。
網路是個專門的子系統,它包含了諸多不同的部分以及敏感的連線功能。這也是為什麼自由軟體社群與 Red Hat 耗費了許多心力,實作了各項自動優化網路效能的方式。正因如此,您可能永遠也無須重新配置網路效能。

8.1. 網路效能提升

RHEL 6.1 提升了下列網路效能:

8.1.1. 接收封包操控(Receive Packet Steering,RPS)

RPS 會啟用一個 NIC rx 佇列,使其接收 softirq 的工作量散佈在數個 CPU 之間。這可避免網路流量在單一 NIC 硬體佇列上遇上瓶頸。
若要啟用 RPS,請在 /sys/class/net/ethX/queues/rx-N/rps_cpus 中指定目標 CPU 的名稱,請將 ethX 取代為 NIC 的相應裝置名稱(例如 eth1eth2),並將 rx-N 取代為指定的 NIC 接收佇列。這便能讓檔案中指定的 CPU 處理來自於 ethX 上,rx-N 佇列中的資料。當指定 CPU 時,請考量佇列的「快取關聯」(cache affinity) [4]

8.1.2. 接收流量操控(Receive Flow Steering,RFS)

RFS 乃 RPS 的延伸,它能讓管理員配置一個雜湊表,此雜湊表會在應用程式接收資料和被網路堆疊查閱時,自動填入。這能判斷哪個應用程式會接收哪些網路資料(根據 source:destination 網路資訊)。
透過使用這項資訊,網路堆疊可排程最適合的 CPU 接收各個封包。若要配置 RFS,請使用下列微調項目:
/proc/sys/net/core/rps_sock_flow_entries
這可控制 kernel 能轉至特定 CPU 的最大 socket/流量數。這是系統全域的共享限制。
/sys/class/net/ethX/queues/rx-N/rps_flow_cnt
這能控制 kernel 在一張網路卡(ethX)上,所能轉至特定接收佇列(rx-N)的最大插槽/流量數量。請注意,此微調項目所有各佇列的值的加總,在所有網路卡上皆應與 /proc/sys/net/core/rps_sock_flow_entries 的值相等或更低。
和 RPS 不同,RFS 允許接收佇列和應用程式在處理封包流量時,共享相同的 CPU。這在某些情況下可提升效能。然而,此效能改善取決於快取階層、應用程式負載等等。

8.1.3. TCP 精簡串流的 getsockopt 支援

Thin-stream(精簡串流)是個用來描繪某種傳輸協定的名詞,在其中,應用程式會以極低的速率傳送資料,因此此協定的重新傳輸機制不處於飽和狀況下。使用精簡串流協定的應用程式一般會透過 TCP 之類的可靠協定進行傳輸;大部份情況下,此類型的應用程式會提供對於時間非常敏感的服務(比方說股市交易、線上遊戲、控制系統等服務)。
對於時間敏感的服務來說,封包遺失可能會造成極大的影響。為了避免此問題,getsockopt 已改善以支援兩項額外選項:
TCP_THIN_DUPACK
此布林值能在進行了一項精簡串流的 dupACK 之後,啟用重新傳輸的動態觸發。
TCP_THIN_LINEAR_TIMEOUTS
此布林值會動態觸發精簡串流的線性逾時。
這兩項選項皆能透過應用程式具體地啟用。欲取得更多有關於這些選項的相關資訊,請參閱 file:///usr/share/doc/kernel-doc-version/Documentation/networking/ip-sysctl.txt。欲取得更多有關於精簡串流上的相關資訊,請參閱 file:///usr/share/doc/kernel-doc-version/Documentation/networking/tcp-thin.txt

8.1.4. 支援通透式代理

Kernel 現在已能處理非本機綁定的 IPv4 TCP 和 UDP socket,以支援通透式代理(TProxy,transparent proxy)。若要啟用此功能,您需要配置相應的 iptables。同時,您也必須正確啟用和配置政策路由。
欲取得更多有關於通透式代理的相關資訊,請參閱 file:///usr/share/doc/kernel-doc-version/Documentation/networking/tproxy.txt


[4] 確認 CPU 和 NIC 之間的快取關聯,代表將它們配置成能夠共享相同的 L2 快取。欲知更多資訊,請參閱〈節 8.3, “封包接收總覽”〉。