Bối cảnh và vấn đề nghiên cứu
Trong lĩnh vực mạng máy tính, các hệ thống mạng ngày càng phát triển với quy mô phức tạp, đòi hỏi phải đáp ứng đồng thời nhiều loại hình dịch vụ có yêu cầu tốc độ và băng thông khác nhau. Sự gia tăng liên tục của lưu lượng dữ liệu trên các đường truyền dễ dẫn đến hiện tượng nghẽn mạng (congestion). Trong bối cảnh đó, việc áp dụng các phương pháp giải tích thuần túy để tính toán, dự đoán hành vi của các đối tượng ngẫu nhiên trên mạng gặp nhiều trở ngại. Đồng thời, việc xây dựng các mô hình thử nghiệm thực tế trên thiết bị phần cứng thường tốn kém chi phí, khó triển khai và khó kiểm soát tham số. Phương pháp mô phỏng trên máy tính trở thành giải pháp tối ưu, cho phép người nghiên cứu xây dựng cấu trúc tô-pô (topology), thiết lập bảng hoạt động cho từng nút mạng (node), cấu hình thông số đường truyền và thời gian truyền một cách linh hoạt trước khi áp dụng vào thực tế.
Khóa luận tốt nghiệp của sinh viên Sonexay Keobouapha (chuyên ngành Công nghệ Thông tin, Trường Đại học Quảng Nam) dưới sự hướng dẫn của ThS. Lê Thị Thanh Bình tập trung vào việc nghiên cứu phần mềm mô phỏng mạng mã nguồn mở NS-2 (Network Simulator Version 2).
Mục tiêu nghiên cứu của đề tài được văn bản xác định cụ thể qua ba nội dung:
- Nghiên cứu tổng quan và nguyên lý hoạt động của công cụ mô phỏng NS-2.
- Nghiên cứu các phần mềm, công cụ bổ trợ kết hợp với NS-2 phục vụ việc thiết kế tô-pô và phân tích dữ liệu vết.
- Thực hiện cài đặt, xây dựng kịch bản và tiến hành mô phỏng thực nghiệm trên môi trường NS-2.
Đối tượng nghiên cứu của khóa luận là công cụ mô phỏng NS-2 và các ứng dụng của nó trong phân tích mạng. Phạm vi nghiên cứu bao gồm việc cài đặt, cấu hình NS-2 trên hệ điều hành Linux (phân phối Ubuntu 12.04), tìm hiểu cơ chế kết hợp hai ngôn ngữ C++ và OTcl, khảo sát các giao thức tầng giao vận (Transport Layer) như TCP, UDP cùng các ứng dụng sinh lưu lượng (CBR, Exponential, Pareto), và thực nghiệm đo đạc băng thông, lưu lượng gói tin qua công cụ XGraph và kịch bản kiểm thử các biến thể TCP.
Cơ sở lý thuyết và phương pháp
Khóa luận dựa trên nền tảng lý thuyết về mô phỏng mạng điều khiển sự kiện riêng rẽ (discrete-event network simulation) và kiến trúc hướng đối tượng của NS-2, được phát triển ban đầu tại Đại học California tại Berkeley.
Về mặt kiến trúc, NS-2 sử dụng cơ chế đối ngẫu hai ngôn ngữ (dual-language architecture) phân tách giữa tầng dữ liệu và tầng điều khiển:
- Ngôn ngữ C++ (Tầng dữ liệu - Data Plane): Đảm nhiệm việc xử lý chi tiết từng gói tin (packet), tính toán byte, xử lý tiêu đề gói tin (packet header) và thực thi các thuật toán phức tạp trên tập dữ liệu lớn. Tầng này ưu tiên tối đa tốc độ thời gian thực thi (run-time speed).
- Ngôn ngữ OTcl (Tầng điều khiển - Control Plane): Ngôn ngữ kịch bản mở rộng hướng đối tượng từ Tcl (Tool Command Language), được dùng để cấu hình kịch bản, thiết lập mô hình mạng, khởi tạo nút, liên kết và quản lý việc lập lịch sự kiện. Tầng này ưu tiên thời gian lặp lại và thay đổi mô hình (iteration time/turn-around time).
- Thư viện liên kết TclCL: Đóng vai trò cầu nối trung gian giữa phân cấp lớp trong C++ và OTcl, thực hiện khởi tạo đối tượng, nối kết biến (variable binding) và truyền lệnh giữa hai môi trường.
Phương pháp nghiên cứu được tác giả áp dụng bao gồm:
- Phương pháp nghiên cứu lý thuyết: Thu thập, phân tích tài liệu học thuật về kiến trúc phần mềm NS-2, cơ chế hoạt động của bộ lập lịch sự kiện (Event Scheduler), các mô-đun thiết lập mạng (Plumbing Modules), hệ thống phân loại gói tin (Classifiers), các thuật toán định tuyến và quản lý hàng đợi.
- Phương pháp mô phỏng thực nghiệm: Tiến hành cài đặt hệ thống trên máy ảo Ubuntu Linux; lập trình các kịch bản mô phỏng bằng OTcl; cấu hình tham số các tác nhân mạng (Agents) và nguồn lưu lượng (Traffic Applications); trích xuất dữ liệu ra tệp vết (
out.tr) và tệp hoạt họa (out.nam); phân tích kết quả trực quan bằng Network Animator (NAM) và biểu đồ đồ họa XGraph.
Nguồn dữ liệu sử dụng trong nghiên cứu là dữ liệu tổng hợp sinh ra từ các mô hình toán học tích hợp sẵn trong NS-2 (phân bố ngẫu nhiên, phân bố mũ Exponential, phân bố Pareto, nguồn CBR) và dữ liệu vết được ghi nhận tự động trong quá trình chạy mô phỏng.
Thiết kế và triển khai
Khóa luận trình bày chi tiết môi trường công nghệ, quy trình triển khai phần mềm và thiết kế các kịch bản mô phỏng kỹ thuật:
| Thành phần hệ thống |
Công nghệ / Tham số triển khai trong khóa luận |
| Môi trường hệ điều hành |
Linux Ubuntu 12.04 chạy trên nền tảng ảo hóa VMware 8 |
| Gói phần mềm cốt lõi |
ns-allinone-2.35 (bao gồm NS-2, Tcl/Tk 8.4, OTcl, TclCL) |
| Công cụ trực quan hóa & Phân tích |
NAM (Network Animator 2.15), XGraph, TraceGraph 2.02 (yêu cầu MATLAB 6) |
| Trình biên dịch & Thư viện bổ trợ |
GCC 4.4, GNU Make, build-essential, tcl8.4, libxmu-dev, libxmu-headers |
| Cấu hình biến môi trường |
Thiết lập các biến LD_LIBRARY_PATH, TCL_LIBRARY, PATH trong tệp ~/.bashrc |
Quy trình thiết kế kịch bản mô phỏng được chuẩn hóa theo các bước:
- Khởi tạo và cấu hình tệp vết: Tạo đối tượng mô phỏng (
new Simulator), mở tệp ghi vết định dạng chuẩn (out.tr qua lệnh trace-all) và tệp hoạt họa (out.nam qua lệnh namtrace-all).
- Thiết lập cấu trúc tô-pô mạng: Khởi tạo các nút mạng (nút đơn hướng Unicast gồm address/port classifier hoặc nút đa hướng Multicast); tạo các liên kết đơn công (
simplex-link) hoặc song công (duplex-link) với các tham số băng thông, độ trễ và cơ chế quản lý hàng đợi (DropTail, RED, CBQ).
- Cấu hình Tác nhân (Agents) và Ứng dụng (Applications): Gắn tác nhân truyền tải (Agent/TCP, Agent/UDP, Agent/LossMonitor, Agent/TCPSink, Agent/Null) vào các nút mạng bằng phương thức
attach-agent; thiết lập kết nối logic giữa các tác nhân bằng connect; gắn nguồn ứng dụng sinh lưu lượng (CBR, Exponential, Pareto, FTP, Telnet, HTTP) lên các tác nhân.
- Lập lịch và thực thi: Sử dụng bộ lập lịch sự kiện để định thời điểm bắt đầu/dừng truyền dữ liệu cho các nguồn phát, định thời điểm gọi thủ tục kết thúc (
finish) để đóng tệp, xả vết (flush-trace), khởi động NAM/XGraph và thoát chương trình.
Nội dung chính theo từng chương
Chương I: Tổng quan về công cụ mô phỏng NS-2
Chương đầu tiên khái quát lịch sử hình thành, mục tiêu và kiến trúc của NS-2. Phần mềm được phát triển từ phiên bản đầu tiên năm 1995 và phiên bản thứ hai năm 1996, hỗ trợ môi trường Linux và Windows. Tác giả chỉ ra bốn lợi ích chính của NS-2:
- Kiểm tra tính ổn định của các giao thức mạng hiện có.
- Đánh giá các giao thức mạng mới trước khi triển khai thực tế.
- Thực thi những mô hình mạng quy mô lớn mà thực tế khó có điều kiện triển khai.
- Mô phỏng đa dạng nhiều loại hình mạng khác nhau (mạng có dây LAN/WAN, mạng không dây WLAN 802.11, mạng di động Ad-Hoc, mạng vệ tinh).
Chương này đi sâu vào phân tích kiến trúc đối ngẫu C++/OTcl, vai trò của bộ lập lịch sự kiện (Event Scheduler - mặc định là Calendar Scheduler) và khái niệm "Plumbing" (xây dựng đường dữ liệu giữa các đối tượng mạng thông qua việc gán con trỏ neighbor). Các đặc tính kỹ thuật của NS-2 được tổng hợp bao gồm: quản lý hàng đợi (DropTail, RED, CBQ), định tuyến đa hướng (Multicast), các giao thức định tuyến mạng Ad-Hoc (DSDV, DSR, AODV, TORA), các biến thể TCP (Tahoe, Reno, NewReno, Sack, Vegas), cùng các mô hình ứng dụng tầng cao như FTP, Telnet, HTTP và Web caching.
Chương II: Giới thiệu các bước cơ bản mô phỏng kịch bản và phần mềm kết hợp với công cụ NS-2
Chương II đóng vai trò là phần tài liệu kỹ thuật hướng dẫn chi tiết cú pháp viết mã kịch bản OTcl và khảo sát các công cụ bổ trợ:
- Các bước xây dựng kịch bản: Tác giả trình bày cú pháp lệnh chi tiết cho từng tác vụ: khởi tạo đối tượng Simulator, tạo nút unicast/multicast, thiết lập liên kết duplex-link/simplex-link, gắn tác nhân UDP/TCP, cấu hình các nguồn lưu lượng:
- CBR (Constant Bit Rate): Tạo gói tin kích thước cố định theo tốc độ định trước (các tham số:
packetSize_, rate_, interval_, random_, maxpkts_).
- Exponential (Phân bố mũ): Cơ chế bật/tắt (on/off), gửi gói tin tốc độ cố định khi on và ngừng gửi khi off (các tham số:
packetSize_, burst_time_, idle_time_, rate_).
- Pareto: Tạo lưu lượng tập hợp có phụ thuộc dải dài (bổ sung tham số hình dáng
shape_).
- TrafficTrace: Sinh lưu lượng dựa trên tệp nhị phân chứa thông tin khoảng thời gian và kích thước gói.
- Ứng dụng Internet: FTP, Telnet, HTTP Client/Server.
- Cơ chế Tracing & Routing: Cấu trúc tệp vết chuẩn 12 trường (
event, time, from node, to node, pkt type, pkt size, flags, fid, src addr, dst addr, seq num, pkt id); các giải thuật định tuyến tĩnh (Static), định tuyến phiên (Session), định tuyến véc-tơ khoảng cách (DV) và định tuyến đa hướng (CtrMcast, DM, ST, BST).
- Các phần mềm kết hợp:
- NAM (Network Animator): Giao diện đồ họa cung cấp bảng điều khiển phát lại mô phỏng (play, stop, forward, rewind, pause), cho phép quan sát di chuyển gói tin, trạng thái hàng đợi, rớt gói và hiển thị thông số thông lượng.
- Nscript: Giao diện đồ họa bằng Java 2 hỗ trợ kéo-thả để sinh mã kịch bản OTcl tự động.
- Topology Generator: Giới thiệu 4 bộ sinh mô hình mạng tự động phổ biến (GT-ITM, TIERS, BRITE, INET).
- Trace Data Analyzers: Phân tích chi tiết công cụ XGraph với ví dụ thực nghiệm 5 nút mạng, thu thập dữ liệu bằng
Agent/LossMonitor để vẽ đồ thị băng thông theo thời gian; giới thiệu TraceGraph 2.02 chạy trên nền MATLAB 6 hỗ trợ vẽ 238 loại đồ thị 2D và 12 loại đồ thị 3D.
Chương III: Mô phỏng với NS-2
Chương này mô tả quy trình thực nghiệm trực tiếp của tác giả trên hệ thống:
- Cài đặt phần mềm: Hướng dẫn từng bước cài đặt gói
ns-allinone-2.35 trên Ubuntu 12.04: cài đặt trình biên dịch và gói phụ trợ (sudo apt-get install build-essential tcl8.4 xgraph libxmu-dev libxmu-headers), sửa lỗi biên dịch gcc trong các tệp Makefile.in của ns-allinone-2.14 và ns-allinone-2.10/unix (chuyển dòng CC = @CC@ thành CC = gcc-4.4), chạy lệnh cài đặt ./install, và thiết lập các biến môi trường trong tệp ~/.bashrc.
- Kịch bản thực nghiệm mô phỏng: Thiết lập kịch bản mô phỏng nhằm so sánh hoạt động gửi và nhận gói tin của ba biến thể giao thức giao vận: TCP chuẩn, TCP Reno và TCP Vegas.
- Mô hình mạng gồm 8 nút: 3 nút nguồn phát (Node 1, Node 2, Node 3), 3 nút nguồn thu (Node 6, Node 7, Node 8) và 2 nút định tuyến trung gian (Router 4, Router 5).
- Thông số đường truyền: Liên kết song công dung lượng băng thông 20 MB, độ trễ 2 ms, kiểu hàng đợi DropTail với giới hạn kích thước hàng đợi 20 segment, tổng thời gian mô phỏng là 60 giây.
Kết quả và đóng góp
Khóa luận đạt được các kết quả kỹ thuật và đóng góp học thuật cụ thể như sau:
- Kết quả thực nghiệm cài đặt và sửa lỗi: Xác định chính xác lỗi tương thích trình biên dịch trong gói
ns-allinone-2.35 khi cài đặt trên hệ điều hành Ubuntu hiện đại và đưa ra giải pháp sửa đổi tệp cấu hình Makefile.in bằng trình biên dịch gcc-4.4, cùng quy tắc cấu hình đường dẫn thư viện LD_LIBRARY_PATH và TCL_LIBRARY.
- Kết quả mô phỏng đồ thị với XGraph: Xây dựng thành công kịch bản đo đạc thông lượng sử dụng 3 nguồn lưu lượng Expoo (kích thước gói 200 byte, burst time 2s, idle time 1s) gắn vào 3 nút mạng truyền qua nút nghẽn đến nút đích. Kết quả trích xuất qua thủ tục tính toán định kỳ 0.5s ghi nhận chính xác 3 mức tốc độ đỉnh (peak rate) của các nguồn lưu lượng trên đồ thị XGraph tương ứng là:
- Nguồn 0: Đỉnh lưu lượng đạt 0.1 Mbit/s (100 kbps).
- Nguồn 1: Đỉnh lưu lượng đạt 0.2 Mbit/s (200 kbps).
- Nguồn 2: Đỉnh lưu lượng đạt 0.3 Mbit/s (300 kbps).
- Kết quả xây dựng mô hình so sánh TCP: Thiết lập hoàn chỉnh cấu trúc liên kết 8 nút mạng để kiểm thử hoạt động truyền nhận của 3 giao thức TCP, TCP Reno và TCP Vegas trên cùng một hạ tầng hàng đợi DropTail 20 segment.
- Đóng góp của đề tài: Tác giả đã hệ thống hóa tài liệu lý thuyết về công cụ NS-2 bằng tiếng Việt, cung cấp hướng dẫn thực hành từ bước cài đặt, lập trình kịch bản OTcl, liên kết các tác nhân mạng, đến phương pháp thu thập dữ liệu và trực quan hóa kết quả mô phỏng phục vụ công tác học tập, nghiên cứu mạng máy tính.
Hạn chế và hướng nghiên cứu tiếp
Dựa trên phạm vi và nội dung được trình bày trong văn bản:
- Hạn chế: Khóa luận chủ yếu tập trung vào việc nghiên cứu công cụ, quy trình thiết lập kịch bản và thực nghiệm trên các mô hình mạng có dây quy mô nhỏ. Phần so sánh chuyên sâu định lượng giữa các biến thể TCP (về tỷ lệ mất gói, độ trễ, thông lượng chi tiết theo thời gian giữa Tahoe, Reno, Vegas) chưa được trích xuất bảng số liệu đối soát toàn diện trong nội dung văn bản.
- Hướng nghiên cứu tiếp: Mở rộng nghiên cứu kịch bản mô phỏng sang lĩnh vực mạng không dây (WLAN 802.11) và mạng tùy biến di động (MANET/Ad-Hoc), tiến hành đánh giá hiệu năng các giao thức định tuyến không dây đặc thù như AODV, DSR, DSDV và TORA trên các điều kiện di chuyển nút khác nhau, đồng thời khai thác sâu công cụ TraceGraph để phân tích đa chiều các thông số mạng.
Giá trị tham khảo
Khóa luận là tài liệu tham khảo hữu ích cho sinh viên, học viên ngành Công nghệ Thông tin, Kỹ thuật Mạng và Truyền thông dữ liệu đang bắt đầu tiếp cận môn học Mô phỏng mạng hoặc thực hiện đồ án liên quan đến đánh giá hiệu năng giao thức.
Các nội dung có giá trị tham khảo cao trong tài liệu bao gồm:
- Chương II (Các bước cơ bản mô phỏng kịch bản): Cung cấp các mẫu mã lệnh OTcl chuẩn để tạo nút, tạo liên kết, gắn tác nhân (UDP/TCP/LossMonitor), cấu hình các loại nguồn phát (CBR, Exponential, Pareto) và cấu trúc tệp vết 12 trường dữ liệu.
- Chương II (Ví dụ mã nguồn XGraph hoàn chỉnh): Cung cấp cấu trúc hàm mẫu
record để tính toán thông lượng tức thời (Mbit/s) từ biến bytes_ của Agent/LossMonitor và ghi ra tệp để vẽ đồ thị.
- Chương III (Hướng dẫn cài đặt và xử lý lỗi): Cung cấp giải pháp sửa lỗi biên dịch gcc-4.4 và mẫu khai báo biến môi trường trong
.bashrc cho môi trường Linux.
Câu hỏi thường gặp
1. Tại sao phần mềm NS-2 lại sử dụng kết hợp hai ngôn ngữ lập trình C++ và OTcl?
NS-2 tách biệt hai tác vụ: mô phỏng chi tiết giao thức yêu cầu ngôn ngữ lập trình hệ thống C++ để xử lý nhanh các byte dữ liệu, tiêu đề gói tin và thuật toán trên tập dữ liệu lớn nhằm tối ưu tốc độ chạy thực (run-time speed); trong khi việc cấu hình kịch bản, thiết lập tô-pô mạng và thay đổi tham số thử nghiệm được thực hiện bằng ngôn ngữ kịch bản OTcl để tối ưu thời gian chỉnh sửa và chạy lại mô hình (iteration time).
2. Để sửa lỗi biên dịch GCC khi cài đặt gói ns-allinone-2.35 trên Ubuntu, tác giả đã thao tác như thế nào?
Trong các thư mục ns-allinone-2.14 và ns-allinone-2.10/unix, tác giả mở các tệp Makefile.in, tìm đến dòng cấu hình CC = @CC@ và sửa lại thành CC = gcc-4.4, sau đó lưu tệp và tiến hành chạy lệnh ./install.
3. Trong kịch bản thực nghiệm với XGraph ở Chương II, các nguồn lưu lượng được cấu hình với những thông số nào?
Kịch bản sử dụng 3 nguồn lưu lượng dạng phân bố mũ (Application/Traffic/Exponential) gắn vào tác nhân UDP tại các nút n0, n1, n2 với kích thước gói tin (packetSize_) là 200 byte, thời gian phát bùng nổ trung bình (burst_time_) là 2 giây, thời gian nghỉ trung bình (idle_time_) là 1 giây. Tốc độ đỉnh (rate_) của 3 nguồn lần lượt là 100 kbps, 200 kbps và 300 kbps.
4. Kịch bản thực nghiệm mô phỏng so sánh các giao thức TCP ở Chương III được thiết lập với những thông số nào?
Kịch bản thiết lập mô hình 8 nút mạng (3 nút phát, 3 nút thu, 2 nút định tuyến), sử dụng đường truyền song công dung lượng 20 MB, độ trễ 2 ms, cơ chế hàng đợi DropTail có dung lượng giới hạn 20 segment, và thời gian chạy mô phỏng là 60 giây để khảo sát các giao thức TCP, TCP Reno và TCP Vegas.
5. Tệp vết tiêu chuẩn (.tr) của NS-2 lưu trữ những thông tin nào cho mỗi sự kiện gói tin?
Tệp vết tiêu chuẩn gồm 12 trường thông tin: loại sự kiện (thao tác hàng đợi: +, -, r, d), thời gian xuất hiện sự kiện, nút nguồn vết (from node), nút đích vết (to node), loại gói tin (pkt type), kích thước gói (pkt size), cờ (flags), mã luồng (fid), địa chỉ nguồn (src addr), địa chỉ đích (dst addr), số thứ tự gói (seq num) và mã gói tin duy nhất (pkt id).
Kết luận
Khóa luận "Nghiên cứu công cụ mô phỏng NS-2" của sinh viên Sonexay Keobouapha đã trình bày hệ thống và toàn diện các kiến thức nền tảng về công cụ mô phỏng mạng NS-2, từ kiến trúc phân tầng C++/OTcl đến quy trình lập trình kịch bản thực nghiệm. Tác giả đã hướng dẫn chi tiết các bước cài đặt, khắc phục lỗi biên dịch trên hệ điều hành Linux Ubuntu và khảo sát các công cụ trực quan hóa đi kèm như NAM, XGraph và TraceGraph. Mặc dù các kịch bản thực nghiệm dừng lại ở mức mô hình cơ bản trên mạng có dây, tài liệu đã cung cấp đầy đủ các chỉ dẫn kỹ thuật và mã nguồn mẫu cần thiết để người học làm chủ công cụ mô phỏng mạng này.