Ngoài số tuần tự nguồn và đích, các thông tin hữu ích khác cũng được lưu trữ trong phần lưu trữ bảng định tuyến và được gọi là trạng thái mềm kết hợp với phần lưu trữ. Kết hợp với các phần lưu trữ định tuyến ngược là một đồng hồ, gọi là đồng hồ kết thúc yêu cầu định tuyến. Mục đích của đồng hồ này là để làm sạch phần lưu trữ tuyến ngược tại các nút mạng mà không dựa trên tuyến từ nguồn tới đích. Thời gian kết thúc phụ thuộc vào kích cỡ của mạng AdZhoc. Một tham số quan trọng khác kết hợp với phần lưu trữ tuyến là thời gian dừng sử dụng đệm định tuyến hay là thời gian sau khi tuyến được coi là không còn hiệu lực.
qua tới đích định sẵn cũng được duy trì. Một lân cận được coi là hoạt động nếu nó khởi tạo hoặc chuyển tiếp ít nhất một gói tới đích trong khoảng thời gian dừng timeout_active. Thông tin này được duy trì để tất cả các nút nguồn hoạt động có thể được chú ý khi một kết nối trong tuyến tới đích bị gián đoạn. Một phần lưu trữ tuyến được coi là hoạt động nếu nó được sử dụng trong các lân cận hoạt động. Một tuyến từ nguồn tới đích mà các gói đi qua dọc theo các phần lưu trữ tuyến hoạt động được gọi là tuyến hoạt động. Một nút mạng di động duy trì phần lưu trữ bảng định tuyến cho mỗi đích quan tâm. Mỗi phần lưu trữ bảng định tuyến bao gồm các thông tin sau:
Z Địa chỉ IP đích.
Z Số tuần tự đích.
Z Cờ số tuần tự đích có hiệu lực.
Z Trạng thái và các cờ định tuyến khác (có hiệu lực, không có hiệu lức, có
khả năng sửa chữa, đang được sửa chữa)
Z Giao diện mạng
Z Số đếm các bước (số các bước cần để tìm tới đích)
Z Bước tiếp theo
Z Danh sách tiền thân
Z Thời gian tồn tại (thời gian kết thúc hoặc xoá bỏ tuyến)
Quản lý số tuần tự chủ yếu là để ngăn ngừa những vòng lặp định tuyến, thậm chí khi các liên kết gián đoạn và một nút mạng không thể tới để cung cấp thông tin của nó về số tuần tự. Một đích trở nên không thể tới được khi một liên kết gián đoạn hoặc không hoạt động. Khi những điều kiện này xảy ra thì tuyến không có hiệu lực
Mỗi thời gian một lưu trữ định tuyến được sử dụng để truyền dữ liệu từ nguồn tới đích thì timeout cho phần lưu trữ được thiết lập lại với thời gian hiện tại cùng với active_route_timeout.
AODV cũng thực hiện hai hoạt động cơ bản là phát hiện tuyến và duy trì tuyến 3.4.3. Phát hiện tuyến
Tiến trình phát hiện tuyến được khởi tạo khi một nút mạng nguồn cần truyền thông với nút mạng khác mà nó không có thông tin định tuyến trong bảng. Các nút mạng đều duy trì hai bộ đếm riêng biệt: bộ đếm số tuần tự nút mạng và bộ đếm broadcast_id. Nút mạng nguồn khởi tạo bản tin phát hiện tuyến bằng cách quảng bá một gói yêu cầu tuyến (RREQ) tới các nút mạng lân cận. Bản tin RREQ bao gồm các trường:
Báo cáo Đồ án Tốt nghiệp Chương III: Một số giao thức điển hình và khả năng áp dụng…
<source_addr, source_sequence_#, broadcast_id, dest_addr, dest_sequence_#, hop_cnt>
Cặp <source_addr, broadcast_id> nhận dạng duy nhất một RREQ. Broadcast_id tăng lên khi nguồn phát sinh một RREQ mới. Mỗi nút mạng lân cận hoặc đáp ứng lại RREQ bằng việc gửi một gói trả lời tuyến (RREP) trở lại nguồn hoặc tiếp tục quảng bá RREQ tới lân cận của nó sau khi tăng hop_cnt (số bước). Chú ý rằng, một nút mạng có thể nhận nhiều bản sao của cùng một gói quảng bá tuyến từ các nút mạng lân cận. Khi một nút mạng trung gian nhận một RREQ với broadcast_id và địa chỉ nguồn giống như thế, nó sẽ loại bỏ RREQ thừa và không quảng bá lại.
3.4.3.1. Thiết lập tuyến ngược
Có hai số tuần tự trong broadcast_id của một RREQ: số tuần tự nguồn và số tuần tự đích. Số tuần tự nguồn được sử dụng để duy trì thông tin mới nhất về tuyến ngược lại tới nguồn. Số tuần tự đích chỉ rõ một tuyến mới tới đích.
Khi RREQ đi từ nút mạng nguồn tới các đích khác nhau, nó sẽ tự động thiết lập các tuyến ngược lại từ tất cả các nút trở lại nguồn như trên hình 3.11. Để thiết lập một tuyến ngược, một nút mạng ghi địa chỉ của nút lân cận nơi mà nó nhận bản tin đầu tiên của RREQ. Tuyến ngược được duy trì trong ít nhất một thời gian đủ để RREQ đi qua mạng và đưa ra một gói trả lời gửi trở lại nguồn.
3.4.3.2. Thiết lập tuyến tiếp theo
Khi RREQ tới một nút mạng (có thể chính là đích cần đến) mà có một tuyến hiện tại tới đích. Trước tiên, nút mạng nhận sẽ kiểm tra xem RREQ có phải được nhận qua một kết nối hai chiều không. Nếu một nút mạng trung gian có một phần lưu trữ tuyến cho đích mong muốn, nó sẽ xác định tuyến hiện tại bằng cách so sánh số tuần tự đích trong phần lưu trữ của nó với số tuần tự đích trong gói RREQ. Nếu số tuần tự đích trong RREQ lớn hơn thì nút mạng trung gian không được sử dụng tuyến đã được ghi của nó để trả lời RREQ. Thay vào đó, nút mạng trung gian sẽ quảng bá lại RREQ. Nút mạng trung gian có thể chỉ trả lời khi nó có một tuyến có số tuần tự đích lớn hơn hoặc bằng số tuần tự đích trong RREQ. Nếu nút mạng có một tuyến hiện tại tới đích và nếu RREQ không được xử lý trước đó, nó sẽ gửi một gói trả lời (RREP) đơn hướng trở lại nút mạng lân cận mà nó nhận RREQ từ đó. Một RREP bao gồm các thông tin sau:
<source_addr, dest_addr, dest_sequence_#, hop_cnt, lifetime>
Trong thời gian một gói quảng bá tới một nút mạng có thể có một tuyến tới đích, một tuyến ngược được thiết lập trở lại nguồn phát RREQ. Khi RREP trở lại nguồn, mỗi nút mạng dọc theo tuyến sẽ thiết lập một con trỏ tới nút mạng mà RREP đến, cập nhật thông tin timeout của nó cho các phần lưu trữ tuyến tới nguồn, đích và ghi lại số tuần tự đích cuối cùng. Trên hình 3.11, RREP từ đích D tới nguồn S. Các nút mạng không ở
trên tuyến được xác định xác định bởi RREP sẽ timeout sau Active_Router_Timeout (3000ms) và sẽ xóa các con trỏ ngược.
Hình 3.11: Sự hình thành tuyến ngược và tiếp theo
Nút mạng nhận một RREP truyền RREP đầu tiên cho nút mạng nguồn đã định về phía nguồn. Nếu nó nhận thêm các RREP thì nó cập nhật thông tin định tuyến của mình và truyền RREP chỉ khi RREP chứa hoặc một số tuần tự đích lớn hơn RREP trước hoặc cùng một số tuần tự đích với số bước đếm được nhỏ hơn. Khi đó nút mạng sẽ loại bỏ tất cả các RREP khác mà nó nhận được. Việc này làm giảm bớt số gói RREP truyền về phía nguồn trong khi vẫn đảm bảo thông tin định tuyến cập nhật và nhanh nhất. Nút mạng nguồn có thể bắt đầu truyền dữ liệu ngay khi nhận gói RREP đầu tiên và có thể cập nhật thông tin định tuyến sau đó nếu nó nhận được một tuyến tốt hơn.
3.4.5. Duy trì tuyến
Sự di chuyển của các nút mạng không nằm trên một tuyến hoạt động nào mà không ảnh hưởng tới việc định tuyến tới đích trên tuyến này. Nếu nút mạng nguồn di chuyển trong suốt một phiên hoạt động, nó có thể khởi tạo lại thủ tục phát hiện tuyến để thiết lập một tuyến mới tới đích. Khi hoặc là nút mạng đích hoặc là các nút mạng trung gian di chuyển, thì một gói RREP đặc biệt được gửi lại nút mạng nguồn. Bản tin hello định kỳ có thể được sử dụng để đảm bảo các kết nối đối xứng, phát hiện tuyến bị lỗi. Với độ trễ ít nhất, lỗi có thể được phát hiện bằng cách sử dụng các bản tin xác nhận lớp kết nối LLACKS (LinkZLayer Acknowledgments). Một lỗi kết nối cũng được chỉ thị nếu cố gắng chuyển một gói tới bước lỗi tiếp theo này.
Mỗi khi bước tiếp theo không thể tới được thì nút mạng phía trên đoạn hỏng sẽ truyền một gói RREP với một số tuần tự lớn hơn các số tuần tự đã biết trước đó và số bước là ∞ tới các nút mạng lân cận hoạt động. Các nút mạng tiếp tục chuyển tiếp thông báo đó tới các nút lân cận hoạt động và cứ tiếp tục như thế. Tiến trình tiếp tục tới khi tất cả nút mạng nguồn hoạt động được thông báo.
Báo cáo Đồ án Tốt nghiệp Chương III: Một số giao thức điển hình và khả năng áp dụng…
Dựa trên việc nhận thông báo gián đoạn kết nối, các nút mạng nguồn có thể khởi tạo lại tiến trình phát hiện tuyến nếu chúng vẫn cần một tuyến tới đích. Để xác định tuyến nào vẫn cần thiết, nút mạng phải kiểm tra xem tuyến đã sử dụng mới đây cũng như xem xét các khối điều khiển giao thức mức trên để biết kết nối nào còn lại sử dụng đích được chỉ thị. Nếu nút mạng nguồn (hoặc là các nút mạng dọc theo tuyến trước) quyết định sẽ xây dựng lại tuyến tới đích, nó sẽ gửi đi một bản tin RREQ với số tuần tự đích lớn hơn các số tuần tự đã biết trước để đảm bảo rằng việc xây dựng tuyến mới có thể được và không có nút mạng nào trả lời nếu chúng vẫn cho rằng tuyến trước là có hiệu quả.
3.4.6. Quản lý kết nối nội bộ
Các nút mạng nhận biết các nút mạng lân cận của chúng theo một trong hai cách. Khi một nút mạng nhận một gói quảng bá từ một lân cận của nó, nó sẽ cập nhật thông tin kết nối nội bộ để đảm bảo rằng có các nút mạng lân cận này.
Trong trường hợp này, nút mạng không gửi gói tới tất cả các lân cận theo dòng hoạt động trong khoảng thời gian hello_interval mà nó quảng bá tới các nút mạng lân cận một bản tin hello chứa số tuần tự và nhận dạng. Số tuần tự của nút mạng không bị thay đổi trong việc truyền dẫn bản tin hello. Bản tin hello ngăn chặn quảng bá lại ra ngoài vùng lân cận của nút mạng bởi vì nó chứa đựng giá trị thời gian tồn tại (TTL) là 1. Nút mạng lân cận nhận gói này cập nhật thông tin kết nối nội bộ của chúng tới nút mạng. Việc nhận một gói quảng bá hoặc một bản tin hello từ một lân cận mới hoặc là lỗi nhận bản tin allow_hello_loss tiếp theo bản tin hello từ nút mạng trước nằm trong vùng lân cận là một chỉ thị kết nối nội bộ đã thay đổi. Lỗi trong việc nhận bản tin hello từ các lân cận không hoạt động không gây ra bất kỳ một hoạt động giao thức nào. Nếu bản tin hello không được nhận từ bước tiếp theo dọc theo tuyến hoạt động thì sử dụng nút mạng lân cận hoạt động với bước tiếp này để gửi thông báo lỗi kết nối.
Việc quản lý kết nối nội bộ với bản tin hello cũng có thể được sử dụng để đảm bảo rằng chỉ nút mạng với kết nối hai chiều được coi là lân cận. Mỗi nút mạng kiểm tra để chắc chắn rằng nó chỉ sử dụng các tuyến tới lân cận nhận biết được bản tin hello. Để lưu giữ độ rộng băng nội bộ nên việc kiểm tra sẽ được thực hiện chỉ khi đã định rõ cấu hình các nút mạng.
3.4.7. Ví dụ về hoạt động của AODV
Xem chi tiết ví dụ về hoạt động của AODV ở phần phụ lục. 3.4.8. Kết luận
AODV tránh được những vấn đề xảy ra với các phương pháp trước (như DSDV) với những tính năng sau [3]:
Z Việc quảng bá là tối thiểu.
Z Giảm những yêu cầu ghi nhớ và không cần nhân đôi.
Z Phản hồi nhanh với việc gián đoạn kết nối trong các tuyến hoạt động.
Z Những tuyến LoopZfree duy trì bằng việc sử dụng các số tuần tự đích.
Giao thức định tuyến AODV được thiết kế cho các mạng Ad hoc mobile với mật độ hàng chục đến hàng trăm nút di động. AODV có thể điều khiển chậm, vừa phải và tốc độ di động tương đối cao, sự đa dạng của các mức lưu lượng dữ liệu. AODV được thiết kế để sử dụng trong các mạng mà có các nút mạng có thể tin tưởng lẫn nhau nhờ sử dụng khoá preconfigured hoặc bởi nó được biết rằng không có những nút đột nhập gây hại. AODV được thiết kế để làm giảm việc phổ biến lưu lượng điều khiển và bỏ qua overhead trên lưu lượng dữ liệu để để cải thiện sự linh hoạt và hiệu năng.
Mặc dù còn những hạn chế như: độ trễ có thể gây ra bởi quá trình xử lý phát hiện tuyến, kết nối hai chiều cần để phát hiện kết nối một chiều, những tuyến không hoạt động nhanh chóng bị loại ra khỏi hệ thống… nhưng AODV vẫn là sự lựa chọn thích hợp cho việc thực thi mạng Ad hoc. AODV hữu ích trong các ứng dụng cho những dịch vụ trong tình trạng khẩn cấp, hội thảo, truyền thông ở ngoài mặt trận và mạng dựa trên sự tương đồng.
3.5. Tóm lại
Như đã trình bày ở các mục trên (3.1Z 3.4), bốn thuật toán định tuyến được đưa ra để hỗ trợ hoạt động của mạng Ad hoc. Tuy nhiên, mỗi thuật toán lại hoạt động tốt hơn trong từng điều kiện môi trường mạng khác nhau. Do đó, để giảm thiểu tỷ lệ mất gói và đảm bảo hoạt động ổn định của mạng Ad hoc cần có những thông tin chính xác về môi trường và chất lượng kết nối để có thể thực hiện định tuyến thích hợp.
Trong đồ án này em xin được đưa ra một mô hình chọn lựa một cách mềm dẻo các thuật toán định tuyến đã được hỗ trợ trong mạng Ad hoc nhằm giảm tỷ lệ mất gói. Do đó, chương IV sẽ thực hiện xây dựng mô hình lựa chọn thuật toán định tuyến để giảm thiểu tỷ lệ mất gói. Trên cơ sở mô hình này, một khả năng ứng dụng được đưa ra là áp dụng cho bài toán giao thông với các nút mạng cố định và nút mạng Ad hoc trên tuyến đường giao thông. Chương V sẽ thực hiện mô phỏng cho các thuật toán, mô phỏng lựa chọn thuật toán.
Báo cáo Đồ án Tốt nghiệp Chương IV: Xây dựng mô hình lựa chọn thuật toán định tuyến…
CHƯƠNG IV: XÂY DỰNG MÔ HÌNH LỰA CHỌN THUẬT TOÁN ĐỊNH TUYẾN ĐỂ GIẢM TỶ LỆ MẤT GÓI
4.1. Bài toán thực tế
Cùng với sự phát triển của kinh tế, nhu cầu về giao thông vận tải ngày càng cao. Ngoài phục vụ cho các ngành khác trong nền kinh tế thì đời sống xã hội cao kéo theo nhu cầu đi lại của người dân trong vùng, giữa vùng này với vùng khác càng cao. Một trong nhu cầu ăn theo đó là thông tin liên lạc. Dù ở nhà, ở cơ quan hay trên đường người sử dụng luôn mong muốn được đảm bảo sự truyền thông tốt nhất.
Bên cạnh đó, trên một con đường người cảnh sát giao thông mong muốn có được những thông tin về tình hình của đường (tai nạn giao thông, mức độ tắc nghẽn…); người đi đường mong muốn có những thông tin về mức độ tắc nghẽn, độ an toàn của đường (lở đất, sụp lún đường, đường đang sửa chữa… ) của tuyến đường để có thể tìm một con đường khác. Người dùng cũng mong muốn không mất quá nhiều thời gian cho việc phải dừng lại ở một địa điểm nào đấy để truy cập vào mạng để đọc và xem những thông tin hữu ích về khu vực mình đang đi, mà có thể vừa đi trên ô tô của mình vừa có thể thực hiện những công việc trên. Để thỏa mãn những yêu cầu trên, cần phải xây dựng một hệ thống truyền thông tin liên lạc mới khác với những hệ thống đã có từ trước tới nay. Tuy nhiên, điều khó khăn nhất là sự duy chuyển và tốc độ di chuyển không thể dự báo trước được của người dùng (với các máy tính hoặc máy di động họ mang theo đã trở thành các nút mạng di động). Chỉ có công nghệ của mạng Ad hoc mới hoàn toàn có thể giúp chúng ta thực hiện được ý tưởng trên.
Căn cứ vào nhu cầu nêu trên, ý tưởng của đồ án là xây dựng một mô hình mạng Ad hoc dọc theo một tuyến đường giao thông. Các máy di động (Laptop, PDA… ) của