chuong 9

6
 Chươ ng 9: C MÔĐUN DCH VPN BI T T RONG NS Chú ý rng: các môđun dch vphân bit được miêu ttrong chương này được kết hp vi ns-2.1b8. Các dch vphân bit hay Dif fSer v, là mt cu trúc IP QoS da trê n vic đánh du gói tin cho phép các gói tin được ưu tiên theo yêu cu người sdng. Trong sut thi gian btc nghn, các gói tin có độ ưu tiên thp bloi bnhiu hơn các gói tin có độ ưu tiên cao. Trong chương này trình bày các mô đun DiffServ được thc thi đầu tiên bi nhóm mng IP cao cp trong Nortel Networks. 9.1. Tng quan. Cu trúc DiffServ cung cp QoS bng cách chia l ưu l ượng theo các loi khác nhau, đánh du mi gói tin vi mt đim mã hoá chđịnh loi ca nó, và lp trình gói tin  phù hp. Mođun DiffServ trong NS có thhtr4 lp lưu lượng, mi lp 3 mc loi btheo thtcho phép xlí các khác nhau ca lưu lượng trong phm vi mt lp đơn. Các gói tin trong mt gói l ưu l ượng được thêm vào mt cách phù hp vào hàng đợi vt lí RED, cha 3 hàng đợi o (mi cái cho mi mc loi b). Các tham sRED khác có thcu hình hàng đợi o, làm cho các gói tin tmt hàng đợi o bloi bthường xuyên hơn các hàng đợi khác. Mt gói tin vi mc độ ưu tiên thp đuc xlí tt hơn trong thi gian tc nghn bi vì nó đã được đánh du mt đim mã hóa tương ng vi mt hàng đợi o liên quan ti các tham sRED. Mođun DiffServ trong NS có các thành phn sau: Policy: được đặc tbi nhà qun lí mng vmc lưu lượng ca mt lp nhn tmng. Edge router: đánh du các gói tin vi mt đim mã hóa theo mc quy ước. Core router: kho sát vi c đánh du các gói tin và gi chúng đi cho phù hp. DiffServ cgng hn chế phc tp tedge router. 9.2. Thc thi: Các thtc và hàm trình y trong phn y có thtìm thy trong ~ns/diffserv/dsred, dsredq, dsEdge, dsCore, dsPolicy. {cc,h}. 9.2.1.Hàng đợi Queue trong mô đun DiffServ. Mt hàng đợi DiffServ trong hàng đợi (trong lp dsREDQueue) xut phát tlp cơ sQueue được thc thi trong mô đun DiffServ để cung cp các chc năng cơ bn cu router DiffServ, xem dsRED.{cc,h}. dsQueue có các chc năng sau: Thc thi các hàng đợi vt lí RED theo liên kết đơn. Thc thi các hàng đợi o trong phm vi mt hàng đợi vt lí, vi vic thiết lp tham sriêng cho mi hàng đợi đợi o. Xác định trong hàng đợi vt lí và hàng đợi o mt gói tin được thêm vào theo la chn ca lch lp trình. Xác định thàng đợi vt lí và hàng đợi o mt gói tin bxoá đi theo la chn ca lch lp trình.

Upload: tran-tuan-linh

Post on 12-Jul-2015

24 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Chuong 9

5/11/2018 Chuong 9 - slidepdf.com

http://slidepdf.com/reader/full/chuong-9-55a2341942e79 1/6

Chương 9: CÁC MÔĐUN DỊCH VỤ PHÂN BIỆT TRONG NS

Chú ý rằng: các môđun dịch vụ phân biệt được miêu tả trong chương này đượckết hợp với ns-2.1b8.

Các dịch vụ phân biệt hay DiffServ, là một cấu trúc IP QoS dựa trên việc đánhdấu gói tin cho phép các gói tin được ưu tiên theo yêu cầu người sử dụng. Trong suốt thờigian bị tắc nghẽn, các gói tin có độ ưu tiên thấp bị loại bỏ nhiều hơn các gói tin có độ ưutiên cao. Trong chương này trình bày các mô đun DiffServ được thực thi đầu tiên bởinhóm mạng IP cao cấp trong Nortel Networks.

