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