Tài liệu học tập kỹ thuật: Quản lý vùng đệm, đường liên kết và đối tượng SimpleLink trong NS2

Tài liệu học tập chuyên sâu kỹ thuật mô phỏng phần 2. Khám phá các phương pháp, công cụ và ứng dụng thực tiễn để thành thạo mô phỏng.

Chuyên ngành

Kỹ thuật mạng

Người đăng

Ẩn danh

Thể loại

Chương sách
102
1
0

Phí lưu trữ

35 Point

Tóm tắt

I. Khám phá sâu rộng Quản lý vùng đệm và đường liên kết trong mô phỏng NS2

Mô phỏng mạng là một công cụ thiết yếu để phân tích và đánh giá hiệu suất của các giao thức và kiến trúc mạng. Trong môi trường NS2 (Network Simulator 2), việc quản lý vùng đệm và đường liên kết đóng vai trò cực kỳ quan trọng, quyết định độ chính xác và tin cậy của kết quả mô phỏng. Phần này giới thiệu tổng quan về cách NS2 mô hình hóa các kênh truyền và vai trò của đối tượng SimpleLink – một lớp cơ bản nhưng mạnh mẽ, cung cấp nền tảng cho việc mô hình hóa các kết nối mạng phức tạp, bao gồm cả khả năng quản lý vùng đệm gói tin và độ trễ truyền dẫn. Hiểu rõ cơ chế này là chìa khóa để xây dựng các kịch bản mô phỏng thực tế và chính xác.

1.1. Tầm quan trọng của quản lý vùng đệm trong mô phỏng mạng NS2

Trong các hệ thống mạng thực tế, vùng đệm tại các thiết bị chuyển mạch đóng vai trò quan trọng trong việc xử lý các gói tin đến khi đường truyền bận. Trong mô phỏng NS2, việc tái tạo chính xác cơ chế này là cần thiết để phản ánh hành vi mạng thực tế, đặc biệt là trong các tình huống tắc nghẽn. Quản lý vùng đệm gói tin không chỉ ảnh hưởng đến khả năng giữ gói mà còn tác động trực tiếp đến độ trễ, mất gói và thông lượng tổng thể của mạng. Việc tối ưu hóa kích thước và chính sách quản lý vùng đệm giúp đánh giá hiệu quả các giao thức điều khiển tắc nghẽn và duy trì chất lượng dịch vụ.

1.2. Vai trò của đường liên kết và SimpleLink trong kiến trúc NS2

Một đường liên kết trong NS2 là một đối tượng OTcl kết nối hai nút, chịu trách nhiệm truyền tải các gói tin. Trong số các lớp dẫn xuất từ Lớp Link, SimpleLink là lớp được sử dụng phổ biến nhất để mô hình hóa kênh truyền NS2. Đối tượng SimpleLink mô hình hóa ba yếu tố chính: thời gian truyền gói tin, độ trễ của kênh truyền và bộ đệm gói tin. Nó cho phép các gói tin được lưu trữ tạm thời khi đường truyền bận, phản ánh cơ chế hoạt động của các router thực tế. Kiến trúc SimpleLink NS2 cung cấp một khung sườn linh hoạt để các nhà nghiên cứu tùy chỉnh và thử nghiệm các kịch bản mạng đa dạng.

II. Thách thức lớn Mô hình hóa kênh truyền và vùng đệm hiệu quả trong NS2

Việc mô hình hóa chính xác các yếu tố vật lý và logic của kênh truyền là một trong những thách thức cốt lõi khi thực hiện mô phỏng mạng NS2. Độ chính xác của mô hình ảnh hưởng trực tiếp đến tính hợp lệ của các kết quả nghiên cứu. NS2 cần tái tạo không chỉ thời gian truyền vật lý mà còn cả cơ chế quản lý lưu lượng và bộ đệm gói tin tại các điểm nút. Tuy nhiên, có những khác biệt đáng kể giữa cách NS2 triển khai các khái niệm này so với thực tế, đòi hỏi người dùng phải hiểu rõ để áp dụng hiệu quả và tránh những sai lệch trong quá trình mô phỏng NS2 với SimpleLink.

2.1. Hiểu rõ thời gian truyền gói tin và độ trễ kênh truyền