9.1. Tổng quan.Cấu trúc DiffServ cung cấp QoS bằng cách chia lưu lượng theo các loại khác

nhau, đánh dấu mỗi gói tin với một điểm mã hoá chỉ định loại của nó, và lập trình gói tin phù hợp. Mođun DiffServ trong NS có thể hỗ trợ 4 lớp lưu lượng, mỗi lớp 3 mức loại bỏtheo thứ tự cho phép xử lí các khác nhau của lưu lượng trong phạm vi một lớp đơn. Các

gói tin trong một gói lưu lượng được thêm vào một cách phù hợp vào hàng đợi vật líRED, chứa 3 hàng đợi ảo (mỗi cái cho mỗi mức loại bỏ). Các tham số RED khác có thểcấu hình hàng đợi ảo, làm cho các gói tin từ một hàng đợi ảo bị loại bỏ thường xuyên hơncác hàng đợi khác. Một gói tin với mức độ ưu tiên thấp đuợc xử lí tốt hơn trong thời giantắc nghẽn bởi vì nó đã được đánh dấu một điểm mã hóa tương ứng với một hàng đợi ảoliên quan tới các tham số RED.

Mođun DiffServ trong NS có các thành phần sau:Policy: được đặc tả bởi nhà quản lí mạng về mức lưu lượng của một lớp nhận từ

mạng.Edge router: đánh dấu các gói tin với một điểm mã hóa theo mức quy ước.Core router: khảo sát việc đánh dấu các gói tin và gởi chúng đi cho phù hợp.

DiffServ cố gắng hạn chế phức tạp từ edge router.9.2. Thực thi:

Các thủ tục và hàm trình bày trong phần này có thể tìm thấy trong~ns/diffserv/dsred, dsredq, dsEdge, dsCore, dsPolicy. {cc,h}.

9.2.1.Hàng đợi Queue trong mô đun DiffServ.Một hàng đợi DiffServ trong hàng đợi (trong lớp dsREDQueue) xuất phát từ lớp

cơ sở Queue được thực thi trong mô đun DiffServ để cung cấp các chức năng cơ bản cảurouter DiffServ, xem dsRED.{cc,h}. dsQueue có các chức năng sau:

• Thực thi các hàng đợi vật lí RED theo liên kết đơn.•

Thực thi các hàng đợi ảo trong phạm vi một hàng đợi vật lí, với việc thiếtlập tham số riêng cho mỗi hàng đợi đợi ảo.• Xác định trong hàng đợi vật lí và hàng đợi ảo một gói tin được thêm vào

theo lựa chọn của lịch lập trình.• Xác định từ hàng đợi vật lí và hàng đợi ảo một gói tin bị xoá đi theo lựa

chọn của lịch lập trình.

Page 2: Chuong 9

5/11/2018 Chuong 9 - slidepdf.com

http://slidepdf.com/reader/full/chuong-9-55a2341942e79 2/6

Lớp dsREDQueue chứa 4 hàng đợi vật lí RED, mỗi cái chứa 3 hàng đợi ảo. Sốhàng đợi vật lí và hàng đợi ảo được định nghĩa trong numPre và numQueues_. Mỗi sự kếthợp của hàng đợi vật lí và hàng đợi ảo phù hợp với một điểm mã hoá (hoặc một mức loại bỏ).

Hàng đợi vật lí được định nghĩa trong redQueue, cho phép lưu lượng khác nhau

 bằng cách định nghĩa các hàng đợi với cấu hình độc lập và các tham số trạng thái, xemdsredq.{cc,h}. Ví dụ chiều dài của mỗi hàng đợi ảo được tính dựa trên các gói tin đượcánh xạ tới hàng đợi đó. Do vậy việc loại bỏ các gói tin quyết định có thể ứng dụng dựatrên trạng thái và tham số cấu hình của hàng đợi ảo. Lớp redQueue kông bằng với lớpREDQueue, luôn sẵn sàng trong NS. Thay vì vậy nó phiên bản sửa đổi của RED thực thivới khái niệm của hàng đợi ảo và chỉ được sử dụng bởi lớp redQueue để hiểu rõ hàng đợivật lí. Tất cả người sử dụng liên quan tới lớp redQueue được điều khiển thông qua cáclệnh của lớp dsREDQueue.

