文檔目的
本文闡述了控制網(wǎng)關(guān)中軟件的實現(xiàn),一個是檢測和控制MPTCP傳輸參量的程序。
由于控制網(wǎng)關(guān)是Linux平臺,根據(jù)Linux平臺的特點(diǎn),在Linux內(nèi)核中已經(jīng)編譯了MPTCP的傳輸層文件的基礎(chǔ)上,本網(wǎng)關(guān)軟件的研發(fā)采用“Shell編程”+“MPTCP配置文件”的方案,從而實現(xiàn)對傳輸參量的方便可靠監(jiān)控。
程序設(shè)計
具體來說,Shell腳本是跟Windows下的批處理文件類似的腳本程序,可以將各類命令預(yù)裝入一個文件中,因此通過Shell腳本程序訪問預(yù)編譯進(jìn)內(nèi)核的MPTCP配置文件,也就是說Shell編程可作為MPTCP配置文件的編程接口。網(wǎng)關(guān)控制軟件的框架如下所示:
MPTCP的主要配置文件有:mptcp_enabled、mptcp_checksum、mptcp_syn_retries、mptcp_debug、mptcp_path_manager.
這些配置文件具有不同的監(jiān)控傳輸參量的功能,功能說明如下:
mptcp_enabled:控制MPTCP的開關(guān),實現(xiàn)MPTCP與傳統(tǒng)TCP之間的切換;
mptcp_checksum:控制MPTCP傳輸層中數(shù)據(jù)序列號校驗和(DSS-checksum)的開關(guān),DSS-checksum主要跟傳輸可靠性相關(guān);
mptcp_syn_retries:指定SYN的重傳次數(shù),SYN里包含了MP_CAPABLE選項字段。通過此配置文件,SYN將不會包含MP_CAPABLE選項,這是為了處理會丟棄含有未知TCP選項的SYN的網(wǎng)絡(luò)中間件;
mptcp_debug:調(diào)試MPTCP,控制是否打印debug報告文件;
mptcp_path_manager:MPTCP路徑管理,有三個不同的配置值,分別是default/ndiffports/fullmesh,分別可以選擇單路、多路或者全路進(jìn)行傳輸。其中單路是指跟傳統(tǒng)TCP狀態(tài)一樣還是用單一的TCP子流進(jìn)行傳輸,多路是當(dāng)前所有TCP子流中用戶選擇x條子流數(shù)進(jìn)行傳輸,全路是指將當(dāng)前所有可用的TCP子流應(yīng)用到網(wǎng)絡(luò)傳輸中[7]
。
通過預(yù)留的編程接口,在Shell腳本程序里訪問以上所述的配置文件,從而監(jiān)控當(dāng)前的傳輸參量,對MPTCP進(jìn)行傳輸管理,程序的算法設(shè)計如下:
根據(jù)此算法設(shè)計圖,用Shell編程語言編寫可以訪問MPTCP配置文件的Shell腳本程序,實現(xiàn)對當(dāng)前傳輸參量的監(jiān)控。
程序?qū)崿F(xiàn)
Shell腳本程序的詳細(xì)代碼如下:
本系統(tǒng)成功在安裝并編譯了MPTCP的網(wǎng)關(guān)里編寫了網(wǎng)關(guān)軟件,網(wǎng)關(guān)軟件實現(xiàn)了如下功能:
1)利用MPTCP的預(yù)留接口控制傳輸參量,達(dá)到根據(jù)網(wǎng)絡(luò)環(huán)境變化調(diào)整傳輸參量的目的;
2)網(wǎng)關(guān)軟件供用戶實時查看傳輸層參量,獲知當(dāng)前網(wǎng)絡(luò)傳輸情況,以此可選擇是否調(diào)整;
3)將Linux命令集成到了一個程序中,提供了不同于傳統(tǒng)Linux終端的界面,具有用戶友好的操作。