Linux
阻止或轉發數據包作為接入點
我按照本教程將我的 Pi 2 設置為 wifi 接入點。
我想根據每個數據包標頭中的 DSCP 欄位來實現基本的 QoS。這意味著,阻止使用低優先級服務的數據包(用於連接的主機發送,例如,電子郵件)和轉發具有高優先級服務的數據包(用於連接的主機,例如,VoIP)。
我不知道從哪裡開始:我怎樣才能放入等待數據包然後發送它們,或者如果它們是緊急的則轉發它們?
從技術上講,我必須在我的 WiFi 加密狗 (
wlan0
) 上監聽數據包,查看每個數據包的 DSCP 欄位,然後通過乙太網電纜 (eth0
) 發送它們或讓它們等待。我不知道從哪裡開始。
編輯 1:根據我的教授的說法,檢查 DSCP 欄位並不可靠,因為它並不總是充滿一些東西。因此,我將只查看地址,並通過檢查站點的地址來查看哪些服務發送了數據包。
來自 netfilter 項目的libnetfilter_queue庫似乎是這樣的:來自 netfilter.org:
libnetfilter_queue 是一個使用者空間庫,為核心數據包過濾器排隊的數據包提供 API。它是棄用舊的 ip_queue / libipq 機制的系統的一部分。
我將數據包放入隊列中:
sudo iptables -I FORWARD (parameters) -j NFQUEUE --queue-num x
並且使用libnetfilter_queue我可以訪問儲存在上面隊列中的數據包。