Trong mô phỏng NS2, thời gian truyền gói tin là khoảng thời gian cần thiết để thiết bị gửi hoàn tất việc truyền đi một gói tin. Giá trị này phụ thuộc vào băng thông của kênh truyền và kích thước của gói tin. Ngược lại, thời gian trễ kênh truyền là thời gian mà mỗi bit cần để di chuyển từ điểm bắt đầu đến điểm kết thúc của kênh truyền. NS2 tách biệt rõ ràng hai khái niệm này để cung cấp một mô hình kênh truyền chi tiết hơn. Việc điều chỉnh chính xác các tham số này trong đối tượng SimpleLink NS2 là rất quan trọng để mô phỏng chính xác hiệu suất của đường truyền vật lý, ảnh hưởng trực tiếp đến quản lý vùng đệm và đường liên kết.

2.2. Sự khác biệt trong triển khai bộ đệm gói tin giữa thực tế và NS2

Trong mạng thực tế, bộ đệm gói tin thường được đặt tại các nút mạng (router) để lưu trữ các gói tin đến khi thiết bị bận. Tuy nhiên, trong mô phỏng NS2, việc đệm gói tin lại được triển khai trong chính kênh truyền, không phải trong nút. Điều này có nghĩa là khi một gói tin đến một thiết bị truyền đang bận, nó sẽ được đưa vào bộ đệm nằm trong đối tượng SimpleLink chứ không phải trong nút đích. Hiểu rõ sự khác biệt này là rất quan trọng khi phân tích dữ liệu và thiết kế các kịch bản quản lý vùng đệm NS2, đảm bảo rằng các giả định mô phỏng phù hợp với cấu trúc triển khai của NS2.

III. Hướng dẫn chi tiết Đối tượng SimpleLink Cốt lõi của mô phỏng NS2

Đối tượng SimpleLink đóng vai trò trung tâm trong việc xây dựng các kết nối và mô hình hóa kênh truyền NS2. Khả năng của nó trong việc xử lý thời gian truyền, độ trễ và đặc biệt là bộ đệm gói tin làm cho nó trở thành một công cụ không thể thiếu cho các nhà nghiên cứu. Việc hiểu rõ các thành phần cấu tạo và cách cấu hình SimpleLink OTcl là nền tảng để tạo ra các kịch bản mô phỏng phức tạp và chính xác. Phần này sẽ đi sâu vào cấu trúc bên trong của SimpleLink, cách nó tương tác với các gói tin, và các thủ tục cần thiết để khai thác tối đa tiềm năng của nó trong quản lý vùng đệm và đường liên kết trong mô phỏng NS2.

3.1. Các thành phần chính tạo nên đối tượng SimpleLink

Một đối tượng SimpleLink được cấu thành từ nhiều thành phần cơ bản, mỗi thành phần có một chức năng riêng biệt. Các đối tượng cơ bản bao gồm head_ (điểm truy cập của SimpleLink), queue_ (là đối tượng Queue, mô hình hóa bộ đệm gói tin), link_ (là đối tượng DelayLink, mô hình hóa thời gian truyền gói tin và thời gian trễ kênh truyền), ttl_ (đối tượng TTLChecker kiểm tra thời gian sống của gói tin), và droptail_ (điểm hủy gói tin của kênh truyền). Các đối tượng này cùng nhau hoạt động để quản lý luồng gói tin qua đường liên kết, từ khi gói tin đi vào cho đến khi nó được truyền đi hoặc bị hủy, giúp cho việc mô hình hóa kênh truyền NS2 trở nên toàn diện.

3.2. Cấu hình SimpleLink bằng các thủ tục instproc trong OTcl

Trong môi trường OTcl, một đối tượng SimpleLink được tạo ra và cấu hình thông qua các thủ tục instproc như simplex-linkduplex-link. Các thủ tục này cho phép người dùng định nghĩa các thuộc tính quan trọng của đường liên kết, bao gồm băng thông (bandwidth), độ trễ (delay) và kiểu hàng đợi (queuetype). Ví dụ, để tạo một liên kết simplex, người dùng chỉ cần chỉ định hai nút và các tham số này. Việc cấu hình SimpleLink OTcl một cách chính xác là điều kiện tiên quyết để đảm bảo mô phỏng phản ánh đúng các đặc tính của mạng thực tế, đồng thời tạo ra nền tảng vững chắc cho việc quản lý vùng đệm và đường liên kết hiệu quả.

3.3. Cơ chế hoạt động của SimpleLink trong việc truyền gói tin

