基于嵌入式TCP/IP軟件體系結(jié)構(gòu)的優(yōu)化設(shè)計與實現(xiàn)(06-100)
整序、重發(fā)和窗口控制的實現(xiàn)
本文引用地址:http://www.butianyuan.cn/article/81179.htm對于嵌入式TCP/IP系統(tǒng),可以使用隊列緩存的方式來實現(xiàn)整序、重發(fā)和窗口控制。隊列的一個元素指向一個數(shù)據(jù)包,隊列的最大長度沒有限制。
對于整序,使用ooSeq隊列,如果發(fā)現(xiàn)接收的TCP包序號并不是期望的,但序號在接收窗口內(nèi),此時不能立刻接收這個包也不應(yīng)丟棄,可先將這個包放入ooSeq隊列。當(dāng)期望TCP包被接收后,再查看ooSeq隊列現(xiàn)在是否有TCP包成為了期望的數(shù)據(jù)包,如果有則將其取出并處理。
對于重發(fā),使用unacked隊列,每一個需要被應(yīng)答的TCP數(shù)據(jù)包發(fā)送以后都要放入unacked隊列,等到被應(yīng)答以后才從隊列中刪除。TCP重發(fā)定時只針對unacked隊列第一個TCP包,如果定時超出,重新發(fā)送,重發(fā)次數(shù)超出規(guī)定值,則報錯。
對于窗口控制,使用unsend隊列,如果發(fā)現(xiàn)對方的窗口過小無法接收這個數(shù)據(jù)包,則只發(fā)送部分?jǐn)?shù)據(jù),將多余部分放入unsend隊列,等待對方發(fā)來TCP包通知新的窗口大小時,再次判斷是否可以發(fā)送。如果在unsend隊列不為空的情況下,需要發(fā)送的數(shù)據(jù)包都應(yīng)插入unsend隊列。
嵌入式TCP/IP的性能分析
圖5給出了將優(yōu)化設(shè)計后的TCP/IP移植到ARM9處理器、CS8900A網(wǎng)絡(luò)控制器中,時鐘頻率為133MHz下,與Internet連接的情況。
系統(tǒng)支持最大發(fā)起連接數(shù)約為380,最大并發(fā)連接率約為170cps。隨著呼叫數(shù)的增加,平均分組到達(dá)也隨之增加,導(dǎo)致網(wǎng)絡(luò)傳輸數(shù)據(jù)的增加,從而最大建立時間變長。但最小的建立連接時間基本保持不變,說明系統(tǒng)具有良好的性能。
tcp/ip相關(guān)文章:tcp/ip是什么
評論