Lớp dsREDQueue chứa cấu trúc dữ liệu được biết đến như là Per Hop Behavior (PHP- hành vi trên từng chặng) Table InDiffServ, các router rìa đánh dấu các gói tin vớicác mã hoá và các router lõi đáp ứng sự tồn tại các mã hóa; cả hai sử dụng bảng PHB để

ánh xạ mã hóa tới hàng đợi vật lí và hàng đợi ảo riêng biệt. Bảng PHB được định nghĩanhư một mảng với 3 trường:struct phbParam{

int codePt_; // tương ứng với mã hoáint queue_; // hàng đợi vật líint prec_; // hàng đợi ảo (mức loại bỏ).

};

9.2.2. Các router rìa và các router lõi.Các router DiffServ rìa và lõi được định nghĩa trong lớp edgeQueue và

coreQueue, xuất phát từ lớp dsREDQueue, xem dsEdge, dsCore.{ h, cc}.Việc đánh dấu gói tin được thực thi trong lớp edgerQueue. Một gói tin đuợc đánhdấu với một mã theo mức ưu tiên trước khi nó được đặt vào hàng đợi vật lí và hàng đợiảo phù hợp. Lớp edgeQueue có một tham chiếu tới một instance của lớp PolicyClassifier,chứa mức ưu tiên của các gói tin đã được đánh dấu.9.2.3. Qui ước (ưu tiên)

Lớp Polocy và lớp con của nó (xem dsPolicy.{cc, h}.) định nghĩa các qui địnhthường sử dụng bởi router rìa để đánh dấu các gói tin đến. Một qui định đuợc thiết lậpgiữa một node nguồn và một node đích. Tất cả các luồng kiểm tra cặp nguồn-đích nhưmột sự tập hợp các lưu lượng. Qui định cho mỗi lưu lượng khác nhau có một loại quiđịnh phù hợp, loại đếm giờ và mã hoá khởi tạo. Bộ đếm thời gian đặc tả phương thức

cho việc đo lường các biến trạng thái cần thiết cho trình qui định. Cho ví dụ, TSWTagger là một bộ đếm thời gian đo lường tốc độ lưu lượng trung bình, sử dụng một cửasổ thời gian. Khi một gói tin đến một router rìa, nó được kiểm tra để xác định tập hợpcủa nó. Bộ đếm thời gian được đặt tả bởi các qui định tương ứng trong việc cập nhật tấtcả các biến trạng thái. Trình qui định đưa ra để xác định làm thế nào đánh dấu một gói tin phụ thuộc vào tập hợp các biến trạng thái: khi mã hoá hay xoá bỏ mã hóa. Sau đó một góitin được thêm vào hàng đợi phù hợp.

Hiện tại có sáu kiểu qui định khác nhau được định nghĩa:

Page 3: Chuong 9

5/11/2018 Chuong 9 - slidepdf.com

http://slidepdf.com/reader/full/chuong-9-55a2341942e79 3/6

1. Cửa sổ trượt thời gian với hai màu đánh dấu (TSW2CMPolicer): sử dụngmột CIR và 2 mức loại bỏ. Mức thấp hơn được sử dụng khi vượt quá CIR.

2. Cửa sổ trượt với 3 màu đánh dấu (TSW3CMPolicer): sử dụng CIR, PIR và ba mức loại bỏ. Mức loại bỏ trung bình được sử dụng khi CIR bị vượt quá,mức ưu tiên thấp nhất được sử dụng khi PIR bị vượt quá.

3. Token Bucket (tokenBucketPolocer): sử dụng một CIR và một CBS và haimức loại bỏ: một gói tin đến được đánh dấu với mức ưu tiên thấp hơnnếu và chỉ nếu nó lớn hơn token bucket.

4. Single Rate Three Color Marker (srTCMPolicer): sử dụng một CIR, mộtCBS và một EBS để lựa chọn từ 3 mức ưu tiên loại bỏ.

5. Two Rate Three Color Marker (trTCMPolicer): sử dụng một CIR, CBS,PIR, và một PBS để chọn lựa từ ba mức ưu tiên loại bỏ.