Khi một gói tin đến đối tượng SimpleLink, nó đầu tiên được chuyển đến thành phần queue_ để chờ đợi nếu đường truyền bận. Sau khi gói tin được giải phóng khỏi hàng đợi, nó đi qua link_, nơi thời gian trễ kênh truyền và thời gian truyền gói tin được áp dụng. Tiếp theo, đối tượng ttl_ kiểm tra giá trị TTL của gói tin. Nếu TTL vẫn dương, gói tin sẽ được chuyển tiếp đến thành phần tiếp theo trên kênh truyền; ngược lại, nó sẽ bị hủy và chuyển đến droptail_. Cơ chế này đảm bảo rằng mỗi gói tin được xử lý tuần tự và tuân thủ các quy tắc truyền dẫn đã được định nghĩa trong quá trình mô hình hóa kênh truyền NS2.

IV. Bí quyết thành công Quản lý vùng đệm gói tin tối ưu trong môi trường NS2

Khả năng quản lý vùng đệm gói tin một cách hiệu quả là yếu tố then chốt để đạt được hiệu suất cao trong bất kỳ mô phỏng NS2 nào. Vùng đệm không chỉ là nơi lưu trữ tạm thời mà còn là công cụ để điều hòa luồng dữ liệu, giảm thiểu mất gói và tránh tắc nghẽn. Phần này tập trung vào các chiến lược và kỹ thuật để tối ưu hóa việc quản lý vùng đệm trong NS2, đặc biệt khi sử dụng SimpleLink. Việc lựa chọn loại hàng đợi phù hợp, điều chỉnh kích thước bộ đệm và hiểu các cơ chế xử lý khi bộ đệm đầy sẽ cung cấp cho các nhà nghiên cứu những bí quyết thành công để có được kết quả mô phỏng đáng tin cậy và chính xác.

4.1. Khám phá đối tượng Queue và các loại hàng đợi trong NS2

Đối tượng queue_ trong SimpleLink được triển khai thông qua Lớp Queue trong NS2. NS2 hỗ trợ nhiều loại hàng đợi khác nhau, mỗi loại có chính sách xử lý gói tin riêng. Ví dụ, hàng đợi FIFO (First-In, First-Out) là loại đơn giản nhất, trong khi RED (Random Early Detection) và DropTail là các cơ chế nâng cao hơn để quản lý vùng đệm gói tin và tránh tắc nghẽn. Việc lựa chọn loại hàng đợi phù hợp là rất quan trọng, vì nó ảnh hưởng trực tiếp đến hành vi của mạng dưới tải trọng cao. Khám phá các đối tượng Queue này giúp nâng cao khả năng mô phỏng NS2 với SimpleLink một cách chân thực.

4.2. Tối ưu hóa kích thước và cơ chế hoạt động của bộ đệm gói tin

Kích thước của bộ đệm gói tin có ảnh hưởng lớn đến hiệu suất mạng. Một bộ đệm quá nhỏ có thể dẫn đến mất gói cao, trong khi bộ đệm quá lớn có thể gây ra độ trễ không cần thiết. Việc tối ưu hóa kích thước bộ đệm đòi hỏi sự cân nhắc kỹ lưỡng dựa trên băng thông của kênh truyền, độ trễ và lưu lượng dự kiến. NS2 cho phép người dùng cấu hình kích thước hàng đợi thông qua các tham số của đối tượng SimpleLink. Bên cạnh kích thước, cơ chế hoạt động khi bộ đệm đầy (ví dụ: DropTail) cũng cần được xem xét để đảm bảo việc quản lý vùng đệm NS2 hiệu quả nhất trong các kịch bản mô phỏng cụ thể.

4.3. Giảm thiểu mất gói và tắc nghẽn với quản lý vùng đệm thông minh

Mất gói và tắc nghẽn là những vấn đề phổ biến trong mạng, ảnh hưởng nghiêm trọng đến hiệu suất. Quản lý vùng đệm thông minh thông qua các thuật toán như RED có thể giúp giảm thiểu những vấn đề này bằng cách phát hiện sớm tắc nghẽn và chủ động loại bỏ các gói tin. Thay vì chờ đợi bộ đệm đầy hoàn toàn, RED bắt đầu loại bỏ gói tin một cách ngẫu nhiên khi mức độ sử dụng bộ đệm đạt đến một ngưỡng nhất định, khuyến khích các nguồn gửi giảm tốc độ. Áp dụng các kỹ thuật này trong mô phỏng NS2 với SimpleLink cho phép các nhà nghiên cứu đánh giá hiệu quả của các chiến lược điều khiển tắc nghẽn và cải thiện trải nghiệm người dùng.

