Đặt vấn đề Thế giới của mạng viễn thông và mạng máy tính đã trải qua kinh nghiệm trên 2 thập niên trước, một sự phát triển chưa từng có tiền lệ trong lĩnh vực cung cấp dịch vụ, âm lượng
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TẬP ĐOÀN BƯU CHÍNH VIỄN
THÔNG VIỆT NAM HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
-
NGÔ THỊ LAN
MÔ PHỎNG MẠNG IP VÀ LÀM CHỦ PHẦN MỀM NS-3
CHUYÊN NGÀNH : TRUYỀN DỮ LIỆU VÀ MẠNG MÁY TÍNH
MÃ SỐ : 60.48.15 Người hướng dẫn khoa học: TS Đinh Văn Dũng
TÓM TẮT LUẬN VĂN THẠC SĨ
HÀ NỘI - 2011
Trang 2MỞ ĐẦU
I Đặt vấn đề
Thế giới của mạng viễn thông và mạng máy tính đã trải qua kinh nghiệm trên 2 thập niên trước, một sự phát triển chưa từng có tiền lệ trong lĩnh vực cung cấp dịch vụ, âm lượng của quá trình truyền tin, các công nghệ được sử dụng Các mạng viễn thông, mà trước đây tập trung vào sự truyền tải sử dụng công nghệ chuyển mạch, đã nhanh chóng phát triển theo hướng chuyển giao kỹ thuật số, dữ liệu, hình ảnh dùng các công nghệ chuyển mạch gói TCP/IP
Việc kết hợp các hệ thống làm tăng tính phức tạp trong xử lý là nguyên nhân dẫn đến sự ra đời của các phương pháp mô hình hóa và các kỹ thuật mô phỏng trong khi quy hoạch, thiết kế mạng với công nghệ nền
IP (Internet, NGN, 3G, MAN-E, )
Ngay nay, việc mô hình hóa và mô phỏng là một trong hầu hết các kỹ thuật được sử dụng rộng rãi trong thiết kế các hệ thống phức tạp do nó linh hoạt và hiệu quả Đồng thời, sử dụng các mô phỏng làm cho việc học tập, nghiên cứu các hệ thống trong các nhà trường hiệu quả hơn trong khi cơ sở vật chất chưa đáp ứng được
II Mục tiêu nghiên cứu của luận văn
Xuất phát từ sự hiệu quả trong sử dụng, đồng thời cũng xuất phát từ yêu cầu của trường Đại học Công Nghiệp Việt – Hung: Khuyến khích giáo viên sử dụng các công cụ mô phỏng bài giảng, để học sinh quan sát trực quan và cũng là để giải quyết vấn đề thiếu phương tiện dạy học Và từ thực tế dạy học chuyên nghành
“Quản trị mạng” tại trường
Đề tài “Mô phỏng mạng IP và làm chủ phần mềm NS-3” với mong muốn sau khi hoàn thành sẽ giúp
cho công tác giảng dạy được thuận lợi hơn để truyền đạt tối đa kiến thức đến cho sinh viên chuyên nghành
“Quản trị mạng” nơi em công tác Do đó, mục tiêu của đề tài cần đạt được là:
- Tìm hiểu các phương pháp mô hình hóa mạng IP: mô phỏng sự kiện rời rạc, mô phỏng theo vết (trace driven) và phương pháp mô phỏng Monte
- Làm chủ phần mềm mã nguồn mở ns-3, nắm vững các lớp, mô hình và cách sử dụng của các lớp trong ns-3
- Thực hiện các minh họa mô phỏng sử dụng ns-3
III Bố cục của luận văn
Luận văn gồm 3 nội dung sau:
Chương 1 : Mô phỏng mạng IP
Chương 2 : Kiến trúc hệ thống phần mềm NS-3
Chương 3 : Phát triển và ứng dụng phần mềm mô phỏng NS-3
Trang 3Chương 1
MÔ PHỎNG MẠNG IP 1.1 Các phương pháp mô hình hóa mạng IP
1.1.1 Phương pháp mô phỏng sự kiện rời rạc
Một mô phỏng sử dụng mô hình trạng thái rời rạc của hệ thống được gọi là phương pháp mô phỏng
sự kiện rời rạc Phương pháp này ngược với các phương pháp mô phỏng sự kiện liên tục ở chỗ trong mô phỏng sự kiện liên tục trạng thái của hệ thống lấy các giá trị liên tục Các mô hình trạng thái liên tục được sử dụng trong các mô phỏng hóa học do trạng thái của hệ thống được mô tả bởi sự tập trung của một chất hóa học Trong các hệ thống máy tính, các mô hình sự kiện rời rạc được sử dụng bởi vì trạng thái của hệ thống được mô tả bởi số lượng công việc ở những thiết bị khác nhau Lưu ý rằng thuật ngữ “rời rạc” không dùng để chỉ giá trị thời gian được sử dụng trong mô phỏng Phương pháp mô phỏng sự kiện rời rạc có thể sử dụng các giá trị thời gian liên tục hay rởi rạc
Tất cả phương pháp mô phỏng sự kiện rời rạc đều có chung một cấu trúc Bất kể hệ thống được mô hình là gì, thì phương pháp mô phỏng cũng sẽ có một số thành phần như sau: Nếu sử dụng ngôn ngữ lập trình đa dụng, thì các nhà phân tích phải tự phát triển tất cả các thành phần Nguôn ngữ lập trình mô phỏng thì có thể cung cấp một vài thành phần, còn lại các nhà phân tích phải tự phát triển
1.1.2 Phương pháp mô phỏng theo vết (trace driven)
Mô phỏng sử dụng trace làm đầu vào là phương pháp mô phỏng trace-driven Trace là một bản ghi các sự kiện được sắp xếp theo thời gian của một hệ thống thật Các phương pháp mô phỏng trace-driven này khá thông dụng trong các phân tích hệ thống máy tính Chúng thường được sử dụng để phân tích và điều chỉnh các giải thuật quản lý tài nguyên Giải thuật paging, phân tích bộ nhớ cache, các giải thuật lập lịch CPU, các giải thuật ngăn chặn nghẽn và các giải thuật để phân chia động bộ nhớ là các ví dụ về các trường hợp đã áp dụng thành công phương pháp mô phỏng Trace-driven và được để cập đến trong các tài liệu Trong những nghiên cứu đó, Trace của tài nguyên yêu cầu được dùng làm đầu vào để thực hiện mô phỏng để
mô hình những giải thuật khác nhau
1.1.3 Phương pháp mô phỏng Monte
Phương pháp mô phỏng tĩnh hay một phương pháp mô phỏng nào đó không có trục thời gian thì được gọi là phương pháp mô phỏng Monte Carlo Những phương pháp thường được dùng để mô hình những hiện tượng xác suất , những hiện tượng không thay đổi đặc tính theo thời gian Giống như một phương pháp
mô phỏng động, các phương pháp mô phỏng tĩnh cũng cần phải có một bộ tạo các số giả ngẫu nhiên Phương pháp mô phỏng Monte Carlo cũng được sử dụng để tính toán các biểu thức không theo sắc xuất bằng cách sử dụng các phương pháp theo sắc xuất
1.2 Đánh giá các phần mềm mô phỏng mạng IP
1.2.1 Các tiêu chí đánh giá một phần mềm mô phỏng mạng
- Phương pháp mô phỏng được hỗ trợ: Các phương pháp mô phỏng phổ biến gồm có 3 phương pháp: mô
phỏng sự kiện rời rạc, mô phỏng theo vết (trace driven) và mô phỏng Monte
- Hỗ trợ chạy trên các nền tảng khác nhau: Sẽ hữu ích nếu có một chương trình mô phỏng chạy trên các
nền tảng khác nhau, cụ thể là trên cả các hệ điều hành linux và windows Trong trường hợp mô phỏng có tải tính toán nặng, cần quan tâm tới các khả năng xử lí đa nhiệm, song song, hay phân tán
- Hỗ trợ việc tạo các topo mạng: Các chương trình mô phỏng cần có khả năng tạo các topo mạng phân
cấp, không phân cấp cũng như các topo mạng ngẫu nhiên
Trang 4- Hỗ trợ giám sát: Trong quá trình mô phỏng, sẽ rất có lợi nếu giám sát hoạt động của mạng trên mỗi
luồng, mỗi nút mạng hay tổng quát hơn là trên một số các tiêu chí tổng hợp Việc giám sát có thể được trợ giúp bởi giao diện đồ họa Kết quả giám sát có thể ghi vào các file nhằm tạo ra các dữ liệu để so sánh
về sau hay chạy lại mô phỏng phục vụ mục đích nghiên cứu các hoạt đã xảy ra
- Sự cân đối, khả năng mở rộng, khả năng điều chỉnh và tính mềm dẻo/ linh hoạt: Các chương trình mô
phỏng phải có một kiến trúc module mở trong đó, các mô hình hiện thời có thể được thay thế, chỉnh sửa, hay bổ sung các mô hình mới
- Tính khả dụng rộng rãi: Thiết kế phần mềm của một chương trình mô phỏng cũng như là các công cụ
lập trình dùng trong chương trình mô phỏng đó có tác động lớn đến tính khả dụng của nó Lợi ích của giao diện đồ họa có thể tăng tốc thao tác trên chương trình mô phỏng Và chất lượng chung của các tài liệu sẵn có và hỗ trợ về kĩ thuật cũng là các yếu tố quan trọng để có thể học cách sử dụng và điều khiển chương trình mô phỏng đó một cách hiệu quả và nhanh chóng
- Mức độ cộng đồng mạng chấp nhận một chương trình mô phỏng: Việc chọn lựa một chương trình mô
phỏng được sử dụng rộng rãi và được chấp nhận bởi cộng đồng mạng cho phép tạo ra các kết quả dễ so sánh với các kết quả được trình bày trong các tài liệu đã có, và ở khía cạnh nào đó, các kết quả này cũng
dễ được giới khoa học chấp nhận hơn
1.2.2 Một số phần mềm mô phỏng mạng IP
1.2.2.1 OPNET
1.2.2.2 OMNeT++
1.2.2.3 NS-2
1.2.2.4 JiST
1.2.2.5 SimPy
1.3 So sánh hiệu suất của các phần mềm mô phỏng
1.3.1 Phương pháp thực hiện
Thực hiện trên một mô hình mạng bất kỳ và chạy trên tất cả các phần mềm mô phỏng ns-2, OMNet++, ns-3, SimPy và JiST/SWANS Bởi vì, hiệu suất của quá trình mô phỏng mạng phụ thuộc chủ yếu vào mã của các mô hình mạng và độ phức tạp tính toán của chúng
1.3.2 Khả năng tương đương của các mô hình
Thực hiện một mô phỏng trên 5 phần mềm mô phỏng khác nhau ở trên Trong ví dụ này ta chạy mô phỏng một mô hình mạng trong tất cả các phần mềm mô phỏng, xác suất mất mát thông tin nằm trong khoảng giữa 0 và 1, cấu trúc liên kết mạng hình vuông giới hạn kích thước mạng từ 4 tới 1024 nút , thời gian
mô phỏng được đặt là 600s
Kết quả đạt được cho thấy tỷ lệ mất mát thông tin của SimPy là hơi cao hơn mức trung bình, tuy nhiên vẫn nằm trong giới hạn chấp nhận được Từ những kết quả này, ta có thể kết luận rằng việc triển khai độc lập các mô phỏng trong thực tế cho kết quả tương đương nhau
1.3.3 So sánh hiệu suất
Với thực tế khả năng mô phỏng của các phần mềm cho kết quả như nhau, bây giờ ta tiến hành so sánh từng công cụ mô phỏng riêng, đánh giá ở thông số: Thời gian chạy mô phỏng (simulation runtime) và sử dụng bộ nhớ (memory usage) Để đánh giá khả năng của các phần mềm mô phỏng, chúng ta sẽ thực hiện 2 lượt chạy khác nhau sử dụng một mô phỏng Trong lượt chạy đầu tiên, xác suất mất thông tin được đặt cố định là 0.10 với kích thước mạng trong khoảng từ 4 tới 3025 nút
Trang 5Hình 1.3 Thời gian chạy mô phỏng thời gian so với kích thước mạng
Lượt thứ 2 sử dụng kích thức mạng cố định là 3025 nút, xác suất mất thông tin nằm trong khoảng 0.0
và 1.0 Tất cả các kết quả đưa ra sau đây là trung bình của 5 lần thực hiện đối với mỗi loạt mô phỏng Trong
cả 2 loạt mô phỏng, thời gian mô phỏng được đặt là 600s
1.3.3.1 Thời gian chạy mô phỏng
Hình 1.3 cho thấy thời gian chạy mô phỏng được đo ở các kích thước mạng khác nhau đối với các công cụ mô phỏng được so sánh Trước hết, những kết quả này cho thấy rằng SimPy không hoạt động tốt và
vì thế không thể áp dụng mô phỏng mạng có quy mô lớn: Đối với một mạng có kích thước 3025 nút, trung bình nó cần tới 1225 giây để hoàn thành việc chạy mô phỏng Trái ngược với điều đó, cùng một công việc đó JiST hoàn thành nhanh hơn khoảng 14 lần, kết quả thời gian thực hiện trung bình là 86s Nhìn qua thì hiệu suất thời gian chạy tổng thể của JiST là đáng kinh ngạc
Thực tế cho thấy là nó được xây dựng dựa trên Java và vẫn còn nhanh hơn so với OMNeT++ và
ns-3, là những công cụ được thực hiện một cách tự nhiên Điều đó là do giới hạn thành công là từ kiến trúc của JiST: Bên cạnh việc thực hiện song song trên các thực thể khác nhau, JiST thực hiện tối ưu hóa thời gian chạy dựa trên sự phân tích của mã byte thực hiện Theo hiệu suất thời gian chạy của Ns-3, sự cải tiến về kiến trúc, cụ thể là việc bỏ oTCL/C++, được phản ánh rõ ràng trong kết quả đã thu được ở trên, ns-3 được coi là nhanh hơn so với phiên bản trước (ns-2) của nó Trong khi hiệu suất thời gian chạy của OMNeT++ hơi kém hơn so với ns-3 và JiST, cả 3 công cụ mô phỏng này thể hiện rằng hầu như có cùng một khả năng mở rộng theo thời gian chạy mô phỏng
Hình 1.4 Thời gian chạy mô phỏng so với việc giảm xác suất
Trang 6Để hiểu sâu hơn về các cách thức trong thời gian chạy của các công cụ mô phỏng khác nhau ta có thể được quan sát từ các kết quả trong hình 1.4 Ở đây, có thể hình dung thời gian chạy trung bình từ loạt mô phỏng thứ 2 đối với một mạng có kích thước cố định là 3025 nút và các xác suất mất mát thông tin khác nhau Với việc tăng các xác suất mất mát thông tin, thời gian chạy mô phỏng tự nhiên giảm một cách nhanh chóng đối với toàn bộ các công cụ mô phỏng, càng ngày càng nhiều gói tin bị loại bỏ từ mô phỏng, do đó dẫn đến kết quả là ít sự kiện được xử lý hơn Nói cách khác, xác suất mất mát thông tin trực tiếp phản ánh số các sự kiện được thực hiện trong các mô phỏng Ta có thể thấy rằng thời gian chạy mô phỏng SimPy tăng nhanh hơn nhiều ở xác xuất mất thông tin thấp hơn bất kỳ một công cụ mô phỏng nào khác Từ các kết quả
đó, ta có thể kết luận rằng thực tế SimPy có một ít sự kiện xử lý hơn các lõi mô phỏng khác
1.3.3.2 Sử dụng bộ nhớ
Tương tự như phân tích ở trên về thời gian chạy mô phỏng Hình 1.5 mô tả việc sử dụng bộ nhớ tối
đa của từng công cụ mô phỏng riêng biệt trong hai loạt chạy mô phỏng
Hình 1.5 Bộ nhớ sử dụng so với kích thước mạng
Từ kết quả trên cho thấy, JiST sử dụng tài nguyên bộ nhớ nhiều hơn so với các công cụ mô phỏng khác Ngoài ra, sự khác biệt trong sử dụng bộ nhớ giữa JiST và các công cụ khác tăng lên khi kích thước mạng lớn hơn Hiệu suất sử dụng bộ nhớ của ns-2, OMNeT++ và SimPY chia thành các đường tuyến tính tương tự nhau thể hiện tốc độ tăng dần của việc sử dụng bộ nhớ khi kích thước mạng tăng và ns-3 là công cụ
mô phỏng hiệu quả nhất trong vấn đề này
Trang 7Chương 2 KIẾN TRÚC HỆ THỐNG PHẦN MỀM NS-3
Ns-3 là một phần mềm mô phỏng mạng các sự kiện rời rạc mà trong đó lõi và các mô hình mô phỏng được thực hiện trong C++ Ns-3 xây dựng một thư viện có thể là tĩnh hoặc động liên kết với một chương trình chính của C++, định nghĩa các cấu trúc mô phỏng và bắt đầu mô phỏng Ns-3 cũng đưa ra hầu như tất
cả các API của nó cho Python, cho phép các chương trình Python sử dụng một module Ns-3 tương tự như được sử dụng trong C++
Mục đích của lịch trình thời gian thực là đồng bộ giữa thời gian mô phỏng với thời gian thực bên ngoài Nếu không có sự hiện diện các một thời gian thực bên ngoài (biên của đồng hồ) thời gian của các mô phỏng tiếp theo sẽ được nhảy ngay lập tức sau khi kết thúc một mô phỏng trước đó
Mô phỏng sự kiện rời rạc và song song cho phép thực hiện một chương trình mô phỏng trên nhiều bộ
xử lý Bằng cách chia các mô phỏng thành các xử lý thích hợp, các LP, mỗi LP có thể được thực hiện bởi một bộ xử lý khác nhau Phương pháp mô phỏng này cho phép mô phỏng các mô phỏng trong phạm vi rất lớn bằng cách thúc đẩy làm tăng năng lực xử lý và sự sẵn có của bộ nhớ Để đảm bảo chắc chắn việc thực hiện mô phỏng rời rạc là đúng, bắt buộc phải có một thông điệp truyền qua giữa các LP Để hỗ trợ cho các
mô phỏng rời rạc trong ns-3, một giao diện chuyển thông điệp chuẩn (Message Passing Interface (MPI)) được sử dụng, cùng với một lớp mô phỏng rời rạc mới Hiện tại, việc phân chia một mô phỏng cho các mục đích rời rạc trong ns-3 chỉ có thể tập trung ở các liên kết điểm nối điểm (Point-to-Point)
Node là một thành phần của lớp Node Một lớp Node bao gồm các NetDevice và những bộ phận cấu trúc bên trong là các phương thức và các ứng dụng Đối tượng Node chứa một danh sách các ứng dụng (Application) (ban đầu là danh sách rỗng), một danh sách các NetDevice (ban đầu là danh sách rỗng), một danh sách các ProtocolHandlers, và một số nguyên ID duy nhất và một ID của hệ thống (đối với mô phỏng rời rạc)
WifiNetDevice mô hình hóa một điều khiển giao tiếp của mạng không dây dựa trên chuẩn IEEE802.11 Tập hợp các mô hình của 802.11 trong ns-3 cung cấp một thực thi chính xác mức MAC của các chi tiết kỹ thuật 802.11 và cung cấp một mô hình mức PHY của các chi tiết kỹ thuật 802.11a Mã nguồn của NetDevice Wifi có trong thư mục src/devices/wifi
Khi thêm các đối tượng WimaxNetDevice vào các nút của Ns-3, người ta có thể tạo ra các mô hình mạng dựa trên chuẩn 802.16 Các tính năng quan trọng nhất của mô hình Wimax trong ns-3 gồm:
- Khả năng mở rộng, lớp vật lý thực tế và mô hình kênh
- Phân loại gói tin cho các lớp con hội tụ IP
- Hiệu quả trong các kế hoạch liên kết trên và liên kết dưới
- Hỗ trợ dịch vụ truyền đa điểm và quảng bá (Multicast và Broadcast Service (MBS)) và chức năng truy tìm gói tin
Trang 8Mã nguồn của các mô hình WiMAX được đặt trong thư mục src/devices/wimax
API của socket đã tồn tại từ lâu được sử dụng bởi các ứng dụng người dùng để truy cập các dịch vụ mạng trong nhân mạng “Socket” là một khái niệm trừu tượng, giống như một kênh điều khiển tập tin của Unix, cho phép các ứng dụng kết nối với các máy tính khác trên Internet và trao đổi dòng dữ liệu tin cậy và các gói dữ liệu không tin cậy, giữa các dịch vụ với nhau Ns-3 cung cấp 2 loại API Socket, và điều đó là rất quan trọng để hiểu được sự khác biệt giữa chúng Loại đầu tiên là một API ns-3 tự nhiên trong khi loại thứ 2
sử dụng các dịch vụ của API tự nhiên để cung cấp một API giống như POSIX như là một phần của quá trình
xử lý ứng dụng tổng thể Cả 2 loại này đều cố gắng sao cho gần với các API cơ bản để người viết ứng dụng trên hệ thống Unix quen với nó, nhưng các biến thể POSIX là rất gần với các API Socket của hệ thống thực
Ns-3 được thiết kế nhằm mục đích hỗ trợ các phương pháp định tuyến và các giao thức truyền thống, các cổng hỗ trợ thực thi các định tuyến trên mã nguồn mở và tạo điều kiện để nghiên cứu các kỹ thuật định tuyến không chính thống Một số vấn đề về định tuyến trong ns-3: Kiến trúc định tuyến, cấu hình các định tuyến toàn cục đối với cấu trúc mạng có dây, các giao thức định tuyến đơn, định tuyến đa luồng
2.9.1 Phương pháp thiết kế
Hãy xem xét việc mô hình muốn tạo làm việc như thế nào; nó nên làm những gì Hãy suy nghĩ về những điều này:
+ Chức năng: Nó cần có những chức năng gì ? Những thuộc tính hay những cấu hình nào được người dùng nhìn thấy ?
+ Sử dụng lại: bao nhiêu người có khả năng sử dụng lại thiết kế của tôi? Tôi có thể sử dụng lại mã từ ns-2 để bắt đầu? Làm thế nào để người sử dụng tích hợp mô hình với phần còn lại của mô phỏng khác? + Phụ thuộc: Làm thế nào tôi có thể làm giảm bớt sự phụ thuộc vào bên ngoài ở trong đoạn mã mới của tôi càng nhiều càng tốt (để làm cho nó module hóa hơn không)? Ví dụ, tôi muốn sử dụng Ipv6 mà không phụ thuộc vào IPv4? Tôi có nên tránh bất kỳ sự phụ thuộc vào IP ở tất cả các phiên bản?
2.9.2 Xây dựng khung cho các hàm cần tạo
Khi đã sẵn sàng để bắt đầu thực hiện và đã xác định những gì muốn xây dựng Một cách để giải quyết
là tạo ra khung cho các hàm cần tạo (scaffolding) và điền các chi tiết như là đã hoàn thành quá trình thiết kế Phần này mô tả qua rất nhiều bước nên cần cân nhắc để định nghĩa scaffolding hoặc khung sườn không chứa nội dung nào của những mô hình gì sẽ được thực thi Nó thường được thực hành tốt để không phải đợi để có được những chi tiết này kết hợp với người dùng cuối, nhưng thay vì đưa ngay khung trong mô hình vào hệ thống và sau đó thêm một số chức năng mới sau khi API và quá trình tích hợp dường như thích hợp
2.9.3 Tạo một mô hình Ns-3 mới
2.9.3.1 Bổ sung thêm các hỗ trợ cơ bản vào lớp
point-to-point-net-device.h
class ErrorModel;
/**
* Mô hình lỗi đối với các sự kiện nhận gói tin
Ptr<ErrorModel> m_receiveErrorModel;
Trang 92.9.3.2 Bổ sung bộ xử lý truy cập
void
PointToPointNetDevice::SetReceiveErrorModel (Ptr<ErrorModel> em)
NS_LOG_FUNCTION (this << em);
m_receiveErrorModel = em;
.AddAttribute ("ReceiveErrorModel",
"Mô hình lỗi nhận được sử dụng để mô phỏng mất gói tin",
PointerValue (),
MakePointerAccessor (&PointToPointNetDevice::m_receiveErrorModel),
MakePointerChecker<ErrorModel> ())
2.9.3.3 2.9.3.3 Xâm nhập vào hệ thống
void PointToPointNetDevice::Receive (Ptr<Packet> packet)
NS_LOG_FUNCTION (this << packet);
uint16_t protocol = 0;
if (m_receiveErrorModel && m_receiveErrorModel->IsCorrupt (packet) )
/ / Nếu chúng ta có một mô hình thông báo lỗi và nó chỉ ra thời điểm mất một gói dữ liệu bị hỏng, không chuyển tiếp gói tin này, hãy để cho nó đi
m_dropTrace (packet);
else
/ / Tìm được dấu vết nhận tiếp theo thì gỡ bỏ tiêu đề của giao thức điểm nối điểm và chuyển tiếp gói tin này lên ngăn xếp giao thức
m_rxTrace (packet);
ProcessHeader(packet, protocol);
m_rxCallback (this, packet, protocol, GetRemote ());
if (!m_promiscCallback.IsNull ())
m_promiscCallback (this, packet, protocol, GetRemote (),
GetAddress (), NetDevice::PACKET_HOST);
2.9.3.4 Tạo một đoạn mã không có chức năng
simple-error-model.cc
/ / Mô hình thông báo lỗi
// Chúng tôi muốn bổ sung thêm một mô hình lỗi vào NetDevice của Node 3
// Chúng tôi có thể có được một xử lý tới NetDevice thông quá kênh và node
// Các con trỏ
Ptr<PointToPointNetDevice> nd3 = PointToPointTopology::GetNetDevice
(n3, channel2);
Ptr<ErrorModel> em = Create<ErrorModel> ();
nd3->SetReceiveErrorModel (em);
bool
ErrorModel::DoCorrupt (Packet& p)
NS_LOG_FUNCTION;
NS_LOG_UNCOND("Corrupt!");
return false;
Trang 10Chương 3 PHÁT TRIỂN VÀ ỨNG DỤNG PHẦN MỀM
Ns-3 ra đời nhằm đáp ứng sự phát triển mạnh mẽ của các công nghệ mạng, sự xuất hiện của công nghệ không dây, trong đó bao gồm hỗ trợ tính di động và multihoming Hiện nay, NS-3 đáp ứng được các yêu cầu của một công cụ mô phỏng cơ bản Tuy nhiên NS-3 chỉ tập trung vào IPv4, trong khi IPv6 đang được triển khai trên mạng Internet và chắc chắn sẽ là giao thức được sử dụng trên Internet trong năm mươi năm tới, và
vì thế bất kỳ một công cụ mô phỏng mạng nào cũng nên hỗ trợ cho IPv6 Hầu hết các phát triển trong tương lai của các giao thức cho Internet sẽ hỗ trợ IPv6
3.1.1 Đặc điểm của IPv6
Hiện nay, giao thức được sử dụng là giao thức mạng phiên bản 4 (IPv4) Giao thức này đã được đưa vào sử dụng rất hiệu quả Tuy nhiên, sự phát triển ngày càng tăng của mạng Internet gây ra sự thiếu hụt về địa chỉ và vấn đề bảo trì các tuyến đường Vấn đề thiếu hụt địa chỉ được khắc phục một phần bằng cách giới thiệu rộng rãi về công nghệ NAT (Network Address Translators), cho phép kết hợp một địa chỉ IP toàn cục duy nhất cho nhiều máy trong cùng một mạng riêng Mặc dù vậy, việc sử dụng NAT gây rắc rối trong quá trình truyền thông giữa các máy và cũng có thể ảnh hưởng đến hiệu suất của mạng Để giải quyết vấn đề này
và để nâng cao dịch vụ được cung cấp bởi IP thì phải chấp nhận một phiên bản IP mới, là IP phiên bản 6 (IPv6) IPv6 đã được đưa ra để giải quyết phần lớn các vấn đề đúc kết được trên 30 năm qua trên mạng Internet Đầu tiên, nó mở rộng không gian địa chỉ từ 232 tới 2128 Một địa chỉ IPv6 được cấu tạo gồm 128 bit: 64 bit đầu tiên thường được dùng để định danh một mạng (phần đầu của mạng), trong khi đó 64 bit sau dùng để định vị các máy trong mạng này Mỗi địa chỉ IPv6 đều có thể hiện phạm vi của chúng: liên kết cục
bộ, trang cục bộ hay toàn cục Phạm vi có hiệu lực của các địa chỉ liên kết cục bộ bị giới hạn bởi chính tên của liên kết đó, ví dụ như các địa chỉ loại này chỉ được dùng để truyền thông trực tiếp giữa các máy gần nhau Một địa chỉ liên kết cục bộ được cấu hình tự động trên mỗi giao diện mạng bằng cách kết hợp tiền tố FE80::/64 với IEEE802 E-64 của giao diện đó Đối với một trang không kết nối được tới mạng Internet hoặc vẫn là một mạng riêng thì nó có phạm vi cục bộ Những địa chỉ này tương đương với các địa chỉ IPv4 riêng (ví dụ 192.168.0.0) Tuy nhiên, những địa chỉ như thế này không được chấp nhận trong suốt quá trình định tuyến và các vấn đề phân định ranh giới của một trang Chúng được thay thế bởi địa chỉ cục bộ duy nhất Cuối cùng, các địa chỉ IPv6 toàn cục có thể được định tuyến trên toàn bộ mạng IPv6 và do đó được sử dụng
để truyền tải thông tin giữa hai máy IPv6 từ xa bất kỳ
3.1.1.1 Phát hiện các nút mạng lân cận
IPv6 có một giao thức mới là giao thức phát hiện các nút mạng lân cận (Neighbor Discovery), thực hiện một vài chức năng như khám phá các tuyến đường, phân giải địa chỉ (ánh xạ các địa chỉ IP với các địa chỉ lớp liên kết), tự động cấu hình địa chỉ, tìm các nút mạng lân cận, quyết định bước nhảy tiếp theo và chuyển hướng máy Tất cả các thông điệp IPv6 (ICMPv6) được giao thức phát hiện các nút mạng lân cận truyền đi đều được thực hiện bởi Giao thức điều khiển thông báo trên mạng (Internet Control Message Protocol)
Giao thức phát hiện nút mạng lân cận cung cấp một thủ tục cấu hình địa chỉ mới đó là cơ chế tự động cấu hình địa chỉ Một máy tính có thể tự động cấu hình địa chỉ IPv6 có giá trị toàn cục khi nhận được một thông điệp thông báo của bộ định tuyến (Router Advertisement) rằng bộ định tuyến truy cập cục bộ định kỳ