Các định nghĩa trên được định nghĩa như một lớp con của dsPolicy. Bộ đếm thờigian và trình qui ước thực thi trong các hàm applyMeter và applyPolicer, được định nghĩanhư các hàm ảo trong trong lớp dsPolicy. Người sử dụng các qui ước trên lí thuyết có thểđược thêm vào trong một cách thông dụng. Đề cập đến DumbPolicy như một ví dụ đơn

giản nhất. Tất cả các qui định này được lưu trữ trong bảng qui định. Bảng này là mộtmảng bao gồm các trường node nguồn và node đích, loại qui ước, kiểu bộ đếm thời gianvà mã hoá khởi đầu, và thông tin trạng thái khác như chỉ ra dưới đây:

Tỉ lệ CIR và PIR trên lí thuyết tính theo bit trên giây.CIR: tỉ lệ thông tin được chuyển giao.PIR: tỉ lệ thông tin cao nhất.CBS: kích thước truyền hàng loạt được chuyển giao.EBS: kích thước truy xuất truyền hàng loạt.PBS: kích thước truyền hàng lọat cao nhất.Thời gian đến của gói tin cuối cùng.Tỉ lệ gởi tin trung bình.

Độ dài cửa sổ TSW.Lớp PolicyClassifier cũng chứa một bảng Policer để lưu trữ ánh xạ từ một kiểuqui ước và mã hoá khởi tạo ban đầu sang mã hóa thấp hơn phù hợp với nó.

9.3. Cấu hình.Số hàng đợi vật lí và hàng đợi ảo có thể được cấu hình như:$dsredq set numQueues_ 1$dsredq setNumPrec 2Biến numQueues_ trong lớp dsREDQueue đặc tả số hàng đợi vật lí. Nó có giá trị

mặc định bằng 4 và được định nghĩa trong ~ns/tcl/lib/ns-default.tcl và có thể bị thay đổinhư trong ví dụ trên. Biến setNumPrec thiết lập số hàng đợi ảo trong phạm vi một hàng

đợi vật lí. Tham số RED có thể cấu hình cho mỗi hàng đợi ảo như sau:$dsredq configQ 0 1 10 20 0.10Kích thước gói tin (bằng byte) cũng cần thiết cho việc tính toán chiều dài trung

 bình của hàng đợi RED.$dsredq meanPktSize 1500Biến thể của MRED thường được dùng để tính toán kích thước hàng đợi có thể

được cấu hình.$dsredq setMREDMode RIO-C 0

Page 4: Chuong 9

5/11/2018 Chuong 9 - slidepdf.com

http://slidepdf.com/reader/full/chuong-9-55a2341942e79 4/6

Các lệnh trên thiết lập chế độ MRED của hàng đợi vật lí 0 tới RIO-C. Nếu không bao gồm cả hai tham số, tất cả các hàng đợi có thể thiết lập mặc định là MRED.

Các chế độ MRED khác được hỗ trợ trong DiffServ là:

RIO-C (RIO Coupled): khả năng loại bỏ một gói tin khỏi hiện trạng của nó trên

cơ sở chiều dài trung bình của tất cả các hàng đợi ảo. Trong khi khả năng loại bỏ một góitin khỏi hiện trạng của nó chỉ dựa trên hàng đợi trung bình của các hàng đợi ảo.RIO-D (RIO De-coupled): thông thường tới RIO-C, ngoại trừ khả năng laọi bỏ

gói tin ra khỏi hiện trạng của nó dựa trên kích thước hàng đợi ảo của nó.WRED (Weighted RED): tất cả các khả năng dựa trên chiều dài hàng đợi đơn.DROP: giống như một hàng đợi drop-tail với giới hạn được thiết lập bởi giới hạn

nhỏ nhất RED. Khi kích thước hàng đợi đạt đến ngưỡng nhỏ nhất, tất cả các gói tin bịloại bỏ không quan tâm tới việc đánh dấu.

Các lệnh sau đây thêm một entry vào bảng PHB và ánh xạ mã hóa 11 sang hàngđợi vật lí 0 và hàng đợi ảo 1.