V. Phân tích chuyên sâu Cấu trúc gói tin và cách truy cập header trong NS2

Trong mô phỏng NS2, gói tin không chỉ đơn thuần là dữ liệu được truyền tải mà còn là một đối tượng phức tạp chứa nhiều thông tin quan trọng. Việc hiểu rõ kiến trúc gói tin trong NS2 và cách truy cập các trường header của nó là điều cần thiết để phân tích hành vi của các giao thức và phát triển các kịch bản mô phỏng nâng cao. Phần này sẽ đi sâu vào cấu trúc header gói tin mặc định của NS2, cách các thông tin được lưu trữ và phương pháp để truy xuất chúng ở các mức khác nhau. Nắm vững kiến thức này giúp các nhà nghiên cứu có thể tùy chỉnh gói tin và trích xuất dữ liệu cần thiết cho việc quản lý vùng đệm và đường liên kết cũng như các phân tích hiệu suất.

5.1. Kiến trúc header gói tin mặc định trong mô phỏng NS2

Không giống như mạng thực tế, nơi các gói tin chỉ chứa các header của giao thức liên quan, một gói tin trong mô phỏng NS2 mặc định chứa mọi header của mọi giao thức có thể có trong phần header của nó, không cần quan tâm đến loại gói tin. Kích thước phần header của mọi gói tin là giống nhau và được lưu trong biến hdrlen_. Biến này không có liên quan đến kích thước gói tin thực tế trong mô phỏng. Ví dụ, dù gói tin TCP và UDP có kích thước dữ liệu khác nhau, giá trị Packet::hdrlen_ cho cả hai loại gói tin này vẫn như nhau. Hiểu kiến trúc gói tin trong NS2 này rất quan trọng khi phân tích dữ liệu và thiết kế giao thức mới.

5.2. Cách truy cập và quản lý các thuộc tính header gói tin ở Mức 1

Ở Mức 1, NS2 đặt mọi header của mọi giao thức có liên quan (ví dụ: header gói thông dụng, header gói IP, header gói TCP) vào phần header của gói tin một cách liên tục. NS2 phân bổ các header giao thức này theo một dãy liên tục trong bộ nhớ. Để truy cập các thuộc tính trong header gói tin, người dùng cần sử dụng các con trỏ và offset tương ứng với từng loại header. Ví dụ, để truy cập header IP, cần biết offset của nó trong tổng thể header gói tin. Việc nắm vững cách truy cập header gói tin ở Mức 1 cho phép các nhà nghiên cứu lấy được thông tin chi tiết về gói tin, điều chỉnh các trường header và theo dõi luồng dữ liệu một cách hiệu quả trong quá trình mô phỏng NS2.

5.3. Tối ưu hóa kích thước và nội dung header cho mô phỏng hiệu quả

Mặc dù NS2 gán một kích thước header mặc định lớn cho mọi gói tin, việc tối ưu hóa kích thước header có thể cần thiết trong một số trường hợp, đặc biệt khi mô phỏng các mạng có băng thông thấp hoặc cần độ chính xác cao về chi phí overhead. Các nhà nghiên cứu có thể điều chỉnh hoặc bỏ qua một số header không cần thiết để giảm tải tính toán và tăng tốc độ mô phỏng. Hiểu rõ rằng hdrlen_ không liên quan đến kích thước dữ liệu thực tế giúp tránh nhầm lẫn. Bằng cách tùy chỉnh nội dung và kích thước header một cách có chọn lọc, có thể cải thiện hiệu suất của mô phỏng NS2 với SimpleLink và tập trung tài nguyên vào các khía cạnh quan trọng hơn của giao thức được nghiên cứu.

VI. Nâng cao hiệu suất Điều khiển tắc nghẽn TCP và RTT trong mô phỏng NS2

