原创 DPDK-l3fwd示例IPv6測試

測試環境 操作系統: Ubuntu 20.04 LTS; 處理器爲: Intel® Core™ i7-4790K CPU @ 4.00GHz。 網卡使用的是Intel的X710萬兆網卡。 DPDK版本19.02。 測試拓撲:

原创 測試DPDK示例程序l3fwd

測試環境 操作系統: Ubuntu 20.04 LTS; 處理器爲: Intel® Core™ i7-4790K CPU @ 4.00GHz。 網卡使用的是Intel的I210千兆網卡。 DPDK版本19.02。 測試拓撲:

原创 TCP-Westwood擁塞算法

TCP-Westwood在TCP-Reno的基礎上增強了窗口控制和退避處理,例如,TCPW發送端監控ACK報文的接收速率,進而估算當前連接可達到的數據發送速率(可用帶寬)。當發送端檢測到丟包時(超時或者3個重複ACK),發送端根據

原创 TCP-Hybla擁塞算法

TCP Hybla算法的改進是對於RTT較長的連接(例如衛星和無線網絡)可獲得與參考TCP連接(如,有線網絡)相同的瞬時發送速率B(t)。TCP的發送速率計算如下(W(t)表示t時刻的發送窗口值): B(t)=W(t)/RTT(1

原创 SACK Reneging

TCP發送端不能夠清除SACK序號塊確認的數據,因爲接收端很可能由於內存壓力等原因,刪除亂序隊列中SACK確認過的報文。發送端重傳隊列中的報文只有在接收到ACK報文的Acknowledge序號字段確認之後,才能移除隊列和釋放。 接

原创 TCP擁塞窗口驗證

如果在一個RTO時長內,擁塞窗口沒有被完全的使用,TCP發送端將減小擁塞窗口。因爲此時TCP發送端的擁塞窗口可能並非當前的網絡狀況,所以發送端應減小擁塞窗口。根據RFC2861,ssthresh應設置爲其當前值與3/4倍的擁塞窗口

原创 Forward-RTO超時確認

虛假的重傳超時將導致TCP性能的降低,因爲這將發送不必要的重傳報文。Forward-RTO是一種用於檢測虛假重傳超時的一種算法,F-RTO僅針對發送端,其不需要任何TCP選項的支持。在超時重傳第一個未確認的報文之後,TCP發送端的

原创 TCP傳輸速率估算

如下公式,帶寬取值爲計算得出的數據傳輸速率與接收ACK速率兩者之間的較小值。通常情況下,傳輸速率(send_rate-發送並得到確認的數據速率)將大於ACK接收速率(ack_rate),但是,在面對ACK壓縮等的情況下,將導致AC

原创 TCP之timestamps選項

默認情況下內核是開啓timestamps選項的,如下tcp_sk_init函數中對sysctl_tcp_timestamps的初始化。 static int __net_init tcp_sk_init(struct net *n

原创 使用DPDK應用示例l2fwd進行性能測試

系統環境,處理器爲:Intel® Core™ i7-4790K CPU @ 4.00GHz。 # cat /etc/issue Ubuntu 20.04 LTS \n \l # # uname -a Linux flyings

原创 SACK選項及生成

SACK功能由兩個TCP選項組成,分別爲SACK_PERMITTED和SACK選項。前者用於協商SACK能力,僅可出現在設置了SYN標誌的報文中,如下爲其格式。 TCP Sack-Permitted Option:

原创 TCP-Reno擁塞算法

經典的Reno算法實現了三個擁塞函數,如下所示: struct tcp_congestion_ops tcp_reno = { .flags = TCP_CONG_NON_RESTRICTED, .nam

原创 PAWS檢查

PAWS(Protection Against Wrapped Sequences)功能基於TCP的Timestamps選項實現,用於拒絕接收到的過期的重複報文。PAWS假設每個報文都攜帶有TSopt選項數據,其中的時間戳TSva

原创 SACK壓縮

變量tcp_comp_sack_nr定義在接收到連續的亂序報文時,可壓縮的最大SACK回覆報文數量,即低於tcp_comp_sack_nr值時,延時回覆對端ACK報文。但是,前TCP_FASTRETRANS_THRESH(3)數量

原创 TCP空閒連接的重啓動

在TCP連接空閒一段時間之後,發送端再次開啓發送時,可能導致大量的數據發送到網絡中。由於一段空閒時間後,TCP發送端不能再使用ACK時鐘發送新報文到網絡中,所以,可能線速發送一整擁塞窗口的數據,容易造成網絡擁塞,而且,網絡狀況可能