Bộ lập lịch sự kiện thời gian thực (RealTime Scheduler)

Một phần của tài liệu Nghiên cứu khả năng tương tác với mạng thực của bộ mô phỏng NS-2 (Trang 75)

Bộ lập lịch thời gian thực cung cấp một lịch trình thời gian thực mềm dẻo, ràng buộc việc xử lý các sự kiện bên trong bộ mô phỏng với thời gian thực. Chỉ cần công suất xử lý của CPU đủ mạnh để xử lý kịp các gói tin đến bộ mô phỏng từ mạng thực, thì có thể giữ cho thời gian ảo của bộ mô phỏng bám sát thời gian thực. Nếu bộ mô phỏng chạy quá chậm không kịp các sự kiện trong mạng thực (thời gian thực) thì một cảnh báo được tạo ra khi độ lệch thời gian vượt quá một giá trị hằng số cho trước (hiện nay là 10ms [5]). Để xấp xỉ thời gian thực, bộ lập lịch cơ bản phải được sửa lại để không phải ngay lập tức gửi sự kiện tiếp theo, mà là gửi sự kiện đó tại thời gian thực thích hợp. Sự thay đổi này là đơn giản vì chỉ cần đưa vào độ trễ so với thời gian thực. Vấn đề phức tạp là xử lý sự kiện vào/ra, trong trường hợp lưu lượng nạp vào lớn có thể làm bộ mô phỏng xử lý chậm hơn thực tế vì tốn thời gian vào việc xử lý vào/ra.

Hình 4.4Vòng lặp chính của lịch trình thời gian thực Real-Time Hình 4.4 minh họa vòng lặp chính của lịch trình sự kiện thời gian thực của NS, được cài đặt chi tiết trong tệp tin scheduler.cc trong thư mục ns- 2.xx\common. Hàm dispatch(e,t) (dòng 19) thiết lập thời gian t cho đồng hồ mô phỏng và thực hiện sự kiện e. Hàm tod() trả về thời gian hiện tại (dòng 9, 23, 29,38). Lịch trình bắt đầu bằng việc thực hiện tất cả các sự kiện “tới hạn” trong hàng đợi (dòng 18 đến 24). Nếu không còn sự kiện nào trong hàng đợi

thì sẽ chờ cho có một sự kiện xảy ra (dòng 28). Trong trường hợp còn sự kiện trong hàng đợi mà chưa tới hạn thì chờ cho đến khi tới hạn hoặc có một sự kiện khác xảy ra (dòng 37). Trong quá trình xử lý sự kiện, các sự kiện phát sinh sẽ được chèn vào hàng đợi.

Bộ lập lịch thời gian thực trên không đảm bảo hoàn toàn chính xác, đơn giản nó chỉ cố gắng đồng bộ hóa thời gian mô phỏng với thời gian thực. Điều này sẽ được phân tích rõ hơn. Thứ nhất, thời gian thực hiện sự kiện mô phỏng có thể cần nhiều thời gian hơn thời gian sự kiện xảy ra ở thế giới thật. Điều này thường xảy ra vì hạn chế của thiết bị phần cứng, phương tiện lưu trữ vật lý của máy tính chạy bộ mô phỏng. Thứ hai, trong một mạng thực, nhiều sự kiện có thể được thực hiện đồng thời tại nhiều nút khác nhau. Điều này không thể thực hiện được trong một bộ mô phỏng như NS. Hơn nữa, nếu nguồn lưu lượng lớn từ mạng thực được nạp vào bộ mô phỏng và nó cần giữ lại để mô phỏng độ trễ đường truyền, thì máy tính chạy bộ mô phỏng cần phải có bộ nhớ RAM rất lớn để có thể tạm thời lưu lại nguồn lưu lượng này. Thí dụ, một đường backbone có dung lượng cỡ 10Gbps, nếu NS muốn giữ các gói tin lại để mô phỏng độ trễ truyền 20ms, thì NS cần sử dụng 25,6MB RAM). Đó là các nhược điểm của bộ mô phỏng khi tương tác với mạng thực. Tuy nhiên, vấn đề này có thể được khắc phục phần nào nếu ta kết hợp được bộ mô phỏng với tính toán phân tán cùng với hệ thống máy tính có hiệu năng cao.

Để sử dụng khả năng emulation của NS, ta phải khai báo lịch trình thời gian thực ở đầu kịch bản mô phỏng như sau:

set ns new Simulator

$ns use-scheduler RealTime

Một phần của tài liệu Nghiên cứu khả năng tương tác với mạng thực của bộ mô phỏng NS-2 (Trang 75)