Điều khiển tắc nghẽn là một trong những nhiệm vụ cốt lõi của các giao thức tầng giao vận nhằm duy trì sự ổn định và hiệu suất của mạng. Giao thức TCP là một ví dụ điển hình với các cơ chế điều khiển tắc nghẽn phức tạp dựa trên kỹ thuật cửa sổ và ước tính RTT (Round Trip Time). Trong mô phỏng NS2, việc tái tạo và phân tích các cơ chế này là rất quan trọng để đánh giá hiệu suất của các giao thức, đặc biệt khi có sự tương tác với quản lý vùng đệm và đường liên kết. Phần này sẽ khám phá cách NS2 mô hình hóa việc ước tính RTT, điều khiển tắc nghẽn dựa trên cửa sổ và cách các tham số này ảnh hưởng đến khả năng nâng cao hiệu suất tổng thể của mạng.

6.1. Phương pháp ước tính RTT và RTO trong giao thức TCP

Giao thức TCP sử dụng RTT (Round Trip Time) để ước tính thời gian mà một gói tin mất để đi và về giữa nguồn và đích. Dựa trên RTT mẫu, TCP tính toán RTT trung bình (srtt), độ lệch RTT (rttvar) và RTO (Retransmission Timeout). RTO là thời gian mà TCP sẽ đợi phản hồi ACK trước khi gửi lại gói tin. Các công thức như của Van Jacobson hay Allman được sử dụng để cập nhật các giá trị này một cách động. Trong mô phỏng NS2, việc tái tạo chính xác các phương pháp ước tính RTT này là thiết yếu để đánh giá hiệu quả của các cơ chế điều khiển tắc nghẽn TCP và hành vi của TCP dưới các điều kiện mạng khác nhau, ảnh hưởng trực tiếp đến việc quản lý vùng đệm và đường liên kết.

6.2. Cơ chế điều khiển tắc nghẽn dựa trên cửa sổ trong TCP

TCP là một giao thức điều khiển tắc nghẽn dựa trên kỹ thuật cửa sổ. Cơ chế này hạn chế tốc độ truyền dữ liệu bằng cách điều chỉnh cửa sổ tắc nghẽn (cwnd). cwnd là lượng dữ liệu mà đối tượng gửi có thể truyền đi liên tục mà không cần đợi gói báo nhận (ACK). Khi mạng thông thoáng, cwnd tăng lên, cho phép gửi nhiều gói hơn. Khi có dấu hiệu tắc nghẽn (ví dụ: mất gói), cwnd sẽ giảm xuống để giảm tải cho mạng. Ví dụ, kích thước cửa sổ tắc nghẽn ban đầu có thể được thiết lập bằng 4, và TCP sẽ dừng đợi ACK sau khi gửi 4 gói tin. Việc mô phỏng chính xác cơ chế này trong NS2 giúp phân tích cách TCP phản ứng với các thay đổi của kênh truyềnbộ đệm gói tin.

6.3. Tối ưu hóa tham số TCP để cải thiện thông lượng mạng

Các tham số của giao thức TCP, như giá trị khởi tạo của cwnd, ngưỡng slow-start (ssthresh), và các hằng số alpha, beta trong công thức ước tính RTT/RTO, có thể được tối ưu hóa để cải thiện thông lượng và giảm độ trễ trong các môi trường mạng cụ thể. Việc điều chỉnh các tham số này thông qua các thí nghiệm mô phỏng NS2 cho phép các nhà nghiên cứu tìm ra cấu hình tốt nhất cho các ứng dụng và kiến trúc mạng khác nhau. Kết quả từ việc quản lý vùng đệm và đường liên kết cũng như điều khiển tắc nghẽn TCP có thể được sử dụng để đề xuất các cải tiến cho các giao thức mạng hiện có, góp phần nâng cao hiệu suất hệ thống tổng thể.

Tóm tắt và mô tả trên trang này được tạo với sự hỗ trợ của AI. Nếu bạn thấy nội dung không chính xác hoặc có vấn đề, vui lòng Báo lỗi nội dung.

19/04/2026
Tài liệu học tập kỹ thuật mô phỏng phần 2

Trích đoạn nội dung tài liệu

QUẢN LÝ VÙNG ĐỆM VÀ ĐƢỜNG LIÊN KẾT Mục tiêu Liên kết (Link) là một đối tƣợng OTcl kết nối giữa hai nút để truyền các gói tin từ nút bắt đầu nguồn nút đích. Nội dung của chƣơng này chủ yếu tập trung vào lớp có tên là SimpleLink là Lớp đƣợc sử dụng rộng rãi nhất trong số các lớp thừa kế từ Lớp Link. Đối tƣợng SimpleLink mô hình hóa thời gian truyềứ gói tin, độ trễ của kênh truyền và bộ đệm gói tin để truyền các gói tin từ một nút này tới một nút khác, ở đây, thời gian truyền gói tin là thời gian cần thiết đề thiết bị truyền gửi đi một gói tin. Nó đƣợc xác định bởi băng thông của kênh truyền và kích cỡ gói tin.

