Chapter 7 Queue Management and Packet Scheduling 696430068 曾敬任.
-
date post
21-Dec-2015 -
Category
Documents
-
view
237 -
download
0
Transcript of Chapter 7 Queue Management and Packet Scheduling 696430068 曾敬任.
Chapter 7
Queue Management and
Packet Scheduling696430068
曾敬任
Outline Queue Class (queue.cc) PacketQueue Class (queue.h) Example : Drop-Tail Queue objects 種類介紹 JoBS 簡介 抽考
Outline Queue Class (queue.cc) PacketQueue Class (queue.h)PacketQueue Class (queue.h) ExampleExample :: Drop-Tail Drop-Tail Queue objectsQueue objects 種類介紹種類介紹 JoBS JoBS 簡介簡介 抽考抽考
Packet Scheduling & Buffer management Packet Scheduling :決定哪個封包該被服務或 dro
p 的過程 Ex : FIFO 、 RR Buffer management :管理封包在 queue 中存取的
方式 Ex : RED Buffer management - ▪ Probabilistically discard packets ▪ Probability is computed as a function of average queue size
Queue class Public: virtual void enque(Packet*) = 0; virtual Packet* deque() = 0; virtual void recv(Packet*, Handler*); void resume();
Queue class protected: Queue(); ~Queue(); void reset(); int qlim_; int blocked_; /* blocked now? */ int unblock_on_resume_; /* unblock q on i
dle? */
Outline Queue Class (queue.cc)Queue Class (queue.cc) PacketQueue Class (queue.h) ExampleExample :: Drop-Tail Drop-Tail Queue objectsQueue objects 種類介紹種類介紹 JoBS JoBS 簡介簡介 抽考抽考
PacketQueue class Queue class 管理 buffer management 和 sc
heduling PacketQueue 則管理如何實際 enque deque
等等的 low-level operations ( 封包在 queue 裡頭的順序 )
PacketQueue class public: PacketQueue() virtual int length() virtual Packet* enque(Packet* p) virtual Packet* deque() Packet* lookup(int n) virtual void remove(Packet*); void remove(Packet *, Packet *);
PacketQueue class protected: Packet* head_; Packet* tail_; int len_; // packet count int bytes_; // queue size in bytes
Outline Queue Class (queue.cc)Queue Class (queue.cc) PacketQueue Class (queue.h)PacketQueue Class (queue.h) Example: Drop-Tail Queue objectsQueue objects 種類介紹種類介紹 JoBS JoBS 簡介簡介 抽考抽考
Drop-Tail Class class DropTail : public Queue { protected: void reset(); void enque(Packet*); Packet* deque(); void shrink_queue(); // To shrink queue and d
rop excessive packets. PacketQueue *q_; /* underlying FIFO queu
e */
Outline Queue Class (queue.cc)Queue Class (queue.cc) PacketQueue Class (queue.h)PacketQueue Class (queue.h) ExampleExample :: Drop-Tail Drop-Tail Queue objects種類介紹 JoBS JoBS 簡介簡介 抽考抽考
Different types of Queue objects 所有 Queue objects 都會使用的結構參數: limit_ queue 容納封包的數目 blocked_ 初始值為 false
unblock_on_resume 初始值為 true ,當指定的 queue 裡頭最後一個封包送出即可設為 1( 不用等到封包 received)
Different types of Queue objects Queue objects 包含以下不同的種類: Drop-Tail objects - FIFO queue ,沒有特別的 methods 結
構參數或狀態變數 FQ objects - Fair Queuing ,結構參數: secsPerByte SFQ objects - Stochastic Fair queuing , 結構參數: maxqueue_ buckets_ DRR objects - deficit round robin scheduling 有 deficit counter 用來表示這個 round 有多少 service 可以
使用,如果 packet size 比 deficit counter 大,那麼在下一輪就會在這個 deficit size 增加 quantum size 。結構參數:
buckets_ blimit_ quantum_ mask_
Different types of Queue objects RED - Random Early Dection 透過計算平均 queue size 偵測起始的 congestion ,當平均
queue size 超過預設的 threshold , gateway 就會根據機率對接下來每個到達的封包進行 drop 或 mark ;機率跟平均queue size 有關。當封包塞滿的時候, RED 會將平均 queue size 保持在較低的狀態。
RED 通常伴隨一個有 congestion control 的 protocol 。 RED 可以用來解決例如全局同步的問題。
結構參數: bytes_ queue-int-bytes_ thresh_ maxthresh_ mean_pktsize_ q_weight_ wait_ linterm_ setbit_ drop-tail_
Outline Queue Class (queue.cc)Queue Class (queue.cc) PacketQueue Class (queue.h)PacketQueue Class (queue.h) ExampleExample :: Drop-Tail Drop-Tail Queue objectsQueue objects 種類介紹種類介紹 JoBS 簡介 抽考抽考
JoBS 簡介 Joint Buffer Management and Scheduling 目的:根據流量分類對每個節點提供絕對
和相對的 loss 和 delay 的獨立區分 QoS constraint :
Class-1 Delay ≈ 2∙Class-2 Delay Class-2 Loss Rate ≈ 10-1∙Class-3 Loss Rate Class-3 Delay ≤ 5ms
JoBS 簡介 JoBS constraints :
Relative delay constraints (RDC) Absolute delay constraints (ADC) Relative loss constraints (RLC) Absolute loss constraints (ALC) Absolute rate constraints (ARC)
ALC > ADC , ARC > Relative Constraints
Outline Queue Class (queue.cc)Queue Class (queue.cc) PacketQueue Class (queue.h)PacketQueue Class (queue.h) ExampleExample :: Drop-Tail Drop-Tail Queue objectsQueue objects 種類介紹種類介紹 JoBs JoBs 簡介簡介 抽考
抽考-模擬環境
抽考-模擬環境 設定兩條 TCP 連線,並且在 TCP 連線之上
建立 FTP 應用程式,兩者速率皆相同。 將 r 到 d 之間的 queue limit 設為 9 皆使用 Drop Tail 演算法 n0 從第 0.1 秒開始傳送封包到 d ,在第 30
秒停止 n1 從第 10 秒開始傳送封包到 d ,在第 30
秒停止
抽考-模擬結果 結果: n0 sent packet : 5367 loss packet : 0 n1 sent packet : 3 loss packet : 3
抽考-題目 抽考題目:透過更改 queue objects ( 不更
改 queue limit 、速率和時間等等的其他參數 ) ,使 n1 傳送封包的效率有顯著的提升。
提示:更改 Drop-Tail 演算法