Từ mô hình trên có thể thấy, NS2 sử dụng ngôn ngữ Otcl với thƣ viện bao gồm các đối tƣợng: Bộ lập lịch các sự kiện; thƣ viện đối tƣợng các thành phần mạng và các modul thiết lập mạng. Nói cách khác, để sử dụng NS2, ta phải lập trình trên ngôn ngữ Otcl. Để cài đặt và chạy chƣơng trình mô phỏng mạng bằng NS, ta phải viết Script trên ngôn ngữ Otcl, lập lịch cho các sự kiện, thiết lập cấu hình mạng (topo mạng) bằng cách sử dụng các đối tƣợng thành phần mạng, triệu gọi các hàm thƣ viện, báo cho các nguồn dữ liệu biết khi nào thì bắt đầu và kết thúc việc truyền gói tin trên mạng. Khi muốn tạo một đối tƣợng mạng mới, có thể viết mới một đối tƣợng hoặc bằng cách liên kết các đối tƣợng mạng đã có sẵn trong thƣ viện. Việc gắn kết đối tƣợng tạo nên đối tƣợng mới chính là điểm mạnh của NS2.
NS2 sử dụng cả ngôn ngữ C++ và ngôn ngữ Otcl. NS2 hỗ trợ cấu trúc lớp kiểu phân cấp trong C++ (đƣợc gọi là cấu trúc lớp biên dịch), và một cấu trúc lớp tƣơng tự trong ngôn ngữ Otcl (gọi là cấu trúc lớp thông dịch). Hai cấu trúc lớp phân cấp này có quan hệ chặt chẽ với nhau, dƣới góc độ ngƣời sử dụng (không phải ngƣời lập trình phát triển NS), có tƣơng ứng 1-1 giữa lớp trong cấu trúc lớp biên dịch và lớp trong cấu trúc lớp thông dịch Sơ đồ sau là ví dụ về sự phân cấp trong C++ và Otcl:
Mỗi ngôn ngữ đƣợc sử dụng với mục đích riêng. Otcl có thể đƣợc sử dụng: - Trong việc cấu hình, cài đặt và các công việc thực hiện “một lần”
- Chỉnh sửa các đối tƣợng C++ đã có sẵn Và sử dụng C++ cho:
- Khi làm các công việc đòi hỏi xử lý từng gói tin của luồng dữ liệu - Khi phải thay đổi các hành vi của các lớp C++ đã tồn tại
Có thể hình dung tổ chức của NS qua sơ đồ sau:
Hình 4.3. Kiến trúc của NS
Sơ đồ kiến trúc của NS, nói chung có thể coi ngƣời dùng nhƣ đang đứng ở góc dƣới bên trái, thiết kế và chạy hệ mô phỏng bằng ngôn ngữ Tcl và sử dụng các đối tƣợng Otcl trong thƣ viện. Bộ lập lịch các sự kiện và hầu hết các đối tƣợng thành phần mạng đều đƣợc viết bằng C++, và có thể triệu gọi từ Otcl thông qua giao tiếp tclcl, cả hệ thống kết hợp lại thành NS.
Sơ đồ mô hình NS đơn giản cũng chỉ ra, khi kết thúc quá trình mô phỏng, ns có thể sinh ra một hay nhiều text file chứa số liệu chi tiết phục vụ cho việc phân tích quá trình mô phỏng, hoặc cũng có thể là đầu vào cho hệ mô phỏng bằng đồ hoạ (Network Animator : NAM).
Hình 4.4 sẽ mô tả sự hoạt động của NS thông cua 3 mức, nhƣ chúng ta thấy có mức khung cảnh, mức Script và cuối cùng là ngôn ngữ C++. Tất cả những công việc của NS đều thông qua các Script của NS để gọi các hàm của C++ ở mức dƣới cùng.
4.2.1.3 Cấu trúc của tệp bám vết
Dữ liệu ra sau khi mô phỏng với NS-2 thƣờng đƣợc lƣu trong một tệp, tệp này đƣợc gọi là tệp dấu vết (trace file). Tệp dấu vết chứa thông tin về các sự kiện của gói tin xảy ra trong suốt thời gian mô phỏng theo từng tầng: tầng MAC, tầng mạng, tầng giao vận.
Khi bám vết trong một tệp ASCII đầu ra, tệp bám vết có tên mở rộng .tr đƣợc tổ chức thành 12 trƣờng. Ý nghĩa của các trƣờng là:
Hình 4.5. Các trường của tệp bám vết
1. Trƣờng đầu tiên là kiểu sự kiện. Đƣợc đƣa ra bằng một trong 4 biểu tƣợng r, +, -, d lần lƣợt tƣơng ứng với nhận (ở đầu ra của kênh truyền), đã xếp vào hàng, đã ra khỏi hàng và bị loại.
2. Đƣa ra thời điểm xảy ra sự kiện
3. Đƣa ra nút đầu vào của kênh truyền mà sự kiện xảy ra ở đó 4. Đƣa ra nút đầu ra của kênh truyền mà sự kiện xảy ra ở đó 5. Đƣa ra kiểu gói tin (nhƣ CBR hay TCP)
6. Đƣa ra kích thƣớc gói tin 7. Một vài cờ
8. Đây là mã nhận dạng luồng (fid) IPv6 mà một ngƣời sử dụng có thể đặt cho môic dòng ở tập lệnh Otcl đầu vào.
9. Địa chỉ nguồn đƣa ra dƣới dạng “node.port” 10. Địa chỉ đích.
11. Số thứ tự gói tin của giao thức lớp mạng. 12. Mã nhận dạng duy nhất của gói tin.
4.2.1.4 Nguồn phát sinh lưu lượng
NS hỗ trợ bốn loại nguồn phát sinh lƣu lƣợng [18]:
1. EXPOO_Traffic: tạo lƣu lƣợng dựa vào một phân phối On/Off theo hàm mũ. Các gói tin đƣợc gửi đi với tốc độ xác định trong suốt quãng thời gian on, và không có gói tin nào đƣợc gửi trong khoảng thời gian off. Khoảng thời gian on và off đƣợc tạo ra theo phân phối hàm mũ. Kích thƣớc các gói tin không thay đổi.
2. POO_Traffic: tạo lƣu lƣợng dựa vào phân phối On/Off Pareto. Loại này tƣơng tự phân phối theo hàm mũ trừ khoảng thời gian on/off đƣợc thực hiện theo phân phối pareto.
3. CBR_Traffic: tạo lƣu lƣợng với tốc độ không đổi đƣợc định sẵn. Kích thƣớc gói tin là cố định nhƣng có thể chọn các giá trị khác nhau. Ngoài ra, một bộ tạo số
ngẫu nhiên có thể đƣợc kích hoạt, để thay đổi khoảng thời gian các gói tin khởi hành trong một phạm vi nhất định.
4. TrafficTrace: là nguồn lƣu lƣợng đƣợc ghi lại dƣới dạng vết của một nguồn lƣu lƣợng đến từ mạng thật.
4.2.2 Mô phỏng mô hình DiffServ
4.2.2.1 Định nghĩa các chính sách
Tất cả các luồng có cùng địa chỉ nguồn và đích đều lệ thuộc vào một chính sách chung. Chính sách quy định loại bộ đo đƣợc dùng để đo các tham số lƣu lƣợng đầu vào liên quan.
Một bảng các chính sách đƣợc dùng trong NS2 để lƣu trữ loại chính sách của mỗi luồng. Bảng này bao gồm:
1) Địa chỉ nút nguồn 2) Địa chỉ nút đích 3) Loại chính sách 4) Loại thiết bị đo 5) Điểm mã khởi đầu
6) CIR (tốc độ thông tin cho phép) 7) CBS (kích thƣớc cụm cho phép)
8) C bucket (kích thƣớc hiện thời của dung lƣợng cho phép) 9) EBS (kích thƣớc cụm vƣợt mức)
10) E bucket (kích thƣớc hiện thời của dung lƣợng vƣợt quá) 11) PIR (tốc độ thông tin tối đa)
12) PBS (kích thƣớc cụm tối đa)
13) P bucket (kích thƣớc hiện thời của dung lƣợng tối đa) 14) Thời gian đến của gói tin cuối
15) Tốc độ gửi tin trung bình
16) Độ dài cửa sổ TSW (TSW là chính sách dựa trên tốc độ truyền trung bình là lấy bình quân theo kích thƣớc cửa sổ dữ liệu tính theo giây). Giá trị mặc định là 1 giây (1s).
Mỗi loại chính sách sau đây định bộ đo mà nó sử dụng:
1) TSW2CM (TSW2CMPolicer): Dùng CIR và 2 thứ tự ƣu tiên hủy gói. 2) TSW3CM (TSW3CMPolicer): Dùng một CIR, một PIR và 3 thứ tự ƣu tiên
hủy gói. Mức ƣu tiên trung bình đƣợc dùng theo xác suất khi CIR vƣợt mức cho phép.
3) Token Bucket (TokenBucketPolicer): Dùng CIR; CBS và 2 thứ tự ƣu tiên hủy gói.
4) Single Rate Three Color Marker (srTCMPolicer): Dùng CIR, CBS, EBS và PBS để chọn từ 3 drop precedences.
5) Two Rate Three Color Marker (trTCMPolicer): Dùng CIR, CBS, EBS và PBS để chọn từ 3 drop precedences.
6) NullPolicer: không rút ngắn các gói tin bất kỳ
Một bảng chính sách định nghĩa cho mỗi loại chính sách điểm mã khởi đầu cũng nhƣ là một hay hai điểm mã giảm mức. Điểm mã khởi đầu thƣờng đƣợc gọi là “green code” và điểm mã giảm mức thấp nhất là “red”. Nếu có một điểm mã khác ở giữa thì nó là “yellow”.
4.2.2.2 Kịch bản mô phỏng 1
Trong kết nối TCP, việc mất một số đoạn gây ảnh hƣởng nhiều hơn lên hiệu năng của phiên kết nối so với các đoạn khác. Thực hiện ƣu tiên dùng mô hình DiffServ sẽ làm hiệu suất kết nối TCP đƣợc cải thiện đáng kể.
Mục đích của việc mô phỏng dùng mô hình DiffServ để chỉ ra rằng có thể đánh dấu ƣu tiên các gói tin nhạy cảm mà không cần bất kỳ thông tin nào của lớp vận chuyển, do đó sẽ đơn giản hóa việc thực hiện đánh dấu ƣu tiên các gói TCP.
Yêu cầu bài toán
Mở đầu cho phân loại dịch vụ: Hai mức ƣu tiên đƣợc định nghĩa. Mức cao hơn “gói tin vào” hay “green packets” và mức thấp hơn “gói tin ra” hay “red packets”. Chúng ta tập chung vào chính sách đơn giản nhất có sẵn trong NS: cửa sổ thời gian trƣợt (5 chính sách: TSW2CM, TSW3CM,...). Một tốc độ cho phép CIR đƣợc định nghĩa cho mỗi router biên. Miễn là tốc độ kết nối dƣới mức CIR thì tất cả gói tin đƣợc đánh dấu là mức ƣu tiên cao. Khi tốc độ vƣợt mức CIR thì các gói tin đƣợc đánh dấu theo xác suất bình quân, mà tốc độ của gói tin đƣợc đánh dấu với mức ƣu tiên cao cùng với CIR. Tốc độ truyền đƣợc tính theo tốc độ trung bình trên “cửa sổ TSW”; trong phần mô phỏng thì khoảng thời gian cửa sổ là 20 s. Thời gian mô phỏng kéo dài 60s.
Thực hiện việc thay đổi CIR tại nút biên nguồn và nghiên cứu ảnh hƣởng của nó đến hiệu suất.
Topo mạng đơn giản với một nút thắt cổ chai đƣợc cấu hình nhƣ sau:
Hình 4.6. Mô hình mạng 1 S0 E0 Sn E E1 D En Core S1 En-1 Sn-1
Mỗi nút nguồn đƣợc kết nối tới nút biên tƣơng ứng nơi lƣu lƣợng đƣợc đánh dấu theo các tham số đƣợc chỉ rõ ở dƣới. Router biên đƣợc kết nối tới router lõi tại nút thắt cổ chai và sau đó qua một router khác để tới đích.
Topo khảo sát với 15 nút nguồn, mỗi nút nguồn tạo ra các kết nối TCP. Mô phỏng với mạng LAN (có trễ truyền dẫn nhỏ) với đƣờng truyền hoàn toàn đối xứng.
Đánh giá hiệu năng mạng DiffServ với các tham số định trƣớc:
- Đƣờng truyền giữa nút biên và nút nguồn tƣơng ứng có độ trễ 0.01ms và băng thông 6Mbps.
- Đƣờng truyền giữa nút biên và nút đích tƣơng ứng có độ trễ 0.01ms và băng thông 10Mbps.
- Đƣờng truyền giữa nút trung tâm và nút biên gắn với nút nguồn có độ trễ 0.1ms và băng thông 6Mbps.
- Đƣờng truyền giữa nút trung tâm và nút biên gắn với nút đích có độ trễ 1ms và băng thông 10Mbps.
Mô hình lưu lượng: Một file đƣợc truyền có phân bố xác suất Pareto với tham
số shape là 1.25 và kích thƣớc trung bình 10kbytes. File đƣợc truyền đến mỗi nút nguồn theo tiến trình Poisson với tốc độ trung bình 5 file/giây. Nhiều phiên truyền từ cùng 1 nút nguồn có thể đƣợc kích hoạt đồng thời.
Tham số quản lý việc xếp hàng: Hàng đợi đƣợc xây dựng tại router nút cổ chai,
chọn kích thƣớc hàng đợi là 100 gói tin. Các tham số quản lý hàng đợi tại các nút khác không ảnh hƣởng đến kết quả.
Trong hàng đợi thắt cổ chai tại nút trung tâm, quản lý hàng đợi multi-RED dùng phiên bản RIO-D (chọn tham số giống nhau cho cả 2 mức ƣu tiên). Chọn tham số giống nhau với cả hai mức ƣu tiên mục đích là để tạo ra các điều kiện cho phép nghiên cứu ảnh hƣởng của DiffServ khi giảm xác suất mất các đoạn dễ bị mất và tác động của nó đến hiệu suất của hoạt động trên đƣờng truyền TCP (độ trễ, thông lƣợng).
set cir0 100000; # policing parameter set cir1 100000; # policing parameter
Kích thƣớc hàng đợi trung bình đƣợc giám sát, với mỗi loại gói tin (dùng hàm mũ chuẩn lấy trung bình với tham số wq = 0.01). Các gói tin có màu cho trƣớc bắt đầu bị loại bỏ khi số hàng đợi trung bình của gói tin vƣợt quá giá trị minw (chọn minw = 15). Xác suất hủy gói tăng tuyến tính với kích thƣớc hàng đợi trung bình cho đến khi đạt tới giá trị maxw = 45, trong đó xác suất hủy gói lấy giá trị maxp = 0.5. Khi vƣợt quá giá trị này thì xác suất hủy gói bằng 1.
Tốc độ đến của các bít tại nút cổ chai là: 4 15*1.04*10 *8
5.672
Kết quả trên thu đƣợc nhƣ sau: Một gói tin kích thƣớc trung bình 1040 bytes trong 1000 bytes là dữ liệu và 40 bytes là mào đầu phụ. Một file ftp trung bình là 104
bytes dữ liệu có nghĩa là tổng kích thƣớc trung bình khoảng 1.04*104*8 bits. Kết quả này thu đƣợc khi nhân số nút nguồn và chia cho thời gian trung bình giữa các file đến tại 1 nút.
Kịch bản mô phỏng nhiều nguồn và mỗi nguồn tạo nhiều phiên TCP chia sẻ cùng một đƣờng truyền nút cổ chai và một đích. Thiết đặt các tham số:
set cir0 100000; #policing parameter set cir1 100000; #policing parameter set pktSize 1000
set NodeNb 15; # số nút nguồn
set NumberFlows 360; # số luồng trên một nút nguồn set sduration 60; # thời gian mô phỏng
Định nghĩa thời gian bắt đầu truyền và kích thƣớc gói tin đến sau tiến trình Poissoon:
For {set i 1} {$i<=$NodeNb} {incr i} { Set t [$ns now]
For {set i 1} {$i<=$NumberFlows} {incr i} { $tcpsrc($i,$j) set sess $j
$tcpsrc($i,$j) set node $i Set t [expr $t + [$RV value]] $tcpsrc($i,$j) set starts $t
$tcpsrc($i,$j) set size [expr [$RVSize value]]
$ns at [$tcpsrc($i,$j) set starts] $ftp($i,$j) send [$tcpsrc($i,$j) set size]
$ns at [$tcpsrc($i,$j) set starts] countFlows $i 1 }}
For {set j 1} {$j<=NodeNb} {incr j} { Set Cnts($j) 0
Bảng kết quả thu đƣợc khi chạy mô phỏng:
Trong đó:
- TotPkts: Số gói tin gửi đến core router, yêu cầu router đƣa vào bộ đệm rồi phân tuyến.
- TxPkts: Số gói tin core router xử lý đƣợc, tức là phân tuyến, chuyển tiếp cho edge router thành công.
- edrops: Số gói tin router hủy sớm theo cơ chế của RED, nghĩa là gói tin gửi đến router, router phân tích các hàng đợi của nó và hủy ngay, không lƣu trữ vào hàng đợi.
- ldrops: Số gói tin router hủy do liên kết quá tải, nghĩa là gói tin đã đƣợc đƣa vào hàng đợi, nhƣng sau đó vẫn không thể chuyển tiếp đƣợc do liên kết bận.
Tỷ lệ phân tuyến thành công của core router 0.987%, cho biết hiệu suất hoạt động của mạng là tƣơng đối cao.
Số gói tin dữ liệu đƣợc truyền thành công trong mô phỏng không phụ thuộc vào tốc độ CIR, với độ lệch chuẩn là 395 gói tin. Xác suất mất gói thấp dẫn đến thông lƣợng cũng thấp, nó luôn không đổi giống nhƣ một hàm của CIR.
Trong mô phỏng, một file có kích thƣớc trung bình 10Kbytes, là kích thƣớc đã đƣợc tính trung bình trên mạng Internet. Việc gói tin bị mất sẽ làm giảm hiệu suất hoạt động của mạng, vì vậy loại trừ việc mất gói tin sẽ cải thiện đáng kể hiệu suất.
4.2.2.3 Kịch bản mô phỏng 2
Yêu cầu bài toán
Mô phỏng mỗi chính sách làm thay đổi CBR rate để xem core router chịu tải đến đâu, khi nào thì tỉ lệ phân tuyến thành công không chấp nhận đƣợc nữa, tức tỉ lệ gói tin router hủy đi cao, so sánh giữa các chính sách khác nhau. Đồ thị vẽ ra dạng đƣờng, trục x là rate, trục y là tỉ lệ phân tuyến thành công, mỗi một chính sách tạo ra một đƣờng đồ thị. Cấu hình mạng nhƣ sau:
Hình 4.7. Mô hình mạng 2
Mô phỏng mô hình mạng 2 với năm chính sách khác nhau: srTCM, trTCM, TB- WIRR, TSW2CM, TSW3CM. Mạng DiffServ với các tham số định trƣớc:
- Đƣờng truyền giữa nút biên và nút nguồn tƣơng ứng có độ trễ 5ms và băng thông 10Mbps.
- Đƣờng truyền giữa nút biên và nút đích tƣơng ứng có độ trễ 5ms và băng thông 10Mbps. S1 E1 S2 E2 D1 D2 UDP CBR UDP CBR Null Null Core
- Đƣờng truyền giữa nút trung tâm và nút biên gắn với nút nguồn có độ trễ 5ms và băng thông 5Mbps.
- Đƣờng truyền giữa nút trung tâm và nút biên gắn với nút đích có độ trễ 5ms và băng thông 5Mbp.
Thực hiện
Tính tỷ lệ phân tuyến thành công của core router. So sánh giữa các chính sách.
Tỉ lệ phân tuyến thành công của core router = TxPkts/TotPkts, là một
thông số quan trọng cho biết hiệu quả hoạt động của DiffServ.
Bảng 4.2. Tỷ lệ phân tuyến thành công các core router của các chính sách Policy Rate TB-WIRR srTCM trTCM TSW2CM TSW3CM 2000000 1% 1% 1% 1% 1% 3000000 0.835% 0.830% 0.832% 0.838% 0.832% 4000000 0.627% 0.620% 0.623% 0.626% 0.622% 8000000 0.502% 0.5% 0.503% 0.501% 0.499% 10000000 0.5% 0.5% 0.5% 0.5% 0.499%
Đồ thị sau biểu thị tỷ lệ phân tuyến đƣợc tổng kết trong bảng:
Hình 4.8. Đồ thị tỷ lệ phân tuyến thành công của core router