【正文】
ersity of Post and Telemuniations 30 TCP擁塞控制要解決 的 3個問題 1)如何限制一個已發(fā)生擁塞的連接的發(fā)送速率? 2) TCP發(fā)送方如何確定發(fā)生了擁塞? 3)當確定發(fā)生了擁塞后,采用什么算法來改變發(fā)送速率? 2021/6/21 Yang WuJun,xi39。an University of Post and Telemuniations 31 發(fā)送方如何調(diào)整發(fā)送速率? ? 接收窗口 RcvWin的值由接收方確定,然后通知發(fā)送方,它用來防止接收方緩存溢出。但沒有提供網(wǎng)絡的擁塞狀況。 ? 網(wǎng)絡的狀況,由發(fā)送方探測確定,并記為擁塞窗口 Cwin。 ? 在任何時候,發(fā)送方實際的窗口大小應為 CWin和 RcvWin中的最小值,即滿足: LastByteSentLastByteAcked=min{CWin,RcvWin}. ? 為分析方便,我們忽略 RcvWin,則得到發(fā)送方的發(fā)送速率 R=CWin/RTT。 ? 顯然,在發(fā)送方調(diào)整 CWin,就可以調(diào)整發(fā)送速率 。 2021/6/21 Yang WuJun,xi39。an University of Post and Telemuniations 32 擁塞的確定與控制算法 ? 在 TCP發(fā)送方,如果超時,或連續(xù)受到三個冗余 的 ACK,則認為發(fā)生分組丟失事件,從而判定擁塞。 ? TCP的擁塞控制算法: ? 加性增,乘性減 AIMD( additiveincrease and multiplicativedecrease) ? 慢啟動( slow- start) ? 超時反應 2021/6/21 Yang WuJun,xi39。an University of Post and Telemuniations 33 Cwin在不同階段的變化方式 ? 慢啟動階段: 每經(jīng)過 1個 RTT, Cwin加倍。 即每收到一個 Ack,執(zhí)行 Cwin= Cwin+ 1。 ? 擁塞避免階段: 在沒有發(fā)生丟失事件下,每經(jīng)過 1個 RTT, Cwin加1。而當發(fā)生丟失事件后,則將 Cwin減半 2021/6/21 Yang WuJun,xi39。an University of Post and Telemuniations 34 慢啟動的詳解 ? 當可用帶寬遠大于Cwin/RTT時,線性增長速率的方式太慢。 ? 慢啟動的思想是: TCP連接建立后,從一個較慢的速率開始,但以指數(shù)方式增加發(fā)送速率,直到達到慢啟動門限SSTH。 Host A RTT Host B time 2021/6/21 Yang WuJun,xi39。an University of Post and Telemuniations 35 Cwin與 SSTH初始值的確定 ? 通常情況下, TCP連接建立開始, Cwin= 1 or2分組,但對于高速網(wǎng)絡( 100Mbps,1Gbps等),開采用更大的值。 ? SSTH:初始值可任意高,一般有兩種取法,SSTH= rcvWin,或 64kB。 2021/6/21 Yang WuJun,xi39。an University of Post and Telemuniations 36 TCP擁塞控制的結(jié)論 ? 擁塞控制的實現(xiàn)是依靠對發(fā)送方 Cwin參數(shù)的調(diào)整實現(xiàn)的。 ? Cwin的變化在慢啟動和擁塞避免階段是不同的。 ? 可能的改進應在哪兒? ? 注意: TCP的流量控制,丟失重傳和擁塞控制是協(xié)同工作的 。 2021/6/21 Yang WuJun,xi39。an University of Post and Telemuniations 37 問題 ? A通過 TCP連接向主機 B連續(xù)發(fā)送兩個報文段,第一個序號為 90,第二個為 110, ? 第一個報文段中有多少數(shù)據(jù)? ? 假設第一個報文段丟失,而第二個到達主機 B,那么在主機B發(fā)往 A的確認報文中,確認號是多少? ? TCP在連續(xù)收到三個冗余的 ACK后才啟動重傳機制,你認為設計者為什么不在收到第一個冗余ACK后就開始重傳?