IP Sysctl¶
/proc/sys/net/ipv4/* 變數¶
- ip_forward - 布林值
0 - 停用(預設)
非 0 - 啟用
在介面之間轉發資料包。
此變數是特殊變數,其更改會將所有配置引數重置為預設狀態(主機為 RFC1122,路由器為 RFC1812)
- ip_default_ttl - 整數
傳出(但不轉發)IP 資料包的 TTL 欄位(生存時間)的預設值。應介於 1 到 255(含)之間。預設值:64(RFC1700 推薦值)
- ip_no_pmtu_disc - 整數
停用路徑 MTU 發現。如果在模式 1 中啟用,並且接收到需要分片的 ICMP,則到此目的地的 PMTU 將設定為此目的地舊 MTU 和 min_pmtu(見下文)中的最小值。如果您想避免本地生成的分片,則需要手動將 min_pmtu 提高到系統上最小的介面 MTU。
在模式 2 中,傳入的路徑 MTU 發現訊息將被丟棄。傳出幀的處理方式與模式 1 相同,隱式地在每個建立的套接字上設定 IP_PMTUDISC_DONT。
模式 3 是一種強化的 PMTU 發現模式。核心將僅在底層協議可以除了純套接字查詢之外驗證它們的情況下才接受需要分片的錯誤。目前,PMTU 事件將被接受的協議是 TCP 和 SCTP,因為它們驗證例如序列號或關聯。此模式不應全域性啟用,而僅旨在保護例如名稱空間中的名稱伺服器,其中 TCP 路徑 MTU 必須仍然有效,但應丟棄其他協議的路徑 MTU 資訊。如果全域性啟用此模式,可能會破壞其他協議。
可能的值:0-3
預設值:FALSE
- min_pmtu - 整數
預設值 552 - 最小路徑 MTU。除非手動更改,否則每個快取的 PMTU 將永遠不會低於此設定。
- ip_forward_use_pmtu - 布林值
預設情況下,我們在轉發時不會信任協議路徑 MTU,因為它們很容易被偽造,並可能導致路由器不必要的碎片。您只有在使用者空間軟體嘗試自行發現路徑 MTU 並依賴核心遵守此資訊時才需要啟用此功能。通常情況下並非如此。
預設值:0 (停用)
可能的值
0 - 停用
1 - 啟用
- fwmark_reflect - 布林值
控制核心生成的與套接字不關聯的 IPv4 回覆資料包的 fwmark(例如,TCP RST 或 ICMP echo 回覆)。如果未設定,這些資料包的 fwmark 為零。如果設定,它們將具有它們正在回覆的資料包的 fwmark。
預設值:0
- fib_multipath_use_neigh - 布林值
確定多路徑路由的下一跳時,使用現有鄰居條目的狀態。如果停用,則不使用鄰居資訊,資料包可能會被導向到失敗的下一跳。僅適用於啟用 CONFIG_IP_ROUTE_MULTIPATH 構建的核心。
預設值:0 (停用)
可能的值
0 - 停用
1 - 啟用
- fib_multipath_hash_policy - 整數
控制多路徑路由使用哪種雜湊策略。僅適用於啟用 CONFIG_IP_ROUTE_MULTIPATH 構建的核心。
預設值:0 (三層)
可能的值
0 - 三層
1 - 四層
2 - 三層或(如果存在)內部三層
3 - 自定義多路徑雜湊。用於多路徑雜湊計算的欄位由 fib_multipath_hash_fields sysctl 確定
- fib_multipath_hash_fields - 無符號整數
當 fib_multipath_hash_policy 設定為 3(自定義多路徑雜湊)時,用於多路徑雜湊計算的欄位由此 sysctl 確定。
此值是一個位掩碼,用於啟用多路徑雜湊計算的各種欄位。
可能的欄位有
0x0001
源 IP 地址
0x0002
目的 IP 地址
0x0004
IP 協議
0x0008
未使用(流標籤)
0x0010
源埠
0x0020
目的埠
0x0040
內部源 IP 地址
0x0080
內部目的 IP 地址
0x0100
內部 IP 協議
0x0200
內部流標籤
0x0400
內部源埠
0x0800
內部目的埠
預設值:0x0007(源 IP、目的 IP 和 IP 協議)
- fib_multipath_hash_seed - 無符號整數
計算多路徑路由雜湊時使用的種子值。適用於 IPv4 和 IPv6 資料路徑。僅適用於啟用 CONFIG_IP_ROUTE_MULTIPATH 構建的核心。
當設定為 0 時,多路徑路由使用的種子值預設為內部隨機生成的值。
未指定實際的雜湊演算法——不保證給定種子產生的下一跳分佈在不同核心版本中保持穩定。
預設值:0(隨機)
- fib_sync_mem - 無符號整數
在強制執行 synchronize_rcu 之前,fib 條目可積壓的髒記憶體量。
預設值:512KB 最小值:64KB 最大值:64MB
- ip_forward_update_priority - 整數
轉發後是否根據 IPv4 頭中的“TOS”欄位更新 SKB 優先順序。新的 SKB 優先順序根據 rt_tos2priority 表(例如參見 man tc-prio)從 TOS 欄位值對映。
預設值:1(更新優先順序。)
可能的值
0 - 不更新優先順序。
1 - 更新優先順序。
- route/max_size - 整數
核心中允許的最大路由數量。在使用大量介面和/或路由時增加此值。
從 Linux 核心 3.6 開始,此項對於 IPv4 已棄用,因為不再使用路由快取。
從 Linux 核心 6.3 開始,此項對於 IPv6 已棄用,因為垃圾收集管理快取的路由條目。
- neigh/default/gc_thresh1 - 整數
要保留的最小條目數。如果條目數量少於此值,垃圾收集器將不會清除條目。
預設值:128
- neigh/default/gc_thresh2 - 整數
當垃圾收集器在清除條目方面變得更積極時的閾值。當超過此數量時,超過 5 秒的條目將被清除。
預設值:512
- neigh/default/gc_thresh3 - 整數
允許的最大非永久鄰居條目數。在使用大量介面以及與大量直接連線的對等體通訊時增加此值。
預設值:1024
- neigh/default/unres_qlen_bytes - 整數
其他網路層為每個未解析地址排隊的資料包可能使用的最大位元組數。(Linux 3.3 中新增)
設定負值沒有意義,將返回錯誤。
預設值:SK_WMEM_MAX(與 net.core.wmem_default 相同)。
確切值取決於架構和核心選項,但應足以允許對 256 箇中等大小的資料包進行排隊。
- neigh/default/unres_qlen - 整數
其他網路層為每個未解析地址排隊的資料包的最大數量。
(在 Linux 3.3 中已棄用):請改用 unres_qlen_bytes。
在 Linux 3.3 之前,預設值為 3,這可能會導致意外的資料包丟失。當前預設值是根據 unres_qlen_bytes 的預設值和資料包的實際大小計算的。
預設值:101
- neigh/default/interval_probe_time_ms - 整數
帶有 NTF_MANAGED 標誌的鄰居條目的探測間隔,最小值為 1。
預設值:5000
- mtu_expires - 整數
快取的 PMTU 資訊保留的時間,單位為秒。
- min_adv_mss - 整數
通告的 MSS 取決於第一跳路由 MTU,但永遠不會低於此設定。
- fib_notify_on_flag_change - 整數
每當 RTM_F_OFFLOAD/RTM_F_TRAP/RTM_F_OFFLOAD_FAILED 標誌更改時,是否發出 RTM_NEWROUTE 通知。
將路由安裝到核心後,使用者空間會收到確認,這意味著路由已安裝在核心中,但不一定安裝在硬體中。硬體中已安裝的路由也可能改變其動作,從而改變其標誌。例如,一個捕獲資料包的主機路由在安裝 IPinIP/VXLAN 隧道後可以被“提升”以執行解封裝。這些通知將向用戶空間指示路由的狀態。
預設值:0(不發出通知。)
可能的值
0 - 不發出通知。
1 - 發出通知。
2 - 僅針對 RTM_F_OFFLOAD_FAILED 標誌更改發出通知。
IP 分片
- ipfrag_high_thresh - 長整數
用於重組 IP 分片的最大記憶體。
- ipfrag_low_thresh - 長整數
(自 Linux 4.17 起已廢棄)核心開始移除不完整分片佇列以釋放資源之前,用於重組 IP 分片的最大記憶體。核心仍然接受新分片以進行碎片整理。
- ipfrag_time - 整數
將 IP 分片保留在記憶體中的時間(秒)。
- ipfrag_max_dist - 整數
ipfrag_max_dist 是一個非負整數值,定義了共享相同 IP 源地址的分片之間允許的最大“亂序”。請注意,資料包重排序並不少見,但如果從某個源 IP 地址接收到大量分片,而某個分片佇列仍然不完整,則可能表明屬於該佇列的一個或多個分片已丟失。當 ipfrag_max_dist 為正值時,在分片新增到重組佇列之前會進行額外檢查——如果在使用該源地址的任何 IP 分片佇列新增之間,從特定 IP 地址到達了 ipfrag_max_dist(或更多)個分片,則假定佇列中一個或多個分片丟失。現有分片佇列將被丟棄,並啟動一個新的佇列。ipfrag_max_dist 值為零將停用此檢查。
對 ipfrag_max_dist 使用非常小的值(例如 1 或 2)可能會在正常資料包重排序發生時導致不必要地丟棄分片佇列,這可能導致應用程式效能下降。使用非常大的值(例如 50000)會增加錯誤重組來自不同 IP 資料報的 IP 分片的可能性,這可能導致資料損壞。預設值:64
- bc_forwarding - 整數
bc_forwarding 啟用 rfc1812#section-5.3.5.2 和 rfc2644 中描述的功能。它允許路由器轉發定向廣播。要啟用此功能,應將“all”條目和輸入介面條目設定為 1。預設值:0
INET 對等體儲存¶
- inet_peer_threshold - 整數
儲存的近似大小。從這個閾值開始,條目將被積極地丟棄。此閾值還決定了條目的生存時間以及垃圾收集透過之間的時間間隔。更多條目,更短的生存時間,更短的 GC 間隔。
- inet_peer_minttl - 整數
條目的最小生存時間。應足以覆蓋重組側的分片生存時間。如果池大小小於 inet_peer_threshold,則保證此最小生存時間。以秒為單位測量。
- inet_peer_maxttl - 整數
條目的最大生存時間。如果池中沒有記憶體壓力(即當池中條目數量非常少時),未使用的條目將在此時間段後過期。以秒為單位測量。
TCP 變數¶
- somaxconn - 整數
套接字 listen() 積壓的限制,在使用者空間中稱為 SOMAXCONN。預設值 4096。(在 Linux 5.4 之前為 128)另請參閱 tcp_max_syn_backlog,瞭解 TCP 套接字的額外調整。
- tcp_abort_on_overflow - 布林值
如果監聽服務接受新連線的速度太慢,則重置它們。預設狀態為 FALSE。這意味著如果由於突發導致溢位,連線將恢復。僅當您確實確定無法調整監聽守護程序以更快地接受連線時才啟用此選項。啟用此選項可能會損害您的伺服器客戶端。
- tcp_adv_win_scale - 整數
自 Linux 6.6 起已廢棄。將緩衝開銷計算為 bytes/2^tcp_adv_win_scale(如果 tcp_adv_win_scale > 0)或 bytes-bytes/2^(-tcp_adv_win_scale)(如果 <= 0)。
可能的值為 [-31, 31](含)。
預設值:1
- tcp_allowed_congestion_control - 字串
顯示/設定非特權程序可用的擁塞控制選項。該列表是 tcp_available_congestion_control 中列出的選項的子集。
預設值為“reno”和預設設定 (tcp_congestion_control)。
- tcp_app_win - 整數
為應用程式緩衝區保留視窗的 max(window/2^tcp_app_win, mss)。值為 0 是特殊情況,表示不保留任何內容。
可能的值為 [0, 31](含)。
預設值:31
- tcp_autocorking - 布林值
啟用 TCP 自動軟木塞:當應用程式連續執行小型 write()/sendmsg() 系統呼叫時,我們嘗試儘可能地合併這些小型寫入,以降低傳送資料包的總量。當流的至少一個先前資料包在 Qdisc 佇列或裝置傳輸佇列中等待時,就會執行此操作。應用程式仍然可以使用 TCP_CORK 來獲得最佳行為,如果它們知道如何/何時解除其套接字的軟木塞。
預設值:1
- tcp_available_congestion_control - 字串
顯示已註冊的可用擁塞控制選項。更多擁塞控制演算法可能作為模組可用,但未載入。
- tcp_base_mss - 整數
分層路徑 MTU 發現(MTU 探測)中 search_low 的初始值。如果啟用 MTU 探測,這是連線使用的初始 MSS。
- tcp_mtu_probe_floor - 整數
如果啟用 MTU 探測,此值將限制連線的 search_low 使用的最小 MSS。
預設值:48
- tcp_min_snd_mss - 整數
TCP SYN 和 SYNACK 訊息通常會通告 ADVMSS 選項,如 RFC 1122 和 RFC 6691 中所述。
如果此 ADVMSS 選項小於 tcp_min_snd_mss,它將被靜默地限制為 tcp_min_snd_mss。
預設值:48(每個段至少 8 位元組的有效負載)
- tcp_congestion_control - 字串
設定新連線使用的擁塞控制演算法。演算法“reno”始終可用,但根據核心配置可能還會提供其他選擇。預設值作為核心配置的一部分設定。對於被動連線,監聽器擁塞控制選擇是繼承的。
[參見 setsockopt(listenfd, SOL_TCP, TCP_CONGESTION, “name” ...) ]
- tcp_dsack - 布林值
允許 TCP 傳送“重複”SACK。
- tcp_early_retrans - 整數
尾部丟失探測 (TLP) 將因尾部丟失而發生的 RTO 轉換為快速恢復(draft-ietf-tcpm-rack)。請注意,TLP 需要 RACK 才能正常執行(參見下面的 tcp_recovery)
可能的值
0 停用 TLP
3 或 4 啟用 TLP
預設值:3
- tcp_ecn - 整數
控制 TCP 使用顯式擁塞通知 (ECN)。僅當 TCP 連線的兩端都表明支援 ECN 時才使用 ECN。此功能透過允許支援路由器在丟棄資料包之前發出擁塞訊號來避免因擁塞造成的丟失。
可能的值為
0
停用 ECN。既不發起也不接受 ECN。
1
在傳入連線請求時啟用 ECN,並在傳出連線嘗試時也請求 ECN。
2
在傳入連線請求時啟用 ECN,但不請求傳出連線的 ECN。
預設值:2
- tcp_ecn_fallback - 布林值
如果核心檢測到 ECN 連線行為異常,則啟用回退到非 ECN。目前,此旋鈕實現了 RFC3168 第 6.1.1.1 節中的回退功能,但我們保留在未來在此旋鈕下實現附加檢測機制的可能性。如果 tcp_ecn 或每路由(或擁塞控制)ECN 設定被停用,則此值不使用。
預設值:1(已啟用回退)
- tcp_fack - 布林值
這是一個遺留選項,它不再有任何作用。
- tcp_fin_timeout - 整數
孤立(不再被任何應用程式引用)連線在本地端終止之前,將保持在 FIN_WAIT_2 狀態的時間長度。對於非孤立連線來說,FIN_WAIT_2 狀態是完全有效的“僅接收”狀態,但孤立連線在該狀態下可能會永遠等待遠端關閉其連線端。
參見 tcp_max_orphans
預設值:60 秒
- tcp_frto - 整數
啟用 RFC5682 中定義的向前 RTO 恢復 (F-RTO)。F-RTO 是一種用於 TCP 重傳超時的高階恢復演算法。它在 RTT 波動(例如無線)的網路中特別有益。F-RTO 僅是傳送方修改。它不需要對等方的任何支援。
預設情況下,它以非零值啟用。0 停用 F-RTO。
- tcp_fwmark_accept - 布林值
如果設定,傳入到沒有套接字標記的監聽套接字的連線將把接受套接字的標記設定為傳入 SYN 資料包的 fwmark。這將導致該連線上的所有資料包(從第一個 SYNACK 開始)都以該 fwmark 傳送。監聽套接字的標記保持不變。已透過 setsockopt(SOL_SOCKET, SO_MARK, ...) 設定 fwmark 的監聽套接字不受影響。
預設值:0
- tcp_invalid_ratelimit - 整數
限制針對現有連線但因以下任何原因而無效的傳入 TCP 資料包傳送重複確認的最大速率
超出視窗的序列號,
超出視窗的確認號,或
PAWS(防序列號迴繞)檢查失敗
這有助於緩解簡單的“ACK 迴圈”DoS 攻擊,其中有缺陷或惡意的中介軟體或中間人可以重寫 TCP 頭欄位,導致每個端點都認為對方正在傳送無效的 TCP 段,從而導致每一方都發送針對無效段的無限重複確認流。
使用 0 將停用對無效段的重複確認的速率限制;否則,此值指定傳送此類重複確認之間的最小間隔時間(毫秒)。
預設值:500(毫秒)。
- tcp_keepalive_time - 整數
當啟用 keepalive 時,TCP 傳送 keepalive 訊息的頻率。預設值:2 小時。
- tcp_keepalive_probes - 整數
TCP 傳送 keepalive 探測的次數,直到它決定連線已斷開。預設值:9。
- tcp_keepalive_intvl - 整數
探測傳送的頻率。乘以 tcp_keepalive_probes 後,即為探測開始後終止無響應連線的時間。預設值:75 秒,即連線將在約 11 分鐘的重試後中止。
- tcp_l3mdev_accept - 布林值
使子套接字能夠繼承 L3 主裝置索引。啟用此選項允許“全域性”監聽套接字跨 L3 主域(例如 VRF)工作,並且從監聽套接字派生出的連線套接字繫結到資料包源自的 L3 域。僅當核心使用 CONFIG_NET_L3_MASTER_DEV 編譯時有效。
預設值:0 (停用)
- tcp_low_latency - 布林值
這是一個遺留選項,它不再有任何作用。
- tcp_max_orphans - 整數
系統持有的未附加到任何使用者檔案控制代碼的 TCP 套接字的最大數量。如果超過此數量,孤立連線將立即重置並列印警告。此限制僅用於防止簡單的 DoS 攻擊,您_絕不能_依賴此限制或人為降低限制,而是在網路條件要求超過預設值時增加它(可能是在增加已安裝記憶體後),並調整網路服務以更積極地保持和終止此類狀態。讓我再次提醒:每個孤立連線會佔用多達約 64KB 的不可交換記憶體。
- tcp_max_syn_backlog - 整數
已記住但尚未收到來自連線客戶端確認的連線請求 (SYN_RECV) 的最大數量。
這是每個監聽器的限制。
對於低記憶體機器,最小值為 128,它將與機器記憶體成比例增加。
如果伺服器過載,請嘗試增加此數字。
請記住還要檢查 /proc/sys/net/core/somaxconn。一個 SYN_RECV 請求套接字大約消耗 304 位元組記憶體。
- tcp_max_tw_buckets - 整數
系統同時持有的 timewait 套接字的最大數量。如果超過此數量,timewait 套接字將立即銷燬並列印警告。此限制僅用於防止簡單的 DoS 攻擊,您_絕不能_人為降低限制,而是在網路條件要求超過預設值時增加它(可能是在增加已安裝記憶體後)。
- tcp_mem - 3 個整數向量:min, pressure, max
min:當 TCP 分配的記憶體頁數低於此值時,TCP 不關心其記憶體消耗。
pressure:當 TCP 分配的記憶體量超過此頁數時,TCP 會調整其記憶體消耗並進入記憶體壓力模式,當記憶體消耗低於“min”時退出此模式。
max:所有 TCP 套接字允許排隊的頁數。
預設值在啟動時根據可用記憶體量計算。
- tcp_min_rtt_wlen - 整數
跟蹤最小 RTT 的視窗最小過濾器的視窗長度。較短的視窗使流在移動到較長路徑時(例如,由於流量工程)更快地獲取新的(更高)最小 RTT。較長的視窗使過濾器更能抵抗 RTT 膨脹,例如瞬時擁塞。單位是秒。
可能的值:0 - 86400(1 天)
預設值:300
- tcp_moderate_rcvbuf - 布林值
如果設定,TCP 執行接收緩衝區自動調整,嘗試自動調整緩衝區大小(不大於 tcp_rmem[2])以匹配路徑實現全吞吐量所需的尺寸。預設啟用。
- tcp_mtu_probing - 整數
控制 TCP 分層路徑 MTU 發現。取三個值
0 - 停用
1 - 預設停用,當檢測到 ICMP 黑洞時啟用
2 - 始終啟用,使用 tcp_base_mss 的初始 MSS。
- tcp_probe_interval - 無符號整數
控制 TCP 分層路徑 MTU 發現重新探測的頻率。預設情況下,根據 RFC4821,每 10 分鐘重新探測一次。
- tcp_probe_threshold - 整數
控制 TCP 分層路徑 MTU 發現探測何時停止,以搜尋範圍的位元組寬度為參考。預設值為 8 位元組。
- tcp_no_metrics_save - 布林值
預設情況下,TCP 在連線關閉時將各種連線指標儲存在路由快取中,以便在不久的將來建立的連線可以使用這些指標來設定初始條件。通常,這會提高整體效能,但有時也可能導致效能下降。如果設定,TCP 將不會在關閉連線時快取指標。
- tcp_no_ssthresh_metrics_save - 布林值
控制 TCP 是否在路由快取中儲存 ssthresh 指標。
預設值為 1,這會停用 ssthresh 指標。
- tcp_orphan_retries - 整數
當 RTO 重傳未被確認時,此值會影響本地關閉的 TCP 連線的超時時間。有關更多詳細資訊,請參見 tcp_retries2。
預設值為 8。
如果您的機器是負載較高的 WEB 伺服器,您應該考慮降低此值,因為此類套接字可能會消耗大量資源。參見 tcp_max_orphans。
- tcp_recovery - 整數
此值是一個位圖,用於啟用各種實驗性丟失恢復功能。
RACK: 0x1
啟用 RACK 丟失檢測,用於快速檢測丟失的重傳和尾部丟棄。它還包含並停用了 SACK 連線的 RFC6675 恢復。
RACK: 0x2
使 RACK 的重排序視窗靜態(min_rtt/4)。
RACK: 0x4
停用 RACK 的 DUPACK 閾值啟發式演算法
預設值:0x1
- tcp_reflect_tos - 布林值
對於監聽套接字,對傳出資料包重用初始 SYN 訊息的 DSCP 值。這允許 TCP 流的兩個方向都使用相同的 DSCP 值,前提是 DSCP 在連線的整個生命週期內保持不變。
此選項影響 IPv4 和 IPv6。
預設值:0 (停用)
- tcp_reordering - 整數
TCP 流中資料包的初始重排序級別。TCP 棧可以動態調整流重排序級別,使其介於此初始值和 tcp_max_reordering 之間
預設值:3
- tcp_max_reordering - 整數
TCP 流中資料包的最大重排序級別。300 是一個相當保守的值,但如果路徑使用每資料包負載均衡(例如 bonding rr 模式),您可能需要增加它
預設值:300
- tcp_retrans_collapse - 布林值
與某些損壞的印表機進行 bug 到 bug 的相容性。重傳時嘗試傳送更大的資料包,以解決某些 TCP 棧中的錯誤。
- tcp_retries1 - 整數
此值會影響 TCP 在未確認的 RTO 重傳導致問題時決定(並向網路層報告此懷疑)的時間。有關更多詳細資訊,請參見 tcp_retries2。
RFC 1122 建議至少 3 次重傳,這是預設值。
- tcp_retries2 - 整數
當 RTO 重傳未被確認時,此值會影響活動 TCP 連線的超時時間。給定 N 值,遵循指數回退且初始 RTO 為 TCP_RTO_MIN 的假想 TCP 連線將重傳 N 次,然後在第 (N+1) 次 RTO 時終止連線。
預設值 15 產生 924.6 秒的假想超時,並且是有效超時的下限。TCP 將在第一個超過假想超時的 RTO 時實際超時。如果 tcp_rto_max_ms 減小,建議也更改 tcp_retries2。
RFC 1122 建議超時至少 100 秒,這對應於至少 8 的值。
- tcp_rfc1337 - 布林值
如果設定,TCP 棧的行為符合 RFC1337。如果未設定,我們不符合 RFC,但會阻止 TCP TIME_WAIT 刺殺。
預設值:0
- tcp_rmem - 3 個整數向量:min, default, max
min:TCP 套接字使用的接收緩衝區的最小大小。即使在適度的記憶體壓力下,每個 TCP 套接字也保證可以使用它。
預設值:4K
default:TCP 套接字使用的接收緩衝區的初始大小。此值覆蓋其他協議使用的 net.core.rmem_default。預設值:131072 位元組。此值導致初始視窗為 65535。
max:TCP 套接字自動選擇的接收緩衝區允許的最大接收緩衝區大小。此值不覆蓋 net.core.rmem_max。呼叫 setsockopt() 並使用 SO_RCVBUF 會停用該套接字接收緩衝區大小的自動調整,在這種情況下此值將被忽略。預設值:介於 131072 和 32MB 之間,取決於 RAM 大小。
- tcp_sack - 布林值
啟用選擇性確認 (SACKS)。
- tcp_comp_sack_delay_ns - 長整數
TCP 嘗試減少傳送的 SACK 數量,使用基於 SRTT 5% 的計時器,並受此 sysctl 限制,單位為納秒。預設值為 1 毫秒,基於 TSO 自動調整週期。
預設值:1,000,000 納秒(1 毫秒)
- tcp_comp_sack_slack_ns - 長整數
此 sysctl 控制 SACK 壓縮使用的計時器啟動時所用的鬆弛時間。這為小型 RTT 流提供了額外時間,並透過允許機會性地減少計時器中斷來降低系統開銷。
預設值:100,000 納秒(100 微秒)
- tcp_comp_sack_nr - 整數
可壓縮的最大 SACK 數量。使用 0 將停用 SACK 壓縮。
預設值:44
- tcp_backlog_ack_defer - 布林值
如果設定,處理套接字積壓的使用者執行緒會嘗試為整個佇列傳送一個 ACK。這有助於避免 TCP 套接字系統呼叫結束時潛在的長時間延遲。
預設值:true
- tcp_slow_start_after_idle - 布林值
如果設定,則提供 RFC2861 行為並在空閒期後使擁塞視窗超時。空閒期定義為當前 RTO。如果未設定,則擁塞視窗在空閒期後不會超時。
預設值:1
- tcp_stdurg - 布林值
使用 TCP 緊急指標欄位的主機要求解釋。大多數主機使用較舊的 BSD 解釋,因此如果開啟此功能,Linux 可能無法與它們正確通訊。
預設值:FALSE
- tcp_synack_retries - 整數
被動 TCP 連線嘗試的 SYNACK 將被重傳的次數。不應高於 255。預設值為 5,對應於在當前初始 RTO 為 1 秒的情況下,到最後一次重傳的 31 秒。有了這個,被動 TCP 連線的最終超時將在 63 秒後發生。
- tcp_syncookies - 整數
僅當核心使用 CONFIG_SYN_COOKIES 編譯時有效。當套接字的 SYN 積壓佇列溢位時傳送 syncookies。這是為了防止常見的“SYN 泛洪攻擊”。預設值:1
請注意,syncookies 是備用功能。它絕不能用於幫助高負載伺服器抵禦合法連線速率。如果您在日誌中看到 SYN 泛洪警告,但調查顯示它們是由於合法連線過載而發生的,您應該調整其他引數,直到此警告消失。參見:tcp_max_syn_backlog、tcp_synack_retries、tcp_abort_on_overflow。
syncookies 嚴重違反 TCP 協議,不允許使用 TCP 擴充套件,可能導致某些服務(例如 SMTP 中繼)的嚴重退化,這不是您可見的,而是您的客戶端和中繼與您聯絡時可見的。當您在日誌中看到 SYN 泛洪警告而實際上並未被泛洪時,您的伺服器已嚴重配置錯誤。
如果您想測試 syncookies 對您的網路連線有何影響,您可以將此旋鈕設定為 2 以無條件啟用 syncookies 的生成。
- tcp_migrate_req - 布林值
當在三次握手期間接收到初始 SYN 資料包時,傳入連線將繫結到特定的監聽套接字。當監聽器關閉時,握手期間的在途請求套接字和接受佇列中的已建立套接字將被中止。
如果監聽器啟用了 SO_REUSEPORT,則同一埠上的其他監聽器應該能夠接受此類連線。
此選項使得在 close() 或 shutdown() 後,可以將此類子套接字遷移到另一個監聽器。
通常應使用 BPF_SK_REUSEPORT_SELECT_OR_MIGRATE 型別的 eBPF 程式來定義選擇活動監聽器的策略。
預設值:0
- 否則,僅當此選項啟用時,核心才會隨機選擇一個活動監聽器。
請注意,不同設定的監聽器之間的遷移可能會導致應用程式崩潰。
假設遷移從監聽器 A 到 B 發生,並且只有 B 啟用了 TCP_SAVE_SYN。B 無法讀取從 A 遷移的請求中的 SYN 資料。
為了避免這種情況,請透過在 eBPF 程式型別中返回 SK_DROP 來取消遷移,或停用此選項。
tcp_fastopen - 整數
啟用 TCP Fast Open (RFC7413),以在初始 SYN 資料包中傳送和接受資料。
客戶端支援由標誌 0x1 啟用(預設開啟)。客戶端必須使用帶有 MSG_FASTOPEN 標誌的 sendmsg() 或 sendto(),而不是 connect() 來在 SYN 中傳送資料。
伺服器支援由標誌 0x2 啟用(預設關閉)。然後,要麼為所有監聽器啟用另一個標誌 (0x400),要麼透過 TCP_FASTOPEN 套接字選項為單個監聽器啟用,選項值為 SYN 資料積壓的長度。
值(點陣圖)為
0x1
(客戶端)
在客戶端上啟用在初始 SYN 中傳送資料。
客戶端支援由標誌 0x1 啟用(預設開啟)。客戶端必須使用帶有 MSG_FASTOPEN 標誌的 sendmsg() 或 sendto(),而不是 connect() 來在 SYN 中傳送資料。
0x2
(伺服器)
0x1
啟用伺服器支援,即允許在三次握手完成之前接受 SYN 資料包中的資料並將其傳遞給應用程式。
0x4
0x1
無論 cookie 是否可用且不帶 cookie 選項,均在初始 SYN 中傳送資料。
預設值:0x1
0x200
- 接受不帶任何 cookie 選項的 SYN 中的資料。
0x400
預設情況下啟用所有監聽器支援 Fast Open,而無需顯式 TCP_FASTOPEN 套接字選項。
- 請注意,只有在分別啟用了基本支援(0x1 和 0x2)後,額外的客戶端或伺服器功能才有效。
tcp_fastopen_blackhole_timeout_sec - 整數
當 TFO 防火牆黑洞問題發生時,用於停用活動 TCP 套接字上的 Fastopen 的初始時間段(秒)。當 Fastopen 重新啟用後立即檢測到更多黑洞問題時,此時間段將呈指數增長,當黑洞問題消失時,將重置為初始值。0 表示停用黑洞檢測。
預設情況下,它設定為 0(功能已停用)。
- tcp_fastopen_key - 逗號分隔的 32 位十六進位制整數列表
該列表包含一個主金鑰和一個可選的備份金鑰。主金鑰用於建立和驗證 cookie,而可選的備份金鑰僅用於驗證 cookie。備份金鑰的目的是在金鑰輪換時最大限度地提高 TFO 驗證。
- 如果 tcp_fastopen sysctl 設定為 0x400(見上文),或者如果設定了 TCP_FASTOPEN setsockopt() optname 且之前未透過 sysctl 配置金鑰,則核心可以配置一個隨機選擇的主金鑰。
如果透過 setsockopt() 使用 TCP_FASTOPEN_KEY optname 配置金鑰,則將使用這些每個套接字的金鑰,而不是透過 sysctl 指定的任何金鑰。
金鑰指定為 4 個 8 位十六進位制整數,用‘-’分隔,例如:xxxxxxxx-xxxxxxxx-xxxxxxxx-xxxxxxxx。前導零可以省略。主金鑰和備份金鑰可以用逗號分隔。如果只指定一個金鑰,它將成為主金鑰,並且之前配置的任何備份金鑰都將被移除。
tcp_syn_retries - 整數
活動 TCP 連線嘗試的初始 SYN 將被重傳的次數。不應高於 127。預設值為 6,對應於在當前初始 RTO 為 1 秒的情況下,到最後一次重傳的 67 秒(當 tcp_syn_linear_timeouts = 4 時)。有了這個,活動 TCP 連線嘗試的最終超時將在 131 秒後發生。
預設值:1
- tcp_timestamps - 整數
啟用 RFC1323 中定義的時間戳。
0: 停用。
預設值:2
- 1: 啟用 RFC1323 中定義的時間戳,併為每個連線使用隨機偏移量,而不是僅使用當前時間。
2: 與 1 類似,但沒有隨機偏移量。
tcp_min_tso_segs - 整數
每個 TSO 幀的最小段數。
自 Linux 3.12 起,TCP 根據流速率自動調整 TSO 幀的大小,而不是填充 64KB 資料包。對於特定用法,可以強制 TCP 構建大型 TSO 幀。請注意,如果可用視窗太小,TCP 棧可能會拆分過大的 TSO 資料包。
tcp_tso_rtt_log - 整數
根據 min_rtt 調整 TSO 資料包大小
從 Linux 5.18 開始,可以為具有小 RTT 的流調整 TCP 自動大小調整。
舊的自動調整將步調預算拆分,以便每秒傳送 1024 個 TSO。
tso_packet_size = sk->sk_pacing_rate / 1024;
- 使用新機制,我們透過以下方式增加此 TSO 大小:
distance = min_rtt_usec / (2^tcp_tso_rtt_log) tso_packet_size += gso_max_size >> distance;
這意味著非常接近的主機之間的流可以使用更大的 TSO 資料包,從而降低其 CPU 成本。
- 如果您想使用舊的自動調整,請將此 sysctl 設定為 0。
預設值:9 (2^9 = 512 微秒)
tcp_pacing_ss_ratio - 整數
- sk->sk_pacing_rate 由 TCP 棧使用應用於當前速率的比例設定。(current_rate = cwnd * mss / srtt)如果 TCP 處於慢啟動階段,tcp_pacing_ss_ratio 將被應用,以讓 TCP 探測更大的速度,假設 cwnd 可以每隔一個 RTT 翻倍。
預設值:200
tcp_pacing_ca_ratio - 整數
- sk->sk_pacing_rate 由 TCP 棧使用應用於當前速率的比例設定。(current_rate = cwnd * mss / srtt)如果 TCP 處於擁塞避免階段,tcp_pacing_ca_ratio 將被應用,以保守地探測更大的吞吐量。
預設值:120
預設值:3
- tcp_syn_linear_timeouts - 整數
活動 TCP 連線在預設使用指數回退超時之前,以線性回退超時重傳 SYN 的次數。這對被動 TCP 端的 SYNACK 沒有影響。
當初始 RTO 為 1 且 tcp_syn_linear_timeouts = 4 時,我們預計 SYN RTO 將為:1, 1, 1, 1, 1, 2, 4, ...(4 次線性超時,以及第一次指數回退使用 2^0 * initial_RTO)。預設值:4
tcp_tso_win_divisor - 整數
這允許控制擁塞視窗的百分之幾可以被單個 TSO 幀消耗。此引數的設定是突發性與構建更大 TSO 幀之間的選擇。
tcp_tw_reuse - 整數
預設值:2
- 當從協議角度看安全時,為新連線啟用 TIME-WAIT 套接字重用。
0 - 停用
1 - 全域性啟用
2 - 僅為環迴流量啟用
- 未經技術專家建議/請求,不應更改此項。
tcp_tw_reuse_delay - 無符號整數
- 如果啟用了 TIME-WAIT 套接字重用,新連線重用 TIME-WAIT 套接字之前的延遲時間(毫秒)。實際重用閾值在 [N, N+1] 範圍內,其中 N 是請求的延遲(毫秒),以確保延遲間隔永遠不會短於配置值。
此設定包含關於其他 TCP 時間戳時鐘節拍間隔的假設。為了使 PAWS(防序列號迴繞)機制對重用連線正常工作,此值不應設定為低於對等方的時鐘節拍。
預設值:1000(毫秒)
tcp_window_scaling - 布林值
- 啟用 RFC1323 中定義的視窗縮放。
tcp_shrink_window - 布林值
預設值:0
- 這改變了 TCP 接收視窗的計算方式。
RFC 7323 第 2.4 節指出,在某些情況下可能會提供縮回的視窗,並且 TCP 實現必須確保它們按照 RFC 1122 的規定處理縮小的視窗。
預設值:4K
0 - 停用。視窗永遠不會縮小。
1 - 啟用。當需要保持在
自動調整(sk_rcvbuf)設定的記憶體限制內時,視窗會縮小。這僅在非零接收視窗縮放因子也生效時發生。
tcp_wmem - 3 個整數向量:min, default, max
min:為 TCP 套接字的傳送緩衝區保留的記憶體量。每個 TCP 套接字由於其建立而有權使用它。
- default:TCP 套接字使用的傳送緩衝區的初始大小。此值覆蓋其他協議使用的 net.core.wmem_default。
它通常低於 net.core.wmem_default。
預設值:16K
max:TCP 套接字自動調整的傳送緩衝區允許的最大記憶體量。此值不覆蓋 net.core.wmem_max。呼叫 setsockopt() 並使用 SO_SNDBUF 會停用該套接字傳送緩衝區大小的自動調整,在這種情況下此值將被忽略。
- 預設值:介於 64K 和 4MB 之間,取決於 RAM 大小。
tcp_notsent_lowat - 無符號整數
預設值:0
- TCP 套接字可以透過 TCP_NOTSENT_LOWAT 套接字選項控制其寫入佇列中未傳送位元組的數量。如果未傳送位元組的數量低於每個套接字的值,並且寫入佇列未滿,poll()/select()/epoll() 會報告 POLLOUT 事件。如果達到限制,sendmsg() 也不會新增新緩衝區。
此全域性變數控制未使用 TCP_NOTSENT_LOWAT 的套接字的未傳送資料量。對於這些套接字,對全域性變數的更改會立即生效。
預設值:0
- 預設值:UINT_MAX (0xFFFFFFFF)
tcp_workaround_signed_windows - 布林值
如果設定,則假定未收到視窗縮放選項意味著遠端 TCP 已損壞,並將視窗視為有符號數量。如果未設定,則假定遠端 TCP 未損壞,即使我們沒有從它們那裡收到視窗縮放選項。
- tcp_thin_linear_timeouts - 布林值
啟用對瘦流的線性超時進行動態觸發。如果設定,在超時重傳時會進行檢查,以確定流是否是瘦流(飛行中少於 4 個數據包)。只要發現流是瘦流,最多可以執行 6 次線性超時,然後才啟動指數回退模式。這改善了非激進瘦流的重傳延遲,這些流通常是時間相關的。有關瘦流的更多資訊,請參見 瘦流與 TCP
- tcp_limit_output_bytes - 整數
控制每個 TCP 套接字的 TCP 小佇列限制。TCP 大量傳送方傾向於增加飛行中的資料包,直到收到丟失通知。透過 SNDBUF 自動調整,這可能導致在本地機器(例如:Qdisc、CPU 積壓或裝置)上排隊大量資料包,損害其他流的延遲,對於典型的 pfifo_fast Qdisc 而言。tcp_limit_output_bytes 限制 Qdisc 或裝置上的位元組數,以減少人為的 RTT/cwnd 並減少緩衝區膨脹。
預設值:4194304 (4 MB)
- tcp_challenge_ack_limit - 整數
控制子網路名稱空間中 TCP 套接字的雜湊桶數量,此值必須在 clone() 或 unshare() 之前設定。
如果該值不為 0,核心將使用向上取整到 2^n 的值作為實際的雜湊桶大小。0 是一個特殊值,表示子網路名稱空間將共享初始網路名稱空間的雜湊桶。
請注意,如果核心未能分配足夠的記憶體,子名稱空間將使用全域性雜湊桶。此外,全域性雜湊桶分佈在可用的 NUMA 節點上,但子雜湊表的分配取決於當前程序的 NUMA 策略,這可能導致效能差異。
另請注意,tcp_max_tw_buckets 和 tcp_max_syn_backlog 的預設值取決於雜湊桶的大小。
可能的值:0, 2^n (n: 0 - 24 (16Mi))
預設值:0
- tcp_plb_enabled - 布林值
如果設定且底層擁塞控制(例如 DCTCP)支援並啟用 PLB 功能,則啟用 TCP PLB(Protective Load Balancing,保護性負載均衡)。PLB 在以下論文中進行了描述:https://doi.org/10.1145/3544216.3544226。根據 PLB 引數,在感知到持續擁塞時,TCP 會觸發傳出 IPv6 資料包的流標籤欄位的變化。流標籤欄位的變化可能會改變使用 ECMP/WCMP 進行路由的交換機上傳出資料包的路徑。
PLB 更改套接字 txhash,從而導致 IPv6 流標籤欄位的變化,目前對 IPv4 頭部無操作。可以透過其他網路頭部欄位(例如 TCP 或 IPv4 選項)或使用封裝(其中外部頭部由交換機用於確定下一跳)將 PLB 應用於 IPv4。在任何一種情況下,都需要進一步的主機和交換機端更改。
當設定此值時,PLB 假定擁塞訊號(例如 ECN)可用並被擁塞控制模組用於估計擁塞度量(例如 ce_ratio)。PLB 需要一個擁塞度量來做出路徑重選決策。
預設值:FALSE
- tcp_plb_idle_rehash_rounds - 整型
在沒有在途資料包的情況下,連續擁塞輪次 (RTT) 達到多少次後可以執行重新雜湊。這在 PLB 論文中被稱為 M:https://doi.org/10.1145/3544216.3544226。
可能的值:0 - 31
預設值:3
- tcp_plb_rehash_rounds - 整型
連續擁塞輪次 (RTT) 達到多少次後可以執行強制重新雜湊。設定此引數時請務必小心,因為小值會增加重傳的風險。這在 PLB 論文中被稱為 N:https://doi.org/10.1145/3544216.3544226。
可能的值:0 - 31
預設值:12
- tcp_plb_suspend_rto_sec - 整型
發生 RTO 時暫停 PLB 的時間,單位為秒。為了避免 PLB 重選路徑進入連線“黑洞”,RTO 發生後 TCP 連線會暫停 PLB 路徑重選一段隨機時間,範圍為此引數的 1 倍到 2 倍。新增隨機性是為了避免多個 TCP 連線同時重新雜湊。此值應設定為修復故障連結所需的時間。
可能的值:0 - 255
預設值:60
- tcp_plb_cong_thresh - 整型
在一個往返時間 (RTT) 內標記為擁塞的資料包的比例,用於將該輪次標記為擁塞。這在 PLB 論文中被稱為 K:https://doi.org/10.1145/3544216.3544226。
0-1 的分數範圍對映到 0-256 的範圍,以避免浮點運算。例如,128 意味著如果一輪中至少 50% 的資料包被標記為擁塞,則該輪次將被標記為擁塞。
將閾值設定為 0 意味著 PLB 無論擁塞情況如何,每 RTT 都會重新選擇路徑。這並非 PLB 的預期行為,僅應用於實驗目的。
可能的值:0 - 256
預設值:128
- tcp_pingpong_thresh - 整型
在 TCP 認為連線是“ping-pong”(請求-響應)連線(延遲確認可以帶來好處)之前,必須發生的針對估計的入站資料請求傳送的估計資料回覆的數量。
此閾值預設為 1,但某些應用程式可能需要更高的閾值才能獲得最佳效能。
可能的值:1 - 255
預設值:1
- tcp_rto_min_us - 整型
TCP 重傳超時最小值(單位:微秒)。請注意,rto_min 路由選項具有最高的配置優先順序,其次是 TCP_BPF_RTO_MIN 和 TCP_RTO_MIN_US 套接字選項,最後是此 tcp_rto_min_us sysctl。
推薦的做法是使用小於或等於 200000 微秒的值。
可能的值:1 - INT_MAX
預設值:200000
- tcp_rto_max_ms - 整型
TCP 重傳超時最大值(單位:毫秒)。請注意,TCP_RTO_MAX_MS 套接字選項具有更高的優先順序。
更改 tcp_rto_max_ms 時,瞭解 tcp_retries2 可能需要更改非常重要。
可能的值:1000 - 120,000
預設值:120,000
UDP 變數¶
- udp_l3mdev_accept - 布林值
啟用此選項允許“全域性”繫結套接字跨 L3 主域(例如 VRF)工作,無論資料包源自哪個 L3 域,都可以接收。僅當核心編譯時啟用了 CONFIG_NET_L3_MASTER_DEV 時才有效。
預設值:0 (停用)
- udp_mem - 3 個整型值的向量:min, pressure, max
允許所有 UDP 套接字排隊使用的頁數。
min: 允許所有 UDP 套接字排隊使用的頁數。
pressure: 引入此值是為了遵循 tcp_mem 的格式。
max: 引入此值是為了遵循 tcp_mem 的格式。
預設值在啟動時根據可用記憶體量計算。
- udp_rmem_min - 整型
UDP 套接字適度使用的接收緩衝區的最小大小。每個 UDP 套接字都可以使用此大小來接收資料,即使 UDP 套接字的總頁數超過 udp_mem 壓力。單位是位元組。
預設值:4K
- udp_wmem_min - 整型
UDP 沒有 tx 記憶體計數功能,此可調引數無效。
- udp_hash_entries - 整型
顯示當前網路名稱空間中 UDP 套接字的雜湊桶數量。
預設值:4194304 (4 MB)
- udp_child_ehash_entries - 整型
控制子網路名稱空間中 UDP 套接字的雜湊桶數量,此值必須在 clone() 或 unshare() 之前設定。
如果該值不為 0,核心將使用向上取整到 2^n 的值作為實際的雜湊桶大小。0 是一個特殊值,表示子網路名稱空間將共享初始網路名稱空間的雜湊桶。
請注意,如果核心未能分配足夠的記憶體,子名稱空間將使用全域性雜湊桶。此外,全域性雜湊桶分佈在可用的 NUMA 節點上,但子雜湊表的分配取決於當前程序的 NUMA 策略,這可能導致效能差異。
可能的值:0, 2^n (n: 7 (128) - 16 (64K))
預設值:0
RAW 變數¶
- raw_l3mdev_accept - 布林值
啟用此選項允許“全域性”繫結套接字跨 L3 主域(例如 VRF)工作,無論資料包源自哪個 L3 域,都可以接收。僅當核心編譯時啟用了 CONFIG_NET_L3_MASTER_DEV 時才有效。
預設值:1(啟用)
CIPSOv4 變數¶
- cipso_cache_enable - 布林值
如果設定,則啟用 CIPSO 標籤對映快取的新增和查詢。如果未設定,則忽略新增操作,查詢始終導致未命中。然而,無論設定如何,快取仍會在需要時失效,這意味著您可以安全地開啟和關閉此功能,並且快取將始終“安全”。
預設值:1
- cipso_cache_bucket_size - 整型
CIPSO 標籤快取由固定大小的雜湊表組成,每個雜湊桶包含多個快取條目。此變數限制每個雜湊桶中的條目數量;該值越大,可以快取的 CIPSO 標籤對映就越多。當給定雜湊桶中的條目數量達到此限制時,新增新條目會導致桶中最舊的條目被刪除以騰出空間。
預設值:10
- cipso_rbm_optfmt - 布林值
啟用 CIPSO 草案規範第 3.4.2.6 節中定義的“最佳化標籤 1 格式”(詳見 Documentation/netlabel)。這意味著,當設定此選項時,CIPSO 標籤將用空類別填充,以使資料包資料 32 位對齊。
預設值:0
- cipso_rbm_structvalid - 布林值
如果設定,則在呼叫 ip_options_compile() 時對 CIPSO 選項進行非常嚴格的檢查。如果未設定,則放寬在 ip_options_compile() 期間進行的檢查。無論哪種方式都是“安全”的,因為錯誤會在 CIPSO 處理程式碼的其他地方被捕獲,但將此設定為 0 (False) 應該會減少工作量(即應該更快),但可能會導致需要嚴格檢查的其他實現出現問題。
預設值:0
IP 變數¶
- ip_local_port_range - 2 個整型值
定義 TCP 和 UDP 用於選擇本地埠的本地埠範圍。第一個數字是第一個本地埠號,第二個是最後一個本地埠號。如果可能,這些數字最好具有不同的奇偶性(一個偶數和一個奇數值)。必須大於或等於 ip_unprivileged_port_start。預設值分別為 32768 和 60999。
- ip_local_reserved_ports - 逗號分隔範圍列表
指定為已知第三方應用程式保留的埠。這些埠將不會被自動埠分配使用(例如,當呼叫 connect() 或 bind() 埠號為 0 時)。顯式埠分配行為保持不變。
輸入和輸出使用的格式都是逗號分隔的範圍列表(例如,埠 1、2、3、4 和 10 的“1,2-4,10-10”)。寫入檔案將清除所有以前保留的埠,並使用輸入中給定的列表更新當前列表。
請注意,ip_local_port_range 和 ip_local_reserved_ports 設定是獨立的,核心在確定哪些埠可用於自動埠分配時會同時考慮這兩個設定。
您可以保留不在當前 ip_local_port_range 中的埠,例如
$ cat /proc/sys/net/ipv4/ip_local_port_range 32000 60999 $ cat /proc/sys/net/ipv4/ip_local_reserved_ports 8080,9148
儘管這有些冗餘。但是,如果稍後將埠範圍更改為包含保留埠的值,則此設定會很有用。另請記住,這些範圍的重疊可能會影響選擇緊隨保留埠塊之後的臨時埠的可能性。
預設值:空
- ip_unprivileged_port_start - 整型
這是一個按名稱空間劃分的 sysctl。它定義了網路名稱空間中的第一個非特權埠。特權埠需要 root 或 CAP_NET_BIND_SERVICE 才能繫結到它們。要停用所有特權埠,請將其設定為 0。它們不能與 ip_local_port_range 重疊。
預設值:1024
- ip_nonlocal_bind - 布林值
如果設定,允許程序 bind() 到非本地 IP 地址,這可能非常有用——但可能會破壞某些應用程式。
預設值:0
- ip_autobind_reuse - 布林值
預設情況下,即使新套接字和繫結到該埠的所有套接字都具有 SO_REUSEADDR,bind() 也不會自動選擇埠。ip_autobind_reuse 允許 bind() 重用埠,這在使用 bind()+connect() 時很有用,但可能會破壞某些應用程式。首選解決方案是使用 IP_BIND_ADDRESS_NO_PORT,此選項僅應由專家設定。預設值:0
- ip_dynaddr - 整型
如果設定為非零值,則啟用對動態地址的支援。如果設定為大於 1 的非零值,則在發生動態地址重寫時會列印核心日誌訊息。
預設值:0
- ip_early_demux - 布林值
最佳化輸入資料包處理,針對某些型別的本地套接字進行一次解複用。目前,我們僅對已建立的 TCP 和已連線的 UDP 套接字執行此操作。
它可能會為純路由工作負載增加額外開銷,從而降低整體吞吐量,在這種情況下,您應該停用它。
預設值:1
- ping_group_range - 2 個整型值
將 ICMP_PROTO 資料報套接字限制為組範圍內的使用者。預設值為“1 0”,表示任何人(甚至 root)都不能建立 ping 套接字。將其設定為“100 100”將授予單個組許可權。“0 4294967294”將使其對全世界開放,“100 4294967294”將使其對使用者開放,但不對守護程序開放。
- tcp_early_demux - 布林值
為已建立的 TCP 套接字啟用早期解複用。
預設值:1
- udp_early_demux - 布林值
為已連線的 UDP 套接字啟用早期解複用。如果您的系統可能遇到更多未連線的負載,請停用此選項。
預設值:1
- icmp_echo_ignore_all - 布林值
如果設定為非零值,則核心將忽略所有傳送給它的 ICMP ECHO 請求。
預設值:0
- icmp_echo_enable_probe - 布林值
如果設定為 1,則核心將響應傳送給它的 RFC 8335 PROBE 請求。
預設值:0
- icmp_echo_ignore_broadcasts - 布林值
如果設定為非零值,則核心將忽略所有透過廣播/多播發送給它的 ICMP ECHO 和 TIMESTAMP 請求。
預設值:1
- icmp_ratelimit - 整型
限制傳送與 icmp_ratemask 匹配(見下文)的 ICMP 資料包到特定目標的最高速率。0 表示停用任何限制,否則表示響應之間的最小間隔(毫秒)。請注意,另一個 sysctl,icmp_msgs_per_sec 限制了傳送到所有目標的 ICMP 資料包數量。
預設值:1000
- icmp_msgs_per_sec - 整型
限制此主機每秒傳送的 ICMP 資料包的最大數量。只有型別與 icmp_ratemask 匹配(見下文)的訊息受此限制控制。出於安全原因,每秒訊息的精確計數是隨機的。
預設值:1000
- icmp_msgs_burst - 整型
icmp_msgs_per_sec 控制每秒傳送的 ICMP 資料包數量,而 icmp_msgs_burst 控制這些資料包的突發大小。出於安全原因,精確的突發大小是隨機的。
預設值:50
- icmp_ratemask - 整型
由要限制速率的 ICMP 型別組成的掩碼。
有效位:IHGFEDCBA9876543210
預設掩碼:0000001100000011000 (6168)
位定義(參見 include/linux/icmp.h)
- icmp_ignore_bogus_error_responses - 布林值
某些路由器違反 RFC1122,向廣播幀傳送偽造響應。此類違規通常透過核心警告記錄。如果將其設定為 TRUE,核心將不會發出此類警告,從而避免日誌檔案混亂。
預設值:1
icmp_errors_use_inbound_ifaddr - 布林值
如果為零,ICMP 錯誤訊息將使用出站介面的主地址傳送。
如果為非零,訊息將使用接收到導致 ICMP 錯誤的資料包的介面的主地址傳送。這是許多網路管理員期望路由器具有的行為。它還可以使複雜的網路佈局除錯變得更加容易。
請注意,如果所選介面沒有主地址,則無論此設定如何,都將使用第一個具有主地址的非環回介面的主地址。
預設值:0
- igmp_max_memberships - 整型
更改我們可以訂閱的多播組的最大數量。預設值:20
理論最大值受限於必須在單個數據報中傳送成員報告(即報告不能跨越多個數據報,否則可能混淆交換機並離開您不打算離開的組)。
支援的組數“M”受限於可以放入單個 65535 位元組資料報的組報告條目數量。
M = 65536 - sizeof(IP 頭部) / (sizeof(組記錄))
組記錄長度可變,最小為 12 位元組。因此 net.ipv4.igmp_max_memberships 不應設定高於
(65536-24) / 12 = 5459
值 5459 假設沒有 IP 頭部選項,因此實際上此數字可能更低。
- igmp_max_msf - 整型
多播組源過濾列表中允許的最大地址數。
預設值:10
- igmp_qrv - 整型
控制 IGMP 查詢魯棒性變數(參見 RFC2236 8.1)。
預設值:2(RFC2236 8.1 規定)
最小值:1(RFC6636 4.5 規定)
- force_igmp_version - 整型
0 - (預設) 不強制 IGMP 版本,允許 IGMPv1/v2 回退。當所有 IGMPv1/v2 查詢器存在計時器過期後,將再次返回 IGMPv3 模式。
1 - 強制使用 IGMP 版本 1。如果收到 IGMPv2/v3 查詢,也將回復 IGMPv1 報告。
2 - 強制使用 IGMP 版本 2。如果收到 IGMPv1 查詢訊息,將回退到 IGMPv1。如果收到 IGMPv3 查詢,將回復報告。
3 - 強制使用 IGMP 版本 3。與預設值 0 的反應相同。
注意
這與 force_mld_version 不同,因為 IGMPv3 RFC3376 安全注意事項沒有明確說明我們可以像 MLDv2 RFC3810 那樣完全忽略其他版本訊息。因此,建議將此值設定為預設值 0。
conf/interface/*更改每個介面的特殊設定(其中“interface”是您的網路介面名稱)
conf/all/*特殊,更改所有介面的設定
- log_martians - 布林值
將具有不可能地址的資料包記錄到核心日誌中。如果 conf/{all,interface}/log_martians 中的至少一個設定為 TRUE,則介面的 log_martians 將被啟用,否則將被停用
- accept_redirects - 布林值
接受 ICMP 重定向訊息。介面的 accept_redirects 將在以下情況下啟用:
如果介面的轉發功能已啟用,則 conf/{all,interface}/accept_redirects 均為 TRUE
或
如果介面的轉發功能已停用,則 conf/{all,interface}/accept_redirects 中的至少一個為 TRUE
否則介面的 accept_redirects 將被停用
預設值
TRUE(主機)
FALSE(路由器)
- forwarding - 布林值
在此介面上啟用 IP 轉發。這控制了在此介面上接收到的資料包是否可以被轉發。
- mc_forwarding - 布林值
執行多播路由。核心需要編譯時包含 CONFIG_MROUTE,並且需要多播路由守護程序。conf/all/mc_forwarding 也必須設定為 TRUE 才能為介面啟用多播路由
- medium_id - 整型
用於透過其連線的介質來區分裝置的整數值。當廣播資料包僅在一個裝置上接收時,兩個裝置可以具有不同的 ID 值。預設值 0 表示該裝置是其介質的唯一介面,值 -1 表示介質未知。
目前,它用於改變 proxy_arp 行為:對於在連線到不同介質的兩個裝置之間轉發的資料包,proxy_arp 功能被啟用。
- proxy_arp - 布林值
執行代理 ARP。
如果 conf/{all,interface}/proxy_arp 中的至少一個設定為 TRUE,則介面的 proxy_arp 將被啟用,否則將被停用
- proxy_arp_pvlan - 布林值
私有 VLAN 代理 ARP。
基本上允許代理 ARP 回覆返回到同一介面(從中接收到 ARP 請求/徵用)。
這樣做是為了支援乙太網交換機功能,例如 RFC 3069,其中各個埠不允許相互通訊,但允許與上游路由器通訊。如 RFC 3069 所述,可以透過代理 ARP 允許這些主機透過上游路由器進行通訊。不需要與 proxy_arp 一起使用。
這項技術有不同的名稱
在 RFC 3069 中稱為 VLAN 聚合。Cisco 和 Allied Telesyn 稱之為私有 VLAN。Hewlett-Packard 稱之為源埠過濾或埠隔離。Ericsson 稱之為 MAC 強制轉發(RFC 草案)。
- proxy_delay - 整型
延遲代理響應。
當啟用 proxy_arp 或 proxy_ndp 時,延遲對鄰居請求的響應。將選擇 [0, proxy_delay) 之間的一個隨機值,設定為零表示無延遲迴復。單位為 jiffies。預設為 80。
- shared_media - 布林值
傳送(路由器)或接受(主機)RFC1620 共享介質重定向。覆蓋 secure_redirects。
如果 conf/{all,interface}/shared_media 中的至少一個設定為 TRUE,則介面的 shared_media 將被啟用,否則將被停用
預設值:TRUE
- secure_redirects - 布林值
僅接受指向介面當前閘道器列表中列出的閘道器的 ICMP 重定向訊息。即使停用,RFC1122 重定向規則仍然適用。
被 shared_media 覆蓋。
如果 conf/{all,interface}/secure_redirects 中的至少一個設定為 TRUE,則介面的 secure_redirects 將被啟用,否則將被停用
預設值:TRUE
- send_redirects - 布林值
傳送重定向,如果是路由器。
如果 conf/{all,interface}/send_redirects 中的至少一個設定為 TRUE,則介面的 send_redirects 將被啟用,否則將被停用
預設值:TRUE
- bootp_relay - 布林值
接受源地址為 0.b.c.d 但目的地不是此主機的本地資料包。假設 BOOTP 中繼守護程序將捕獲並轉發此類資料包。conf/all/bootp_relay 也必須設定為 TRUE 才能為介面啟用 BOOTP 中繼
預設值:FALSE
尚未實現。
- accept_source_route - 布林值
接受帶有 SRR 選項的資料包。conf/all/accept_source_route 也必須設定為 TRUE 才能在介面上接受帶有 SRR 選項的資料包
預設值
TRUE(路由器)
FALSE(主機)
- accept_local - 布林值
接受具有本地源地址的資料包。結合適當的路由,這可用於透過線路在兩個本地介面之間傳輸資料包並使其被正確接受。預設值:FALSE
- route_localnet - 布林值
在路由時,不要將環回地址視為火星源或目的地。這允許將 127/8 用於本地路由目的。
預設值:FALSE
- rp_filter - 整型
0 - 無源驗證。
1 - 嚴格模式,如 RFC3704 嚴格反向路徑定義:每個傳入資料包都對照 FIB 進行測試,如果介面不是最佳反向路徑,則資料包檢查將失敗。預設情況下,失敗的資料包將被丟棄。
2 - 寬鬆模式,如 RFC3704 寬鬆反向路徑定義:每個傳入資料包的源地址也對照 FIB 進行測試,如果源地址無法透過任何介面到達,則資料包檢查將失敗。
RFC3704 中當前的推薦做法是啟用嚴格模式,以防止 DDoS 攻擊中的 IP 欺騙。如果使用非對稱路由或其他複雜路由,則建議使用寬鬆模式。
在對 {interface} 進行源驗證時,使用 conf/{all,interface}/rp_filter 中的最大值。
預設值為 0。請注意,某些發行版在啟動指令碼中啟用它。
- src_valid_mark - 布林值
0 - 資料包的 fwmark 不包含在反向路徑路由查詢中。這允許僅在一個方向利用 fwmark 的非對稱路由配置,例如透明代理。
1 - 資料包的 fwmark 包含在反向路徑路由查詢中。這允許 rp_filter 在 fwmark 用於雙向路由流量時正常工作。
此設定還會影響在執行 ICMP 回覆的源地址選擇或確定 IPOPT_TS_TSANDADDR 和 IPOPT_RR IP 選項儲存的地址時對 fmwark 的利用。
使用 conf/{all,interface}/src_valid_mark 中的最大值。
預設值為 0。
- arp_filter - 布林值
1 - 允許在同一子網上擁有多個網路介面,並且每個介面的 ARP 請求根據核心是否會將 ARP 請求的 IP 地址資料包從該介面路由出去來響應(因此您必須使用基於源的路由才能使其工作)。換句話說,它允許控制哪些網絡卡(通常是 1 個)將響應 ARP 請求。
0 - (預設) 核心可以響應帶有來自其他介面地址的 arp 請求。這可能看起來不正確,但通常是有意義的,因為它增加了成功通訊的機會。在 Linux 上,IP 地址由整個主機擁有,而不是由特定介面擁有。只有在更復雜的設定(如負載均衡)中,這種行為才會導致問題。
如果 conf/{all,interface}/arp_filter 中的至少一個設定為 TRUE,則介面的 arp_filter 將被啟用,否則將被停用
- arp_announce - 整型
定義在介面上傳送的 ARP 請求中宣佈來自 IP 資料包的本地源 IP 地址的不同限制級別
0 - (預設) 使用任何介面上配置的任何本地地址
1 - 儘量避免使用不在目標子網中的本地地址。此模式在透過此介面可達的目標主機要求 ARP 請求中的源 IP 地址是其接收介面上配置的邏輯網路的一部分時很有用。當我們生成請求時,我們將檢查所有包含目標 IP 的子網,並保留源地址(如果它來自此類子網)。如果沒有此類子網,我們將根據級別 2 的規則選擇源地址。
2 - 始終為該目標使用最佳本地地址。在此模式下,我們忽略 IP 資料包中的源地址,並嘗試選擇我們 prefer 與目標主機通訊的本地地址。透過查詢所有包含目標 IP 地址的傳出介面子網上的主 IP 地址來選擇此類本地地址。如果沒有找到合適的本地地址,我們選擇傳出介面或所有其他介面上的第一個本地地址,希望我們的請求能夠收到回覆,甚至有時無論我們宣佈的源 IP 地址如何。
使用 conf/{all,interface}/arp_announce 中的最大值。
提高限制級別會增加從已解析目標接收答案的機會,而降低級別則會宣佈更有效的傳送方資訊。
- arp_ignore - 整型
定義響應接收到的解析本地目標 IP 地址的 ARP 請求時傳送回覆的不同模式
0 - (預設):回覆任何介面上配置的任何本地目標 IP 地址
1 - 僅當目標 IP 地址是傳入介面上配置的本地地址時才回復
2 - 僅當目標 IP 地址是傳入介面上配置的本地地址並且與傳送方 IP 地址同屬於此介面上的同一子網時才回復
3 - 不回覆配置為 scope host 的本地地址,僅回覆全域性和連結地址的解析
4-7 - 保留
8 - 不回覆所有本地地址
當在 {interface} 上收到 ARP 請求時,使用 conf/{all,interface}/arp_ignore 中的最大值
- arp_notify - 布林值
定義地址和裝置更改通知模式。
0
(預設):不做任何操作
1
當裝置啟動或硬體地址更改時,生成無償 ARP 請求。
- arp_accept - 整型
定義接受來自 ARP 表中尚未存在的裝置的無償 ARP (garp) 幀的行為
0 - 不在 ARP 表中建立新條目
1 - 在 ARP 表中建立新條目
2 - 僅當源 IP 地址與接收到 garp 訊息的介面上配置的地址在同一子網中時才建立新條目。
如果此設定開啟,回覆和請求型別的無償 ARP 都將觸發 ARP 表更新。
如果 ARP 表中已包含無償 ARP 幀的 IP 地址,無論此設定是否開啟,ARP 表都將更新。
- arp_evict_nocarrier - 布林值
在 NOCARRIER 事件時清除 ARP 快取。此選項對於無線裝置很重要,因為在同一網路上的接入點之間漫遊時,不應清除 ARP 快取。在大多數情況下,此值應保持預設值 (1)。
1 - (預設):在 NOCARRIER 事件時清除 ARP 快取
0 - 在 NOCARRIER 事件時不清空 ARP 快取
- mcast_solicit - 整型
處於 INCOMPLETE 狀態的多播探測的最大數量,當關聯的硬體地址未知時。預設為 3。
- ucast_solicit - 整型
處於 PROBE 狀態的單播探測的最大數量,當硬體地址正在重新確認時。預設為 3。
- app_solicit - 整型
在回退到多播探測(參見 mcast_resolicit)之前,透過 netlink 向用戶空間 ARP 守護程序傳送探測的最大數量。預設為 0。
- mcast_resolicit - 整型
在 PROBE 狀態下單播和應用程式探測之後的多播探測的最大數量。預設為 0。
- disable_policy - 布林值
停用此介面的 IPSEC 策略 (SPD)
- disable_xfrm - 布林值
停用此介面上的 IPSEC 加密,無論策略如何
- igmpv2_unsolicited_report_interval - 整型
下一次非請求 IGMPv1 或 IGMPv2 報告重傳的時間間隔,單位為毫秒。
預設值:10000 (10 秒)
- igmpv3_unsolicited_report_interval - 整型
下一次非請求 IGMPv3 報告重傳的時間間隔,單位為毫秒。
預設值:1000 (1 秒)
- ignore_routes_with_linkdown - 布林值
在執行 FIB 查詢時,忽略鏈路斷開的路由。
- promote_secondaries - 布林值
當從此介面移除主 IP 地址時,提升相應的輔助 IP 地址,而不是移除所有相應的輔助 IP 地址。
- drop_unicast_in_l2_multicast - 布林值
丟棄在鏈路層多播(或廣播)幀中收到的任何單播 IP 資料包。
此行為(對於多播)實際上是 RFC 1122 中的 SHOULD,但出於相容性原因,預設停用。
預設值:關閉 (0)
- drop_gratuitous_arp - 布林值
丟棄所有無償 ARP 幀,例如,如果網路上存在已知的良好 ARP 代理,並且不需要使用此類幀(或者在 802.11 的情況下,為了防止攻擊,不得使用)。
預設值:關閉 (0)
- tag - 整型
允許您寫入一個數字,可根據需要使用。
預設值為 0。
- xfrm4_gc_thresh - 整型
(自 Linux 4.14 起已廢棄) 開始垃圾回收 IPv4 目的地快取條目的閾值。達到此值的兩倍時,系統將拒絕新的分配。
- igmp_link_local_mcast_reports - 布林值
啟用 224.0.0.X 範圍內的鏈路本地多播組的 IGMP 報告。
預設值:TRUE
Alexey Kuznetsov. kuznet@ms2.inr.ac.ru
更新者
Andi Kleen ak@muc.de
Nicolas Delon delon.nicolas@wanadoo.fr
/proc/sys/net/ipv6/* 變數¶
IPv6 沒有 tcp_* 等全域性變數。ipv4/ 下的 tcp_* 設定也適用於 IPv6 [XXX?]。
- bindv6only - 布林值
IPV6_V6ONLY 套接字選項的預設值,該選項將 IPv6 套接字的使用限制為僅限 IPv6 通訊。
TRUE:停用 IPv4 對映地址功能
FALSE:啟用 IPv4 對映地址功能
預設值:FALSE(根據 RFC3493 規定)
- flowlabel_consistency - 布林值
保護流標籤的一致性(和唯一性)。您必須停用它才能在流標籤管理器上使用 IPV6_FL_F_REFLECT 標誌。
TRUE:啟用
FALSE:停用
預設值:TRUE
- auto_flowlabels - 整型
根據資料包的流雜湊自動生成流標籤。這允許路由器等中間裝置為等價多路徑路由等機制識別資料包流(參見 RFC 6438)。
0
自動流標籤完全停用
1
自動流標籤預設啟用,可以透過 IPV6_AUTOFLOWLABEL 套接字選項按套接字停用
2
允許自動流標籤,可以透過 IPV6_AUTOFLOWLABEL 套接字選項按套接字啟用
3
自動流標籤已啟用並強制執行,不能透過套接字選項停用
預設值:1
- flowlabel_state_ranges - 布林值
將流標籤號空間分成兩個範圍。0-0x7FFFF 預留給 IPv6 流管理器設施,0x80000-0xFFFFF 預留給 RFC6437 中描述的無狀態流標籤。
TRUE:啟用
FALSE:停用
預設值:true
- flowlabel_reflect - 整型
控制流標籤反射。在任何播環境中使用等價多路徑路由時,路徑 MTU 發現需要此功能才能正常工作。參見 RFC 7690 和:https://tools.ietf.org/html/draft-wang-6man-flow-label-reflection-01
這是一個位掩碼。
1: 對已建立的流啟用
請注意,這會阻止自動流標籤更改,例如“tcp: 收到虛假重傳時更改 IPv6 流標籤”和“tcp: 每次 SYN 和 RTO 重傳時更改 txhash”中進行的操作
2: 對 TCP RESET 資料包啟用(無活躍偵聽器)如果設定,在關閉埠上響應 SYN 資料包傳送的 RST 資料包將反映傳入流標籤。
4: 對 ICMPv6 回顯回覆訊息啟用。
預設值:0
- fib_multipath_hash_policy - 整數
控制多路徑路由使用哪種雜湊策略。
預設值:0 (三層)
可能的值
0 - 第 3 層(源和目的地址加上流標籤)
1 - 第 4 層(標準 5 元組)
2 - 三層或(如果存在)內部三層
3 - 自定義多路徑雜湊。用於多路徑雜湊計算的欄位由 fib_multipath_hash_fields sysctl 確定
- fib_multipath_hash_fields - 無符號整數
當 fib_multipath_hash_policy 設定為 3(自定義多路徑雜湊)時,用於多路徑雜湊計算的欄位由此 sysctl 確定。
此值是一個位掩碼,用於啟用多路徑雜湊計算的各種欄位。
可能的欄位有
0x0001
源 IP 地址
0x0002
目的 IP 地址
0x0004
IP 協議
0x0008
流標籤
0x0010
源埠
0x0020
目的埠
0x0040
內部源 IP 地址
0x0080
內部目的 IP 地址
0x0100
內部 IP 協議
0x0200
內部流標籤
0x0400
內部源埠
0x0800
內部目的埠
預設值:0x0007(源 IP、目的 IP 和 IP 協議)
- anycast_src_echo_reply - 布林值
控制任何播地址作為 ICMPv6 回顯回覆源地址的使用
TRUE:啟用
FALSE:停用
預設值:FALSE
- idgen_delay - 整型
控制檢測到 DAD 衝突後重試隱私穩定地址生成的時間延遲(秒)。
預設值:1(根據 RFC7217 規定)
- idgen_retries - 整型
控制檢測到 DAD 衝突後生成穩定隱私地址的重試次數。
預設值:3(根據 RFC7217 規定)
- mld_qrv - 整型
控制 MLD 查詢魯棒性變數(參見 RFC3810 9.1)。
預設值:2(根據 RFC3810 9.1 規定)
最小值:1(RFC6636 4.5 規定)
- max_dst_opts_number - 整型
目標選項擴充套件頭部中允許的最大非填充 TLV 數量。如果此值小於零,則不允許未知選項,並且允許的已知 TLV 數量為此數字的絕對值。
預設值:8
- max_hbh_opts_number - 整型
逐跳選項擴充套件頭部中允許的最大非填充 TLV 數量。如果此值小於零,則不允許未知選項,並且允許的已知 TLV 數量為此數字的絕對值。
預設值:8
- max_dst_opts_length - 整型
目標選項擴充套件頭部允許的最大長度。
預設值:INT_MAX(無限制)
- max_hbh_length - 整型
逐跳選項擴充套件頭部允許的最大長度。
預設值:INT_MAX(無限制)
- skip_notify_on_dev_down - 布林值
控制裝置關閉或刪除時是否為移除的路由生成 RTM_DELROUTE 訊息。IPv4 不生成此訊息;IPv6 預設生成。將此 sysctl 設定為 true 會跳過該訊息,使 IPv4 和 IPv6 在依賴使用者空間快取跟蹤連結事件和清除路由方面保持一致。
預設值:false(生成訊息)
- nexthop_compat_mode - 布林值
新的下一跳 API 提供了一種獨立於字首管理下一跳的方法。預設啟用與舊路由格式的向後相容性,這意味著路由轉儲和通知包含新的下一跳屬性,但也包含完整的、擴充套件的下一跳定義。此外,下一跳配置的更新或刪除會為使用下一跳的每個 FIB 條目生成路由通知。一旦系統理解了新的 API,可以停用此 sysctl 以透過停用下一跳擴充套件和冗餘通知來實現新 API 的全部效能優勢。
請注意,作為向後相容模式,現代功能的轉儲可能不完整或不正確。例如,彈性組不會顯示為彈性組,而只是顯示為下一跳列表。此外,不適合 8 位的權重將顯示不正確。
預設值:true(向後相容模式)
- fib_notify_on_flag_change - 整數
每當 RTM_F_OFFLOAD/RTM_F_TRAP/RTM_F_OFFLOAD_FAILED 標誌更改時,是否發出 RTM_NEWROUTE 通知。
將路由安裝到核心後,使用者空間會收到確認,這意味著路由已安裝在核心中,但不一定安裝在硬體中。硬體中已安裝的路由也可能改變其動作,從而改變其標誌。例如,一個捕獲資料包的主機路由在安裝 IPinIP/VXLAN 隧道後可以被“提升”以執行解封裝。這些通知將向用戶空間指示路由的狀態。
預設值:0(不發出通知。)
可能的值
0 - 不發出通知。
1 - 發出通知。
2 - 僅針對 RTM_F_OFFLOAD_FAILED 標誌更改發出通知。
- ioam6_id - 整型
定義此節點的 IOAM ID。總共 32 位中僅使用 24 位。
最小值:0 最大值:0xFFFFFF
預設值:0xFFFFFF
- ioam6_id_wide - 長整型
定義此節點的寬 IOAM ID。總共 64 位中僅使用 56 位。可以與 ioam6_id 不同。
最小值:0 最大值:0xFFFFFFFFFFFFFF
預設值:0xFFFFFFFFFFFFFF
IPv6 分片
- ip6frag_high_thresh - 整型
用於重組 IPv6 分片的最大記憶體。當為此目的分配 ip6frag_high_thresh 位元組的記憶體時,分片處理器將丟棄資料包,直到達到 ip6frag_low_thresh。
- ip6frag_low_thresh - 整型
參見 ip6frag_high_thresh
- ip6frag_time - 整型
將 IPv6 分片保留在記憶體中的時間,單位為秒。
conf/default/*:更改介面特定的預設設定。
這些設定將在建立新介面時使用。
conf/all/*:更改所有介面特定的設定。
[XXX:除了轉發之外還有其他特殊功能嗎?]
- conf/all/disable_ipv6 - 布林值
更改此值與更改
conf/default/disable_ipv6設定以及所有每個介面的disable_ipv6設定為相同的值是相同的。讀取此值沒有任何特殊含義。它不表示 IPv6 支援是啟用還是停用。即使某個介面將
disable_ipv6設定為 0 並配置了 IPv6 地址,返回的值也可能為 1。- conf/all/forwarding - 布林值
啟用所有介面之間的全域性 IPv6 轉發。
IPv4 和 IPv6 在這裡的工作方式不同;例如,必須使用 netfilter 來控制哪些介面可以轉發資料包,哪些不能。
這還將所有介面的主機/路由器設定“forwarding”設定為指定值。詳見下文。
這被稱為全域性轉發。
- proxy_ndp - 布林值
執行代理 NDP。
- fwmark_reflect - 布林值
控制與套接字無關的核心生成 IPv6 回覆資料包(例如 TCP RST 或 ICMPv6 回顯回覆)的 fwmark。如果未設定,這些資料包的 fwmark 為零。如果設定,它們具有其回覆的資料包的 fwmark。
預設值:0
conf/interface/*:更改每個介面的特殊設定。
某些設定的功能行為根據本地轉發是否啟用而有所不同。
- accept_ra - 整型
接受路由器通告;使用它們進行自動配置。
它還決定是否傳送路由器請求。當且僅當功能設定為接受路由器通告時,才會傳送路由器請求。
可能的值為
0
不接受路由器通告。
1
如果轉發被停用,則接受路由器通告。
2
覆蓋轉發行為。即使啟用了轉發,也接受路由器通告。
功能預設
如果本地轉發被停用,則啟用。
如果本地轉發被啟用,則停用。
- accept_ra_defrtr - 布林值
在路由器通告中學習預設路由器。
功能預設
如果 accept_ra 啟用,則啟用。
如果 accept_ra 停用,則停用。
- ra_defrtr_metric - 無符號整型
透過路由器通告學習到的預設路由的路由度量。此值將被分配為透過 IPv6 路由器通告學習到的預設路由的度量。僅當 accept_ra_defrtr 啟用時才生效。
- 可能的值
1 到 0xFFFFFFFF
預設值:IP6_RT_PRIO_USER 即 1024。
- accept_ra_from_local - 布林值
如果 RA 其他方面正常且可接受,則接受源地址在本地機器上的 RA。
預設是不接受這些,因為它可能是一個非預期的網路迴圈。
功能預設
如果在特定介面上啟用了 accept_ra_from_local,則啟用。
如果在特定介面上停用了 accept_ra_from_local,則停用。
- accept_ra_min_hop_limit - 整型
路由器通告中的最小跳數限制資訊。
路由器通告中跳數限制資訊小於此變數的將被忽略。
預設值:1
- accept_ra_min_lft - 整型
路由器通告中可接受的最小生存期值。
生存期小於此值的 RA 部分將被忽略。生存期為零的部分不受影響。
預設值:0
- accept_ra_pinfo - 布林值
在路由器通告中學習字首資訊。
功能預設
如果 accept_ra 啟用,則啟用。
如果 accept_ra 停用,則停用。
- ra_honor_pio_life - 布林值
是否使用 RFC4862 第 5.5.3e 節來確定與路由器通告字首資訊選項中傳送的字首匹配的地址的有效生存期。
如果啟用,PIO 有效生存期將始終被遵守。
如果停用,則使用 RFC4862 第 5.5.3e 節來確定地址的有效生存期。
預設值:0 (停用)
- ra_honor_pio_pflag - 布林值
字首資訊選項 P 標誌表示網路可以使用 DHCPv6-PD 為每個客戶端分配唯一的 IPv6 字首。當用戶空間 DHCPv6-PD 客戶端執行時,可以啟用此 sysctl 使 P 標誌生效:即,P 標誌抑制同一 PIO 中 A 標誌的任何影響。對於給定的 PIO,P=1 和 A=1 被視為 A=0。
如果停用,則 P 標誌將被忽略。
如果啟用,P 標誌將停用給定字首資訊選項的 SLAAC 自動配置。
預設值:0 (停用)
- accept_ra_rt_info_min_plen - 整型
RA 中路由資訊的最小字首長度。
字首小於此變數的路由資訊將被忽略。
功能預設
如果 accept_ra_rtr_pref 啟用,則為 0。
如果 accept_ra_rtr_pref 停用,則為 -1。
- accept_ra_rt_info_max_plen - 整型
RA 中路由資訊的最大字首長度。
字首大於此變數的路由資訊將被忽略。
功能預設
如果 accept_ra_rtr_pref 啟用,則為 0。
如果 accept_ra_rtr_pref 停用,則為 -1。
- accept_ra_rtr_pref - 布林值
接受 RA 中的路由器優先順序。
功能預設
如果 accept_ra 啟用,則啟用。
如果 accept_ra 停用,則停用。
- accept_ra_mtu - 布林值
應用 RA 選項 5 (RFC4861) 中指定的 MTU 值。如果停用,RA 中指定的 MTU 將被忽略。
功能預設
如果 accept_ra 啟用,則啟用。
如果 accept_ra 停用,則停用。
- accept_redirects - 布林值
接受重定向。
功能預設
如果本地轉發被停用,則啟用。
如果本地轉發被啟用,則停用。
- accept_source_route - 整型
接受源路由(路由擴充套件頭部)。
>= 0: 僅接受路由頭部型別 2。
< 0: 不接受路由頭部。
預設值:0
- autoconf - 布林值
使用路由器通告中的字首資訊自動配置地址。
功能預設
如果 accept_ra_pinfo 啟用,則啟用。
如果 accept_ra_pinfo 停用,則停用。
- dad_transmits - 整型
傳送重複地址檢測探測的數量。
預設值:1
- forwarding - 整型
配置介面特定的主機/路由器行為。
注意
建議所有介面使用相同的設定;混合路由器/主機場景相當罕見。
可能的值為
0 轉發已停用
1 轉發已啟用
FALSE (0):
預設情況下,假定為主機行為。這意味著
在鄰居通告中未設定 IsRouter 標誌。
如果 accept_ra 為 TRUE(預設),則傳送路由器請求。
如果 accept_ra 為 TRUE(預設),則接受路由器通告(並進行自動配置)。
如果 accept_redirects 為 TRUE(預設),則接受重定向。
TRUE (1):
如果本地轉發已啟用,則假定為路由器行為。這意味著與上述情況正好相反
在鄰居通告中設定 IsRouter 標誌。
除非 accept_ra 為 2,否則不傳送路由器請求。
除非 accept_ra 為 2,否則忽略路由器通告。
忽略重定向。
預設值:0(停用),如果全域性轉發停用(預設),否則為 1(啟用)。
- hop_limit - 整型
要設定的預設跳數限制。
預設值:64
- mtu - 整型
預設最大傳輸單元
預設值:1280 (IPv6 要求的最小值)
- ip_nonlocal_bind - 布林值
如果設定,允許程序 bind() 到非本地 IPv6 地址,這可能非常有用——但可能會破壞某些應用程式。
預設值:0
- router_probe_interval - 整型
RFC4191 中描述的路由器探測之間的最小間隔(秒)。
預設值:60
- router_solicitation_delay - 整型
介面啟動後等待發送路由器請求的秒數。
預設值:1
- router_solicitation_interval - 整型
路由器請求之間等待的秒數。
預設值:4
- router_solicitations - 整型
在假定沒有路由器存在之前,傳送路由器請求的數量。
預設值:3
- use_oif_addrs_only - 布林值
啟用時,透過此介面路由的目的地的候選源地址僅限於此介面上配置的地址集(參見 RFC 6724,第 4 節)。
預設值:false
- use_tempaddr - 整型
隱私擴充套件 (RFC3041) 的偏好。
<= 0 : 停用隱私擴充套件
== 1 : 啟用隱私擴充套件,但優先使用公共地址而不是臨時地址。
> 1 : 啟用隱私擴充套件並優先使用臨時地址而不是公共地址。
預設值
0(對於大多數裝置)
-1(對於點對點裝置和環回裝置)
- temp_valid_lft - 整型
臨時地址的有效生存期(秒)。如果小於所需的最小生存期(通常為 5-7 秒),則不會建立臨時地址。
預設值:172800 (2 天)
- temp_prefered_lft - 整型
臨時地址的首選生存期(秒)。如果 temp_prefered_lft 小於所需的最小生存期(通常為 5-7 秒),則首選生存期為所需的最小生存期。如果 temp_prefered_lft 大於 temp_valid_lft,則首選生存期為 temp_valid_lft。
預設值:86400 (1 天)
- keep_addr_on_down - 整型
在介面關閉事件時保留所有 IPv6 地址。如果設定,則不清除沒有過期時間的靜態全域性地址。
>0 : 啟用
0 : 系統預設
<0 : 停用
預設值:0(地址被移除)
- max_desync_factor - 整型
DESYNC_FACTOR 的最大值,這是一個隨機值,可確保客戶端不會相互同步並在完全相同的時間生成新地址。值以秒為單位。
預設值:600
- regen_min_advance - 整型
在當前臨時地址被廢棄之前,至少提前多久(秒)建立新的臨時地址。此值將新增到可能需要重複地址檢測來確定何時建立新地址的時間量中。Linux 允許將此值設定為小於預設值 2 秒,但小於 2 的值不符合 RFC 8981。
預設值:2
- regen_max_retry - 整型
在放棄嘗試生成有效臨時地址之前嘗試的次數。
預設值:5
- max_addresses - 整型
每個介面自動配置地址的最大數量。設定為零表示停用此限制。不建議將此值設定得太大(或設定為零),因為它很容易導致核心崩潰,因為允許建立太多地址。
預設值:16
- disable_ipv6 - 布林值
停用 IPv6 操作。如果 accept_dad 設定為 2,並且鏈路本地地址的 DAD 失敗,則此值將動態設定為 TRUE。
預設值:FALSE(啟用 IPv6 操作)
當此值從 1 更改為 0(正在啟用 IPv6)時,它將在給定介面上動態建立一個鏈路本地地址,並根據需要啟動重複地址檢測。
當此值從 0 更改為 1(正在停用 IPv6)時,它將動態刪除給定介面上的所有地址和路由。從現在開始,將無法向所選介面新增地址/路由。
- accept_dad - 整型
是否接受 DAD(重複地址檢測)。
0
停用 DAD
1
啟用 DAD(預設)
2
啟用 DAD,如果發現基於 MAC 的重複鏈路本地地址,則停用 IPv6 操作。
給定介面上的 DAD 操作和模式將根據 conf/{all,interface}/accept_dad 的最大值進行選擇。
- force_tllao - 布林值
即使響應單播鄰居請求,也啟用傳送目標鏈路層地址選項。
預設值:FALSE
引用 RFC 2461,第 4.4 節,目標鏈路層地址
“必須包含此選項以進行多播請求,以避免當對等節點沒有快取條目來返回鄰居通告訊息時出現無限的鄰居請求“遞迴”。在響應單播請求時,可以省略此選項,因為請求的傳送者具有正確的鏈路層地址;否則,它就無法傳送單播請求。然而,在這種情況下包含鏈路層地址只增加了很小的開銷,並消除了傳送者在收到先前請求的響應之前刪除快取的鏈路層地址的潛在競態條件。”
- ndisc_notify - 布林值
定義地址和裝置更改通知模式。
0 - (預設):不做任何操作
1 - 當裝置啟動或硬體地址更改時,生成非請求鄰居通告。
- ndisc_tclass - 整型
傳送 IPv6 鄰居發現(路由器請求、路由器通告、鄰居請求、鄰居通告、重定向)訊息時預設使用的 IPv6 流量類別。這 8 位可以解釋為:6 個高位用於 DSCP 值,2 個低位表示 ECN(您可能希望將其清除)。
0 - (預設)
- ndisc_evict_nocarrier - 布林值
在 NOCARRIER 事件時清除鄰居發現表。此選項對於無線裝置很重要,因為在同一網路上的接入點之間漫遊時,不應清除鄰居發現快取。在大多數情況下,此值應保持預設值 (1)。
1 - (預設):在 NOCARRIER 事件時清除鄰居發現快取。
0 - 在 NOCARRIER 事件時不清除鄰居發現快取。
- mldv1_unsolicited_report_interval - 整型
下一次非請求 MLDv1 報告重傳的時間間隔,單位為毫秒。
預設值:10000 (10 秒)
- mldv2_unsolicited_report_interval - 整型
下一次非請求 MLDv2 報告重傳的時間間隔,單位為毫秒。
預設值:1000 (1 秒)
- force_mld_version - 整型
0 - (預設) 不強制 MLD 版本,允許 MLDv1 回退
1 - 強制使用 MLD 版本 1
2 - 強制使用 MLD 版本 2
- suppress_frag_ndisc - 整型
控制 RFC 6980(IPv6 分片與 IPv6 鄰居發現的安全影響)行為
1 - (預設) 丟棄分片的鄰居發現數據包
0 - 允許分片的鄰居發現數據包
- optimistic_dad - 布林值
是否執行樂觀重複地址檢測 (RFC 4429)。
0: 停用(預設)
1: 啟用
如果 conf/{all,interface}/optimistic_dad 中的至少一個設定為 1,則啟用介面的樂觀重複地址檢測,否則停用。
- use_optimistic - 布林值
如果啟用,在源地址選擇期間不將樂觀地址分類為已廢棄。首選地址仍將優先於樂觀地址,但受源地址選擇演算法中其他排名的影響。
0: 停用(預設)
1: 啟用
如果 conf/{all,interface}/use_optimistic 中的至少一個設定為 1,則啟用,否則停用。
- stable_secret - IPv6 地址
此 IPv6 地址將用作生成鏈路本地地址和自動配置地址的秘密。設定此秘密後生成的所有地址預設將是穩定的隱私地址。這可以透過 addrgenmode ip-link 進行更改。conf/default/stable_secret 用作名稱空間的秘密,介面特定的可以覆蓋它。拒絕寫入 conf/all/stable_secret。
建議在系統安裝期間生成此秘密,並在此後保持穩定。
預設情況下,穩定秘密未設定。
- addr_gen_mode - 整型
定義如何生成鏈路本地和自動配置地址。
0
基於 EUI64 生成地址(預設)
1
不生成鏈路本地地址,對自動配置生成的地址使用 EUI64
2
使用 stable_secret 中的秘密生成穩定的隱私地址 (RFC7217)
3
如果未設定,則使用隨機秘密生成穩定的隱私地址
- drop_unicast_in_l2_multicast - 布林值
丟棄在鏈路層多播(或廣播)幀中收到的任何單播 IPv6 資料包。
預設情況下,此功能是關閉的。
- drop_unsolicited_na - 布林值
丟棄所有非請求鄰居通告,例如,如果網路上存在已知的良好 NA 代理,並且不需要使用此類幀(或者在 802.11 的情況下,為了防止攻擊,不得使用)。
預設情況下,此功能是關閉的。
- accept_untracked_na - 整型
定義接受來自鄰居快取中不存在的裝置的鄰居通告的行為
0 - (預設) 不接受非請求和未跟蹤的鄰居通告。
1 - 當收到帶有目標鏈路層地址選項的鄰居通告(無論是請求的還是非請求的)時,如果鄰居快取中尚不存在所通告的 IPv6 地址的條目,則為路由器在 STALE 狀態下新增新的鄰居快取條目。如果沒有此旋鈕,收到的針對未跟蹤地址(鄰居快取中不存在)的 NA 將被靜默忽略。
這符合 RFC9131 中記載的路由器端行為。
此優先順序低於 drop_unsolicited_na。
這將最佳化直接連線主機發起初始鏈外通訊的返回路徑,確保開啟此設定的第一跳路由器不必緩衝初始返回資料包以進行鄰居請求。前提是主機配置為在介面啟動時傳送非請求鄰居通告。此設定應與主機上的 ndisc_notify 設定結合使用,以滿足此前提。
2 - 擴充套件選項 (1) 以僅在源 IP 地址與接收鄰居通告的介面上配置的地址在同一子網中時才新增新的鄰居快取條目。
- enhanced_dad - 布林值
根據 RFC7527,在用於重複地址檢測的 IPv6 鄰居請求訊息中包含一個隨機數選項。收到的 DAD NS 僅當隨機數不同時才表示重複地址。這避免了由於我們傳送的 NS 訊息的環回而導致的任何錯誤重複檢測。除非 conf/{all,interface}/enhanced_dad 都設定為 FALSE,否則將在介面上傳送隨機數選項。
預設值:TRUE
icmp/*:¶
- ratelimit - 整型
限制傳送 ICMPv6 訊息的最高速率。
0 表示停用任何限制,否則表示響應之間的最小間隔(毫秒)。
預設值:1000
- ratemask - 逗號分隔範圍列表
對於與 ratemask 中範圍匹配的 ICMPv6 訊息型別,根據 ratelimit 引數限制訊息的傳送。
輸入和輸出使用的格式都是逗號分隔的範圍列表(例如,ICMPv6 訊息型別 0 到 127 和 129 的“0-127,129”)。寫入檔案將清除所有以前的 ICMPv6 訊息類型範圍,並使用輸入更新當前列表。
請參閱:https://www.iana.org/assignments/icmpv6-parameters/icmpv6-parameters.xhtml 獲取 ICMPv6 訊息型別的數值,例如,回顯請求是 128,回顯回覆是 129。
預設值:0-1,3-127(對 ICMPv6 錯誤進行速率限制,除了資料包過大)
- echo_ignore_all - 布林值
如果設定為非零值,則核心將忽略所有透過 IPv6 協議傳送給它的 ICMP ECHO 請求。
預設值:0
- echo_ignore_multicast - 布林值
如果設定為非零值,則核心將忽略所有透過多播方式傳送給它的 ICMP ECHO 請求,這些請求透過 IPv6 協議傳輸。
預設值:0
- echo_ignore_anycast - 布林值
如果設定為非零,則核心將忽略所有透過 IPv6 協議傳送給它並目的地為任何播地址的 ICMP ECHO 請求。
預設值:0
- error_anycast_as_unicast - 布林值
如果設定為 1,則核心將響應由傳送給它的 IPv6 協議中目的地為任播地址的請求產生的 ICMP 錯誤,實質上是將任播視為單播。
預設值:0
- xfrm6_gc_thresh - 整型
(自 Linux 4.14 起已廢棄) 開始垃圾回收 IPv6 目的地快取條目的閾值。達到此值的兩倍時,系統將拒絕新的分配。
IPv6 更新者:Pekka Savola <pekkas@netcore.fi> YOSHIFUJI Hideaki / USAGI Project <yoshfuji@linux-ipv6.org>
/proc/sys/net/bridge/* 變數:¶
- bridge-nf-call-arptables - 布林值
1:將橋接的 ARP 流量傳遞到 arptables 的 FORWARD 鏈。
0:停用此功能。
預設值:1
- bridge-nf-call-iptables - 布林值
1:將橋接的 IPv4 流量傳遞到 iptables 的鏈。
0:停用此功能。
預設值:1
- bridge-nf-call-ip6tables - 布林值
1:將橋接的 IPv6 流量傳遞到 ip6tables 的鏈。
0:停用此功能。
預設值:1
- bridge-nf-filter-vlan-tagged - 布林值
1:將橋接的 VLAN 標記 ARP/IP/IPv6 流量傳遞到 {arp,ip,ip6}tables。
0:停用此功能。
預設值:0
- bridge-nf-filter-pppoe-tagged - 布林值
1:將橋接的 pppoe 標記 IP/IPv6 流量傳遞到 {ip,ip6}tables。
0:停用此功能。
預設值:0
- bridge-nf-pass-vlan-input-dev - 布林值
1:如果 bridge-nf-filter-vlan-tagged 啟用,嘗試在網橋上找到一個 VLAN 介面並將 netfilter 輸入裝置設定為該 VLAN。這允許使用例如“iptables -i br0.1”,並使 REDIRECT 目標與 VLAN-on-top-of-bridge 介面配合工作。如果未找到匹配的 VLAN 介面,或者此開關關閉,則輸入裝置設定為網橋介面。
0:停用網橋 netfilter VLAN 介面查詢。
預設值:0
proc/sys/net/sctp/* 變數:¶
- addip_enable - 布林值
啟用或停用 RFC5061 中指定的動態地址重配置 (ADD-IP) 功能擴充套件。此擴充套件提供了為 SCTP 關聯動態新增和移除新地址的能力。
1: 啟用擴充套件。
0: 停用擴充套件。
預設值:0
- pf_enable - 整型
啟用或停用 pf(pf 是 potentially failed 的縮寫)狀態。pf_retrans > path_max_retrans 的值也會停用 pf 狀態。也就是說,pf_enable 和 pf_retrans > path_max_retrans 之一都可以停用 pf 狀態。由於 pf_retrans 和 path_max_retrans 可以由使用者空間應用程式更改,有時使用者期望透過 pf_retrans > path_max_retrans 的值來停用 pf 狀態,但偶爾 pf_retrans 或 path_max_retrans 的值被使用者應用程式更改,導致此 pf 狀態被啟用。因此,有必要新增此項以動態啟用和停用 pf 狀態。詳情請參閱:https://datatracker.ietf.org/doc/draft-ietf-tsvwg-sctp-failover。
1: 啟用 pf。
0: 停用 pf。
預設值:1
- pf_expose - 整型
取消設定或啟用/停用 pf(pf 是 potentially failed 的縮寫)狀態暴露。應用程式可以控制在 SCTP_PEER_ADDR_CHANGE 事件和 SCTP_GET_PEER_ADDR_INFO sockopt 中 pf 路徑狀態的暴露。當它未設定時,不會發送帶有 SCTP_ADDR_PF 狀態的 SCTP_PEER_ADDR_CHANGE 事件,並且可以透過 SCTP_GET_PEER_ADDR_INFO sockopt 獲取 SCTP_PF 狀態傳輸資訊;當它啟用時,將為傳輸變為 SCTP_PF 狀態傳送 SCTP_PEER_ADDR_CHANGE 事件,並且可以透過 SCTP_GET_PEER_ADDR_INFO sockopt 獲取 SCTP_PF 狀態傳輸資訊;當它停用時,將不會發送 SCTP_PEER_ADDR_CHANGE 事件,並且在嘗試透過 SCTP_GET_PEER_ADDR_INFO sockopt 獲取 SCTP_PF 狀態傳輸資訊時返回 -EACCES。
0: 取消設定 pf 狀態暴露,與舊應用程式相容。
1: 停用 pf 狀態暴露。
2: 啟用 pf 狀態暴露。
預設值:0
- addip_noauth_enable - 布林值
動態地址重配置 (ADD-IP) 要求使用認證來保護新增或刪除新地址的操作。此要求是為了防止未經授權的主機劫持關聯。然而,較舊的實現可能沒有實現此要求,但允許 ADD-IP 擴充套件。為了互操作性,我們提供了此變數來控制認證要求的強制執行。
1
允許在沒有認證的情況下使用 ADD-IP 擴充套件。此選項僅應在封閉環境中設定,以實現與舊實現的互操作性。
0
強制執行認證要求
預設值:0
- auth_enable - 布林值
啟用或停用認證塊擴充套件。此擴充套件提供了傳送和接收認證塊的能力,並且是動態地址重配置 (ADD-IP) 擴充套件安全操作所必需的。
1: 啟用此擴充套件。
0: 停用此擴充套件。
預設值:0
- prsctp_enable - 布林值
啟用或停用部分可靠性擴充套件 (RFC3758),該擴充套件用於通知對等方某個 DATA 不再可預期。
1: 啟用擴充套件
0: 停用
預設值:1
- max_burst - 整型
最初可以傳送的新資料包數量的限制。它控制生成的流量的突發性。
預設值:4
- association_max_retrans - 整型
設定關聯在判定遠端不可達之前可以嘗試重傳的最大次數。如果超過此值,關聯將被終止。
預設值:10
- max_init_retransmits - 整型
關聯在宣告目的地不可達並終止之前,將嘗試重傳 INIT 和 COOKIE-ECHO 塊的最大次數。
預設值:8
- path_max_retrans - 整型
在給定路徑上將嘗試的最大重傳次數。一旦超過此閾值,該路徑被視為不可達,當關聯是多宿主時,新流量將使用不同的路徑。
預設值:5
- pf_retrans - 整型
在將流量重定向到備用傳輸(如果存在)之前,在給定路徑上將嘗試的重傳次數。請注意,這與 path_max_retrans 不同,因為超過 pf_retrans 閾值的路徑仍可使用。它僅在堆疊選擇傳輸路徑時才被降級。此設定主要用於啟用快速故障轉移機制,而無需將 path_max_retrans 降低到非常低的值。詳情請參閱:http://www.ietf.org/id/draft-nishida-tsvwg-sctp-failover-05.txt。另請注意,pf_retrans > path_max_retrans 的值會停用此功能。由於 pf_retrans 和 path_max_retrans 都可以由使用者空間應用程式更改,因此使用變數 pf_enable 來停用 pf 狀態。
預設值:0
- ps_retrans - 整型
Primary.Switchover.Max.Retrans (PSMR),這是一個來自 rfc7829 中第 5 節“主路徑切換”的可調引數。當舊主路徑上的路徑錯誤計數超過 PSMR 時,主路徑將更改為另一個活動路徑,以便“SCTP 傳送方即使舊主目的地址再次變為活動狀態,也允許在新工作路徑上繼續資料傳輸”。請注意,此功能預設透過將每個 netns 的“ps_retrans”初始化為 0xffff 來停用,並且在透過 sysctl 更改時,其值不能小於“pf_retrans”。
預設值:0xffff
- rto_initial - 整型
用於計算往返時間的初始往返超時值(毫秒)。這是重傳的初始時間間隔。
預設值:3000
- rto_max - 整型
往返超時值的最大值(毫秒)。這是重傳之間可能經過的最大時間間隔。
預設值:60000
- rto_min - 整型
往返超時值的最小值(毫秒)。這是重傳之間可能經過的最小時間間隔。
預設值:1000
- hb_interval - 整型
心跳(HEARTBEAT)塊之間的時間間隔(毫秒)。這些塊在空閒路徑上以指定的時間間隔傳送,用於探測兩個關聯之間給定路徑的狀態。
預設值:30000
- sack_timeout - 整型
實現將等待發送SACK的時間量(毫秒)。
這意味著非常接近的主機之間的流可以使用更大的 TSO 資料包,從而降低其 CPU 成本。
- valid_cookie_life - 整型
SCTP cookie的預設生命週期(毫秒)。此cookie在關聯建立期間使用。
預設值:60000
- cookie_preserve_enable - 布林型
啟用或停用擴充套件SCTP關聯建立階段使用的SCTP cookie生命週期的功能
1:啟用cookie生命週期擴充套件。
0: 停用
預設值:1
- cookie_hmac_alg - 字串
選擇監聽SCTP套接字在INIT-ACK塊中向連線客戶端傳送cookie值時使用的HMAC演算法。有效值包括
md5
sha1
none
將md5或sha1指定為所選演算法的能力取決於這些演算法在構建時(CONFIG_CRYPTO_MD5和CONFIG_CRYPTO_SHA1)的配置。
預設值:取決於配置。如果可用則為MD5,否則如果可用則為SHA1,否則為none。
- rcvbuf_policy - 整型
確定接收緩衝區是歸屬於套接字還是關聯。SCTP支援在單個套接字上建立多個關聯的功能。使用此功能時,單個滯留關聯(緩衝大量資料)可能會透過消耗所有接收緩衝區空間來阻止其他關聯傳輸其資料。為了解決這個問題,rcvbuf_policy 可以設定為將接收器緩衝區空間分配給每個關聯而不是套接字。這可以防止上述阻塞。
1:rcvbuf空間按關聯分配
0:rcvbuf空間按套接字分配
預設值:0
- sndbuf_policy - 整型
與上述rcvbuf_policy類似,這適用於傳送緩衝區空間。
1:傳送緩衝區按關聯跟蹤
0:傳送緩衝區按套接字跟蹤。
預設值:0
- sctp_mem - 3個整型值的向量:min, pressure, max
允許所有SCTP套接字排隊使用的頁數。
min:低於此頁數時,SCTP 不會關注其記憶體佔用。當SCTP分配的記憶體量超過此數值時,SCTP開始適度使用記憶體。
pressure: 引入此值是為了遵循 tcp_mem 的格式。
max:允許所有SCTP套接字排隊使用的頁數。
預設值在啟動時根據可用記憶體量計算。
- sctp_rmem - 3個整型值的向量:min, default, max
僅使用第一個值(“min”),“default”和“max”被忽略。
min:SCTP套接字使用的最小接收緩衝區大小。即使在適度記憶體壓力下,也保證每個SCTP套接字(但不包括關聯)都能獲得此大小。
預設值:4K
- sctp_wmem - 3個整型值的向量:min, default, max
僅使用第一個值(“min”),“default”和“max”被忽略。
min:SCTP套接字可以使用的最小發送緩衝區大小。即使在適度記憶體壓力下,也保證每個SCTP套接字(但不包括關聯)都能獲得此大小。
預設值:4K
- addr_scope_policy - 整型
控制IPv4地址範圍(作用域)- draft-stewart-tsvwg-sctp-ipv4-00
0 - 停用IPv4地址範圍(作用域)
1 - 啟用IPv4地址範圍(作用域)
2 - 遵循草案但允許IPv4私有地址
3 - 遵循草案但允許IPv4鏈路本地地址
預設值:1
- udp_port - 整型
本地UDP隧道套接字的監聽埠。通常它使用IANA分配的UDP埠號9899(sctp-tunneling)。
此UDP套接字用於處理傳入的UDP封裝SCTP資料包(來自RFC6951),並由同一網路名稱空間中的所有應用程式共享。當值設定為0時,此UDP套接字將被關閉。
該值也將用於設定傳出UDP封裝SCTP資料包的UDP頭源埠。對於目標埠,請參閱下面的“encap_port”。
預設值:0
- encap_port - 整型
預設的遠端UDP封裝埠。
預設情況下,此值用於設定傳出UDP封裝SCTP資料包的UDP頭目標埠。使用者還可以透過使用setsockopt為每個套接字/關聯/傳輸更改此值。更多資訊,請參閱RFC6951。
請注意,當連線到遠端伺服器時,客戶端應將其設定為對等伺服器上UDP隧道套接字正在監聽的埠,並且客戶端上的本地UDP隧道套接字也必須啟動。在伺服器端,它將從傳入資料包的源埠獲取encap_port。
預設值:0
- plpmtud_probe_interval - 整型
PLPMTUD探測計時器的時間間隔(毫秒),該計時器配置為在此期間後到期以接收探測資料包的確認。這也是探測搜尋完成後,當前pmtu的探測之間的時間間隔。
當設定為0時,PLPMTUD將被停用;其他值必須大於等於5000。
預設值:0
- reconf_enable - 布林型
啟用或停用RFC6525中指定的流重新配置(Stream Reconfiguration)功能的擴充套件。此擴充套件提供了“重置”流的能力,幷包括“傳出/傳入SSN重置”、“SSN/TSN重置”和“新增傳出/傳入流”的引數。
1: 啟用擴充套件。
0: 停用擴充套件。
預設值:0
- intl_enable - 布林型
啟用或停用RFC8260中指定的使用者訊息交錯(User Message Interleaving)功能的擴充套件。此擴充套件允許對在不同流上傳送的使用者訊息進行交錯。啟用此功能後,如果對等端也支援,I-DATA塊將取代DATA塊來承載使用者訊息。請注意,要使用此功能,需要將此選項設定為1,並且還需要將套接字選項SCTP_FRAGMENT_INTERLEAVE設定為2,SCTP_INTERLEAVING_SUPPORTED設定為1。
1: 啟用擴充套件。
0: 停用擴充套件。
預設值:0
- ecn_enable - 布林型
控制SCTP使用顯式擁塞通知(ECN)。與TCP類似,只有當SCTP連線的兩端都表示支援時才使用ECN。此功能透過允許支援的路由器在不得不丟棄資料包之前發出擁塞訊號,有助於避免因擁塞造成的損失。
1:啟用ECN。 0:停用ECN。
預設值:1
- l3mdev_accept - 布林型
啟用此選項允許“全域性”繫結套接字跨 L3 主域(例如 VRF)工作,無論資料包源自哪個 L3 域,都可以接收。僅當核心編譯時啟用了 CONFIG_NET_L3_MASTER_DEV 時才有效。
預設值:1(啟用)
/proc/sys/net/core/*¶
請參閱:/proc/sys/net/的文件,以獲取這些條目的描述。
/proc/sys/net/unix/*¶
- max_dgram_qlen - 整型
資料報套接字接收佇列的最大長度
預設值:10