$dsredq addPHBEntry 11 0 1

Trong NS, các gói tin được mặc định với mã hoá là 0. Do đó, người dùng phảithêm vào một entry PHB cho mã 0 theo thứ tự điều khiển lưu lượng tốt nhất.Với việc thêm vào đó, các lệnh có sẵn ch phép người dùng lựa chọn chế độ lập

trình giữa các hàng đợi vật lí. Cho ví dụ:$dsredq setSchedularMode WRR $dsredq addQueueWeights 1 5Cặp lệnh trên thiết lập chế độ lập trình cho Weighted Round Robi và trọng lượng

cho hàng đợi 1 tới 5. Các chế độ lập trình khác hỗ trợ là Weighted Interleaved RoundRobin (WIRR), Round Robin (RR), và Priority (PRI).

Chế độ lập trình mặc định là Round Robin.Với mỗi lập trình qui ước, các qui ước sắp theo một thứ tự tuần tự với hàng đợi 0

có mức ưu tiên cao nhất. Cũng vậy, một hàng đợi có thể thiết lập giới hạn băng thông lớnnhất mà một hàng đợi riêng biệt có thể sử dụng như sau:$dsredq setSchedularMode PRI$dsredq addQueueRate 0 5000000Các lệnh này đặc tả băng thông lớn nhất mà hàng đợi 0 có thể dùng được là 5Mb.

Lệnh addPolicyEntry thường dùng để thêm một entry vào bảng Policy. Nó làm các thamsố khác phụ thuộc vào các kiểu ưu tiên được dùng. Hai tham số đầu tiên sau tên lệnh luônlà các ID node nguồn và đích, và tham số tiếp theo là kiểu ưu tiên. Các kiểu ưu tiên dướiđây là các tham số cần thiết bởi được tổng kết như dưới đây.TSW2CM Khới tạo mã hoá CIR TSW3CM khởi tạo mã hoá CIR PIR 

TokenBucket khởi tạo mã hoá CIR CBSsrTCM khởi tạo mã hóa CIR CBS EBStrTCM khởi tạo mã hoá CIR CBS PIR PBS

Xem xét một đoạn lệnh Tcl với $q là một biến cho một router rìa, và $s và $d lànode nguồn và node đích. Các lệnh dưới đây thêm vào một bộ ưu tiên TSW2CM cho lưulượng đi từ nguồn tới đích.

$q addPolicyEntry [$s id] [$d id] TSW2CM 10 2000000

Page 5: Chuong 9

5/11/2018 Chuong 9 - slidepdf.com

http://slidepdf.com/reader/full/chuong-9-55a2341942e79 5/6

Các tham số khác có thể được sử dụng cho các mức ưu tiên khác trong “ TSW2CM”:TSW3CM 10 2000000 3000000TokenBucket 10 2000000 10000srTCM 10 2000000 10000 20000trTCM 10 2000000 10000 3000000 10000

Chú ý, tuy nhiên chỉ một cấp ưu tiên đó có thể ứng dụng bất kì cặp nguồn và đíchnào. Các lệnh dưới đây thêm một entry vào bảng Policer, đặc tả trTCM đó được khởi tạomã hóa (xanh), hạ xuống mã hoá 11(vàng) và thấp hơn mã hoá 12(đỏ)

$dsredq addPolicerEntry trTCM 10 11 12Đây phải là một entry bảng Policer trong mỗi kiểu ưu tiên và khởi tạo cặp mã hoá.

Hỗ trợ:Xuất các entry trong bảng Policy, trên một dòng ở một thời gian:$dsredq printPolicyTableXuất các entry trong bảng Policer, trên một dòng ở một thời gian:$dsredq printPolicerTableXuất các entry trong bảng PHB, trên một dòng ở một thời gian:

$dsredq printPHBTableKết quả thống kê các gói tin:$dsredq printStatsXuất ví dụ: thống kê các gói tin.CP TotPkts TxPkts ldrops edropsAll 249126 249090 21 1510 150305 150300 0 520 98821 98790 21 10

CP: code point- mã hóaTotPkts: packets received- các gói tin đã nhậnTxPkts: packets sent – các gói tin đã gởi

