IPv4/IPv6雙協(xié)議棧實(shí)現(xiàn)方案解析
圖3 滑動(dòng)窗口示意圖
3.4.3 簡化的窗口機(jī)制
標(biāo)準(zhǔn)的TCP協(xié)議使用慢啟動(dòng)的滑動(dòng)窗口機(jī)制[5],它允許發(fā)送方在等待一個(gè)確認(rèn)之前發(fā)送多個(gè)窗口。其確認(rèn)是一種批量的確認(rèn),處理器要對多個(gè)數(shù)據(jù)報(bào)連續(xù)傳輸進(jìn)行維護(hù)和處理,困難較大。
而滑動(dòng)窗口的一個(gè)極限情況,是只使用單個(gè)窗口,這就變成了一種簡單確認(rèn)的處理方法。只是對于單個(gè)數(shù)據(jù)報(bào)的發(fā)送和確認(rèn),雖然節(jié)約了系統(tǒng)的資源,也使維護(hù)更加方便,但是卻降低了效率。
系統(tǒng)采用了一個(gè)折中的辦法,適當(dāng)調(diào)整窗口的大小,限制連續(xù)發(fā)送報(bào)文段的個(gè)數(shù)來實(shí)現(xiàn)了一個(gè)簡化的窗口機(jī)制,如圖3所示。在這里,設(shè)置窗口大小(snd_wnd)為4個(gè)最大報(bào)文段長度(MSS),可以適當(dāng)提高數(shù)據(jù)傳輸效率。
4 協(xié)議棧的移植和測試
在完成雙協(xié)議棧的設(shè)計(jì)調(diào)試后,將此協(xié)議棧移植到基于ARM7TDMI核的AT91M40800開發(fā)板上,使用其中內(nèi)嵌的10Mbps以太網(wǎng)控制器 RTL8019AS作為網(wǎng)絡(luò)接口。在該平臺上實(shí)現(xiàn)了一個(gè)簡單的Web Server。通過構(gòu)建提供IPv4地址和IPv6地址訪問的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)進(jìn)行測試,該雙協(xié)議棧運(yùn)行穩(wěn)定、正常。
同時(shí),在相同環(huán)境下將此協(xié)議棧與開源的協(xié)議棧LwIP作了吞吐率性能方面的比較,如圖4所示。可知,本協(xié)議棧有較好的吞吐率,在連接數(shù)達(dá)到3條以后,平均吞吐率達(dá)到了460kB/s。
圖4 協(xié)議棧吞吐率比較
評論