Thời gian trễ của kênh truyền là thời gian cần thiết để mang mỗi bit từ điểm đầu tới điểm cuối trên kênh truyền. Một thiết bị truyền có thể nhận đƣợc các gói tin trong khi nó đang truyền các gói tin khác. Các gói tin đi đến một thiết bị truyền đang bận có thể đƣợc đƣa vào một bộ đệm để truvền đi ở thời điểm sau. Không giống nhƣ trong thực tế, NS2 triển khai việc đệm gói tin trong một kênh truyền chứ không phải trong một nút.

Giới thiệu về đối tƣợng SimpleLink NS2 mô hình hóa một kênh truyền bằng các sử dụng các Lớp đƣợc dẫn xuất từ Lớp Link của OTcl. Trong số các Lớp này, Lớp SimpleLink là lớp đơn giản nhất có thể đƣợc sử dụng để kết nối giữa hai nút.  Các thành phần chính của một Lớp SimpleLink Hình 7.1 đƣa ra một hình ảnh kết hợp giữa các thành phần của Lớp SimpleLink với các đối tƣợng cơ bản và các đối tƣợng lƣu vết trong cây thông dịch nhƣ sau: Hình 7. Kiến trúc của một đối tƣợng SỉmpỉeLink Các đối tƣợng cơ bản head_: Điểm truy cập của đối tƣợng SỉmpleLink queue_: Là một đối tƣợng Queue, nó thực hiện mô hình hóa bộ đệm gói tin của một router thực (xem Mục 7.

link_: Là đối tƣợng DelayLỉnk, thực hiện mô hình hóa thời gian truvền gói tin và thời gian trễ của kênh truyền (xem Mục 7.2) ttl_: Là một đối tƣợng kiểm tra thời gian sống (time to live) của lớp TTLChecker. Khi một gói tin tới, đối tƣợng này thực hiện việc giảm giá trị TTL của gói tin. Sau đó nó kiểm tra nếu giá trị TTL của gói tin vẫn là giá trị dƣơng, gói tin sẽ - 131 - đƣợc chuyển tiếp tới thành phần tiếp theo trên kênh truyền. Ngƣợc lại, nó sẽ hủy gói tin ra khỏi quá trình mô phỏng (xem file "ns/common/ttl.

đropheacL: Là điểm hủy gói tin của kênh truyền. Các gói tin bị hủy sẽ đƣợc chuyển tiếp tới đối tƣợng này. Nó thƣờng đƣợc kết nối với tác tử rỗng của đối tƣợng Simulator để mọi đối tƣợng SỉmpleLink có thể chia sẻ cùng một điểm hủy gói tin. Các đối tƣợng lƣu vết Các đối tƣợng này sẽ đƣợc chèn vào chỉ khi biến thành viên $traceAHFile_ đƣợc định nghĩa.

Các đối tƣợng này bao gồm: enqT_: Lƣu vết các gói tin đi vào hàng đợi queue_ deqT_: Lƣu vết các gói tin đi ra từ hàng đợi queue_ drpT_: Lƣu vết các gói tin bị hủy từ hàng đợi queue_ rcvT_: Lƣu vết các gói tin đi ra khỏi kênh truyền hoặc đƣợc các nút tiếp theo nhận. Các thủ tục instproc để cấu hình đối tƣợng SimpleLink Trong miền OTcl, một đối tƣợng SỉmpleLỉnk đƣợc tạo ra bằng cách sử dụng thủ tục instproc simplex-lỉnkL"} và duplex-lỉnkr---} của lớp Simulator với cú pháp nhƣ sau: Trong đó $ns là đối tƣợng Simulator và $nl, $n2 là các đối tƣợng Node. Thủ tục instproc simplex-Tink{”-} ở trên tạo một đối tƣợng SimpleLink kết nối 1 chiều giữa nút $nl với nút $n2 (Chƣong trình 7. Tốc độ và thời gian trễ của kênh truyền đƣợc đƣa vào tham số <bandwỉdth> (tính theo đon vị bps) và <delay> (tính theo đon vị giây).

Khác với router thực, NS2 tích hợp hàng đợi trong đối tƣợng SimpleLỉnk chứ không phải trong đối tƣợng Node. Kiểu của hàng đợi trong kênh truyền đƣợc chỉ định bởi tham số <queue_type>. - 132 - Chƣơng trình 7.1 đƣa ra chi tiết của thủ tục Simulator-simplex- link{"}. Dòng 6 tạo một đối tƣợng của lớp Queue/qtype.

Dòng 12 khởi tạo một đối tƣợng SimpleLink kết nối giữa nút n1 và n2. Nó thiết lập độ trễ, băng thông và đối tƣợng Queue của kênh truyền tƣơng ứng là bw, delay và q. Đối tƣợng Simulator lƣu đối tƣợng SimpleLink đƣợc tạo ra vào mảng liên kết link_($sid:$did) của nó với sid là ID định danh của nút nguồn và did là ID định danh của nút đích (xem Chƣơng 4). Thủ tục duplex-link "-} tạo ra hai đối tƣợng SimpleLink.

Một đối tƣợng kết nối từ nút $n1 tới nút $n2 và một đối tƣợng kết nối từ nút $n2 tới nút $n1. Bạn đọc có thể xem chi tiết của thủ tục này trong file ~ns/tcl/lib/ns-lib. Khỏi tạo của Lớp SimpleLink Chƣơng trình 7.2 đƣa ra chi tiết của thủ tục init{ —} của lớp SỉmpleLỉnk để khởi tạo và kết nối các đối tƣợng theo Hình 7. Trong chƣơng trình này các dòng 3, 5, 11, 12 và 18 tạo ra các biến thành viên drophead_, head_ queue_ link_ và ttl_ là các đối tƣợng của các lớp OTcl tƣơng ứng là Connector Connector, Queue, DelayLink và TtlChecker.

Chú ý rằng băng thông và độ trễ của biến link_ đƣợc cấu hình trong dòng 13-14 Ngoài việc tạo ra các đối tƣợng trên, thủ tục khởi tạo này còn kết nối các đối tƣợng đƣợc tạo ra nhƣ Hình 7. Đƣợc dẫn xuất từ lớp Connector, mỗi một đối tƣợng - 133 - đƣợc tạo ra sử dụng lệnh target và drop-target để thiết lập đối tƣợng nhận gói và đối tƣợng hủy gói (xem Chƣơng 5). Dòng 9 thiết lập đối tƣợng nhận của head_ là q. Dòng 15 thiết lập đối tƣợng nhận của queue_ là link_.

Dòng 16 thiết lập đối tƣợng nhận của link_ là điểm truy cập của nút kế tiếp. Dòng 19 và 21 chèn biến ttl_ vào giữa lỉnk_ và điểm truy cập của nút kế tiếp. Dòng 17 thiết lập điểm hủy gói tin của queue_ là dropheacL. Cuối cùng, dòng 4 thiết lập đích của drophead_ là tác tử rỗng của đối tƣợng Simulator.

Mô hình truyền gói tin  Cơ chế truyền gói tín NS2 mô hình hóa cơ chế truyền gói tin bằng cách sử dụng lớp C++ LinkDelay (xem Chƣơng trinh 7. Lớp C++ này đƣợc liên kết với lớp DelayLink của OTcl. Lớp DelayLink đƣợc sử dụng để khởi tạo biến thành viên SimpleLink::Link_. Đây là biến dùng để mô hình hóa tiến trinh truyền gói tin.

Một tiến trình truyền gói tin bao gồm thời gian truyền gói tin và thời gian trễ của kênh truyền. Khi một đối tƣợng LinkDelay nhận một gói tin, nó đƣa vào dòng thời gian mô phỏng hai sự kiện: - 134 -  Sự kiện truyền gói tin đi từ đối tượng truyền: Thời gian truyền gói tin đƣợc định nghĩa bằng (kích thƣớc gói tin / băng thông). Đây là thời gian cần thiết để truyền một gói tin qua một kênh truyền. Sau một chu kỳ của thời gian truyền gói tin, gói tin hoàn toàn đi ra khỏi thiết bị truyền và thiết bị truyền đƣợc phép tiếp tục truyền gói tin tiếp theo.

Nhờ vào sự kiện nhận gói tin một đối tƣợng LinkDelay sẽ đợi một chu kỳ thời gian truyền gói tin và báo cho đối tƣợng gửi biết rằng nó đã sẵn sàng để nhận một gói tin tiếp theo.  Sự kiện nhận gói tin về tại đối tượng nhận: Thời gian trễ khi truyền gói tin đƣợc định nghĩa bằng thời gian cần thiết để truyền một bit từ điểm bắt đầu tới điểm kết thúc trên một kênh truyền. Nhƣ vậy, toàn bộ gói tin cần một khoảng thời gian bằng ―thời gian truyền + thời gian trễ‖ để đi tới đích. Do đó, đối tƣợng LinkDelay sẽ lập lịch cho sự kiện nhận gói tin tại nút nhận sau khoảng thời gian trên.

 Lớp LinkDelay trong C++ Chƣơng trình 7.3 đƣa ra khai báo của Lớp C++ LinkDelay. Lớp này có bốn biến chính. Biến bandwidth_ (dòng 15) lƣu băng thông của kênh truyền. Biến delay_ (dòng 16) lƣu thời gian trễ khi truyền.

Dòng 4 và 5 liên kết hai biến này với các biến có cùng tên trong OTcl. Lớp LỉnkDelay lƣu mọi gói tin sẽ đƣợc truyền trong bộ đệm itq_ của nó (dòng 17). Biến itq_ là một con trỏ trỏ tới đối tƣợng PacketQueue (xem Mục 7. Cuối cùng, biến ỉntr_là một đối tƣợng Event giả biểu diễn sự kiện gói tin rời khỏi nút truyền.

Sự kiện này đƣơc lập lịch bằng cách sử dụng biến ỉntr_ mà không cần đến cơ chế thực thi sự kiện (xem Mục 4. Các hàm chính của Lớp LinkDelay là hàm recv(p,h), hàm send(p,h), hàm handle(e) và hàm txttime(p). Hàm txttỉme(p) tính thời gian truyền của gói tin *p (dòng 10-12 trong Chƣơng trình 7. Hàm send(p,h) gửi gói tin *p tới đối tƣợng nhận (dòng 12 trong Chƣơng trinh 7.h) lập lịch cho các sự kiện gói tin rời khỏi nút truyền và gói tin tới nút nhận từ hai đối số đầu vào là gói tin *p và thẻ quản lý *h.

- 135 -  Sự kiện gói tin rời khỏi nút truyền: Vì một gói tin cần ‗thời gian truyền‖ (biến txt trong dòng 3) tại đối tƣợng truyền nên hàm recv(p,h) sẽ lập lịch cho sự kiện gói tin rời khỏi nút truyền tại thời điểm txt giây sau khi đối tƣợng LỉnkDelay nhận đƣợc gói tin. Để thực hiện việc này, dòng 10 gọi hàm scheđule(h,Sántr,txt) của lớp Scỉieđuler với đối số thứ nhất là thẻ quản lý, đối số thứ hai là sự kiện giả và đối số thứ ba là thời gian trễ. Sau khoảng thời gian txt giây, bộ lập lịch thực thi sự kiện này bằng cách gọi hàm handle(e) liên kết với thẻ quản lý *h để báo cho đối tƣợng gửi biết sự kiện một gói tin đã rời đi. Trong hầu hết mọi trƣờng hợp, đối tƣợng gửi đáp ứng lại bằng cách truyền một gói tin tiếp theo nếu có (xem Mục 7.3 về cơ chế gọi ngƣợc).

 Sự kiện gói tin đến: Lớp LinkDelay cũng thực hiện việc truyền gói tin tới đối tượng nhận (*target). Dòng 8 thực hiện việc lập lịch cho một sự kiện lấy từ gói tin đầu vào *p với thời gian trễ txt+đelay_ giây. Trong đó, txt là thời gian truyền và đelay_ là thời gian trễ trên kênh truyền. Ở đây, *target_ được truyền từ hàm schedule( - ) dưới dạng một con trỏ Handler.

Sau khoảng thời gian “txt+delay_” giây, hàm h.handle(p) sẽ gọi hàm recv(p) (xem Chương trình 4.2) và gói tin *p sẽ được truyền tới đối tượng *target_ sau khoảng thời gian txt+delay_ giây. Sự khác biệt chính giữa việc lập lịch cho sự kiện gói tin rời đi từ nguồn và gói tin đến đích là nhƣ sau: Trong khi một nút chỉ có thể giữ một gói tin thì một kênh truyền có thể chứa nhiều hơn một gói tin.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