ldrops: các gói tin bị loại bỏ vì tràn.edrops: việc loại bỏ sớm REDTrả về kích thước RED trung bình của hàng đợi vật lí.$dsredq getAverage 0Trả về kích thước hiện tại của Bucket C (bằng byte)$dsredq getCBucket9.4 Lướt qua các lệnh.

Dưới đây là một danh sách các lệnh liên quan tới các lệnh thường dùng trong mô phỏng.

$ns simplex-link $edge $core 10Mb 5ms dsRED/edge$ns simplex-link $core $edge 10Mb 5ms dsRED/core

Hai lệnh trên tạo các hàng đợi liên kết giữa các router rìa và router lõi.set qEC [[$ns link $edge $core] queue]# Thiết lập tham số RED từ rìa tới lõi:$qEC meanPktSize $packetSize$qEC set numQueues_ 1$qEC setNumPrec 2$qEC addPolicyEntry [$s1 id] [$dest id] TokenBucket 10 $cir0 $cbs0

Page 6: Chuong 9

5/11/2018 Chuong 9 - slidepdf.com

http://slidepdf.com/reader/full/chuong-9-55a2341942e79 6/6

$qEC addPolicyEntry [$s2 id] [$dest id] TokenBucket 10 $cir1 $cbs1$qEC addPolicerEntry TokenBucket 10 11$qEC addPHBEntry 10 0 0$qEC addPHBEntry 11 0 1$qEC configQ 0 0 20 40 0.02

$qEC configQ 0 1 10 20 0.10Khối lệnh này chứa trình điều khiển cho các biến trạng thái để tính toán một cáchchính xác. Việc thiết lập một số hàng đợi vật lí và các mức ưu tiên là tuỳ chọn. Bởi vìkhông có lịch lập trình hay kiểu chế độ MRED nào được thiết lập, chúng mặc định lậptrình Round-Robin và quản lí hàng đợi RIO-C Active. Các lệnh addPolicyEntry thiết lậphai mức ưu tiên ở hàng đợi rìa: một giữa node S1 v2 đích và một giữa node s2 và đích.Chú ý rằng lệnh [$s1 id] trả về giá trị ID cần thiết bởi addPolicyEntry. Các giá trị CIR vàCBS sử dụng trong các mức ưu tiên là một thiết lập bắt đầu của lệnh. addPolicerEntryline được yêu cầu vì mỗi mức ưu tiên và cặp mã hoá khởi động cần một entry trong bảngPolicer. Mỗi cái sử dụng các ưu tiên giống nhau và mã hoá mã hoá khởi tạo vì hỉ mộtentry là cần thiết.

Lệnh addPHBEtry ánh xạ mỗi mã hoá tới liên kết giữa hàng đợi vật lí và hàng đợiảo. Mặc dù ,mỗi mã hoá trong ví dụ ánh xạ tới một kết nối duy nhất giữa hàng đợi vật lívà hàng đợi ảo, nhiều mã hoá có thể nhận các phương pháp xử lí giống nhau.

Cuối cùng, lệnh configQ thiết lập các tham số RED cho mỗi hàng đợi ảo. Chú ýgiá trị ưu tiên tăng, các tham số RED trở nên khắc khe hơn.

set qCE [[$ns link $core $e1] queue]# Set DS RED parameters from Core to Edge:$qCE meanPktSize $packetSize$qCE set numQueues_ 1$qCE setNumPrec 2

$qCE addPHBEntry 10 0 0$qCE addPHBEntry 11 0 1$qCE configQ 0 0 20 40 0.02$qCE configQ 0 1 10 20 0.10

Chú ý rằng cấu hình của một hàng đợi cốt lõi là xem xét hàng đợi rìa của nó,ngoại trừ không có bảng Policy hay bảng Policer để cấu hình ở một router lõi. Luật củangười điều hành router rìa là có một entry PHB cho các mã hoá sẽ thấy. $qE1C printPolicyTable$qCE2 printCoreStats

 Những phương thức nằm bên ngoài bảng policy hay policer trên liên kết hay cácthông kê khác. Các thông tin chi tiết hơn xem trong ví dụ trong ~ns/tcl/ex/diffserv