1 背景
TCP協議增強器,是指將TCP/IP協議棧中傳輸層的TCP協議進行增強,使之符合一些複雜網絡環境的參數要求(如時延、誤碼率、速率等)的一種應用層軟件技術,將TCP協議增強器編譯在PC上,可以作爲一般網絡和複雜網絡通信的橋樑,或者說轉換網絡環境的網關,其應用示意圖如下:
上圖中,客戶端如果要訪問服務器網頁,由客戶端發送的連接請求經過左邊的TCP協議增強器GW1增強,成功傳輸到右邊的TCP協議增強器GW2,然後轉換成原來的TCP包再發送給服務器,這樣就能在複雜網絡環境下也能建立連接並進一步傳輸數據。
TCP協議增強網絡系統的關鍵部分是TCP協議增強軟件,這是在github上可下載的開源軟件,實現在Linux平臺上,編譯後軟件運行在應用層,將傳輸層的TCP協議進行增強,轉換成複雜網絡環境需要的協議,適應某些網絡環境的複雜性。本片博客中說明了該軟件的編譯和配置,並搭建模擬通信環境,對於TCP協議增強器的技術實現方案進行測試和抓包驗證。
2 要求和術語
TCP增強網絡系統的一般技術要求:
(1)兩個增強器直連:網絡層Ping通,傳輸層正常進行Socket通信,應用層正常進行HTTP傳輸;
(2)兩個增強器通過網線連接同一個路由器,:網絡層Ping通,傳輸層正常進行Socket通信,應用層正常進行HTTP傳輸;
其中TCP協議增強器應用軟件按照編譯方式的不同分爲TUN模式和TAP模式,前者是點對點方式,後者是模擬以太網設備的方式,本博客主要介紹TUN方式。
術語
TCP:TCP(Transmission Control Protocol 傳輸控制協議)是一種面向連接的、可靠的、基於字節流的傳輸層通信協議,廣泛應用與互聯網TCP/IP協議棧的傳輸層中。
TAP:TCP協議增強器的TAP模式,也可說是以太網連接模式。此外TAP還是一種虛擬網卡模擬方式.
TUN:TCP協議增強器的TUN模式,也可以說是一種點對點設備。此外TUN還是一種虛擬網卡模擬方式.Tap/Tun虛擬網卡工作原理:http://www.ibm.com/developerworks/cn/linux/l-tuntap/
Namespace:一種虛擬空間的實現方式,簡單來說就是在一臺PC上可以實現類似於兩臺PC通信的效果,將TCP協議增強器應用軟件放在客戶端虛擬空間內,然後虛擬空間外的瀏覽器就可以認爲TCP協議增強器是在另一臺PC上。在Linux上創建虛擬空間參考:http://blog.csdn.net/dog250/article/details/26147357
3 編譯
源碼編譯
首先介紹TAP模式的TCP協議增強器源碼編譯過程:
1 在Ubuntu平臺上解壓縮源碼包
2 解壓後進入source文件夾,修改Makefile.in文件中Version` on`date`\nCompile-time改爲Version` on `date` Compile-time,即用空格代替原來的”\n”
2cd ../apps
3./configure
4cd ../source
5./configure --gateway=yes –tap=yes
6cd ..
7make clean,make
再介紹TUN模式的TCP協議增強器源碼編譯過程:
1 在Ubuntu平臺上解壓縮源碼包
2 解壓後進入source文件夾,修改Makefile.in文件中Version` on`date`\nCompile-time改爲Version` on `date` Compile-time,即用空格代替原來的”\n”
2cd ../apps
3./configure
4cd ../source
5./configure --gateway=yes --tun=yes
6cd ..
7make clean,make
4 測試
4.1 TCP增強器軟件與客戶端獨立的方案
4.1.1 測試拓撲
4.1.2 測試步驟
1.內核配置。按照上述的內核配置內容修改rp_filter和reverse path
2.源碼編譯配置。按照上述的源碼編譯內容編譯成TUN模式。
3.工具安裝。安裝必備工具brctl和Wireshark。
4.網絡地址配置。按照下面的ip配置給各個網口分配ip地址
注意:服務器端要把相鄰網口的IP設爲默認網關,這樣在Ping的時候才能讓網口找到不同網段的目的IP地址。
5.TCP協議增強器的resource file(rfile)中綁定各個網口,並開啓,rfile配置見user_manual。
6. IP和rfile確定正確配置完後,開啓兩個TCP協議增強器。
7. 在客戶端上ping服務器地址192.168.2.2,能夠ping通則進行下一步。在客戶端PC上運行socket程序客戶端並指定本機ip(192.168.1.2),同時在服務器PC上運行socket程序服務器端並指定本機ip(192.168.2.2)和對端ip(192.168.1.2),socket通信成功則進行下一步(socket程序見其他博客)。在中間的PC上運行Wireshark抓包。
8. 確保服務器端Apache開啓後,在客戶端PC的瀏覽器輸入服務器ip(192.168.2.2),能正確顯示預先寫好的服務器頁面,包括文字和圖片,並能下載服務器上的文件。這時同樣在服務器端PC上運行Wireshark抓包。
4.2 TCP增強器軟件內置於客戶端(虛擬空間內)
4.2.1 測試拓撲
4.2.2 測試步驟
1.內核配置。按照上述的內核配置內容修改rp_filter和reverse path
2.源碼編譯配置。按照上述的源碼編譯內容編譯成TUN模式。
3.工具安裝。安裝必備工具tunctl/brctl和Wireshark在客戶端PC上創建Namespace,並在虛擬空間Namespace上啓動TCP協議增強器(還有一種方案是在虛擬空間Namespace上創建虛擬網卡)
4.網絡地址配置。按照下面的ip配置給各個網口分配ip地址:
5.在TCP協議增強器的resource file(rfile)中綁定各個網口,並開啓,rfile配置見用戶手冊。
6. IP和rfile確定正確配置完後,開啓兩個TCP協議增強器。在這裏將4和6所述的操作都寫在一個shell腳本中,只需執行這個腳本文件即可。
7. 在客戶端上ping服務器地址192.168.2.2,能夠ping通則進行下一步。在客戶端PC上運行socket程序客戶端並指定本機ip(192.168.1.2),同時在服務器PC上運行socket程序服務器端並指定本機ip(192.168.2.2)和對端ip(192.168.1.2),socket通信成功則進行下一步(socket程序見其他博客)。在中間的PC上運行Wireshark抓包。
8. 確保服務器端Apache開啓後,在客戶端PC的瀏覽器輸入服務器ip(192.168.2.2),能正確顯示預先寫好的服務器頁面,包括文字和圖片,並能下載服務器上的文件。這時同樣在中間的PC上運行Wireshark抓包。
5 功能配置/注意事項
在測試過程中,如果發現傳輸速率過慢,則可以在rfile配置中對傳輸速率進行更改,如果發現傳輸到一部分斷開傳輸,則對緩衝區進行調整。具體調整見TCP協議增強器目錄下內置的配置手冊。