Ở đây những tuyến đƣờng sẽ đƣợc lựa chọn là:(S, N1, N3, N6, D) (S, N1, N4, N6, D), (S, N1, N4,N7, D), (S, N2, N5, N7, D), (S, N2, N4, N6, D), (S, N2, N5, N4, N6, D) và (S, N2, N5 , N4, N7, D). Khi chỉ với nút N4 thực hiện, những tuyến đƣờng qua đó sẽ không có hiệu lực. Những tuyến đƣờng sẽ đƣợc lựa theo mức độ thấp nhất là: (S, N1, N3, N6, D), (S, N2, N5, N7, D). Một đƣờng sẽ là đƣờng chính và một đƣờng sẽ đƣờng dự phòng (thay thế).
Quá trình quản lý tuyến sẽ do nút nguồnđảm nhiệm và các nút trung gian chỉ có trách nhiệm chỉ vào bảng định tuyến của chúng. Với những liên kết bị lỗi, nguồn dừng truyền tải và sẽ hoạt động trở lại sau khi tìm và chọn lựa đƣợc một con đƣờng từ những con đƣờng có sẵn chƣa dùng của nó.
Giao thức này có một sự ràng buộc: số tuyến đƣờng đƣợc lựa chọn sẽ đƣợc nhận trong một khoảng nhỏ hơn hoặc bằng với n0 với ngƣỡng là s0. Một khi ngƣỡng đạt đƣợc trong truyền tải dữ liệu, thì giai đoạn khám phá tuyến mới đƣợc khởi tạo để xác định tuyến đƣờng khác cho đến khi đạt “n0”. Về mặt lý thuyết giải pháp này tạo ra một chi phí khá lớn nhƣng có lợi thế là các tuyến đƣờng để truyền bất cứ lúc nào cũng có. Trong AODV ban đầu khi con đƣờng bị hỏng, giai đoạn sửa chữa địa phƣơng đƣợc khởi xƣớng và nếu thất bại đƣợc tuyên bố thì giai đoạn khám phá mới đƣợc tiến hành.
Giai đoạn bảo trì tuyến đƣờng vẫn theo quy tắc tƣơng tự nhƣ AODV ban đầu bằng cách sử dụng gói tin “Hello”.
CHƢƠNG 3: BỘ MÔ PHỎNG MẠNG NS-2 VÀ MỘT SỐ CÔNG CỤ PHÂN TÍCH SỐ LIỆU MÔ PHỎNG.
3.1 Tổng quan NS-2
Ngày nay mạng không dây đã và đang đƣợc ứng dụng ngày càng rộng rãi trongcuộc sống bởi những lợi ích mà nó mang lại. Số lƣợng các thiết bị dùng cho mạng không dây sẽ sớm vƣợt qua số lƣợng các thiết bị dành cho mạng có dây, điều này cũng đồng nghĩa với việc sự nghiên cứu về mạng không dây cũng có sự tăng trƣởng tƣơng tự. Thông thƣờng, việc nghiên cứu mạng không dây có thể thực hiện bằng việc kiểm tra, đánh giásự thực thi các giao thực trên mạng thực, nhƣng cũng có thể nghiên cứu bằng phƣơng pháp mô phỏng. Vấn đề mô phỏng mạng là một vấn đề rất thiết thực đã vàđang đƣợc sự quan tâm và đầu tƣ thích đáng của các nhà cung cấp dịch vụ và thiết bị mạng bởi những lợi ích to lớn mà nó đem lại. Đã có rất nhiều phần mềm mô phỏng hoạt động mạng và các thiết bị mạng ra đời nhằm phục vụ cho việc đánh giá và nghiên cứu mạng. Phần mềm mô phỏng mạng là công cụ quan trọng để phát triển, kiểm tra và đánh giá các giao thức mạng. Sự mô phỏng có thể đƣợc sử dụng mà không dùng tới các thiết bị phần cứng, điều này đem lại hiệu quả tiết kiệm mà vẫn thực hiện đƣợc đối với hầu hết các kích cỡ kiến trúc mạng, các giá trị tham số mạng và các kịch bản hoạt động khác nhau của mạng. Nó có thể mô phỏng một kết nối với bất kì băng thông và độ trễ nào thậm chí ngay cả với một kết nối không thể tồn tại trong thế giới thực. Với phần mềm mô phỏng mạng có thể thiết lập mỗi nút mạng mô phỏng để sử dụng bất kì phần mềm mong muốn nào. Điều này có nghĩa là sự triển khai phần mềm không còn là một vấn đề. Các kết quả thu đƣợc cũng dễ dàng hơn cho việc phân tích bởi sự có đƣợc thông tin chínhxác từ các điểm quan trọng của mạng đƣợc mô phỏng đơn giản bởi sự phân tíchcác tệp vết sự kiện (trace file) đƣợc tạo ra.
Hình 3.1 cho ta một cái nhìn tổng quan về các phần mềm đang đƣợc sửdụng hiện nayvà mức độ phổ biến của mỗi phần mềm trong vấn đề mô phỏng và nghiên cứu các mạng
Trong chƣơng này tôi sẽ đi sâu nghiên cứu về phần mềm NS-2 (Network Simulator 2) là một môi trƣờng mô phỏng mạnh và phổ biến.Số lƣợng ngƣời dùng NS-2 đang tăng lên mạnh mẽ trong những năm gần đây. Mặc dù ban đầu NS-2 đƣợc thiết kế là dùng để mô phỏng hoạt động cho các mạng có dây, song giờ đây NS-2 đã đƣợc mở rộng để dùng cho cả các mạng không dây bao gồm WLAN, Mobile Adhoc Networking (ADHOCs), các mạngcảm biến và cả mạng vệ tinh.
3.2 Đại cƣơng về NS-2
3.2.1 Các chức năng mô phỏng của NS-2
– Đối với mạng có dây:
+Định tuyến: Vector khoảng cách (DV), trạng thái liên kết (LS), multicast. + Các giao thức chuyển vận: TCP, UDP, RTP và SCTP
+ Các nguồn lƣu lƣợng: Web, FTP, TELNET, CBR, STOCHASTIC + Các qui tắc hàng đợi: Drop-tail, RED, FQ, SFQ, DRR
+ Các mô hình đảm bảo chất lƣợng dịch vụ QoS: IntServ và Differv – Đối với mạng không dây:
+Định tuyến cho mạng Adhoc (AODV, DSDV) và IP di động +Truyền theo hƣớng trực tiếp, cảm biến MAC
– Hìnhảnh và các tiện ích minh họa khác
3.2.2 Các thành phần của NS
Các thành phần của NS bao gồm: – NS phần mềm mô phỏng
– NAM: Netwok animator minh họa cho các kết quả đầu ra của NS, giao diện GUI để tạo kịch bản cho NS-2.
– Quá trình xử lý: Phân tích file trace với các công cụ của UNIX hoặcGNU/LINUX nhƣ AWK,Perl,Tcl,minh họa bằng hìnhảnh với Xgraph.
Các thành phần chính của NS-2:
+Tcl/TK8.x(thƣờng là 8.3.5):Có thể tham khảo tại địa chỉ http://resource.tcl.tk/resource/sofware/tcltk/
+ OTcl và Tclcl:Có thể tham khảo tại địa chỉ http://otcl-tclcl.sourceforge.net
+ NS-2 và NAM-1 Có thể tham khảo tại http://www.isi.edu/nsnam/dist
+ Các tiện ích khác xem tại
http://www.isi.edu/nsnam/ns/ns-build.html + Tcl-debug, GT-ITM,Xgraph v.v….
3.2.3 Kiến trúc của NS-2
NS-2 là một phần mềm hƣớng đối tƣợng sử dụng hai ngôn ngữ C++ và OTcl. Phầndữ liệu và phần điều khiển đƣợc tách biệt:
+ C++ cho phần dữ liệu: Xử lý mỗi gói tin, thực thi nhanh chóng,chi tiếthóa ,bổ sung đầy đủ cho việc điều khiển ,các thuật toán đối với bộ dữ liệu lớn.
+ OTcl cho phần điều khiển:
- Mô phỏng các cấu hình cho kịch bản
- Thực thi nhanh chóng,dễ dàng cấu hình lại -Thao tác với các đối tƣợng C++ hiện tại -Viết mã nhanh chóng và thayđổi dễ dàng
Theo quan điểm ngƣời dùng thuần túy , NS là mô ̣t bô ̣ thông di ̣ch các ki ̣ch bản Tcl hƣớng đối tƣợng . NS gồm có các bô ̣ đi ̣nh trình các sƣ̣ kiê ̣n mô phỏng , các thƣ viê ̣n đối tƣơ ̣ng thành phần ma ̣ng , thƣ viê ̣n các m odule ta ̣o lâ ̣p ma ̣ng (thƣ̣c tế viê ̣c kết nối các module đƣơ ̣c thƣ̣c hiê ̣n bằng các hàm thành viên của các đối tƣợng mô phỏng cơ bản ).
Khi sƣ̉ du ̣ng NS -2, ngƣời dùng phải lâ ̣p trình b ằng ngôn ngữ kịch bản Tcl . Để tạo lập và triển khai một mạng mô phỏng , ngƣời dùng viết mô ̣t ki ̣ch bản Tcl để khởi ta ̣o mô ̣t bô ̣ đi ̣nh trình sƣ̣ kiê ̣n , thiết lâ ̣p topo ma ̣ng thông qua viê ̣c sƣ̉ du ̣ng các đối tƣợng thành phần mạng v à các hành liên kết trong các thƣ viện của NS . Viê ̣c thiết lâ ̣p mô ̣t mạng là ghép nối các đƣờng dữ liệu giữa các đối tƣợng mạng bằng cách đặt con trỏ của mô ̣t đối tƣợng này tới đi ̣a chỉ của mô ̣t đối tƣợng khác tƣơng ƣ́ng . Khi muốn ta ̣o mô ̣t đối tƣơ ̣ng ma ̣ng mới, thì ngƣời dùng có thể tạo ra đối tƣợng đó bằng cách xây dựng một đối tƣơ ̣ng mới hoă ̣c tổ hợp các đối tƣợng có sẵn trong các thƣ viê ̣n đối tƣợng của NS và ta ̣o ra các đƣờng liên kết dƣ̃ liê ̣u giƣ̃a chúng.
Mô ̣t thành phần quan tro ̣ng của NS (bên ca ̣nh các đối tƣợng ma ̣ng ) là bộ định trình sự kiện . Mô ̣t sƣ̣ kiê ̣n trong NS là mô ̣t mã nhâ ̣n da ̣ng gói , mã này là duy nhất đối với mô ̣t gói, sƣ̣ kiê ̣n đƣợc đi ̣nh thời và gắn với một con trỏ trỏ đến đối tƣợng sẽ xử lý sự kiê ̣n đó. Trong NS, bô ̣ đi ̣nh trình sƣ̣ kiê ̣n giám sát toàn bô ̣ thời gian mô phỏng , quản lý và kích hoạt các sự kiện theo một hàng đợi . Khi mô ̣t sƣ̣ kiê ̣n đƣợc kích hoa ̣ t, bô ̣ đi ̣nh trình sẽ gọi tới thành phần đối tƣợng mạng xử lý tƣơng ứng (thƣờng cũng là đối tƣợng tạo ra sự kiện đó ), cho phép đối tƣợng này thƣ̣c hiê ̣n các tác vu ̣ thích hợp lên gói gắn với sƣ̣ kiê ̣n. Các thành phần đối tƣợng ma ̣ng truyền thông với nhau bằng cách trao đổi các gói. Về nguyên tắc , tất cả các thành phần ma ̣ng luôn cần phải có mô ̣t khoảng thời gian nhất đi ̣nh để xƣ̉ lý gói (trễ). Trễ này đƣợc thể hiê ̣n thông qua viê ̣c sƣ̉ du ̣ng c ác bộ đi ̣nh trình sƣ̣ kiê ̣n : gƣ̉i đi mô ̣t sƣ̣ kiê ̣n gắn với gói và chờ sƣ̣ kiê ̣n đó đƣợc kích hoa ̣t trở lại trƣớc khi xử lý các gói tiếp theo . Ví dụ: mô ̣t thành phần ma ̣ng mô phỏng mô ̣t thiết bi ̣ chuyển ma ̣ch gói với 20 ms trễ, nó sẽ gửi đi một sự kiện trễ 20 ms gắn với gói cần phải chuyển ma ̣ch tới bô ̣ đi ̣nh trình sƣ̣ kiê ̣n, bô ̣ đi ̣nh trình sau 20 ms sẽ đƣa sƣ̣ kiê ̣n đó ra khỏi hàng đội và kích hoạt nó trở lại thành phần mạng chuyển mạch , thành phần chuyển mạch sẽ thực hiện việc chuyển gói tƣơng ứng tới đối tƣợng liên kết đầu ra của nó .
Mô ̣t ƣ́ng du ̣ng nƣ̃a của bô ̣ đi ̣nh trình sƣ̣ kiê ̣n là ta ̣o ra các bô ̣ đi ̣nh thời . VD: giao thƣ́c TCP cần bô ̣ đi ̣nh thời để giám sát thờ i gian chờ khi phát đi mô ̣t gói nhằm thƣ̣c hiê ̣n
viê ̣c phát la ̣i gói . Khi đó, bô ̣ đi ̣nh thời sƣ̉ du ̣ng bô ̣ đi ̣nh trình tƣơng tƣ̣ nhƣ trong trƣờng hơ ̣p giả lâ ̣p trễ, sƣ̣ khác biê ̣t duy nhất là bô ̣ đi ̣nh thời đo giá tri ̣ thời gian gắn vớ i mô ̣t gói, thƣ̣c hiê ̣n các tác vu ̣ liên quan đến gói đó sau mô ̣t khoảng thời gian nhất đi ̣nh trôi qua mà không thực hiện việc mô phỏng trễ.
NS đƣơ ̣c viết bằng hai ngôn ngƣ̃ OTcl và C ++. Để đảm bảo tính hiê ̣u quả NS phân chia đƣờng dƣ̃ liê ̣u và đƣờng điều khiển riêng biê ̣t. Để giảm thời gian chƣơng trình xƣ̉ lý các sƣ̣ kiê ̣n và gói (thời gian này không phải thời gian mô phỏng ),thì bộ định trình sƣ̣ kiê ̣n và các đối tƣợng ma ̣ng cơ bản trong đƣờng dƣ̃ liê ̣u đ ƣợc viết và biên dịch bằng ngôn ngƣ̃ C++. Các đối tƣợng sau biên dịch vẫn có thể đƣợc sử dụng bởi bộ thông dịch Otcl thông qua các liên kết Otcl , các liên kết này tạo ra đối tƣợng OTcl tƣơng ứng cho mỗi đối tƣơ ̣ng C ++, cũng nh ƣ ta ̣o ra các hàm và các biến thành viên trong đối tƣợng Otcl tƣơng ƣ́ng với các biến và hàm thành viên trong đối tƣợng C ++. Bằng cách này viê ̣c điều khiển các đối tƣợng C ++ có thể đƣợc thực hiện thông quan OTcl , ngoài ra ta cũng có thể thêm các biến và hàm thành viên khác vào đối tƣợng OTcl . Các đối tƣợng đƣơ ̣c viết bằng C ++ mà không cần thiết phải điều khiển trực tiếp trong quá trình mô phỏng cũng không cần phải liên kết sang OTcl.
Mă ̣t khác m ột đối tƣợng không nằm trên đƣờng số liệu có thể đƣợc xây dựng hoàn toàn bằng OTcl . Hình 3-3 minh ho ̣a mô ̣t cây phân cấp đối tƣợng trong C ++ và OTcl.
Hình 3.3 cho thấy một ví dụ phân cấp đối tƣợng trong C++ và OTcl. Một điều cần lƣuý trong hình là cácđối tƣợng C++ cho phép một sự kết nối Otcl hình thành một sự phân cấp. Sự phân cấp đối tƣợng OTcl rất giống với sự phâncấp đối tƣợng C++.
Hình 3.4 cho thấy kiến trúc chung của NS-2
Trong hình này một ngƣời dùng chung (không phải là ngƣời phát triển NS-2) có thể đứng ở góc đáy trái và thực thi những kịch bản (scripts) mô phỏng viết bằng ngôn ngữ Tcl sử dụng các đối tƣợng mô phỏng trong thƣ viện OTcl. Các bộ lập lịch sự kiện mạng và hầu hết các thành phần của mạng đƣợc thực hiện trong C++ và đƣa đến OTcl quamột liên kết OTcl đƣợc thực hiện bởisự sử dụng Tclcl. Toàn bộ những cái tạonên NS là trình biên dịch Tcl hƣớng đối tƣợng mở rộng và các thƣ viện mô phỏng mạng.
3.2.4 Các thành phần của mạng
Nhƣ đã nói nhiều đến trong phần trên. Mục này sẽ trình bày về các thành phầncủa NS-2, hầu hết là các thành phần cấu thành mạng.
Hình 3.5 cho thấy một sự phân cấp lớp OTcl bộ phận của NS-2, giúp cho ta hiểu rõ các thành phần của mạng. Gốc của sự phân cấp là lớp TclObject là lớp gốc của tất cả các đối tƣợng thƣ viện OTcl (bộ lập lịch (Event Scheduler),các thành phần mạng(Network Component),bộ định giờ và các đối tƣợng khác bao gồm cả NAM).Tƣơng tự nhƣ lớp gốc TclOTcl, NsObject là lớp gốc của tất cả các đối tƣợng thành phần mạng cơ bản điều khiển các gói tin mà có thể tạo ra các đối tƣợng cấu thành mạng cơ bảnnhƣ là các nút và các liên kết. Các thành phần mạng cơ bản lại đƣợc chia ra thành hai lớp con gồm có Connector và Classifier dựa vào số đƣờng dẫn dữ liệuđầu ra.Các đối tƣợng cơ bản của mạng có thể có duy nhất một đƣờng dẫn dữ liệu đầu ra nối với lớp Connector, các đối tƣợng chuyển đổi có thể có nhiều đƣờng dẫn dữ liệu đầu ra nối với lớp Classifier.
+ Nút (node) và sự định tuyến:
Một nút là một đối tƣợng hỗn hợp bao gồm toàn bộ đối tƣợng nút và các đối tƣợng phân loại nhƣ trong hình 3.6
Có hai loại nút trong NS. Một loại nút là Unicast có một bộ phân loại địa chỉ thực hiện việc định tuyến Unicast và một bộ phân loại cổng. Một loại nút khác là Multicast, nóđƣợc bổ sung thêm một bộ phân loại (Multicast Classifer) để phân loại các gói tin Multicast từ các gói tin Unicast và bộ phân loại Multicast để thực hiện định tuyến Multicast. Trong NS-2 các nút Unicast là các nút đƣợc mặc định. Để tạo ra các nút Multicast ngƣời dùng phải khai báo rõ ràng trong kịch bản Otcl đầu vào ngay sau khi tạo ra một đối tƣợng lịch biểu. Khi đó tất cả các nút sẽ đƣợc tạo ra là các nút Multicast.
Sau khi chỉ rõ kiểu nút ngƣời dùng cũng có thể lựa chọn một giao thức định tuyến đặc biệt khác hơn là sử dụng một giao thức định tuyến mặc định.
+ Liên kết (Link):
Một liên kết là một đối tƣợng cấu thành khác trong NS. Khi một ngƣời dùng tạo ra một liên kết sử dụng một hàm thành viên duplex-link của đối tƣợng mô phỏng. Hai liên kết đơn công (Simplex link) theo cả hai hƣớng đƣợc tạo ra:
Một điều cần lƣu ý là hàng đợi đầu ra của một nút đƣợc thực hiện thực sự nhƣ một phần của đối tƣợng liên kết duplex-link. Các gói tin đƣợc lấy ra từ một hàng đợi đƣợc đƣa tới đối tƣợng Delay đóng vai trò độ trễ của liên kết, các gói tin bị loại bỏ (drop) tại hàng đợi đƣợc gửi tới đối tƣợng NullAgent và đƣợc giải phóng ở đó. Cuối cùng đối tƣợng TTL tính toán các thông số time-to-live cho mỗi gói tin nhận đƣợc và cập nhật trƣờng TTL của gói tin.
+ Tạo vết (Tracing):
Trong NS các hoạt động của mạng đƣợc mô tả xung quanh các liên kết Simplex. Nếu sự mô phỏng đƣợc định hƣớng mô tả các hoạt động của mạng (Sử dụng $ns trace- allfile hoặc $ns namtrace-allfile), các liên kết đƣợc tạo ra sau dòng lệnh này sẽ đƣợc chèn các đối tƣợng trace nhƣ trong hình 3-8.
Ngƣời dùng cũng có thể tạo ra một đối tƣợng trace đặc biệt giữa nút nguồn và nút đích khi sử dụng câu lệnh creat-trace{type file src dst}.
Khi mỗi đối tƣợng trace đƣợc chèn (ví dụ EnqT, DeqT, DrpT và RecvT)