Trong mạng adahoc, khả năng định tuyến của giao thức cũng được thể hiện thông qua số gói tin truy vấn tuyến được gửi, nhận khi có một node nào đó yêu cầu tuyến. Với ZRP sử dụng thuật toán BordercastingaQuery tỏ ra chiếm ưu thế hơn hẳn những giao thức khác sử dụng thuật toán floodingaQuery (hình 4.3)
hình 4.7: 30 node mạng.
CHƯƠNG 5. XÂY DỰNG CHƯƠNG TRÌNH MÔ PHỎNG ZRP TRONG NS 2 5.1. Tổng quan NS 2
Ns là chữ viết tắt của Network Simulator, là một biến thể của Real Network simulator, và có lịch sử phát triển khá dài và trong rất nhiều những dự án khác nhau (dự án VINTaVirtual Internet Testbed...). Đây là phần mềm mã nguồn mở được phát triển trên nền tảng của hệ điều hành Unix xây dựng nhằm mô phỏng mạng với mục đích nghiên cứu, giảng dạy, học tập...Chính vì vậy khả dụng cho nhiều đối tượng người nghiên cứu, người phát triển và học viên...Nsa2 là một phiên bản hướng đối tượng dùng trong mô phỏng mạng với nhiều tính năng và đặc biệt có những thư viện lớn sẵn có bao gồm các giao thức mạng như TCP, UDP...giao thức nguồn lưu lượng như FTP, Tenet Web, CBR, VBR, cơ cấu Droptail, Red, ...
Nsa2 là phiên bản thứ hai của Ns, nó được viết bằng ngôn ngữ lập trình C++, và sử dụng bộ ngôn ngữ TCL/TK làm trình biên tập, khởi tạo kịch bản và đồng thời cũng làm giao diện cho người sử dụng .
Trong suốt quá trình lịch sử hình thành và phát triển bộ mô phỏng mạng (Network Simulator) này đã có nhiều phiên bản được sử dụng chỉnh sửa và hoàn thiện dần để trở lên khả dụng và ứng dụng rộng rãi trên nền nhiều hệ điều hành khác nhau và cũng đưa nó vượt ra khỏi phạm vi phòng thí nghiệm. Phần mềm Ns đã trở thành một chuẩn công nghiệp ở trên 50 quốc gia và gần 600 viện nghiên cứu (trong đó bộ ngôn ngữ TCL/TK là một trình khởi tạo và biên dịch kịch bản một cách mạnh mẽ). Từ những phiên bản đầu tiên Ns đã khẳng định tính ưu việt của mình so với nhiều phần mềm mô phỏng mạng khác và là nền tảng cho sự phát triển một số công cụ mô phỏng đơn lẻ. Chúng ta sẽ thấy một số cải tiến, mở rộng đáng kể Ns version 1 và Ns version 2. Nsa2 có ba điểm khác biệt quan trọng so với Nsa1 là :
a Những đối tượng phức tạp của Nsa1 đã được xây dựng lại thành các thành phần đơn giản hơn, mềm dẻo hơn, có giao diện thân thiện với người sử dụng và đặc biệt đã mở rộng thêm nhiều thư viện mới sẵn có cho việc mô phỏng mạng.
a Giao diện sử dụng là ngôn ngữ Otcl, là ngôn ngữ hướng đối tượng được phát triển từ ngôn ngữ Tcl. Với tính năng hướng đối tượng tạo điều kiện dễ dàng để phát triển những dự án lớn hay cấu trúc Topo mạng phức tạp. Các câu lệnh được Otcl thông dịch hoàn toàn độc lập với phần lõi của mô phỏng chính (nhờ có lớp Otclalinkage tạo ánh xạ với không gian C++ để công việc chỉnh sửa và biên tập trở nên đơn giản hơn).
a Tạo điều kiện cho Nsa2 phát triển rộng rãi tong nhiều môi trường khả chuyển hơn và thân thiện hơn để sử dụng những công cụ phần mềm được phát triển bởi các nhà phát triển khác nhau (như perl, tracegraph , ...).
Hiện nay Nsa2 đã phát triển sang phiên bản Nsa2.29 và cùng quá trình phát triển của nó có rất nhiều những bài viết và những bài tham khảo khác nhau, nhưng phần nhiều là của những tác giả đã có rất nhiều kinh nghiệm trong công việc mô phỏng mạng. Do đó hầu hết các tài liệu thường phát triển theo chiều sâu mà ít đề cập đến những vấn đề cơ bản gây ra nhiều khó khăn cho những người mới tiếp cận với việc học tập và nghiên cứu Nsa2. Hơn thế nữa Nsa2 có cấu trúc khá phức tạp gồm có nhiều thành phần khác nhau gây khó khăn cho người sử dụng trong quá trình cài đặt và vận hành.
Và cũng vì đây là phần mềm phát triển trên nền hệ điều hành Unix nên có rất nhiều điểm khác biệt so với các phần mềm chạy trên Windows. Mặc dù từ những phiên bản đầu của version 2 đã thêm các công cụ cần thiết cho việc cài đặt Nsa2 trên Windows nhưng nói chung mức độ làm việc và độ ổn định vẫn chưa cao nếu như so với quá trình chạy Nsa2 trên Linux.
Nhưng một điều phải thừa nhận rằng Nsa2 là công cụ mô phỏng mạng mạnh mẽ có nhiều tính năng và khả năng phát triển, mở rộng cao. Trong tương lai nó còn được tiếp tục phát triển để hoàn thiện hơn.
5.2. Cấu trúc và hoạt động trong NS 2
Để tạo ra 1 mô phỏng mạng, người sử dụng sẽ viết kịch bản mô phỏng bằng ngôn ngữ Otcl, sau đó kịch bản này được biên dịch thành file. Tcl và được đưa đến lõi mô phỏng nhờ một trình biên dịch kịch bản. Lõi mô phỏng này sẽ xử lý kịch bản đó và đưa ra kết quả là quá trình xử lý là file out.nam va out.tr. File out.nam lại trở thành đầu vào của phần mềm NAM và nhờ đó nó đưa ra được mô hình mô phỏng một cách trực quan. Tuy vậy người sử dụng có thể nhập dữ liệu một cách dễ dàng hơn bằng cách nhập trực tiếp trên NAM thông qua kiểu đồ họa. File này tất nhiên vẫn được dịch ra thành các lệnh Otcl và lại đi theo con đường trên.
hình 5.1: cấu trúc NS2.
Cấu trúc Nsa2 gồm 3 phần chính: khối đầu vào, khối nhân mô phỏng và khối đầu ra. Đồ họa NAM Lệnh Otcl .Tcl Lõi mô phỏng Out.nam NAM Mô hình mô phỏng Input Output Xgraph Out.tr
A. Khối khởi tạo kịch bản: bản chất của khối này là tạo ra một kịch bản mô phỏng mạng bằng ngôn ngữ Otcl.
Ta sử dụng trình biên tập Otcl để tạo ra một kịch bản mô phỏng mạng. Trình biên tập cung cấp một giao diện biên tập mã lệnh Otcl, hỗ trợ đầy đủ các tính năng của công cụ phát triển ngôn ngữ. Nó cho phép viết, sửa chữa và lưu trữ mã lệnh Otcl một cách thuận tiện. Bên cạnh đó nó còn cho phép hiển thị màu của từ khóa và các cú pháp của ngôn ngữ Otcl. Nhờ đó người sử dụng sẽ thông qua khối này để khởi tạo kịch bản mô phỏng. Chúng ta cũng có thể thông qua giao diện NAM để thiết lập Topo mạng rồi sau đó nó sẽ được dịch ra ngôn ngữ Otcl (đây là một đặc điểm khá nổi bật của Nsa2 giúp tạo ra một topo mạng nhỏ và đơn giản một cách nhanh chóng mà không phải biết về kiến thức lập trình ngôn ngữ Otcl).
Như vậy, chúng ta sẽ đứng trong không gian Otcl, mô tả và thiết kế kịch bản, và sau đó phần kịch bản file.tcl sẽ được chuyển sang không gian sử lý.
B. Khối xử lý (khối nhân mô phỏng) : đây chính là phần lõi của mô phỏng là thành phần chính của bộ công cụ Nsa2.
Trong không gian này kịch bản sau khi được khởi tạo sẽ được phân tích một cách cặn kẽ. Kịch bản trước tiên sẽ được trình biên dịch Otcl phân tích cấu trúc và nội dung của topo mạng vừa khởi tạo và ở đây chúng sẽ được biên dịch (một đặc điểm của ngôn ngữ kịch bản là nó sẽ dịch trực tiếp kịch bản nên nếu chỉ để biên soạn một kịch bản hoàn chỉnh thì sẽ rất đơn giản và nhanh chóng). Sau đó kịch bản hoàn chỉnh này sẽ được chuyển sang trung tâm xử lý (lõi mô phỏng trong Nsa2). Kịch bản một lần nữa được xử lý nhanh chóng nhờ nhân mô phỏng được viết trên C++. Qua đó ta thấy nếu với vai trò người sử dụng thì chúng ta chỉ thấy được không gian Nsa2 đơn giản chỉ gồm một trình biên tập Otcl (không gian Otcl) mà không thấy được bộ phận xử lý (không gian C++) vì thành phần này đã bị che đi bởi bộ khởi tạo kịch bản TCL/TK. Tóm lại thực chất của Nsa2 là sự tổ hợp thống nhất của cả hai bộ phận ngôn ngữ Otcl và C++. Sở dĩ Nsa2 dùng cả hai ngôn ngữ vì mô phỏng có hai yêu cầu:
a Mô phỏng chi tiết về giao thức (protocol) cần ngôn ngữ lập trình hệ thống, nó điều khiển bytes hiệu quả, thực thi các giải thuật với khối lượng dữ liệu lớn. Để thực hiện nhiệm vụ này cần tốc độ lớn. Các sự kiện ở đây được khởi tạo tương tác rồi triệt tiêu (có thể coi như một không gian động). Do số sự kiện sinh ra trong hệ thống mạng là rất lớn trong vài giây có thể lên tới vài triệu nên cần xử lý nhanh và chính xác.
a Phần chủ yếu khi nghiên cứu mạng bao gồm các tham số và các kiểu cấu hình biến đổi không đáng kể như các node mạng, các giao thức, mô hình lưu lượng ... Trong trường hợp này, tính lặp đi lặp lại (thay đổi mô hình và chạy lại) là rất quan trọng. C++ chạy nhanh hơn và hiệu quả cho việc thi hành các giao thức chi tiết tuy nhiên khó khăn để thay đổi, Otcl chạy chậm hơn nhưng dễ thay đổi, phù hợp với các cấu hình mô phỏng. Đây chính là đặc điểm mạnh mẽ mà các trình mô phỏng khác không có. Để tận dụng được thế mạnh của hai ngôn ngữ, Nsa2 sử dụng kỹ thuật phân tách ngôn ngữ, kỹ thuật phân tách ngôn ngữ này giúp cho việc xây dựng mô phỏng mạng thuận tiện, nhanh chóng cho cả việc phân tích thiết kế và chỉnh sửa nếu muốn thay đổi thông số hay cấu trúc topo mạng. Người sử dụng đứng trong không gian Otcl, mô tả và thiết kế kịch bản, trong khi các đối tượng trong mô hình kịch bản được ánh xạ 1a1 vào không
gian C++. Ở đây các đối tượng của không gian Otcl được xác lập một cách tự lập và hoàn toàn tương đương. Các ràng buộc và dữ liệu cấu hình đầu vào từ không gian Otcl được thể hiện hoàn toàn tương đương trên C++. Có nghĩa là, khi một đối tượng Otcl hình thành thì ở không gian C++ một đối tượng khác tương đương cũng được tạo ra, nhưng nó bị che bởi đối tượng trong không gian Otcl. Đối tượng trong không gian Otcl chỉ mang tính chất cấu hình, để gọi ra lúc ban đầu còn chính đối tượng trong C++ mới gắn liền với quá trình mô phỏng. Sự vận động của các gói tin, sự sinh ra các sự kiện, quá trình nhân mô phỏng được thực hiện trong không gian C++.
Quá trình xử lý mô phỏng hết sứ phức tạp và đây là thành phần quan trọng nhất của Nsa Thành phần này có ba chức năng chính:
a Phân tích và xử lý triệt để kịch bản mô phỏng.
aLiên kết các thư viện, các mô hình, các giao thức trong mô phỏng mạng viễn thông để có thể thực hiện một mô phỏng mạng đầy đủ.
aTổng hợp tất cả các kết quả của các quá trình khác nhau và đónh gói các file đầu ra một cách hoàn chỉnh. Đây là kết quả của quá trình mô phỏng. Đến đây chúng ta cũng có thể phân tích các số liệu đầu ra nếu dựa vào Nsa2 trace file. Các file trace out này được xử lý bởi khối đàu ra để tạo giao diện trực quan hơn với người sử dụng.
hình 5.2: Qúa trình xử lý mô phỏng.
Giới thiệu về bộ ngôn ngữ mô tả cấu hình mạng:
Bao gồm 4 thành phần Tcl, Tk, Otcl, TclCl. Các thành phần này dùng để hỗ trợ việc xử lý kịch bản mô phỏng mạng.
a Tcl (Tool Command Language) là trình biên dịch của ngôn ngữ kịch bản Tcl. a Otcl là ngôn ngữ dạng hướng đối tượng của một ngôn ngữ thủ tục TCL/TK được phát triển tại Massachusetts Institute of Technology (MIT), do đó có tên gọi là Object Tcl viết tắt là Otcl.
a Tk là phần mở rộng của Tcl hỗ trợ khả năng đồ họa cho người sử dụng. a TclCl là thư viện mở rộng của bộ ngôn ngữ Tcl.
Lợi thế căn bản của Tcl/tk là tính đơn giản và linh động, thích hợp cho việc lập trình nhanh và chương trình chỉ được sử dụng một vài lần. Hơn nữa nó còn thúc đẩy cho quá trình ứng dụng.
C. Khối đầu ra: Đây là khối tạo các số liệu đầu ra một cách trực quan với người sử dụng để dễ dàng phân tích và xử lý số liệu.
Có hai thành phần hỗ trợ tính năng này trong Nsa2 là NAM và Xgraph (cho Unix) hay NAM và Tracegraph (cho Windows) [11].
5.3. Mô hình node mạng trong NS 2
a Unicast node: chỉ có một address classifier để thực hiện tuyến lộ trình đơn (unicast routing) và một port classifier. Trong NS mỗi node mạng đều được mặc định là unicast.
a Multicast node: có một bộ phận classifier để phân loại các gói tin multicast từ các gói tin unicast và một bộ phận multicast classifier để thực hiện tuyến lộ trình multicast routing. Để tạo ra một node mạng multicast thì người sử dụng phải có một khai báo ngay đầu mã lệnh Otcl để mặc định các node mạng sau đều là multicast.
Kiến trúc của từng node mạng khác nhau thùy theo từng loại mô hình mạng như: a Mô hình nút mạng cố định.
hình 5.3: mô hình node mạng cố định.
hình 5.4: mô hình node mạng di động.
5.4. Áp dụng NS để thiết lập cấu hình mạng cần mô phỏng
Hình 5.6 mô tả phương pháp cơ bản của việc thực hiện mô phỏng. Để thực hiện chương trình mô phỏng, trước tiên cần phải xây dựng các tập lệnh Tcl mô tả các nút mạng cùng với hành vi, các giao thức cùng với nguồn lưu lượng đưa vào quá trình mô phỏng. Sau khi đưa vào chạy trong NSa2, file trace sẽ được tạo ra và lưu trữ trong ổ đĩa. File trace sẽ được đưa vào phân tích để có được kết quả cần thiết (như các gói nhận được, độ mất gói, lưu lượng mạng và thời gian trễ …). Với chương trình NAM, người thực hiện mô phỏng có thể minh hoạ quá trình chạy mô phỏng bằng giao diện trên máy vi tính của mình.
Hình 5.5: Phương pháp mô phỏng cơ bản
Trace file Elaboration
NAM Monitor Agent 0 Agent 1 Node Tcl Script NS 2 Result
Trong đồ án này, phiên bản NSaallinone 2.30 của phần mềm NSa2 chạy trên Linux được sử dụng để xây dựng chương trình mô phỏng
5.5. Kết quả mô phỏng ZRP trong Ns2
Dưới đây là kết quả mô phỏng giao thức định tuyến ZRP trong Ns2:
KẾT LUẬN
Ngày nay, cùng với sự phát triển mạnh mẽ của các ngành điện tử viễn thông đặc biệt là trong lĩnh vực viễn thông di động, mạng Adahoc đang là một trong những xu hướng phát triển mới của thế giới. Tuy nhiên, để đáp ứng nhu cầu ngày càng đa dạng, mạng này vẫn còn nhiều vấn đề cần giải quyết, Trong đó vấn đề định tuyến là vấn đề phức tạp, và cũng đã có nhiều cách tiếp cận khác nhau. Đồ án này đưa ra một phương pháp định tuyến “lai” ZRP nhằm khắc phục những nhược điểm cũng như tận dụng những ưu thế của những thuật toán định tuyến trước đó. Phương pháp mới này vẫn đang còn trong quá trình nghiên cứu và đánh giá thử nghiệm. Tất cả mới chỉ dừng ở việc mô phỏng mà chưa được áp dụng thực tiễn. Tuy rằng vẫn đang được hoàn thiện nhưng các yêu cầu đưa ra khá rõ ràng và bước đầu đã được kiểm chứng. Nội dung của đồ án là Nghiên cứu định tuyến lai trong mạng adahoc, thực hiện mô phỏng giao thức ZRP với phần mềm NSa2 và cơ bản đã thực hiện được nội dung sau:
Tìm hiểu Zone Routing Protocol .
Phát triển phần mềm mô phỏng mạng NSa2 để thực thi mô hình ZRP trong mạng mô phỏng.
Phân tích, đánh giá được các kết quả. Ưu thế của mô hình với mục đích nâng cao chất lượng giao thức.
Tuy nhiên, do phát triển mô phỏng mạng còn nhiều vấn đề đặt ra chưa được giải quyết. Hơn nữa, phần mềm mô phỏng mạng NSa2 chưa được sử dụng rộng rãi trong các trường đại học nên việc thực hiện tìm kiếm và cài đặt vẫn còn nhiều thiếu sót, kết quả mô phỏng phần nào đã phản ánh đúng với thực tế nhưng cũng chưa thực sự chính xác tuyệt đối.
Từ các kết quả đã đạt được và các vấn đề trên thì hướng phát triển tiếp theo được