# 網際網路期末考
## TCP(Transmission Control Protocol)
### 功能
* Segmentation:資料區段分割
* Connection:連接導向的服務
* Reliability:可靠性的服務
* Flow control:使送端與收端的傳輸速度㇐致
* Congestion control:利用cwnd控制封包送到網路上的數量以達到最好效能(機制不同直接影響TCP傳輸效能)
### TCP Tahoe
#### Congestion control 機制
* SS:cwnd指數增長, if cwnd(t) < ssthresh
* CA:cwnd線性增長, if cwnd(t) >= ssthresh
* FR:
* 收到3個重複ACK將重傳,不等timeout
* ssthresh = cwnd / 2, cwnd = 1
#### 問題:FR將cwnd設為1導致傳輸效率下降
### TCP Reno
#### Congestion control 機制
* SS與CA機制與Tahoe相同
* FR':
* ssthresh = cwnd / 2, 不修改cwnd
* 結束後進入FC
* FC:
* cwnd = ssthresh + 3
* 每收到一個重複ACK,cwnd += 1
* 當收到一個重送封包的ACK,離開FC,進入CA,cwnd = ssthresh
#### 問題:FC接收到一個重送封包即進入CA,無法重送多個封包,導致後續的遺失封包需要等到timeout才能重送
### TCP NewReno
#### Congestion control 機制
* SS, CA, FR'機制與Reno相同
* FC':
* 只有收到所有重送封包的ACK後,才會離開FC,進入CA
* 確保所有遺失封包都被重送完成,避免不必要的timeout等待
#### 問題:FC在一個RTT(Round Trip Time)內只能重送一個封包
### TCP SACK
#### Congestion control 機制
* SS, CA, FR'機制與NewReno相同
* FC'':
* 新增SACK選項可在一個RTT內重送多個封包
* 接收端可以告知發送端哪些封包已經收到
* 發送端可以更精確地知道哪些封包需要重送
#### 問題:上述都是基於cwnd探測可用頻寬,無法及時反應流量變化,且使得網路遭遇週期性的擁塞
### TCP Vegas
#### Congestion control 機制
* 基於Round Trip Time(RTT)機制來預測和避免擁塞發生
* 透過測量實際傳送率與預期傳送率的差異來調整行為
* 使用BaseRTT(所有測量RTT中的最小值)作為基準
* 計算Diff值:預期傳送率和實際傳送率的差異
* Diff = Expected - Actual
* Expected = (windowsize/BaseRTT)
* Actual = (bytes_transmitted/measured_RTT)
* SS:
* 為避免封包送得太快而遺失,每2個RTT才將cwnd加倍
* 根據預期傳送率和實際傳送率的差異來調整ssthresh
* Queue產生時,從SS進入CA
* CA: 根據Diff值的大小來調整cwnd:
* 當Diff < α:表示傳輸太慢,增加cwnd
* 當Diff > β:表示傳輸太快,降低cwnd
* 當α < Diff < β:保持cwnd不變
* 可以在擁塞發生前就進行預防
* FR:根據RTT調整
### TCP 同步化問題
#### 定義
* 多個TCP Connection同時進行中,會共享(競爭)頻寬
* 這些TCP Connection在一段時間後,cwnd會逐漸地趨於一致
#### 問題
* 頻寬利用率低
* 高佇列延遲
* 不公平頻寬
### 影響TCP效能的因素
* RTT
* packet send到ACK的時間
* 較短的連線效能較好,因為等待ACK開啟cwnd的時間較短
* 對TCP效能有直接影響
* Time Granularity
* TCP不會即時監測封包timeout
* 較小時可以更及時發現timeout並進行重送
* 對於使用Reno等依賴timeout機制的TCP版本特別重要
* ssthresh
* 決定何時從SS進入CA
* 太大容易導致多封包丟失
* 太小則會過早進入CA,降低頻寬利用效率
## 資料流整形器(TRAFFIC SHAPER)
### 功能
* 調整傳輸資料的平均速度,讓封包依照規定速率傳送
* 主要用於避免資料流量因突發特性造成網路壅塞
### 演算法
#### 漏桶演算法(Leaky Bucket Algorithm)
* 類似有漏洞的水桶,無論輸入速度多快,輸出速度固定
* 當buffer滿時新進封包會被丟棄
* 缺點是輸出總是固定速率
* 實作在資料傳送端或是路由器
#### 令牌桶演算法(Token Bucket Algorithm)
* 以固定速率產生令牌到令牌桶中
* 封包傳送需消耗令牌
* 當令牌桶滿時丟棄的是令牌而非封包
* 可以處理突發流量
## 差異式服務網路
### 服務模型種類
* 整合服務網路模型(Integrated Service)
* 差異式服務網路模型(Differentiated Service):簡化核心路由器複雜度,擴充性高
### 差異式服務網路模型-服務型態
* EF(Expedited Forwarding)服務:提供低延遲、低延遲抖動、低封包遺失率
* AF(Assured Forwarding)服務:主要針對吞吐量要求,對延遲沒有嚴格要求
### AF服務運作機制
#### 主要功能
* 量測速率:邊境路由器根據服務協議(SLA)量測客戶資料流速率
* 標記封包:超過規範標記較高丟棄機率,符合規範標記較低值
* 丟棄封包:擁塞時優先丟棄高丟棄機率值的封包
#### 測量演算法分類
* 量測資料流平均速率:TSWTCM
* 令牌桶演算法:
* SRTCM
* TRTCM
#### TSWTCM(Time Sliding Windows-Three Color Marker)
* 基於量測資料流平均速率的演算法
* 參數:
* CIR(Committed Information Rate) - 承諾資訊速率
* PIR(Peak Information Rate) - 尖峰資訊速率
* 標記機制:
* 綠色:流量低於CIR
* 黃色:流量介於CIR與PIR之間
* 紅色:流量超過PIR
#### SRTCM(Singal Rate-Three Color Marker)
* 基於單一速率和兩個突發大小
* 參數:
* CIR:承諾資訊速率
* CBS(Committed Burst Size):承諾突發大小
* EBS(Excess Burst Size):超額突發大小
* 運作方式:
* 使用單一令牌產生速率
* 當令牌不足時,封包會被標記為較高的丟棄優先權
* 維護兩個令牌桶:
* 第一個桶控制CBS
* 第二個桶控制EBS
#### TRTCM(Two Rate-Three Color Marker)
* 基於兩個速率和兩個突發大小
* 參數:
* CIR:承諾資訊速率
* PIR:尖峰資訊速率
* CBS:承諾突發大小
* PBS(Peak Burst Size):尖峰突發大小
* 運作方式:
* 使用兩個獨立的令牌產生速率
* 適合需要考慮尖峰速率的情況
* 可以更精確地控制網路資源使用
## 無線網路封包傳送遺失模型
### 封包遺失
* 有線網路:主要是擁塞造成的遺失(Congestion loss),很少發生錯誤遺失(Error loss)
* 無線網路:同時存在Congestion loss和Error loss,且難以區分
### 遺失模型:
* Distributed loss:使用Random uniform model,每個封包都有固定機率P會遺失
* Burst loss:使用GE(Gilbert-Elliott)model,有GOOD和BAD兩種狀態,各有不同的遺失機率
### 傳送模式對遺失的影響:
* Multicast:應用層的封包遺失率等於實體層的封包遺失率
* Unicast:因為有重傳機制,應用層的封包遺失率會比實體層低