如果您在Alibaba Cloud Linux 3系統中啟用了共享內存通信SMC(Shared Memory Communication),且使用過程中遇到無法正常通信、部分端口不可用、對比TCP沒有應用性能提升等問題,可以參考本文提供的方案進行排查并解決。
啟用SMC后應用性能對比TCP沒有提升
問題描述
使用SMC加速應用TCP連接之后,應用的性能與直接使用TCP對比并沒有提升。
問題原因及解決方案
由于某些原因,導致應用創建的SMC連接回退到TCP,此時無法使用RDMA加速網絡通信。詳細的回退排查和解決方法,請參見啟用SMC后回退無法使用RDMA加速。
應用的網絡通信開銷在整個應用中占比較小。例如應用是傾向于CPU密集型,網絡通信在應用中占比較低。
應用的網絡通信模型不適用SMC。例如:
頻繁建立、銷毀連接(短連接)的場景。SMC創建連接涉及到RDMA資源創建和申請等慢速路徑,根據不同應用短連接的占比,性能對比TCP可能沒有收益。
資源受限的場景。SMC通信所使用的資源受限于機器內存和eRDMA網卡規格,資源不足可能導致SMC回退到TCP。更多信息,請參見共享內存通信(SMC)使用說明。
啟用SMC后無法正常通信
問題描述
使用Alibaba Cloud Linux 3開啟SMC之后,訪問某些地址(例如某些公網服務)不通,但是可以ping通。關閉SMC之后恢復正常。
問題原因
某些服務器實現上沒有嚴格準守TCP規范,在處理TCP options時,可能重放TCP options,導致SMC協議識別出現問題。
A TCP implementation MUST (MUST-6) ignore without error any TCP Option it does not implement, assuming that the option has a length field. 更多信息,請參見RFC 9293。
如果用于表征支持SMC的TCP option被重放,就會使得本端誤認為對端服務具備SMC能力,引起握手錯誤,導致請求(例如curl)失敗,而ping(ICMP協議)成功的現象。
您可以通過check_tcpoption_replay.py工具診斷此類問題:
from scapy.all import *
import time
import argparse
# Set up command line arguments
parser = argparse.ArgumentParser(description='Check if the server replays with the same TCP option.')
parser.add_argument('-i', '--ip', required=True, help='Target IP address')
parser.add_argument('-p', '--port', required=True, type=int, help='Target port number')
parser.add_argument('-v', '--verbose', action='store_true', help='Print verbose output')
args = parser.parse_args()
# Target IP and port
target_ip = args.ip # Get target IP from command line arguments
target_port = args.port # Get target port from command line arguments
verbose = args.verbose # Get verbose flag from command line arguments
# Create a TCP SYN packet that includes a special TCP Option
ip = IP(dst=target_ip)
syn = TCP(sport=RandShort(), dport=target_port, flags='S', options=[(254, b'xxxx')])
syn_ack_pkt = sr1(ip/syn, timeout=1, verbose=verbose)
# Check if the returned packet is a TCP SYN-ACK
if syn_ack_pkt and TCP in syn_ack_pkt and syn_ack_pkt[TCP].flags & 18: # SYN-ACK flags
# Check for the special TCP Option
if any(opt[0] == 254 and opt[1] == b'xxxx' for opt in syn_ack_pkt[TCP].options):
print("The server has replayed the TCP option")
else:
print("The server did not replay the TCP option")
else:
print("Failed to receive SYN-ACK, please make sure the IP and port are correct")
sys.exit(1)
# Complete the TCP handshake
if syn_ack_pkt:
ack = TCP(sport=syn_ack_pkt[TCP].dport, dport=target_port, flags='A', seq=syn_ack_pkt[TCP].ack, ack=syn_ack_pkt[TCP].seq + 1)
send(ip/ack, verbose=verbose)
# Wait for 1 second before disconnecting
time.sleep(1)
# Send TCP FIN to close the connection
if syn_ack_pkt:
fin = TCP(sport=syn_ack_pkt[TCP].dport, dport=target_port, flags='FA', seq=syn_ack_pkt[TCP].ack, ack=syn_ack_pkt[TCP].seq + 1)
last_ack_pkt = sr1(ip/fin, timeout=1, verbose=verbose)
# Complete the four-way handshake
if last_ack_pkt and TCP in last_ack_pkt and last_ack_pkt[TCP].flags & 16: # ACK flag
last_ack = TCP(sport=syn_ack_pkt[TCP].dport, dport=target_port, flags='A', seq=last_ack_pkt[TCP].ack, ack=last_ack_pkt[TCP].seq + 1)
send(ip/last_ack, verbose=verbose)
安裝Python 3和scapy庫。
yum install python3 -y python3 -m pip install scapy
運行check_tcpoption_replay.py工具。
python3 check_tcpoption_replay.py -i <服務端IP> -p <服務端port>
如果服務端存在重放問題則輸出
The server has replayed the TCP option
,否則輸出The server did not replay the TCP option
。
解決方案
對于重放SMC TCP option的非預期現象,由于是網絡中間節點或對端的錯誤行為,無法從根本上避免,建議避免在訪問這類服務時使用SMC。
通過smc_run啟用SMC無效
問題描述
根據 共享內存通信(SMC)使用說明通過smc_run ./foo
在應用程序維度啟用SMC后,使用smcr l
觀察發現沒有成功創建的link group,使用smcss -a
也看不到連接或是看到一側連接出現回退。
問題原因
smc_run
透明啟用SMC的原理是通過LD_PRELOAD將smc-tools中提供的動態鏈接庫優先于其他庫之前加載,在優先加載的動態鏈接庫的socket(2)中對socket的family和protocol進行修改。因此,若應用程序并非通過動態方式鏈接(如靜態鏈接),則smc_run
無法成功透明啟用SMC。
解決方案
根據共享內存通信(SMC)使用說明提供的sysctl net.smc.tcp2smc
啟用SMC。
啟用SMC后導致部分端口不可用
問題描述
加載SMC后,65500后的16個端口(即65500~65515)不可用,bind(2)這些端口會導致返回EADDRINUSE
。
問題原因
由于SMC-R+eRDMA實現方式的特殊性,SMC模塊將會占用ERI所在net namespace下65500開始的16個端口作為OOB建連的預留端口,在dmesg中可以查看到如下提示信息:
smc: smc: load SMC module with reserve_mode
NET: Registered protocol family 43
smc: netns <netns ID> reserved ports [65500 ~ 65515] for eRDMA OOB
smc: adding ib device erdma_0 with port count 1
smc: ib device erdma_0 port 1 has pnetid
如果端口占用失敗則SMC模塊無法使用eRDMA設備。
解決方案
卸載SMC模塊后將會釋放這些端口。卸載方法請參見使用說明。
啟用SMC后回退無法使用RDMA加速
問題描述
啟用SMC并替換應用的TCP連接,此時運行smcss -a
命令可以看到建立的連接已經自動回退(fallback)到TCP。
問題原因
SMC建立連接時,如果發生異常會自動回退到TCP連接,此時SMC連接仍然可以正常通信,但是無法享受RDMA帶來的性能提升。SMC發生回退時會提供回退原因編號,根據回退編號可以幫助分析和定位問題。
解決方案
運行
smcss -a
命令,查看SMC連接的回退編號。返回結果示例:
State UID Inode Local Address Peer Address Intf Mode ACTIVE 00000 0156721 192.168.99.21:60188 192.168.99.22:8090 0000 TCP 0x03010000 ACTIVE 00000 1202539 172.16.4.189:44780 172.16.4.190:1811 0000 SMCR
其中第一條記錄Mode列為TCP,意味著該SMC連接回退到TCP,同時回退編號為0x03010000。第二條記錄Mode列為SMCR,則說明已經正常建立SMC-R連接。如果Mode列顯示的回退編號為兩個(例如0x05000000/0x03030001),其中第一個回退編號為本地的回退原因,第二個回退編號為對端的回退原因,通常是由于對端回退導致了本機無法正常建立SMC連接而回退。
根據回退編號,從下表中查看可能的原因和解決方案。
回退原因編號
說明
可能原因和解決方案
0x01010000
機器內存不足,導致資源創建失敗。
原因:機器的空余內存不足,不足以創建SMC建立連接所需要的數據結構和讀寫內存。
解決方案:釋放機器的內存,例如停止不必要的進程。
0x02010000
通過CLC或者LLC握手時,等待RDMA鏈路確認超時。
原因1:RDMA網卡或者鏈路發生故障,導致LLC連接(通過RDMA鏈路通信)消息回復超時。
解決方案1:確認RDMA網卡的狀態是否正常。
原因2:以太網卡或者TCP/IP網絡發生故障或者異常,導致CLC連接(通過TCP連接通信)消息回復超時。
解決方案2:確認以太網卡的狀態是否正常。
0x02020000
通過LLC創建link超時。
預留字段,當前未使用。
0x03000000
配置錯誤,無法獲取正確的IP地址。
原因:建立連接時,構建proposal時獲取CLC socket對應的IP地址失敗。
解決方案:檢查當前CLC連接(基于TCP協議)和所對應的設備是否正常后重試。
0x03010000
對端不支持或未使用SMC。
原因:如果支持SMC協議,將會在建立連接時的CLC連接(基于TCP協議)的SYN(客戶端)或SYNACK(服務端)報文頭中攜帶SMC TCP option標志位。
解決方案:檢測本地或者對端是否已將應用的協議棧替換為SMC,通過 smcss命令(smc-tools包提供)可查看當前SMC的連接狀態。如果沒有找到應用的連接和端口,請重新替換為SMC并創建新的連接。
0x03020000
不支持IPSec。
原因:替換的連接使用IPSec,但是當前SMC并不支持IPSec。
解決方案:不使用IPSec。
0x03030000
未找到可用的SMC-D或SMC-R設備。
原因1:SMC建立連接使用時,未找到可用的SMC-R(RDMA)設備。
解決方案1:執行
smcr d
命令,檢查當前是否有SMC-R(RDMA)設備。如果沒有返回任何設備,在使用阿里云eRDMA的場景下,請檢查ECS控制臺是否正確配置ERI設備,并確保操作系統中正確安裝ERI的驅動。
原因2:在多以太網卡環境中,連接所用的以太網卡不具備ERI功能,無法找到eRDMA設備。
解決方案2:通過
ibv_devinfo
命令查看eRDMA設備的node_guid,再通過ip addr
命令查看以太網卡的MAC地址,對比兩者確認連接所用的以太網設備具備ERI eRDMA功能。
原因3:如果啟用RDMA設備的獨占模式,SMC只會在當前創建socket的net namespace中尋找RDMA設備。
解決方案3:執行
rdma system
命令,如果返回的結果中包含netns exclusive
則說明為獨占模式。如果需要在某個netns中使用該RDMA設備,請執行命令rdma dev set <RDMA 設備名> netns <NETNS 名>
,將RDMA設備移至該netns。如果RDMA設備為RoCE和iWARP,請將所需的以太網設備也一并移動到該netns。
原因4:使用eRDMA設備時,客戶端嘗試將AF_INET6連接替換為SMC連接。
解決方案4:eRDMA設備只能配合SMCv2協議使用,而SMCv2協議目前不支持替換AF_INET6協議族連接,因此回退到TCP。此時請將應用程序切換為AF_INET協議族。
0x03030001
未找到可用的SMC-D設備。
當前云場景暫未提供可用的SMC-D設備,如出現該錯誤請聯系阿里云技術支持。
0x03030002
未找到可用的SMC-R設備。
原因1:SMC創建連接過程中,已經選中的RDMA設備失效。
解決方案1:執行
smcr d
命令,檢查當前系統中是否有可用的 SMC-R(RDMA)設備,如果所需的RDMA設備為阿里云eRDMA設備,請確保該ERI設備已經在ECS控制臺中添加并正確安裝和配置ERI驅動。
原因2:在多以太網卡環境中,連接所用的以太網卡不具備ERI功能,無法找到eRDMA設備。
解決方案2:通過
ibv_devinfo
命令查看eRDMA設備的node_guid,再通過ip addr
命令查看以太網卡的MAC地址,對比兩者確認連接所用的以太網設備具備ERI eRDMA功能。
原因3:如果啟用RDMA設備的獨占模式,SMC只會在當前創建socket的net namespace中尋找RDMA設備。
解決方案3:執行
rdma system
命令,如果返回的結果中包含netns exclusive
則說明為獨占模式。如果需要在某個netns中使用該RDMA設備,請執行命令rdma dev set <RDMA 設備名> netns <NETNS 名>
,將RDMA設備移至該netns。如果RDMA設備為RoCE和iWARP,請將所需的以太網設備也一并移動到該netns。
0x03030003
SMC-D設備不支持ISMv2協議。
當前云場景暫未提供可用的SMC-D設備,如出現該錯誤請聯系阿里云技術支持。
0x03030004
對端不支持SMCv2協議的拓展。
原因:本地啟用了SMC v2協議,但對端不支持SMC v2協議。SMC協議棧通過底層設備能力自動選擇使用SMC v1或SMC v2協議。在使用阿里云eRDMA和RoCE v2的場景下,將使用SMC v2協議。
解決方案:保證通信兩端所有RDMA設備類型相同,則兩端SMC協議版本相同。可通過
smcr d
查看SMC-R所用設備,在type
一欄中可以看到設備類型,如RoCE_Express、RoCE_Express2、或0x107f(即阿里云eRDMA)。
0x03030005
對端不支持SMC-Dv2協議的拓展。
當前云場景暫未提供可用的SMC-D設備,如出現該錯誤請聯系阿里云技術支持。
0x03030006
對端缺失SEID。
預留字段,當前未使用。
0x03030007
未找到可用的SMC-D v2設備。
當前云場景暫未提供可用的SMC-D設備,如出現該錯誤請聯系阿里云技術支持。
0x03030008
對端缺少UEID。
原因:啟用了SMC v2協議,但沒有設置UEID。
解決方案:在兩側通過smc-tools設置相同的UEID,指令為
smcr ueid {show | add | del}
。
0x03030009
本地和對端協商SMC版本失敗。
原因:兩側協商SMC版本的結果在CLC握手過程中發生變化。
解決方案:確認兩端OS發行版一致。
0x0303000a
LGR可容納連接數量協商失敗。
原因:SMCv2.1支持兩端協商LGR可容納連接數量。若協商結果不可接受,如連接數量為0或超過本地最大支持值,出現該回退。
解決方案:確認兩端OS發行版一致。
0x0303000b
LGR可容納link數量協商失敗。
原因:SMCv2.1支持兩端協商LGR可容納link數量。若協商結果不可接受,如link數量為0或超過本地最大支持值,出現該回退。
解決方案:確認兩端OS發行版一致。
0x0303000c
本地與對端協商SMC vendor特性失敗。
原因:兩側協商SMC vendor特性的結果在CLC握手過程中發生變化。
解決方案:首先確認兩端OS發行版一致;其次通過
uname -r
命令確認內核版本,若內核版本為5.10.134-015
,則確保在建連過程中不要主動修改sysctl net.smc.vendor_exp_options
的值,若內核版本大于等于5.10.134-016
,則確保在建連過程中不要主動修改sysctl net.smc.experiment_vendor_options
的值。
0x03040000
本地和對端的SMC設備模式不匹配 (SMC-D 或 SMC-R)。
當前云場景暫未提供可用的SMC-D設備,如出現該錯誤請聯系阿里云技術支持。
0x03050000
對端RMBE中包含eyecatcher非法字段。
預留字段,Linux實現中未使用。
0x03060000
連接使用了不支持MSG_FASTOPEN。
原因:SMC暫不支持MSG_FASTOPEN選項。
解決方案:創建socket時移除MSG_FASTOPEN選項。
0x03070000
本地和對端的IP前綴/子網不匹配。
原因:所用RDMA設備是RoCEv1設備時,SMC自動使用SMCv1協議。SMCv1僅支持子網內通信。當兩側不在同一子網內時,將出現該回退。
解決方案:若所用RDMA設備為RoCEv1,則確保通信兩側處在同一子網內;若所用RDMA設備為阿里云eRDMA,則SMC默認使用SMCv2協議,不會有子網限制與相關回退。
0x03080000
獲取設備VLAN ID失敗。
原因:創建連接時,SMC會嘗試獲取socket對應設備的VLAN ID。
解決方案:檢查該五元組創建的TCP連接和對應的以太網設備是否正常。
0x03090000
ISM設備注冊VLAN ID失敗。
當前云場景暫未提供可用的SMC-D設備,如出現該錯誤請聯系阿里云技術支持。
0x030a0000
LGR中無可用SMC-R RDMA鏈路。
原因:創建連接時,將會為每一個連接指定一個該連接所屬LGR的link,如果沒有可用的link,則無法使用RDMA加速。
解決方案:執行
smcr d
命令,檢查ECS的RDMA卡是否正常。如果所需的RDMA設備為阿里云eRDMA設備,請確保該ERI設備已經在ECS控制臺中添加并正確安裝和配置ERI驅動。
0x030b0000
客戶端找不到服務端提供的RDMA鏈路。
原因:客戶端創建連接時,根據服務端提供的QPN、GID和MAC等信息尋找對應的link并創建連接,如果找不到正確的RDMA link則無法使用RDMA加速。
解決方案:執行
smcr d
命令,檢查ECS的RDMA卡是否正常。如果所需的RDMA設備為阿里云eRDMA設備,請確保該ERI設備已經在ECS控制臺中添加并正確安裝和配置ERI驅動。
0x030c0000
協商SMC版本失敗。
原因:通信兩端SMC版本協商結果超出可接受范圍。
解決方案:確認兩端OS發行版一致。
0x030d0000
SMC-D DMB數量超越上限。
當前云場景暫未提供可用的SMC-D設備,如出現該錯誤請聯系阿里云技術支持。
0x030e0000
SMC-R v2連接對端不可達。
原因:建連過程中,SMCv2協議中,客戶端需要根據服務端提供的地址尋找正確的路由信息,當前無法根據本地和遠端IP地址找到對應的路由項。
解決方案:檢查該五元組創建的TCP連接和對應的以太網設備是否正常、可達,例如系統的以太網卡、IP配置和路由項配置等。
0x030f0000
SMC-R v2連接非直連標志位設置錯誤。
原因:建連過程中,SMCv2 協議中,客戶端根據服務器設置的gateway標志位判斷是否經過網關,但是根據本地和遠端IP查到的路由項指出并沒有經過網關,二者不一致。
解決方案:檢查該五元組創建的TCP連接和對應的以太網設備是否正常、可達,是否經過相同的網絡路徑,例如系統的以太網卡、IP配置和路由項配置等。
0x04000000
服務端和客戶端復用LGR錯誤。
原因:建連過程中,服務端復用LGR,但是客戶端想要創建LGR,二者行為錯誤。
解決方案:執行
smcr d
命令,檢查ECS的RDMA卡是否正常。如果所需的RDMA設備為阿里云eRDMA設備,請確保該ERI設備已經在ECS控制臺中添加并正確安裝和配置ERI驅動。
0x05000000
握手過程中對端拒絕。
原因:建立連接過程中,對端回復的CLC消息拒絕建立RDMA連接。
解決方案:執行
smcss
命令,根據五元組信息找到對應的連接,并找到回退原因,包含本地和對端回退原因,根據對端回退編號確定具體原因。
0x09990000
RDMA相關資源創建錯誤。
原因:RDMA資源創建、初始化失敗。
解決方案:通過RDMA監控工具查看資源申請失敗統計。若所用設備為阿里云eRDMA設備,可以使用
eadm stat
查看錯誤統計。
0x09990001
RDMA rtoken增加失敗。
SMC協議棧錯誤,如出現該錯誤請聯系阿里云技術支持。
0x09990002
初始化RDMA QP資源失敗。
原因:建立連接時,如果需要創建新的link(對應為一個RDMA QP)資源,SMC會依次調用IB verbs接口初始化并修改RDMA QP,而在此過程中發生異常。
解決方案:執行
smcr d
命令,檢查當前是否有SMC-R(RDMA)設備。如果使用阿里云eRDMA,請檢查ECS控制臺是否正確配置ERI設備,并確保操作系統中正確安裝ERI的驅動。
0x09990003
RDMA內存注冊(MR)失敗。
原因:使用RDMA通信時,需要注冊內存區域用以RDMA網卡訪問和寫入數據,如果使用的MR數量或者大小超過了RDMA設備的規格,則會報錯。
解決方案:執行
smcr d
命令,找到SMC所使用的RDMA設備名。再執行ibv_devinfo -d <RDMA 設備名> -v | grep max_mr
,其中max_mr
為RDMA設備支持的最多MR數量,max_mr_size
為 RDMA設備支持的最大MR大小;通常情況下為MR的數量達到瓶頸,此時請減少SMC的連接數量。
0x09990004
SMC流控所需的credit初始化失敗。
原因:RDMA網卡或者鏈路發生故障,導致credit通告消息(通過RDMA鏈路通信)發送失敗。
解決方案:確認RDMA網卡的狀態是否正常。
啟用SMC后常見網絡運維工具的數據與預期不符
問題描述
使用Alibaba Cloud Linux 3開啟SMC-R之后,常見的網絡分析工具tcpdump、Wireshark等,網絡監控工具ss(Socket Statistics)、netstat等,觀察到的網絡流量與預期不符或無法觀察到預期流量。
問題原因
這是因為SMC-R是基于RDMA的網絡通信技術,目前常見的網絡運維工具只能分析或監控TCP流量,無法識別RDMA的網絡數據報文。這會導致實際的網絡數據和網絡運維工具中顯示的數據不匹配。
解決方案
可以嘗試使用RDMA相關的運維工具進行數據分析或監控。更多信息,請參見監測和診斷eRDMA。
在GPU或SCC實例上加載SMC模塊不可用
問題描述
在GPU或SCC實例上加載SMC模塊,模塊不可用。
問題原因
這類實例中安裝了Mellanox廠商版本OFED驅動,默認加載的是OFED中的SMC模塊,不具備實際功能。且由于安裝Mellanox OFED驅動后RDMA相關函數的符號發生變化,加載內核自帶的SMC模塊會出現Unknow symbol
錯誤而無法加載成功。
解決方案
目前Alibaba Cloud Linux 3 SMC模塊不支持在GPU或SCC等實例中使用。
啟用SMC后setsockopt/getsockopt部分SOL_SOCKET或SOL_TCP層選項效果與預期不符
問題描述
啟用SMC并替換應用的TCP連接后,原本作用于TCP連接的部分SOL_SOCKET或SOL_TCP層選項通過setsockopt或getsockopt設置失敗,或設置成功但無法起到預期效果。
問題原因
使用SMC替換TCP協議棧后,數據路徑上基于共享內存完成通信,協議棧設計和數據傳遞方式都與TCP有著很大的不同。因此,部分SOL_SOCKET或SOL_TCP層選項不再適用。
解決方案
對照下表查看Alibaba Cloud Linux 3中SMC對SOL_SOCKET或SOL_TCP層選項的支持情況。
SMC對SOL_SOCKET或SOL_TCP層選項的支持情況可以分為以下3種類型:
Y:支持,設置/獲取選項返回成功,并且能夠達到預期效果。
M:不支持,設置/獲取返回成功,但由于SMC與TCP設計的不同,無法達到預期效果。
N:不支持,設置/獲取返回失敗,回退到TCP(回退原因編號:0x03060000或0x03010001)。
OPTIONS | SMC支持情況 |
SO_DEBUG | Y |
SO_REUSEADDR | Y |
SO_TYPE | Y |
SO_ERROR | Y |
SO_DONTROUTE | M |
SO_BROADCAST | M |
SO_SNDBUF | Y |
SO_RCVBUF | Y |
SO_SNDBUFFORCE | Y |
SO_RCVBUFFORCE | Y |
SO_KEEPALIVE | M |
SO_OOBINLINE | M |
SO_NO_CHECK | M |
SO_PRIORITY | M |
SO_LINGER | Y |
SO_BSDCOMPAT | M |
SO_REUSEPORT | Y |
SO_PASSCRED | M |
SO_PEERCRED | M |
SO_RCVLOWAT | M |
SO_SNDLOWAT | M |
SO_RCVTIMEO_OLD | Y |
SO_SNDTIMEO_OLD | Y |
SO_SECURITY_AUTHENTICATION | N |
SO_SECURITY_ENCRYPTION_TRANSPORT | N |
SO_SECURITY_ENCRYPTION_NETWORK | N |
SO_BINDTODEVICE | N |
SO_ATTACH_FILTER | M |
SO_DETACH_FILTER | M |
SO_PEERNAME | Y |
SO_ACCEPTCONN | M |
SO_PEERSEC | N |
SO_PASSSEC | M |
SO_MARK | M |
SO_PROTOCOL | Y |
SO_DOMAIN | Y |
SO_RXQ_OVFL | M |
SO_WIFI_STATUS | M |
SO_PEEK_OFF | N |
SO_NOFCS | M |
SO_LOCK_FILTER | Y |
SO_SELECT_ERR_QUEUE | M |
SO_BUSY_POLL | M |
SO_MAX_PACING_RATE | M |
SO_BPF_EXTENSIONS | Y |
SO_INCOMING_CPU | M |
SO_ATTACH_BPF | M |
SO_ATTACH_REUSEPORT_CBPF | M |
SO_ATTACH_REUSEPORT_EBPF | N |
SO_CNX_ADVICE | M |
SO_MEMINFO | M |
SO_INCOMING_NAPI_ID | M |
SO_COOKIE | Y |
SO_PEERGROUPS | N |
SO_ZEROCOPY | N |
SO_TXTIME | M |
SO_BINDTOIFINDEX | N |
SO_TIMESTAMP_OLD | M |
SO_TIMESTAMPNS_OLD | M |
SO_TIMESTAMPING_OLD | M |
SO_TIMESTAMP_NEW | M |
SO_TIMESTAMPNS_NEW | M |
SO_TIMESTAMPING_NEW | M |
SO_RCVTIMEO_NEW | Y |
SO_SNDTIMEO_NEW | Y |
SO_DETACH_REUSEPORT_BPF | N |
OPTIONS | SMC支持情況 |
TCP_NODELAY | Y |
TCP_MAXSEG | M |
TCP_CORK | Y |
TCP_KEEPIDLE | M |
TCP_KEEPINTVL | M |
TCP_KEEPCNT | M |
TCP_SYNCNT | M |
TCP_LINGER2 | M |
TCP_DEFER_ACCEPT | Y |
TCP_WINDOW_CLAMP | M |
TCP_INFO | M |
TCP_QUICKACK | M |
TCP_CONGESTION | M |
TCP_MD5SIG | Y |
TCP_THIN_LINEAR_TIMEOUTS | M |
TCP_THIN_DUPACK | M |
TCP_USER_TIMEOUT | M |
TCP_REPAIR | M |
TCP_REPAIR_QUEUE | M |
TCP_QUEUE_SEQ | M |
TCP_REPAIR_OPTIONS | M |
TCP_FASTOPEN | N |
TCP_TIMESTAMP | M |
TCP_NOTSENT_LOWAT | M |
TCP_CC_INFO | M |
TCP_SAVE_SYN | Y |
TCP_SAVED_SYN | Y |
TCP_REPAIR_WINDOW | M |
TCP_FASTOPEN_CONNECT | N |
TCP_ULP | N |
TCP_MD5SIG_EXT | Y |
TCP_FASTOPEN_KEY | N |
TCP_FASTOPEN_NO_COOKIE | N |
TCP_ZEROCOPY_RECEIVE | N |
TCP_CM_INQ/TCP_INQ | M |
TCP_TX_DELAY | M |