OTcl Bộ biên dịch Tcl mở rộng hướng đối tượng NS Simulation Library Thư viện Mô phỏng NS Event Scheduler Objects Các đối tượng Bộ lập lịch Sự kiện Network Component Objects Các đ
Trang 1 OTcl Bộ biên dịch Tcl mở rộng hướng đối tượng
NS Simulation Library Thư viện Mô phỏng NS
Event Scheduler Objects Các đối tượng Bộ lập lịch Sự kiện
Network Component Objects Các đối tượng Thành phần Mạng
Network Setup Helping Modules Các mô đun Trợ giúp Thiết lập Mạng
Plumbling Modules Các mô đun Plumbling
Simulation Results Các kết quả Mô phỏng
NAM Network Animator Minh họa Mạng NAM
Để thiết lập và chạy một mạng mô phỏng, người dùng phải viết một tập lệnh OTcl Script và khởi động một lịch trình sự kiện, thiết lập cấu hình mạng sử dụng các đối tượng mạng và các hàm chức năng trong thư viện, chỉ cho tài nguyên lưu lượng biết khi nào thì bắt đầu và kết thúc việc truyền gói thông qua lập biểu
Khi mô phỏng kết thúc, NS-2 sẽ xuất hiện một hay nhiều file text, ở đó có chứa các dữ liệu kết quả mô phỏng chi tiết nếu chúng ta yêu cầu trong tập lệnh Tcl Các file này lại là dữ liệu đầu vào cho một chương trình hiển thị mô phỏng trực quan gọi là Network Animator (NAM) Các số liệu kết quả mô phỏng cũng được dùng để vẽ các đồ thị phân tích bằng chương trình Xgraph theo các yêu cầu người dùng
Trang 24.2.2 Chuẩn bị công cụ mô phỏng
NS-2 được thiết kế để chạy trong môi trường Unix Tuy nhiên, ta vẫn có thể cài đặt NS-2 trong Windows bằng cách dùng thêm chương trình Cygwin Ở đây, sinh viên cài NS-2 trên Windows XP với Cygwin v1.5.24
Cài đặt gói phần mềm ns-allinone-2.32 phát hành ngày 03/09/2007 tại website http://nsnam.isi.edu/nsnam Trong gói phần mềm này đã bao gồm ns-2.32, nam-1.13, otcl-1.13 và tclcl-1.19 Trong thư viện đã hỗ trợ cho mô phỏng của sinh viên
4.3 Nội dung và kết quả mô phỏng
4.3.1 Mô phỏng thuật toán tăng giảm
Như trong chương 2, tài nguyên phân bố của 2 người dùng bất kỳ
}
)
(
),
(
{x1 t x2 t có thể biểu diễn như điểm {x1, x2 } trong không gian 2 chiều Khi chúng ta đang hoạt động tại hay gần điểm gãy (Knee) (mạng có tài nguyên Xgoal) mọi tài nguyên yêu cầu bởi người dùng đều được chấp nhận Thuật toán tăng giảm mong muốn hội tụ đến bình đẳng và hiệu quả, tức là x1+x2=Xgoal /2
Trang 3Bắt đầu
x1=x2=Xgoal/2
x1+x2>Xgoal
Sai
Dùng thuật toán tăng x’1=aI+bI.x1
x’2=aI+bI.x2
Dùng thuật toán giảm x’1=aD+bD.x1 x’2=aD+bD.x2
x1=x’1 x2=x’2
Kết thúc Đúng
Đúng
Nhập phân phối cho người dùng 1 (x1), người dùng 2 (x2), mức lưu lượng đưa vào tại điểm knee (Xgoal), các hệ số trong thuật toán tăng giảm aI,
aD, bI, bD
Sai
Trang 4Hình 4.2 Sơ đồ thuật toán tăng giảm
Trong hình 4.3, trục Y (trục đứng) mô tả phân phối (allocation) cho người dùng 1 x1, và trục X (trục ngang) mô tả phân phối cho người dùng 2 x2 Tất cả sự phân phối với x1+x2=Xgoal là phân phối có hiệu quả Nó tương ứng với đường thẳng
là “đường hiệu quả” (đường màu đỏ) Tất cả phân phối mà x1= x2 là phân bố bình đẳng Nó tương ứng với đường thẳng được gọi là “đường bình đẳng” (đường màu xanh) Hai đường này cắt nhau tại điểm (Xgoal/2, Xgoal/2) là điểm tối ưu Mục tiêu của phương pháp điều khiển là làm cho hệ thống đến hoạt động tại điểm này mà không quan tâm đến vị trí bắt đầu Tất cả các điểm bên dưới đường hiệu quả mô tả
hệ thống “không đủ tải” và một cách lý tưởng hệ thống sẽ yêu cầu người dùng tăng tải Tương tự, tất cả các điểm trên đường hiệu quả mô tả hệ thống quá tải
Trang 5Hình 4.3 Giao diện công cụ mô phỏng thuật toán tăng giảm
Khi ta chọn đồng bộ ngõ vào tức là 2 người dùng sử dụng thuật toán như nhau Ta có thể thay đổi các hệ số tăng giảm a, b, thay đổi thời gian vòng truyền (là tổng thời gian mất do mạng khi phát gói đi từ luồng đến phía nhận và phát phúc đáp đến phía gởi) Phụ thuộc vào thuật toán lựa chọn, các hệ số thay đổi đến các giá trị cho phép Thêm vào đó ta có thể vẽ đồ thị tốc độ người dùng theo thời gian, khoảng cách đến điểm tối ưu và tạo ra file dưới dạng text để dùng với các công cụ vẽ đồ thị thông thường như xgraph hay gnuplot
Mô phỏng thuật toán AIMD và MIAD với 2 người dùng có cùng thời gian vòng truyền RTT=1s, khoảng thời gian mô phỏng là 50s, các hệ số a=0.1 và b=0.5 Giá trị x, y lần lượt là tốc độ của người dùng
Hình 4.4 Biểu đồ vector của thuật toán AIMD
Trang 6Hình 4.5 Đồ thị biểu diễn theo thời gian
Như vậy hình 4.4 và 4.5 cho ta thấy AIMD hội tụ nhanh đến điểm tối ưu và dao động quanh điểm này
Hình 4.6 Biểu đồ theo vector thuật toán MIAD
Trang 7Hình 4.7 Đồ thị biểu diễn tốc độ theo thời gian
Theo kết quả trong hình 4.6 cho ta thấy thuật toán MIAD có thể hội tụ đến hiệu quả nhưng không hội tụ đến bình đẳng Tương tự cũng như đối với thuật toán MIMD trong hình 4.8 nhưng ta thấy MIMD đảm bảo hội tụ đến hiệu quả nhanh hơn Kết quả mô phỏng trong hình 4.7 càng cho thấy rõ tốc độ của 2 người dùng càng lúc càng chênh lệch và do đó khoảng cách đến điểm tối ưu càng xa
Hình 4.8 Thuật toán MIMD hội tụ nhanh đến đường hiệu quả
Trang 8Như vậy với điều kiện mô phỏng ở trên (ngõ vào đồng bộ, RTT như nhau) trong tất cả các thuật toán tăng giảm tuyến tính, thuật toán AIMD là tốt nhất do nó bảo đảm hội tụ đến điểm tối ưu
Tuy nhiên, môi trường mạng thực tế rất phức tạp, các điều kiện trên khó xảy
ra được Với RTT khác nhau thì sự hội tụ cũng là rất khó Trong hình 4.9 là mô phỏng thuật toán AIMD khi người dùng 1 có RTT gấp đôi RTT của người dùng 2, điều đó có nghĩa là mỗi lần người dùng 1 cập nhật tốc độ thì người dùng 2 cập nhật
2 lần
Trang 9Hinh 4.9 Thuật toán AIMD khi RTT 1 = 2 RTT 2
4.3.2 Mô phỏng XCP
Như trong chương 3, XCP là giao thức truyền thông liên quan đến TCP Không như TCP, XCP cung cấp phản hồi chống tắc nghẽn rõ từ router có khả năng XCP đến XCP phía gởi Do đó, XCP phía gởi có thể điều khiển cửa sổ gởi thích hợp hơn để đạt được tính hiệu quả, bình đẳng, điều khiển tắc nghẽn có thể mở rộng qui mô và ổn định trong toàn mạng
Mục đích của phần này là mô phỏng để cho ta thấy rằng:
XCP hội tụ nhanh đến lượng phân bổ băng thông bị thắt cổ chai hợp lý
XCP đạt hiệu quả sử dụng đường truyền cao
XCP duy trì số gói tại hàng đợi nhỏ
Trong phần này ta sẽ mô phỏng 2 trường hợp: 3 luồng đều là XCP; 3 luồng XCP và 1 luồng TCP cùng tồn tại trong cùng một mạng có topo như hình 4.10 Các thông số trong mô phỏng: