Professional Documents
Culture Documents
Để có thể hoàn thành được đồ án tốt nghiệp này, em đã được học hỏi những kiến
thức quí báu từ các thầy, cô giáo của Trường Đại học Bách Khoa Hà Nội trong suốt
năm năm đại học. Em vô cùng biết ơn sự dạy dỗ, chỉ bảo tận tình của các thầy, các cô
trong thời gian học tập này.
Em xin bày tỏ lòng biết ơn của mình tới thầy Nguyễn Trung Dũng – Bộ môn Hệ
thống viễn thông – Khoa Điện tử viễn thông – Trường Đại học Bách Khoa Hà Nội,
người đã định hướng cho những nghiên cứu của em, người trực tiếp hướng dẫn và chỉ
bảo em hoàn thành đồ án này.
Cuối cùng, em xin cảm ơn gia đình, bạn bè đã luôn tạo điều kiện thuận lợi, động
viên và giúp đỡ em trong suốt thời gian học tập và nghiên cứu đồ án. Ngoài ra, kiến
thức thu được từ các thầy cô cũng là nguồn cổ vũ tinh thần lớn nhất giúp em có thể tập
trung và hoàn thành tốt đề tài tốt nghiệp này.
Sinh viên
Vũ Huy Cường
TÓM TẮT ĐỒ ÁN
Mạng Ad hoc là một công nghệ hữu dụng trong mạng không dây. Công nghệ này
cho phép các nút mạng giao tiếp trực tiếp với nhau bằng cách sử dụng máy thu phát vô
tuyến mà không cần có cơ sở hạ tầng cố định. Đây là một đặc trưng riêng của mạng Ad
hoc so với các mạng truyền thống trước đây như mạng cellular hay mạng LAN không
dây khi ở đó các nút giao tiếp với nhau thông qua trạm gốc (Base Station). Tuy nhiên,
mang Ad hoc phải đối mặt với một số thách thức như giới hạn phạm vi truyền dẫn, vấn
đề trạm ẩn, mất gói do lỗi đường truyền, sự chuyển động của các nút mạng làm thay
đổi tuyến đường, sự rằng buộc về băng thông và năng lượng. Giao thức định tuyến
được sử dụng để Khám phá tuyến giữa các nút giúp cho việc giao tiếp trong mạng dễ
dàng hơn. Mục đích chính của một giao thức định tuyến trong mạng Ad hoc là thiết lập
tuyến đường chính xác và hiệu quả giữa các cặp nút. Đồ án đưa ra tổng quan về bốn
giao thức định tuyến: DYMO, DSR, AODV, OLSR, sử dụng công cụ mô phỏng
OMNET++ và đánh giá trễ đầu cuối của các giao thức này dựa trên các thông số đặt ra.
Đồ án gồm 5 chương
• Chương 1: Tổng quan về mạng Ad hoc
• Chương 3: Thông số đánh giá và mô hình chuyển động trong mô phỏng mạng
Ad hoc
• Chương 4: Mô phỏng và đánh giá thông lượng của OLSR, AODV, DSR và
DYMO bằng OMNET++
ABSTRACT
Ad hoc networks are the ultimate frontier in wireless communication. This
technology allows network nodes to communicate directly to each other using wireless
transceivers without the need for a fixed infrastructure. This is a very distinguishing
feature of ad hoc networks with respect to more traditional wireless networks, such as
cellular networks and wireless LAN, in which nodes communicate with each other
through BS. Some challenges that ad hoc networking faces are limited wireless
transmission range, hidden terminal problems, packet losses due to transmission errors,
mobility- induced route changes, bandwidth and battery constraints. In order to
facilitate communication within the network, a routing protocol is used to discover
routes between nodes. The primary goal of such an Ad hoc network routing protocol is
correct and efficient route establishment between a pair of nodes so that message may
be delivered in a timely manner. This thesis provides an overview of four different
routing protocols: DYMO, DSR, AODV, OLSR, uses OMNET++ simulator and
evaluates throughput of these protocols based on a given set of parameters.
The thesis has a total of 5 chapters:
• Chapter 1: Overview of Ad hoc network
• Chapter 5: Summary
MỤC LỤC
Hình 4.7 Quá trình gửi ACK báo nhận của DYMO................................................65
Hình 4.9 Thông lượng đầu cuối - đầu cuối.............................................................67
Qua biểu đồ thông lượng < hình 4.9 > ta nhận thấy thông lượng tỷ lệ thuận với gói
nhận.............................................................................................................................67
Thông lượng của DYMO là cao nhất do DYMO là giao thức định tuyến hoạt động
theo yêu cầu hoặc theo bảng điều khiển,là sự tối ưu của DSR và AODV.Khi các
nút mạng chuyển động liên tục,thông lượng của DYMO vẫn rất cao ...................67
Thông lượng của OLSR cao hơn AODV và DSR vì OLSR có thể đáp ứng khi topo
mạng thay đổi, nó cho phép khám phá tuyến nhanh chóng tới các hàng xóm và
các MPR của chúng để thiết lập kết nối với các nút khác.......................................67
Khi mức độ di chuyển tăng (giảm pausetime) thì thông lượng của 3 giao thức
DSR, AODV, OLSR giảm rõ rệt với mức giảm tương đương nhau.Trong khi đó
thì DYMO thể hiện được sự ổn định của mình khi có thông lượng khá cao.OLSR
có thông lượng cao hơn AODV và DSR....................................................................67
Chương này trình bày các khái niệm tổng quan nhất về mạng Ad hoc, các ứng
dụng trong nhiều lĩnh vực cuộc sống của mạng Ad hoc. Đồng thời, đề cập đến các
thách thức mà mạng Ad hoc đang phải đối mặt.
1.1 MỞ ĐẦU
Mạng máy tính từ lâu đã trở thành một phần không thể thiếu đối với nhiều lĩnh
vực đời sống xã hội, từ các hệ thống mạng cục bộ đến hệ thống mạng toàn cầu như
Internet. Mạng máy tính đưa mọi người trên thế giới đến gần nhau hơn, mỗi người
được tiếp cận với một nguồn thông tin, tri thức phong phú.
Xã hội phát triển, con người vận động không ngừng, một người kết nối vào mạng
bằng cáp vật lý thì việc di chuyển của họ bị hạn chế, nhu cầu đặt ra là vừa kết nối vừa
có thể di chuyển và có thể kết nối bất cứ đâu một cách đơn giản. Chính nhu cầu này đã
kích thích ngành công nghiệp mạng không dây tiềm năng phát triển mạnh mẽ.
Mạng Ad hoc là một kiểu mạng không dây rất linh hoạt. Đó là tập hợp của hai
hay nhiều thiết bị được trang bị khả năng nối mạng và truyền thông không dây. Các
thiết bị như vậy có thể giao tiếp với tất cả thiết bị mạng khác ngay lập tức trong dải vô
tuyến (vùng phủ sóng, phạm vi mà thiết bị mạng đó nhận biết được) hay một thiết bị vô
tuyến khác nằm ngoài dải vô tuyến của chúng với điều kiện có các node trung gian để
chuyển tiếp thông tin từ node nguồn đến node đích. Thiết bị hỗ trợ mạng Ad hoc đa
dạng và sử dụng khá phổ biến như laptop, điện thoại di động Internet. Vì có nhiều ưu
thế vượt trội và những thách thức cần giải quyết, ngày nay mạng Ad hoc đã và đang
được nghiên cứu triển khai thành công ở một số nước mà phổ biến là Mỹ. Mạng Ad
hoc đặc biệt hữu ích trong các ứng dụng như khắc phục thảm họa thiên nhiên, quốc
phòng, y tế, hội nghị nên có xu hướng ứng dụng rộng rãi trên thế giới.
không dự đoán được. Mỗi node mạng có một giao diện vô tuyến giao tiếp với các node
mạng khác thông qua sóng vô tuyến hoặc hồng ngoại. Các mạng này không dùng bất
cứ sự hỗ trợ cơ sở hạ tầng mạng cố định hay chịu sự quản lí tập trung nào. Đây là một
đặc điểm riêng biệt của mạng Ad hoc so với các mạng không dây truyền thống – mạng
chia ô, mạng WLAN, trong đó các node (các thuê bao di động ) liên lạc với nhau thông
qua trạm vô tuyến cơ sở.
Trong Ad hoc không tồn tại khái niệm quản lý tập trung, nó đảm bảo mạng sẽ
không bị sập vì trường hợp nút mạng di chuyển ra ngoài khoảng truyền dẫn của các nút
mạng khác. Nút mạng có thể ra vào bất cứ lúc nào. Do khoảng truyền dẫn của nút
mạng là hạn chế nên chúng trao đổi thông tin bằng phương pháp truyền gói tin qua
nhiều bước (Multihops). Để làm được điều này, thì tất cả các nút mạng phải có khả
năng chuyển tiếp gói tin đến nút mạng khác, do vậy tất cả các nút mạng trong Ad hoc
có thể hoạt động như máy trạm và router. Nên nút mạng có thể bao gồm một router và
một máy trạm liên kết với nhau. Một router thực hiện các giao thức định tuyến, máy
trạm di động có địa chỉ IP.
Ad hoc cũng có khả năng thực hiện thay đổi về cấu hình mạng và khắc phục sự cố
của nút mạng thông qua thủ tục cấu hình lại mạng. Ví dụ: Nếu nút mạng rời khỏi mạng
sẽ gây ra sự cố liên kết, nút mạng bị ảnh hưởng có thể yêu cầu đường định tuyến mới
và vấn đề sẽ được giải quyết. Điều này sẽ gây ra trễ trên mạng, tuy nhiên với người sử
dụng Ad hoc vẫn hoạt động bình thường.
Ad hoc có nhiều ưu điểm của mạng truyền thông vô tuyến thông thường, liên kết
giữa các nút mạng được hình thành ngay khi chúng nằm trong khoảng truyền dẫn của
nhau
Ad hoc thường được mô tả có cấu trúc mạng thay đổi do sự thay đổi vị trí của các
nút mạng. Các giao thức định tuyến có cơ chế tự phát hiện các thay đổi về định tuyến
thông qua các thuật toán định tuyến thông thường như vector khoảng cách và trạng thái
các liên kết. Một đăc điểm khác của các nút mạng trong mạng Ad hoc: bị giới hạn về
khả năng của CPU, bộ nhớ, dung lượng pin và băng thông. Khi năng lượng sử dụng bị
giới hạn kéo theo giới hạn về khả năng truyền dẫn. Thiết bị truy nhập, môi trường vô
tuyến cũng có các đặc điểm đặc biệt mà người thiết kế cần lưu tâm khi đưa ra các giao
thức định tuyến cho Ad hoc. Ví dụ: các liên kết một chiều, nó xuất hiện trong trường
hợp 2 nút mạng có công suất phát khác nhau nên có khoảng truyền dẫn khác nhau, chỉ
cho phép một nút mạng nghe nút mạng kia. Liên kết một chiều chỉ có trong Ad hoc,
không tồn tại trong mạng tế bào. Sử dụng phương pháp định tuyến nhiều bước thì các
nút mạng có thể tiết kiệm được năng lượng phát ra.
học… Khi máy tính di động giao tiếp thông qua giao diện mạng LAN vô tuyến, thì
nhóm các máy tính đó hình thành mạng Ad hoc, khi đó máy tính có thể truy nhập
Internet, tài nguyên trên mạng như máy in, máy scan...
Hình 1.2 Ứng dụng cho các dịch vụ khẩn cấp khi có thiên tai
mạng có sẵn cho các đại biểu tham dự tuy nhiên nó có độ trễ lớn, ví dụ giải pháp
Mobile IP .Và Ad hoc là giải pháp chiếm ưu thế.
Ở thời đại thông tin thì 1 người cần mang theo nhiều công cụ hỗ trợ cho công việc
(điện thoại,Palm...) khi chúng được liên kết với nhau hình thành mạng cá nhân PAN thì
rõ ràng mang lại nhiều tiện ích hơn cho người sử dụng. PAN là mạng di động do con
người không thể ngồi yên một chỗ, tuy nhiên khi kết nối với mạng PAN khác cần trợ
giúp của Ad hoc.
thông tin với nhau giống như một nút trong mạng Ad hoc. Thông tin trao đổi trong
mạng VANET bao gồm thông tin về lưu lượng xe cộ, tình trạng kẹt xe, tai nạn giao
thông, nguy hiểm cần tránh và cả những dịch vụ thông thường như dịch vụ đa phương
tiện, Internet....
Trong lĩnh vực y tế, các bộ cảm biến cho phép giám sát liên tục thông tin tiêu
chuẩn về sự sống. Trong công nghệ thực phẩm, kỹ thuật nhịp cảm biến được áp dụng
để giám sát chất lượng có thể giúp ngăn ngừa các sản phẩm không đạt yêu cầu nên tăng
mức thỏa mãn cho khách hàng. Trong nông nghiệp, các bộ cảm biến có thể giúp xác
định chất lượng đất trồng và độ ẩm, chúng cũng có thể phát hiện các hợp chất khác.
Ngoài ra, các bộ cảm biến cũng được sử dụng rộng rãi trong thông tin thời tiết và môi
trường.
Trong mạng Ad hoc, do cùng một phương tiện truyền thông được chia sẻ bởi
nhiều bên tham gia nên thủ tục truy nhập đến kênh chung phải được thực hiện theo
kiểu phân bố nhờ sự hỗ trợ của giao thức MAC. Giao thức MAC phải tính đến truy
nhập kênh trong khi đồng thời phải tránh được sự xung đột với các nút lân cận. Do vậy,
khi tính toán thiết kế các giao thức MAC cho mạng Ad hoc phải tính đến khả năng di
chuyển, vấn đề đầu cuối ẩn và các vấn đề liên quan khác.
1.3.4 Định tuyến và chuyển tiếp gói tin trong MANET
Đặc tính động của mạng Ad hoc gây ra sự thay đổi thường xuyên và khó đoán
trước của topo mạng, làm tăng độ khó và độ phức tạp để định tuyến giữa các nút di
động. Nhiều giao thức và thuật toán định tuyến đã được đề xuất cho mạng Ad hoc, tuy
nhiên mỗi giao thức lại có một hạn chế riêng. Do vậy, nghiên cứu về các giao thức định
tuyến trong Ad hoc là một vấn đề rất quan trọng.
TCP dựa vào việc đo đạc thời gian toàn trình-RTT (Round Trip Time) và mức tổn
thất gói để kết luận là có nghẽn mạch xảy ra trong mạng hay không. TCP không thể
phân biệt được sự có mặt của tính di động và sự nghẽn mạng. Các nút chuyển động
trong một kết nối có thể gây tổn thất gói và làm cho RTT dài hơn. Do vậy, cần có một
số cải tiến để bảo đảm rằng giao thức truyền dẫn thực hiện tốt mà không ảnh hưởng
đến thông lượng truyền thông cuối-cuối.
Các giao thức MAC QoS giải quyết vấn đề về xung đột phương tiện, hỗ trợ truyền
thông unicast tin cậy, và cung cấp việc dự trữ tài nguyên cho các lưu lượng thời gian
thực trong môi trường không dây phân tán. Rất nhiều các giao thức MAC và các cải
tiến đã được đề xuất để cung cấp việc đảm bảo QoS cho lưu lượng thời gian thực trong
môi trường không dây phân tán bao gồm giao thức GAMA/PR và cơ chế xung đột BB.
TỔNG KẾT
Chương này đã trình bày những lý thuyết tổng quan mạng Ad hoc. Trong mạng
Ad hoc, topo mạng thường xuyên thay đổi. Do vậy, các giao thức định tuyến trong
mạng Ad hoc cần giải quyết sự di chuyển của nút, ràng buộc năng lượng,băng thông
Hiện nay, các giao thức định tuyến đưa ra với Ad hoc đều dựa trên một giao thức
định tuyến cổ điển làm thuật toán cơ bản; do đó, việc tìm hiểu nghiên cứu các hoạt
động cơ bản của các giao thức này là hết sức cần thiết.
Giao thức cổ điển như: định tuyến theo vector khoảng cách, định tuyến theo trạng
thái liên kết đã được sử dụng từ rất lâu và đã trở nên rất quen thuộc. Tuy nhiên, các
giao thức này chỉ thích hợp cho cấu trúc mạng tĩnh, hoạt động hiệu quả ở mạng Ad hoc
có tốc độ di chuyển thấp, cấu trúc mạng ít thay đổi. Ngoài ra, giao thức này hoạt động
phụ thuộc vào bản tin điều khiển định tuyến, nên với số lượng nút mạng tăng, yêu cầu
trao đổi giữa các nút mạng tăng lên, thông tin cập nhật định tuyến lớn, chúng sẽ tiêu
tốn băng thông, năng lượng và CPU. Bởi vì hai loại giao thức định tuyến trên duy trì
định tuyến đến tất cả các nút mạng, nó không quan tâm nút mạng có tham giao truyền
thông tin trong mạng tại mọi thời điểm hay không. Hơn nữa, giao thức định tuyến cổ
điển rằng buộc liên kết phải là hai chiều, nên cần có những cải thiện nhất định cho
thông tin vô tuyến nói chung và mạng Ad hoc nói riêng.
Phương pháp này định tuyến dựa trên vector khoảng cách, có cải tiến hơn so với
phương pháp định tuyến dựa trên trạng thái liên kết: mỗi nút mạng chỉ giám sát giá của
liên kết xuất phát từ nó, và không quảng bá thông tin đến tất cả nút mạng; nó gửi quảng
bá đều đặn đến nút liền cạnh thông tin về khoảng cách ngắn nhất tới nút khác trong
mạng. Nút mạng khác khi nhận được thông tin này sẽ tính toán lại bảng định tuyến
thông qua thuật toán tìm đường đi ngắn nhất.
Giao thức này hoạt động hiệu quả hơn, đơn giản hơn và yêu cầu ít bộ nhớ lưu trữ
hơn. Song, nó có thể sinh ra đường định tuyến khép kín có thời gian tồn tại thay đổi dài
ngắn khác nhau, vì bảng định tuyến có thể xây dựng từ thông tin đã tồn tại lâu quá trên
mạng (không được cập nhật).
Do các nút trong mạng Ad Hoc luôn di động và có nhiều đặc tính khác biệt nên
không thể áp dụng các giao thức định tuyến thông thường. Các mạng Ad Hoc thường
được đặc trưng bởi một topo động do các nút di chuyển làm thay đổi vị trí vật lý của
chúng. Đối với mạng Ad Hoc, giao thức định tuyến động tỏ ra hiệu quả và phù hợp
hơn các phương pháp định tuyến dựa trên vectơ khoảng cách và trạng thái liên kết.
Thách thức trong việc thiết kế các giao thức định tuyến là khả năng cập nhật được mức
di động của nút mạng. Chích mức di động này là nguyên nhân làm thay đổi toàn bộ
cấu trúc topo của mạng. Một nút di động thường bị giới hạn bởi khả năng xử lý của
CPU, dung lượng lưu trữ, công suất nguồn và dải thông.
Môi trường truy cập, môi trường vô tuyến cũng có những thuộc tính đặc biệt cần
phải chú ý khi thiết kế các giao thức cho mạng Ad Hoc. Ví dụ các đường truyền vô
hướng. Những đường truyền này xuất hiện khi hai nút có cường độ khác nhau và cho
phép chỉ một nút nghe được nút kia. Nhưng chúng cũng có thể xuất hiện do nhiễu từ
môi trường xung quanh. Đa chặng trong môi trường vô tuyến có thể gây ra tăng ích
công suất truyền và tăng ích công suất do mối quan hệ căn bậc hai giữa vùng phủ sóng
và công suất phát ra. Bằng cách sử dụng đa chặng, các nút có thể truyền các gói tin đi
sử dụng công suất ra thấp.
Hình 2.1 Mô tả các trục cơ bản có thể sử dụng để đặc tả môi trường mạng Ad
Hoc. Trục đầu tiên là số các nút trong mạng. Trục thứ hai là tốc độ mà tại đó topo
mạng thay đổi. Trục thứ ba là tải lưu lượng trong mạng. Khi môi trường di chuyển từ
gốc của 3 trục, vấn đề định tuyến trở nên khó khăn hơn. Tăng số nút, tăng tốc độ thay
đổi topo (nghĩa là tăng tính di động của nút), hoặc tăng tải lưu lượng mong muốn trên
mạng là thách thức đói với các giao thức trong mạng Ad Hoc.
Yêu cầu đối với một giao thức định tuyến cho mạng Ad hoc là gì? Sau đây là một
số yêu cầu quan trọng:
• Hoạt động phân tán: Giao thức định tuyến trong mạng Ad Hoc phải là giao thức
phân tán yêu cầu độ tin cậy cao. Do các nút là di động nên giao thức định tuyến
tập trung là không phù hợp. Mỗi nút mạng phải đủ thông minh để tạo các quyết
định định tuyến sử dụng các nút lân cận.
• Không lặp vòng: Để nâng cao chất lượng hoạt động, giao thức định tuyến cần
đảm bảo đường định được cung cấp không bị lặp vòng, điều này sẽ làm giảm
lãng phí băng thông và công suất tiêu hao của CPU.
• Sử dụng các siêu nút: Tất cả các giao thức hiện có đều giả định rằng các nút di
động là có cùng các đặc tính dựa trên bản chất của mạng tự tổ chức là tập hợp
của các nút ngang hàng. Mặc dù điều này có thể đúng trong một số trường hợp,
tuy nhiên, có trường hợp mà ở đó mạng có các nút có băng thông cao, nguồn
nuôi ổn định, liên kết không dây tốc độ cao hơn so với các nút khác. Các nút
như vậy được gọi là các siêu nút. Các mạng tự tổ chức trong trường hợp này
thường có cấu trúc 2 mức: vùng backbone và vùng phụ. Vùng backbone bao
gồm các siêu nút. Thêm vào đó các siêu nút thường được giả định là có độ di
chuyển thấp hơn các nút thường để duy trì sự ổn định của backbone. Các nút
thường không cần có quyết định định tuyến.
• Hoạt động dựa trên yêu cầu: Tối thiểu hóa phần thông tin điều khiển trong
mạng, giao thức định tuyến thuộc nhóm định tuyến theo yêu cầu có thể đáp ứng
được điều này. Nó chỉ tìm đường khi cần thiết và không quảng bá thông tin điều
khiển liên tục.
• Tính tiên phong (proactive): Trong một số trường hợp, trễ lớn do hoạt động dựa
trên yêu cầu là không chấp nhận được. Do đó phải sử dụng đặc tính tiên phong
nếu tài nguyên của mạng (về mặt giải thông) nằm trong khoảng cho phép.
• Hỗ trợ các liên kết một chiều: Môi trường vô tuyến có thể là nguyên nhân hình
thành các liên kết theo một hướng. Sử dụng kiểu liên kết này và kiểu liên kết hai
chiều sẽ nâng cao hiệu năng của giao thức định tuyến.
• Bảo mật: Môi trường vô tuyến rất dễ bị tấn công, khai thác thông tin, do đó mã
hóa và chứng thực là cách bảo mật thông thường nhất được áp dụng hiện
nay.Vấn đề là việc phân bổ các khóa và các nút trong mạng Ad hoc.
• Bảo toàn năng lượng: Nút mạng trong mạng Ad hoc có thể là máy tính xách tay
hay loại client nhỏ gọn khác như PDA thường có giới hạn về thời gian sử dụng
của pin, nên cần có chế độ chờ (standby mode) để tiết kiệm năng lượng. Do đó,
giao thức định tuyến sử dụng cần hỗ trợ chế độ chờ của nút mạng.
• Nhiều đường định tuyến: Nhằm giảm số lần tác động do sự thay đổi về cấu trúc
mạng và khi nhiều đường định tuyến bị nghẽn. Nếu như một đường định tuyến
không sử dụng được nữa thì một đường định tuyến khác có thể thay thế. Như
vậy, giao thức không cần khởi tạo lại thủ tục tìm đường.
• Hỗ trợ QoS: Có nhiều loại QoS cần được sự hỗ trợ của các giao thức định tuyến,
nó phụ thuộc vào mục đích của mạng; chẳng hạn, hỗ trợ lưu lượng thời gian
thực...
thức phân loại hợp lý là rất quan trọng. Các phương thức phân loại giúp cho các nhà
nghiên cứu và các nhà thiết kế hiểu được những đặc trưng khác nhau và mối quan hệ
giữa các giao thức. Các đặc trưng này chủ yếu liên quan đến việc tập hợp thông tin
định tuyến, đến vai trò mà một nút có thể đảm nhận trong quá trình định tuyến.
2.2.2.1 Định tuyến theo bảng, định tuyến theo yêu cầu và định tuyến lai
Một trong những phương thức phổ biến nhất để phân loại các giao thức định
tuyến cho mang Ad hoc là dựa trên việc thông tin định tuyến được tập hợp và được duy
trì như thế nào bới các nút di động. Sử dụng phương thức này, các giao thức định tuyến
cho mạnh Ad hoc được phân chia như bảng 2.2.
Hình 2.2 Phân loại các giao thức định tuyến trong mạng Ad hoc
• Các giao thức định tuyến proactive: còn được gọi là các giao thức định tuyến
theo bảng (table-driven). Sử dụng các giao thức này, các nút di động cố gắng
đánh giá liên tục các tuyến trong mạng để khi một gói cần phải chuyển tiếp
thì tuyến đó đã sẵn sàng để sử dụng. Mỗi nút duy trì một hay nhiều bảng
chứa thông tin định tuyến tới các nút trong mạng. Tất cả các nút trong mạng
sẽ cập nhật các bảng này để duy trì một cách phù hợp thông tin và tình trạng
của mạng, do đó tiêu đề định tuyến trong các giao thức này là khá lớn. Khi
topo mạng thay đổi, các nút truyền các bản tin thông báo cho nhau để cập
nhật thông tin về tuyến của toàn bộ mạng. Giao thức định tuyến trạng thái
liên kết tối ưu OLSR (Optimized Link State Routing) và giao thức định
tuyến vector khoảng cách tuần tự đích DSDV (Dynamic Destination-
Sequenced Distance-Vector Routing) là hai ví dụ của giao thức định tuyến
proactive
• Các giao thức định tuyến reactive: còn được gọi là các giao thức định tuyến
theo yêu cầu (on-demand). Sử dụng các giao thức này, thủ tục xác định
tuyến chỉ được gọi theo yêu cầu. Việc này được thực hiện thông qua hoạt
động khám phá tuyến đường (route discovery). Quá trình khám phá tuyến
kết thúc sau khi hoặc có một tuyến được tìm ra hoặc không có tuyến nào sẵn
có sau khi đã kiểm tra toàn bộ các tuyến đường. Trong mạng Ad hoc, các
tuyến đang hoạt động có thể bị đứt do tính di động của nút. Do đó, duy trì
tuyến là một hoạt động quan trọng của định tuyến theo yêu cầu. So sánh với
định tuyến theo bảng, ít tiêu đề định tuyến là 1 ưu điểm của định tuyến theo
yêu cầu. Tuy nhiên, sử dụng định tuyến theo yêu cầu thì việc gửi gói tin sẽ
có trễ lớn do nút nguồn phải tìm đường trước khi gửi dữ liệu. Hai giao thức
reactive điển hình là giao thức định tuyến vector khoảng cách theo yêu cầu
AODV (Ad hoc On-demand Distance Vector Routing) và giao thức định
tuyến định tuyến nguồn động DSR (Dynamic Source Routing).
• Các giao thức định tuyến lai (hybrid) được đề xuất để kết hợp ưu điểm của 2
loại giao thức trên và khắc phục các nhược điểm của chúng. Thông thường,
các giao thức lai được triển khai trong mạng có cấu trúc phân cấp. Khi đó,
các đặc tính định tuyến theo bảng và định tuyến theo yêu cầu sẽ được khai
thác độc lập ở các mức phân cấp khác nhau. Zone Routing Protocol (ZRP)
và Hybrid Ad Hoc Routing Protocol là những ví dụ của giao thức lai.
Một phương thức phân loại khác là dựa trên vai trò có thế có của nút trong cơ chế
định tuyến. Trong giao thức định tuyến đồng bộ, tất cả các nút di động có cùng vai trò
và chức năng. WRP, DSR, AODV và DSDV là những ví dụ về định tuyến đồng bộ.
Các giao thức này thường giả định rằng cấu trúc mạng là phẳng. Trong một giao thức
định tuyến bất đồng bộ, một số nút đảm nhận vai trò quản lý và chức năng khác nhau.
Thuật toán phân tán được sử dụng để lựa chọn các nút đặc biệt này. Trong một số
trường hợp, các phương pháp định tuyến bất đồng bộ gắn liền với cấu trúc mạng phân
cấp để dể dàng tổ chức và quản lý các nút. Các giao thức định tuyến bất đồng bộ có thể
được phân chia dựa trên việc tổ chức các nút di động, chức năng định tuyến và quản lý
được thực hiện như thế nào. Theo đó, các giao thức định tuyến bất đồng bộ trong mạng
Ad hoc được chia thành định tuyến phân cấp theo vùng, định tuyến phân cấp theo
nhóm và định tuyến theo nút lõi.
Trong các giao thức định tuyến theo vùng, các thuật toán xây dựng vùng khác
nhau được triển khai cho việc tổ chức nút; ví dụ, một số thuật toán xây dựng vùng sử
dụng thông tin vị trí địa lý. Khai thác hiệu quả việc phân chia vùng sẽ giảm được đáng
kể tiêu đề để duy trì thông tin định tuyến. Các nút di động trong cùng một vùng biết
đường đến các nút khác sẽ có chi phí nhỏ hơn so với việc duy trì thông tin định tuyến
tới tất cả các nút trong toàn mạng. Một số nút hoạt động như là gateway và đảm nhận
truyền thông liên vùng. ZRP và ZHLS là hai giao thức định tuyến theo vùng cho mạng
Ad hoc.
Các giao thức định tuyến theo nhóm sử dụng thuật toán xây dựng nhóm cho việc
bầu chọn trưởng nhóm (cluster-head). Các nút di động được nhóm thành các nhóm,
trưởng nhóm đóng vai trò quản lý thành viên và đảm nhận chức năng định tuyến.
Clusterhead Gateway Switch Routing (CGSR) là một ví dụ của định tuyến theo nhóm.
Trong các giao thức định tuyến theo nút lõi, các nút đặc biệt được tự động lựa
chọn để gộp thành 1 backbone trong mạng. Các nút “backbone” đảm nhận các vai trò
đặc biệt, như là xây dựng và theo dõi đường định tuyến, quảng bá gói tin dữ liệu. Core-
Extraction Distributed Ad Hoc Routing (CEDAR) là một ví dụ điển hình của loại định
tuyến này.
Các metric sử dụng cho việc xây dựng tuyến đường có thể được sử dụng để phân
loại các giao thức định tuyến trong mạng Ad hoc. Gần như mọi giao thức định tuyến
cho mạng Ad hoc sử dụng “số chặng” làm metric. Nếu có nhiều tuyến đường có sẵn,
tuyến nào có số chặng nhỏ nhất sẽ được lựa chọn. Nếu tất cả các liên kết không dây có
cùng xác suất lỗi thì đường định tuyến ngắn sẽ ổn định hơn đường định tuyến dài và có
thể giảm tiêu đề lưu lượng, giảm xung đột gói tin. Tuy nhiên, giả định có cùng xác suất
lỗi có thể không tồn tại trong mạng Ad hoc. Theo đó, sự ổn định liên kết phải được cân
nhắc trong pha xây dựng tuyến đường. Vi dụ, Associatively Based Routing (ARB) và
Signal-Based Routing (SSR) được đề xuất để sử dụng sự ổn định liên kết và độ mạnh
tín hiệu như là một metric cho định tuyến.
Với sự phổ biến của điện toán di động, một số ứng dụng di động có thể có các yêu
cầu QoS khác nhau. Để đáp ứng các yêu cầu này, các metric QoS tương ứng lên được
sử dụng cho việc định tuyến và chuyển tiếp gói tin trong mạng Ad hoc. Giống như
mạng có dây, các giao thức định tuyến QoS cho mạng Ad hoc có thể sử dụng các
metric, như là băng thông, trễ, trễ jitter, tỉ lệ lỗi gói tin và chi phí. Ví dụ, băng thông và
độ ổn định liên kết được sử dụng trong CEDAR làm metric cho việc xây dựng tuyến
đường.
Trong một giao thức định tuyến theo topo cho mạng Ad hoc, các nút tập hợp
thông tin topo mạng cho việc định tuyến. Ngoài các giao thức định tuyến theo topo,
một số giao thức định tuyến theo đích được đề xuất cho mạng Ad hoc. Trong các giao
thức này, một nút chỉ cần biết next-hop trên đường định tuyến khi chuyển tiếp gói tin
tới đích. Ví dụ, DSR là giao thức định tuyến theo topo và AODV, DSDV là giao thức
định tuyến theo đích. Việc sẵn có của hệ thống định vị toàn cầu (GPS) hoặc các hệ
thống định vị tương đương cho phép các nút di động truy nhập thông tin vị trí địa lý
một cách dễ dàng. Trong các giao thức định tuyến theo vị trí, mối quan hệ về vị trí giữa
các nút chuyển tiếp gói tin và nút đích, cùng với sự di chuyển của nút, có thể được sử
dụng trong cả quá trình khám phá tuyến và chuyển tiếp gói tin. Location Aided
Routing (LAR) và Distance Routing Effect Algorithm for Mobility (DREAM) là các
giao thức định tuyến theo vị trí cho mạng Ad hoc.
Sau đây là một số giao thức định tuyến được đề xuất cho mạng Ad hoc.
OLSR là giao thức định tuyến theo bảng và là một sự tối ưu của giao thức trạng
thái liên kết cổ điển, hoàn toàn thích hợp cho mạng di động Ad hoc. OLSR tối thiểu
hóa tiêu đề định tuyến bằng cách chỉ sử dụng các nút được chọn để phát tràn lan lưu
lượng điều khiển, được gọi là Chuyển tiếp đa điểm MPR (Multipoint Relay). Kỹ thuật
này giảm đáng kể số lượng yêu cầu truyền lại để phát tràn lan một bản tin tới tất cả các
nút trong mạng.
Hình 2.3 Quá trình phát tràn lan bản tin quảng bá
MPR là để tối thiểu hóa overhead khi phát tràn lan bản tin trong mạng bằng cách
giảm số lần truyền lại trong cùng một vùng. Mỗi nút trong mạng lựa chọn một tập hợp
các nút hàng xóm trực tiếp của nó để làm MPR. Hàng xóm của nút A mà không nằm
trong tập hợp MPR của A có thể nhận và xử lý các bản tin quảng bá nhưng không thể
truyền các bản tin quảng bá nhận được từ A.
Mỗi nút lựa chọn tập hợp MPR từ những hàng xóm trực tiếp (one-hop) của nó.
Tập hợp MPR của nút A, kí hiệu là MPR(A), là tập con của tập hợp các hàng xóm trực
tiếp của A, phải thỏa mãn những điều kiện sau: mỗi nút trong hàng xóm hai bước (two-
hop) của A phải có một liên kết trực tiếp đến MPR(A). Tập hợp MPR càng nhỏ thì tiêu
đề lưu lượng điều khiển của giao thức định tuyến càng nhỏ. Mỗi nút phải duy trì thông
tin về tập hợp hàng xóm mà chúng chọn làm MPR. Tập hợp này gọi là “MPR selector
set” của một nút.
Trong OLSR, mỗi nút truyền bản tin Hello định kỳ (ví dụ một giây một bản tin)
trên mỗi giao diện của nút. Mục đích chính của bản tin Hello cho phép mỗi nút có thể
khám phá tuyến trực tiếp tới hàng xóm của nó. Bản tin Hello được quảng bá từng
chặng một (hop-by-hop) và phải không được truyền trước đó. Bản tin Hello bao gồm
tên của nút khởi tạo, hàng xóm trực tiếp mà nút khởi tạo truyền bản tin khám phá, và
các nút mà nút khởi tạo chọn làm MPRs. Khi một nút nghe thấy bản tin Hello, nó kiểm
tra liệu bản tin đó có phải được phát sinh từ hàng xóm mới hay không, và nếu đúng,
nút sẽ cập nhật vào danh sách hàng xóm trực tiếp của nút. Bản tin Hello rất quan trọng
trong việc hỗ trợ khái niệm MPR. Mỗi nút kiểm tra bản tin Hello nhận được từ hàng
xóm của nó để xem nó liệu có được lựa chọn làm MPR của bất kỳ hàng xóm nào
không. Nếu vậy, nút sẽ phát tràn lan các cập nhật định tuyến được phát sinh từ các
hàng xóm mà đã chọn nó là MPR. Mỗi nút cũng có thể khám phá liệu các nút có là
hàng xóm hai bước từ bản tin Hello, bởi vì danh sách các hàng xóm hai bước đã được
liệt kê trong bản tin Hello của nút hàng xóm trực tiếp của nó. Mỗi nút lựa chọn MPR
trên cơ sở hàng xóm hai bước, do vậy mỗi hàng xóm hai bước phải nhận được bản tin
MPR.
Thông tin trạng thái liên kết đưa ra được thực hiện thông qua trao đổi định kỳ các
bản tin, cũng giống như cấu hình giao diện của các nút, bảng định tuyến của mỗi nút có
thể được tính toán.
Giao thức định tuyến nguồn động DSR là giao thức định tuyến đơn giản và hiệu quả.
Giao thức này được thiết kế để sử dụng trong các mạng Ad hoc vô tuyến đa chặng có
tốc độ di chuyển cao của các nút. Các nút này phối hợp với nhau để chuyển tiếp các gói
tin. Do vậy gói tin có thể được chuyển đến các nút không nằm trong vùng phủ sóng của
chính nút đó. Khi các nút trong mạng di chuyển, tham gia hoặc rời khỏi mạng thì toàn
bộ các thủ tục định tuyến được xác định và duy trì một cách tự động bởi giao thức định
tuyến DSR.
DSR bao gồm 2 cơ chế cơ bản: Khám phá tuyến (Route Discovery) và Duy trì tuyến
(Route Maintenance). Khám phá tuyến và Duy trì tuyến hoạt động hoàn toàn theo yêu
cầu.
Việc tập hợp thông tin về topo mạng tại nút nguồn của mỗi gói cho phép nút
nguồn phân phát các gói tin một cách hiệu quả trong mạng. Điều này rất thích hợp với
việc quản lý tài nguyên trong mạng Ad hoc.
Giao thức định tuyến dựa trên các tuyến nguồn còn có thêm 2 lợi ích. Thứ nhất,
giao thức có thể chứng minh được một cách đơn giản tính không lặp vòng bởi vì tuyến
nguồn được sử dụng để điều khiển định tuyến các gói. Thứ hai, mỗi tuyến nguồn là
một bản kê sẵn về một đường truyền cụ thể, tin cậy để truyền các thông tin qua mạng.
DSR sử dụng các tuyến nguồn và mỗi gói được định tuyến dựa trên một tuyến
nguồn khám phá được, tuy nhiên những cải thiện gần đây đối với DSR đã cho phép
hầu hết các gói tin không phải mang theo phần tiêu đề chứa thông tin đầy đủ về tuyến
nguồn.
Khám phá tuyến được thực hiện bằng cách phát tràn lan yêu cầu qua mạng để tìm
kiếm một tuyến tới đích nào đó. Trong dạng đơn giản nhất, nút nguồn A muốn khám
phá một tuyến tới nút đích D thì A sẽ phát quảng bá gói tin Yêu cầu tuyến RREQ và
gói này tiếp tục được quảng bá bởi các nút trung gian cho đến khi nó đến được nút đích
D. Trong cơ chế này, nhiều tối ưu hóa được sử dụng để giới hạn tần số và phạm vi của
các Khám phá tuyến.
Khi một nút S muốn gửi một gói tin đến D, đầu tiên nó sẽ đặt vào phần tiêu đề
của gói tin đó một tuyến nguồn trong đó chỉ ra thứ tự của các chặng mà gói tin sẽ phải
đi qua. Thông thường, nút S sẽ đạt được một tuyến nguồn thích hợp thông qua việc tìm
kiếm trong Bộ nhớ tuyến của nó các tuyến đã biết trước đây. Tuy nhiên nếu không tìm
thấy tuyến nào trong Bộ nhớ tuyến, nó sẽ khởi tạo thủ tục Tìm kiếm tuyến động để tìm
ra một tuyến nguồn tới D. Trong trường hợp này ta gọi nút S là nút nguồn còn nút D là
nút đích trong thủ tục Khám phá tuyến.
Trước khi khởi tạo một gói tin RREQ, nút nguồn chọn một nhận dạng yêu cầu
(Request_id) đặt trong gói tin RREQ. Cặp <địa chỉ nút nguồn, nhận dạng yêu cầu> là
duy nhất.
Hình 2.5 minh họa quá trình Khám phá tuyến đơn giản, nút A cố gắng khám phá
tuyến tới nút E. Để khởi đầu Khám phá tuyến, A truyền một tin báo RREQ. Mỗi tin
báo RREQ nhận dạng nút nguồn và đích của Khám phá tuyến. Nhận dạng yêu cầu
được xác định bởi nút nguồn của Yêu cầu. Một RREQ bao gồm một bản ghi danh sách
địa chỉ của từng nút trung gian mà tin báo RREQ đã đi qua. Giá trị ban đầu của bản ghi
tuyến là một danh sách trống.
Khi một nút nhận được bản tin RREQ này (ví dụ như nút B trong ví dụ), nếu nó là
đích của Khám phá tuyến, nó sẽ gửi lại bản tin Trả lời tuyến RREP tới khởi tạo của
Khám phá tuyến, chuyển bản copy của bản ghi tuyến được cộng dồn từ RREQ; khi nút
nguồn nhận được RREP, nó cất giữ tuyến này trong Bộ nhớ tuyến để sử dụng khi gửi
các gói tin tiếp theo tới đích này.
Mặt khác, nếu một nút nhận RREQ mà đã nhận được một bản tin RREQ khác từ
nút nguồn, mang theo những nhận dạng yêu cầu và địa chỉ đích giống nhau hoặc nếu
địa chỉ riêng của nút này đã nằm trong báo cáo tuyến của RREQ, nó sẽ từ chối Yêu
cầu. Nếu không, nút này sẽ gắn địa chỉ riêng của nó vào bản ghi tuyến trong bản tin
RREQ và tiếp tục quảng bá nó. Trong ví dụ, nút B sẽ quảng bá bản tin RREQ, nó sẽ
được nhận ở nút C, nút C và nút D cũng vậy, nó sẽ broadcast Yêu cầu, kết quả là copy
của Yêu cầu sẽ được nhận bởi nút E.
Trong việc bản tin RREP trở lại nút nguồn trong thủ tục Khám phá tuyến, chẳng
hạn nút E trả lời nút A trong hình 2.5, nút E sẽ kiểm tra Bộ nhớ tuyến của nó xem liệu
có một tuyến ngược về nút A, và nếu tìm được nó sẽ sử dụng tuyến này làm tuyến
nguồn để phân phát các gói tin bao gồm cả gói RREP. Nếu không tìm được một tuyến
ngược trở lại A, E có thể thực hiện thủ tục Khám phá tuyến từ nó tới A. Để tránh khả
năng quay lại vô hạn có thể của các Khám phá tuyến, nó sẽ chèn bản tin RREP vào
chính bản tin RREQ của nó đối với nút A. Sử dụng cơ chế này nó cũng có khả năng
cõng theo các gói dữ liệu nhỏ khác ví dụ như gói TCP SYN trên một bản tin RREQ.
Nút E còn có thể đảo vị trí sắp xếp của các chặng trong bản ghi tuyến và sử dụng tuyến
đã đảo vị trí này như một tuyến nguồn đối với các gói tin mang bản tin RREP của
chính nó.
Khi khởi tạo một Khám phá tuyến, nút đang gửi sẽ giữ lại bản sao của gói tin ban
đầu trong bộ nhớ đệm nội bộ (Send Buffer) gọi là bộ đệm gửi. Ngoài ra Send Buffer
còn chứa các bản sao của các gói tin không truyền đi được do chưa tìm ra một tuyến
nguồn tới đích. Mỗi gói trong Send Buffer được gán cho một nhãn thời gian chỉ ra thời
gian chúng tồn tại trong Buffer và gói tin sẽ bị loại bỏ sau khi thời gian lưu lại trong
Send Buffer quá hạn; để Send Buffer không bị tràn, kĩ thuật FIFO hoặc kĩ thuật tương
đương khác có thể được sử dụng để truyền các gói tin đó đi trược khi chúng hết hạn.
Trong trường hợp gói tin còn lưu lại trong Send Buffer mà chưa truyền đi được
thì thỉnh thoảng nút mạng lại thiết lập mới thủ tục Khám phá tuyến tùy theo địa chỉ
đích của các gói. Tuy nhiên, tần suất khởi tạo các Khám phá tuyến mới cần phải được
giới hạn do có thể xảy ra trường hợp đích của thủ tục khởi tạo tuyến đã thay đổi và
không thể tới được. Trên thực tế, do giới hạn về phạm vi truyền dẫn vô tuyến và sự di
chuyển của các nút trong mạng nên nhiều khi cấu trúc mạng bị phân mảnh, nghĩa là
không có thứ tự sắp xếp của các chặng mà qua đó gói tin được chuyển tiếp tới đích.
Kiều phân mảnh như vậy có thể hiếm gặp hoặc phổ biến tùy thuộc vào kiểu di chuyển
và mật độ của các nút trong mạng.
Trong trường hợp với mỗi gói tin, một thủ tục Khám phá tuyến được khởi tạo thì
một số lớn các gói RREQ không hữu ích được truyền từ nút này tới tất cả các nút khác
trong mạng. Để giảm phần phụ trội tiêu đề do các Khám phá tuyến trên người ta phải
giới hạn tần suất khởi tạo các Khám phá tuyến từ một nút bất kì đến cùng một đích.
Nút chỉ được phép khởi tạo Khám phá tuyến mới sau khi đợi hết khoảng thời gian tối
thiểu cần thiết để có thể thiết lập thủ tục Khám phá tuyến mới.
Từ kết quả của việc kiểm tra bản sao các tuyến nguồn ghi được, thuật toán Khám
phá tuyến đã ngăn chặn được việc lặp các RREQ trong mạng. Đó là một thuộc tính
hiệu chỉnh quan trọng và là nguyên nhân tạo ra thuộc tính không lặp vòng của DSR. Sử
dụng các nhận dạng yêu cầu là một tối ưu đơn giản khi đó các RREQ ban đầu trải rộng
hướng ra phía ngoài so với nút nguồn và rút bớt số các gói RREQ bao quanh bộ khởi
tạo.
Hình 2.6 Duy trì tuyến, nút C không thể chuyển tiếp từ A đến E qua
liên kết tới bước nhảy tiếp theo D của nó
Nếu cơ chế này không tồn tại và sẵn có ở các nút thì khi đó nút gửi tin sẽ dùng
một bít thông tin trong phần tiêu đề của gói tin để yêu cầu một phúc đáp từ nút tiếp
theo thông qua phần mềm đặc biệt trong DSR. Thông thường phúc đáp qua phần mềm
này được truyền trực tiếp tới nút gửi tin. Tuy nhiên nếu đường liên kết giữa hai nút là
liên kết đơn hướng thì phúc đáp này có thể phải đi qua rất nhiều chặng khác nhau để
quay lại nút gửi tin
Nếu gói tin được truyền lại qua một số chặng và vượt quá số lần cực đại cho phép
mà vẫn chưa nhận được khẳng định từ nút tiếp theo, nút này sẽ gửi bản tin báo lỗi
tuyến RERR quay trở lại nút đã gửi bản tin ban đầu để xác minh tuyến bị lỗi từ nút
nào. Ví dụ trong hình 2.6 trên : nếu nút C không thể truyền tin đến nút D tiếp theo, C sẽ
gửi bản tin RERR về nút A và tường trình rằng tuyến từ C đến D bị đứt. Khi đó A sẽ
xóa đường liên kết bị lỗi này khỏi bộ nhớ tuyến của nó. Việc truyền lại bản tin ban đầu
bây giờ là nhiệm vụ và chức năng của các thủ tục lớp cao hơn như TCP. Trong trường
hợp phải gửi lại gói tin tới chính đích E và nếu trong bộ nhớ tuyến của nút A có một
tuyến khác tới E (ví dụ từ các bản tin trả lời tuyến từ các thủ tục khám phá tuyến trước
đó hoặc là từ việc nghe lỏm được các thông tin định tuyến từ các gói tin khác) thì nó sẽ
gửi ngay gói tin sử dụng tuyến mới đó. Nếu không nó sẽ thực hiện một thủ tục khám
phá tuyến mới tới đích E nói trên
di động thực chất là thấp hơn so với các giao thức khác, những giao thức yêu cầu
quảng bá.
AODV sử dụng liên kết đối xứng giữa các hàng xóm. Gói tin không đi theo tuyến
đường giữa các nút khi một trong những nút đó không nghe được từ các nút khác.
Những nút không nằm trên các tuyến đường hoạt động; chúng sẽ không duy trì bất cứ
thông tin định tuyến nào cũng như không tham gia vào bất kỳ sự trao đổi bảng định
tuyến định kỳ nào. Hơn nữa, một nút không phải khám phá và duy trì một tuyến tới nút
khác cho tới khi hai nút cần giao tiếp với nhau, trừ khi nút đó đóng vai trò như một
trạm chuyển tiếp trung gian để duy trì kết nối giữa hai nút khác . Khi một kết nối cục
bộ của nút di động được thiết lập, mỗi nút có thể nhận thấy các nút khác trong vùng lân
cận của nó bằng một vài kĩ thuật, bao gồm quảng bá cục bộ các bản tin Hello. Bảng
định tuyến của các nút trong vùng lân cận được tạo ra để tối ưu thời gian đáp ứng tới
với sự di chuyển cục bộ và cung cấp thời gian đáp ứng nhanh cho các yêu cầu thiết lập
tuyến mới.
Mục tiêu chính của thuật toán AODV:
• Gửi broadcast các gói tin khám phá tuyến khi cần thiết.
• Phân biệt giữa phát hiện-quản lý kết nối cục bộ trong vùng lân cận với duy trì
topo mạng chung.
• Quảng bá thông tin về sự thay đổi kết nối cục bộ tới các nút hàng xóm mà thực
sự cần thông tin.
AODV sử dụng một cơ chế Khám phá tuyến với sự cải biến của thuật toán DSR.
Thay vì định tuyến nguồn, AODV tin tưởng vào sự thiết lập động các entry trong Bảng
định tuyến ở các nút trung gian.
AODV sử dụng số thứ tự ở nút mạng đích để giúp cho tuyến đường luôn cập nhật
và không hình thành đường định tuyến khép kín. Hơn nữa, AODV cũng hỗ trợ định
tuyến multicast và giải quyết được vấn đề đếm vô hạn trong thuật toán Bellman Ford.
• Broadcast ID
- Next hop
- Số chặng
- Số thứ tự đích
- Các hàng xóm còn hoạt động cho đích đó
- Thời gian hết hạn cho entry bảng định tuyến
Mỗi khi một entry tuyến được dùng để truyền gói tin dữ liệu từ nguồn tới đích,
timeout cho entry đó sẽ được reset tới thời gian hiện tại cộng thêm timeout. Nếu một
tuyến mới được yêu cầu cho một nút di động, các nút di động so sánh số thứ tự đích
của tuyến mới với tuyến hiện tại. Nếu số thứ tự tuyến mới cao hơn, nó sẽ được chọn,
nếu bằng nhau thì tuyến mới sẽ được chọn khi có metric nhỏ hơn (số chặng ít hơn) tới
đích.
2.5.5 Cập nhật đường định tuyến
Khi một nút mạng phát hiện đường định tuyến đến nút bên cạnh không hoạt động,
nó sẽ xóa trong bảng định tuyến và gửi một bản tin Liên kết hỏng RERR. AODV sử
dụng danh sách nút mạng bên cạnh còn hoạt động để ghi nhớ nút mạng đang sử dụng
đường định tuyến trong bảng định tuyến. Nút mạng nhận được bản tin này cũng sẽ lặp
lại quá trình gửi bản tin. Cuối cùng bản tin cũng đến được gửi đến tất cả nút mạng có
liên quan, từ đó chúng có thể dừng việc gửi thông tin hoặc yêu cầu đường định tuyến
mới thông qua bản tin RREQ.
Đây là một khác biệt cơ bản giữa DYMO và AODV, trong đó thì AODV chỉ tạo ra
entry bảng định tuyến cho nút đích và nút next-hop, còn DYMO thì lưu trữ tuyến
đường cho mỗi nút trung gian. Điều này được thể hiên qua hình 2.9.
Khi sử dụng AODV, một nút A chỉ biết đường tới B và D sau khi Yêu cầu tuyến
được đáp ứng. Trong DYMO, nút A cũng biết cả đường tới C. DYMO có thể thiết lập
và duy trì các tuyến đường unicast trong các kịch bản mạng IPv4 và IPv6 bằng cách sử
dụng cơ chế sau:
• Nhằm phát hiện một tuyến mới đến một nút đích, một nút gửi một bản tin Yêu
cầu tuyến RREQ tới tất cả hàng xóm trong phạm vị truyền sóng của nó. Điều
này cũng nhận được bằng cách gửi bản tin tới 1 địa chỉ multicast cục bộ riêng.
Khi một nút trung gian nhận được một RREQ nó thiết lập tuyến đường tới tất cả
các nút mà gói tin đã đi qua. Sau đó nút sẽ gắn địa chỉ của chính nó vào bản tin
và truyền bản tin tới tất cả các nút lân cận. Bằng cách này thì RREQ được quảng
bả một cách hiệu quả trên mạng và cuối cùng là đến đích của nó.
• Đich đáp ứng RREQ bằng cách gửi unicast một bản tin Trả lời RREP trở về nút
mà nó mà từ đó nó nhận được RREQ. Cũng như trong quá trình quảng bá
RREQ, nút này lại gắn địa chỉ của nó và ghi chú tất cả các thông tin định tuyến
có trong RREP. Cùng với thông tin định tuyến đã có được trước đó khi chuyển
tiếp RREQ tương ứng, nút trung gian có khả năng gửi RREP trở về nút nguồn
của RREQ. Nút này cũng sẽ biết được tuyến đường tới nút đích được yêu cầu,
cũng như là đường tới mọi nút trung gian, và ngược lại.
Một nút trung gian cũng có thể tạo ra RREP nếu như nó biết tuyến đường tới đích.
Để phản ứng tốt với mạng có mức độ di chuyển cao, các liên kết trên tuyến đường đã
biết được có thể được theo dõi, bằng cách sử dụng giao thức nhận biết hàng xóm
(Neighboehood Discovery Protocol) hoặc kiểm tra phản hồi nhận được ở tầng data
link. Một hệ thống cũng có thể lựa chọn không bật tính năng theo dõi, đơn giản chỉ xóa
các tuyến không còn hoạt động. Khi một nút phát hiện liên kết lỗi, nó sẽ gửi một bản
tin RERR để thông báo có tất cả các nút lân cận, thông báo cho chúng biết về tất cả các
tuyến đị đứt.
TỔNG KẾT
Qua việc nghiên cứu một số giao thức trong mạng Ad hoc ta có thể thấy rằng
chưa có giao thức nào có đầy đủ các tính năng và không thể khẳng định giao thức nào
là tối ưu cho mạng Ad hoc. Tuy nhiên, chức năng chính của các giao thức là tìm được
đường đi tới đích, không phải đường ngắn nhất hay đường tối ưu nhất được đáp ứng.
Như đã trình bày ở chương 2, giao thức định tuyến trong mạng Ad hoc đều tập
trung giải quyết vấn đề và khái niệm đặc trưng của môi trường vô tuyến. Nhưng giao
thức nào là tốt nhất, phù hợp nhất? Nó phụ thuộc vào cấu trúc và thuộc tính của mạng,
mật độ nút mạng, mức độ di chuyển của nút mạng, kích cỡ môi trường, kiểu di chuyển
của các nút mạng...
Có hai thông số để đánh giá: thông số đánh giá chất lượng và thông số kịch bản.
Các thông số này được sử dụng để đưa ra chính xác những gì xảy ra trong quá
trình mô phỏng và cung cấp các thông tin có giá trị về các giao thức định tuyến. Do đó,
nó dành được nhiều sự quan tâm khi nghiên cứu giao thức định tuyến mô phỏng.
Định nghĩa: Tỷ lệ gói nhận được RD là tỷ lệ giữa số gói nhận được bởi nút đích
(PR) và số gói được gửi đi từ lớp ứng dụng của nút nguồn (PS).
RD = PR / PS (CT 3.1)
Ý nghĩa: giao thức định tuyến hoạt động tốt phải có giá trị RD cao do khả năng tận
dụng băng thông vô tuyến là rất quan trọng. Thông số này phản ánh tỷ lệ gói tin bị mất,
mức độ hoàn chỉnh và đúng đắn của giao thức định tuyến.
Định nghĩa: Trễ từ đầu cuối đến đầu cuối là thời gian mà gói tin truyền trên mạng
từ nút nguồn đến nút đích. Nó bao gồm nhiều giá trị nhỏ trên mạng: trễ bộ đệm, trễ
chuyển tiếp gói tin ở nút trung gian, trễ truyền dẫn và thời gian để truyền lại gói tin
(trong trường hợp gói tin bị mất). Có thể tính thời gian trễ theo hai cách:
Tdelay = Trev – T send (CT 3.2)
Hoặc: Tdelay = T buffer + Trelay + Tprop + Tresend (CT 3.3)
Ý nghĩa: Trong mạng gói vô tuyến không có QoS thì giá trị trễ phụ thuộc vào giao
thức định tuyến. Một thông số quan trọng là thời gian trễ trong bộ đệm, tức là gói tin
được lưu giữ trong bộ đệm khi chưa có đường định tuyến đến đích trước khi bị hủy.
Nếu như nút mạng đặt thời gian lớn thì ít gói tin trên mạng bị hủy, nhưng cũng có
nghĩa trễ trung bình trong mạng cũng tăng lên. Và người thiết kế hệ thống sẽ quyết
định: tỷ lệ gói hủy bỏ thấp hay thời gian trễ, điều này liên quan đến giá trị trễ đầu cuối
đến đầu cuối.
Định nghĩa: thông lượng là tỉ lệ giữa số gói tin dữ liệu được truyền trên một đơn
vị thời gian.
Ý nghĩa: Khi băng thông sẵn có trên mạng đã biết, thì trong mô phỏng băng thông
thực sự có được là bao nhiêu? Thông số thông lượng T sẽ cho biết băng thông thực sự
khi mô phỏng và có thể cho tháy sự hiệu quả của giao thức định tuyến ở mức độ nào.
Khi thông lượng trung bình cao nghĩa là băng thông dành cho định tuyến là ít, khi đó
giao thức định tuyến hoạt động tốt.
Định nghĩa: là tỉ lệ giữa gói tin định tuyến được gửi đi với số gói dữ liệu được gửi
tới đích.
Ý nghĩa: Tải thông tin định tuyến là một thông số quan trọng với mạng Ad hoc,
nó cũng cho biết hiệu năng sử dụng băng thông của giao thức định tuyến: bao nhiêu
băng thông được sử dụng cho bản tin định tuyến, bao nhiêu băng thông được sử dụng
cho các gói tin dữ liệu. Phần tải định tuyến trong giao thức định tuyến theo yêu cầu
thông thường là lớn do nó phải gửi bản tin cập nhật định kỳ trên toàn mạng. Trường
hợp lý tưởng là không có bản tin định tuyến, chỉ có gói tin dữ liệu được truyền trên
mạng; tuy nhiên, nếu không có giao thức định tuyến thì không thể triển khai thực tế.
Nó đánh giá sự chuyển động trong mạng bằng cách tính toán di chuyển của nút mạng
liên quan giữa các cặp nút trên mạng. Thông số này tương ứng với số thay đổi liên kết
trong mô hình khi mà nút mạng di chuyển theo mô hình định trước.
Tên Mô tả
biến
Dist(nx, ny)t Khoảng cách giữa nút X và nút Y ở thời điểm t
n Số nút mạng
i Chỉ số
Ax(t) Khoảng cách trung bình giữa các nút x với các nút khác ở thời điểm t
Mx Di chuyển trung bình của nút x với các nút trong thời gian mô phỏng
T Thời gian mô phỏng
Δt Bước thời gian mô phỏng
Mod Di chuyển trong toàn bộ kịch bản [m/s]
Bước 1: tính khoảng cách trung bình của các nút x với các nút khác trong mạng được
thực hiện ở các thời điểm t=0, t= 0 + X, t=0 + 2X, ... t = T, theo công thức:
(CT 3.4)
(CT 3.5)
(CT 3.6)
Thời gian tạm dừng là một biến đầu vào của mô phỏng. Khi sử dụng như một
thông số đánh giá, thời gian tạm dừng của tất cả các nút trong mô phỏng được sử dụng
để đo kiểm thông số chuyển động. Khi giá trị trung bình càng lớn thì nút mạng càng ít
di chuyển trong mạng.
3.2.2 Mô hình di chuyển hướng ngẫu nhiên với vận tốc không đổi
Đây là mô hình sửa đổi của mô hình di chuyễn ngẫu nhiên nhưng đảm bảo tất cả
nút mạng được gán cho một vận tốc như nhau trong suốt quá trình mô phỏng. Sau khi
hướng chọn một cách ngẫu nhiên trong khoảng (0, 2π), các nút bắt đầu di chuyển. Khi
gặp biên của khu vực mô phỏng, nó nảy khỏi biên với một góc xác định bởi hướng đến,
các nút di chuyển thao đường mới.
nhiên, các nút chọn hướng thay vì chọn đích, sau đó nó di chuyển theo hướng đó đến
biên của khu vực mô phỏng, ngay khi đến biên nó dừng lại trong một khoảng thời gian
và chọn hướng khác (0, 180o) và tiếp tục quá trình .
TỔNG KẾT
Việc lựa chọn các thông số đánh giá giao thức và mô hình di chuyển là rất quan
trọng. Thông qua các thông số đó, ta có thể đánh giá được điểm mạnh cũng như điểm
yếu của một giao thức mạng. Qua đó, ta có thể lựa chọn được giao thức phù hợp cho
những giả thiết và yêu cầu đặt ra.
OMNeT++ là viết tắt của cụm từ Objective Modular Network Testbed in C++.
OMNeT++ là một ứng dụng cung cấp cho người sử dụng môi trường để tiến hành
mô phỏng hoạt động của mạng. Mục đích chính của ứng dụng là mô phỏng hoạt động
của mạng thông tin, tuy nhiên do tính phổ cập và linh hoạt của nó, OMNeT++ còn
được sử dụng trong nhiều lĩnh vực khác như mô phỏng các hệ thống thông tin phức
tạp, các mạng kiểu hàng đợi (queing networks) hay các kiến trúc phần cứng…
OMNeT++ cung cấp sẵn các thành phần tương ứng với các mô hình thực tế. Các
thành phần này (còn được gọi là các module) được lập trình theo ngôn ngữ C++, sau
đó được tập hợp lại thành những thành phần hay những mô hình lớn hơn bằng một
ngôn ngữ bậc cao (NED). OMNeT++ hỗ trợ giao diện đồ họa, tương ứng với các mô
hình cấu trúc của nó đồng thời phần nhân mô phỏng (simulation kernel) và các module
của OMNeT++ cũng rất dễ dàng nhúng vào trong các ứng dụng khác.
Trình biên dịch cho ngôn ngữ mô tả tình trạng (topology description
language) – NED (nedc)
Trình biên tập đồ họa (graphical network editor) cho các file NED
(GNED)
Giao diện đồ họa thực hiện mô phỏng, các liên kết bên trong các file thực
hiện mô phỏng (Tkenv)
Công cụ (giao diện đồ họa) vẽ đồ thị kết quả vector ở đầu ra (Plove)
OMNeT++ là một công cụ mô phỏng các hoạt động mạng bằng các
module được thiết kế hướng đối tượng. OMNeT++ thường được sử dụng trong các
ứng dụng chủ yếu như:
Đánh giá hiệu quả hoạt động của các hệ thống phức tạp…
Các module có thể chứa nhiều module con và được gọi là module kết hợp. Các
module đơn giản là các module có cấp thấp nhất trong cấu trúc phân cấp. Các module
đơn giản chứa các thuật toán của mô hình. Người sử dụng triển khai các module đơn
giản bằng ngôn ngữ C++, sử dụng các thư viện mô phỏng của OMNeT++.
Các module trao đổi thông tin bằng việc gửi các message. Trong thực tế, message
có dạng khung (frame) hoặc là các gói tin (packet) được truyền đi trong mạng. Các
message có thể có cấu trúc phức tạp tùy ý. Các module đơn giản có thể gửi các
message đi một cách trực tiếp đến vị trí nhận hoặc gửi đi theo một đường dẫn định sẵn
thông qua các cổng (gates) và các liên kết (links).
Các cổng (gates) là các cổng vào, ra của các module. Message được gửi đi qua
các cổng ra và được nhận vào thông qua các cổng vào.
Mỗi kết nối (connection) hay còn gọi là liên kết (link) được tạo bên trong một
mức đơn trong cấu trúc phân cấp của các module: bên trong một module kết hợp, một
kết nối có thể được tạo ra giữa các cổng tương ứng của hai module con, hoặc giữa cổng
của module con với cổng của module kết hợp.
Tương ứng với cấu trúc phân cấp của một mô hình, các message thường di
chuyển qua một loạt các kết nối với điểm bắt đầu và kết thúc là các module đơn giản.
Tập các kết nối đi từ một module đơn giản và đến một module đơn giản được gọi là
route.
Định nghĩa cấu trúc của các message (các file có phần mở rộng .msg):
Người sử dụng có thể định nghĩa rất nhiều kiểu message và thêm các trường dữ liệu
cho chúng. OMNeT++ sẽ dịch những định nghĩa này sang các lớp C++ đầy đủ.
Mã nguồn của các module đơn giản. Đây là các file C++ với phần mở
rộng là .h hoặc .cc.
b. Hệ thống mô phỏng cung cấp cho ta các thành phần sau
Phần nhân mô phỏng. Phần này chứa code để quản lý quá trình mô phỏng
và các thư viện lớp mô phỏng. Nó được viết bằng C++, được biên dịch và được đặt
cùng dạng với các file thư viện (các file có phần mở rộng là .a hoặc .lib).
Giao diện người sử dụng. Giao diện này được sử dụng khi thực hiện quá
trình mô phỏng, tạo sự dễ dàng cho quá trình sửa lỗi, biểu diễn (demonstration) hoặc
khi thực hiện mô phỏng theo từng khối (batch execution of simulations). Có một vài
kiểu giao diện trong OMNeT++, tất cả đều được viết bằng C++, được biên dịch và đặt
cùng nhau trong các thư viện (các file có phần mở rộng là .a hoặc .lib)
c. Thực hiện mô phỏng và phân tích kết quả
Các chương trình thực hiện mô phỏng (the simulation executable) là các
chương trình độc lập, tức là nó có thể chạy trên các máy khác không cài đặt
OMNeT++ hay các file mô hình tương ứng. Khi chương trình khởi động, nó bắt
đầu đọc file cấu hình (thông thường là file omnetpp.ini). File này chứa các thiết lập
để điều khiển nhiều quá trình mô phỏng, trong trường hợp đơn giản nhất là các quá
trình mô phỏng này sẽ được thực hiện lần lượt bởi một chương trình mô phỏng
(simulation program).
Đầu ra của quá trình mô phỏng là các file dữ liệu. Các file này có thể là
các file vector, các file vô hướng hoặc các file của người sử dụng. OMNeT++ cung
cấp một công cụ đồ họa Plove để xem và vẽ ra nội dung của các file vector. Tuy
nhiên chúng ta cũng nên hiểu rằng khó mà có thể xử lý đầy đủ các file kết quả mà
chỉ dùng riêng OMNeT++; các file này đều là các file có định dạng để có thể đọc
được bởi các gói xử lý toán học của các chương trình như Matlab hay Octave, hoặc
có thể được đưa vào tính của các chương trình như OpenOffice Calc, Gnumeric hay
Microsoft Excel. Tất cả các chương trình này đều có chức năng chuyên dụng trong
việc phân tích số hóa, vẽ biểu diễn (visualization) vượt qua khả năng của OMNeT+
+.
Các file vô hướng cũng có thể được biểu diễn bằng các công cụ Scalar. Nó có
thể vẽ được các biểu đồ, các đồ thị dựa vào tập hợp các tọa độ (x,y) và có thể xuất
dữ liệu vào clipboard để có thể sử dụng trong các chương trình khác nhằm đưa
những phân tích chi tiết hơn.
d. Giao diện người sử dụng
Mục đích chính của giao diện người sử dụng là che những phần phức tạp bên
trong cấu trúc của các mô hình đối với người sử dụng, dễ dàng điều khiển quá trình
mô phỏng, và cho phép người sử dụng có khả năng thay đổi các biến hay các đối
tượng bên trong của mô hình. Điều này là rất quan trọng đối với pha phát triển và
sửa lỗi trong dự án. Giao diện đồ họa cũng có thể được sử dụng để trình diễn hoạt
động của mô hình.
Cùng một mô hình người sử dụng có thể trên nhiều giao diện khác nhau
mà không cần phải thay đổi gì trong các file mô hình. Người sử dụng có thể kiểm
thử và sửa lỗi rất dễ dàng qua giao diện đồ họa, cuối cùng có thể chạy nó dựa trên
một giao diện đơn giản và nhanh chóng có hỗ trợ thực hiện theo khối (batch
execution)
Như đã trình bày ở phần mở đầu, một hệ thống mạng mô phỏng trong OMNeT++
gồm các thành phần sau:
Các file có phần mở rộng .msg chứa khai báo các message.
Các file C++ (có phần mở rộng là .cc trong UNIX hoặc .cpp trong
Windows)
Quá trình xây dựng một chương trình mô phỏng
Đầu tiên, dịch các file NED và các file message thành C++, sử dụng
NED compiler (nedc) và message compiler (opp_msgc).
Quá trình tiếp theo giống như biên dịch mã nguồn C/C++
Sau đó tất cả các file trên sẽ được liên kết (link) với các thư viện cần thiết
để tạo thành file .exe.
Cụ thể ta cần phải liên kết với các thư viện sau:
Phần nhân mô phỏng được gọi là sim_std (như các file libsim_std.a,
sim_std.lib, etc)
Giao diện người dùng: cung cấp thư viện môi trường (file libenvir.a, etc)
và các tiện ích tkenv và cmdenv (libtkenv.a, libcmdenv.a, etc). Các file .o (hoặc .obj)
phải được liên kết tới thư viện môi trường cùng với hoặc tkenv hoặc cmdenv.
Hình dưới đây cho chúng ta hình ảnh quá trình xử lý khi mô hình được xây dựng
và hoạt động
NEDC compling
C++ compiling
Linking
Chạy chương
trình
Hình 4.3 Lược đồ xây dựng và chạy một chương trình mô phỏng
OMNeT++
*.ned là các file mô tả topo mạng cũng như cấu trúc của các modul, nó sự dụng
ngôn ngữ NED (Nework Description ), là ngôn ngữ chuyên biệt dùng riêng cho
OmNet++. Sự phát triển tiếp theo của NED là GNED (Graphic NED) làm cho việc mô
tả topo mạng được trực quan hơn bằng cách dùng các công cụ đồ hoạ để mô tả. Các
file ned sau đó được NEDC (NED compiler) dich sang code C++ để mô tả cấu trúc
mạng sang ngôn ngữ C++ dưới dạng file *_.cc.
Các file xử lý của các simple moduls là phần cốt lõi khi viết chương trình mô
phỏng và được viết bằng ngôn ngữ C++ bằng cách kế thừa các lớp có sẵn của OmNet+
+, người viết triển khai các hoạt động của mạng như định tuyến, xử lí gói tin đến và đi,
xác định hành vi của các simple modul được mô tả trong *.ned khi có sự kiện xảy ra
với nó….
Thư viện lõi của chương trình mô phỏng được cung cấp bởi OmNet++, nó bao
gồm rất nhiều các lớp và các hàm có sẵn phục vụ cho chương trình mô phỏng như các
lớp cSimplemodul, cMessage..., các hàm ngẫu nhiên… Thư viện giao diện người dùng
cung cấp giao diện cho chương trình mô phỏng. OmNet++ với các phiên bản gần đây
sử dụng hai kiểu giao diện là giao diện dòng lệnh cmd (command) và giao diện đồ hoạ
dựa trên tcl/tk. Giao diện đồ hoạ rất trực quan nên được ưa dùng hơn. Sau khi dịch và
liên kết ta được một chương trình mô phỏng dựa trên nền OmNet++.
File omnetpp.ini để khởi động các giá trị cần thiết. omnetpp.ini do người lập trình
viết, nó rất quan trọng để chạy một chương trình mô phỏng với các tham số được thay
đổi để có được kết quả thống kê mong muốn.
Cuối cùng là các file kết quả bao gồm file *.vec là các file vector, nó là các biến
thay đổi theo thời gian trong quá trình mô phỏng, giá trị của biến và thời gian tương
ứng được lưu vào file này. Trong quá trình viết code sẽ xác định biến nào được lưu.
File *.sna phục vụ cho quá trình sửa lỗi. File *.sca (scalar file) lưu các giá trị thống kê
có được sau khi kết thúc mô phỏng, ví dụ như số cuộc gọi đã thực hiện số cuộc gọi bị từ
chối… Để xử lí kết quả thống kê đạt được, ta có thể viết một chương trình nhỏ hoặc sử
dụng các công cụ có sẵn. OmNet++ cung cấp chương trình Plove để vẽ các file *.vec,
còn đối với các file *.sca ta có thể dùng một chương trình tính toán bất kì.
4.2 MÔ PHỎNG
4.2.1 Khởi tạo mô phỏng
Trong tất cả các kịch bản mô phỏng, đồ án sử dụng mô hình di chuyển Random
Waypoint với các thông số sau:
• Vận tốc tối đa speedmax: ở bất kỳ thời điểm nào vận tốc có giá trị ngẫu nhiên
trong khoảng [0, speedmax].
• Số nút mạng: giá trị này không thay đổi trong toàn bộ quá trình mô phỏng, đồ án
sử dụng 25 nút mạng trong kịch bản mô phỏng.
• Thời gian tạm dừng: thay đổi với các giá trị 0, 100, 200, 300.
Trước khi gửi gói tin tới một đích, môt nút sẽ kiểm tra trong Bộ nhớ tuyến của nó
có tuyến tới đích đó hay không. Nếu không có, nó sẽ gửi bản tin RREQ để Khám phá
tuyến (hình 4.4).
Hình 4.4 Quá trình gửi bản tin RREQ của DYMO
Các nút nhận được bản tin RREQ, nếu nút đó là đích hoặc biết môt tuyến đường
tới đích, nó sẽ gửi lại bản tin RREP về nguồn (hình 4.5)
Hình 4.5 Quá trình gửi bản tin RREP của DYMO
Như vậy, nút nguồn đã có một tuyến tới đích và nó thực hiện quá trình gửi gói tin
dữ liệu hình (hình 4.6).
Hình 4.6 Quá trình gửi gói tin dữ liệu của DYMO
Nút đích nhận được gói tin dữ liệu, nó sẽ gửi ACK tới nút nguồn để xác nhận nó
đã nhận được gói từ nút nguồn (hình 4.7).
Hình 4.7 Quá trình gửi ACK báo nhận của DYMO
4.2.3 Kết quả mô phỏng các giao thức định tuyến mạng Ad hoc
Kịch bản là một phần rất quan trọng trong mô phỏng, ở đây đồ án đưa ra 4 giá trị
cần đo cho thời gian tạm dừng của nút mạng: 0, 100, 200, 300. Thời gian tạm dừng
bằng 0, nút mạng chuyển động liên tục; thời gian tạm dừng bằng 300, nút mạng coi
như đứng yên (không chuyển động). Các nút bắt đầu gửi gói tin dữ liệu sau 60s (mạng
hội tụ).
Qua biểu đồ thông lượng < hình 4.9 > ta nhận thấy thông lượng tỷ lệ thuận với
gói nhận.
Thông lượng của DYMO là cao nhất do DYMO là giao thức định tuyến hoạt
động theo yêu cầu hoặc theo bảng điều khiển,là sự tối ưu của DSR và
AODV.Khi các nút mạng chuyển động liên tục,thông lượng của DYMO vẫn rất
cao
Thông lượng của OLSR cao hơn AODV và DSR vì OLSR có thể đáp ứng khi
topo mạng thay đổi, nó cho phép khám phá tuyến nhanh chóng tới các hàng
xóm và các MPR của chúng để thiết lập kết nối với các nút khác
Khi mức độ di chuyển tăng (giảm pausetime) thì thông lượng của 3 giao thức
DSR, AODV, OLSR giảm rõ rệt với mức giảm tương đương nhau.Trong khi đó
thì DYMO thể hiện được sự ổn định của mình khi có thông lượng khá
cao.OLSR có thông lượng cao hơn AODV và DSR
Hiện nay chưa có một giao thức nào có thể đáp ứng đầy đủ yêu cầu với một giao
thức định tuyến trong mạng Ad hoc. Các giao thức cần được cải tiến hơn nữa để có thể
đáp ứng được cho mạng Ad hoc đồng thời hỗ trợ multicast, QoS, bảo mật…
Cũng do thời gian nghiên cứu nên không tránh khỏi thiếu sót, em rất mong nhận
được sự nhận xét, đóng góp ý kiến của các thầy cô trong bộ môn cũng như trong khoa
để đồ án của em và những nghiên cứu sau này sẽ còn thành công hơn nữa.
Một lần nữa em xin chân thành cảm ơn thầy Nguyễn Trung Dũng – Bộ môn Hệ
thống viễn thông – Khoa Điện tử viễn thông – Trường Đại học Bách Khoa Hà Nội đã
nhiệt tình hướng dẫn, chỉ bảo và định hướng cho chúng em thực hiện thành công đồ án.
Sinh viên
Vũ Huy Cường
[1] Subir Kumar Sarkar, T G Basavaraju, C Puttamadappa, “Ad hoc Mobile Wireless
Network Principles, protocols, and Applications”, Auerbach Publications, 2007.
[2] Amitabh Mishra, “Security and quality of service in Ad hoc wireless networks”,
Cambridge University Press, 2008.
[3] Prasant Mohapatra and Srikanth Krishnamurthy, “Ad hoc network Technologies
and Protocols”, Spinger Science and Business Media, 2005.
[4] Michel Barbeau and Evangelos Kranakis, “Principles of Ad hoc networking”,
Wiley, 2007.
[5] Krishna Gorantala, “Routing Protocols in Mobile Ad hoc network”, June 15, 2006.
[6] Jabson Andres, “ Metric in Ad hoc networks”, Master thesis, 2000.
[7] Narendra Singh Yadav and R.P.Yadav, “The Effects of Speed on the Performance
of Routing Protocols in Mobile Ad-hoc Network”.
[8] Azzedine Boukerche, “Algorithms and protocols for wireless and mobile Ad hoc
network”, Wiley, 2009.
[9] A. Boukerche, “Performance Evaluation of Routing Protocols for Ad Hoc
Wireless Networks”, Mobile Networks and Applications, 9, pp. 333-342, 2004.
[10] Samir R. Das, “Performance Comparison of Two On-demand Routing Protocols
for Ad Hoc Networks”, Division of Computer Science The University of Texas at San
Antonio San Antonio, TX 78249-066 U.S.A.
[11] Sehrish Abrejo, Asadullah Shah, Kamran Khowaja, Asma Ansari Pakistan
“Analysis of MANET Routing Protocols using Scenario Based Mobility Models ”,
Department of Computer Science Isra University, Hyderabad.
[12] Ashwini Kumar Pandey,“Study of MANET Routing Protocols by Simulation
Experiments”,Department of Computer Science Southern Illinois University Edwardsville
MAY 2004
[13] Farooq Anjum and Petros Mouchtaris, “Security for wireless Ad hoc networks” ,
Wiley, 2007
Routing Algorithms for Mobile Ad Hoc Networks”, Dept. of Electrical and Computer
Engineering,
Aristotle University of Thessaloniki, Thessaloniki, Greece
[15] S. Gowrishankar, T.G. Basavaraju, M. Singh, Subir Kumar Sarkar , “Scenario
based Performance Analysis of AODV and OLSR in Mobile Ad hoc Networks”,
Jadavpur University, Acharya Institute of Technology India
[16] http://tools.ietf.org/html/draft-ietf-manet-aodv-09
[17] http://tools.ietf.org/html/draft-ietf-manet-dymo-17
[18] http://hipercom.inria.fr/olsr/draft-ietf-manet-olsr-11.txt
[19] http://www.ietf.org/proceedings/04mar/I-D/draft-ietf-manet-dsr-09.txt
PHỤ LỤC
[General]
#debug-on-errors = true
sim-time-limit = 300s
seed-0-mt = 5
num-rngs = 2
network = inet.examples.adhoc.grid_aodv.Grid_movilidad
cmdenv-express-mode = true
tkenv-plugin-path = ../../../Etc/plugins
#tkenv-default-run=1
**.vector-recording = false
cmdenv-express-mode = true
*.numHosts =25
*.nodeSeparation = 150
*.playgroundSizeX = 500
*.playgroundSizeY = 500
**.channelNumber = 0
**.numberOfChannels = 1
**.debug = true
**.coreDebug = false
**.channelNumber = 0
**.wlan.mgmt.frameCapacity = 10
*.channelcontrol.carrierFrequency = 2.4GHz
*.channelcontrol.pMax = 2.0mW
*.channelcontrol.sat = -110dBm
*.channelcontrol.alpha = 2
*.channelcontrol.numChannels = 1
**.host[0].udpApp[0].destAddresses ="random_name(host)"
**.host[1].udpApp[0].destAddresses="random_name(host)"
**.host[2].udpApp[0].destAddresses="random_name(host)"
**.host[3].udpApp[0].destAddresses="random_name(host)"
**.host[4].udpApp[0].destAddresses="random_name(host)"
**.host[*].udpApp[0].destAddresses=""
**.udpApp[0].localPort=1234
**.udpApp[0].destPort=1234
**.udpApp[0].messageLength=512B # Bytes
**.udpApp[0].messageFreq = 0.25s
**.udpApp[0].message_freq_jitter=uniform(-0.001s,0.001s,1)
**.udpApp[0].burstDuration = 0s #uniform(1,4,1)
**.udpApp[0].activeBurst=true # if false all packet to the same address, if true select
new destination per burts
**.udpApp[0].time_off = 0s # uniform(10,20,1))
**. udpApp[0].time_begin = 60s
**.udpApp[0].limitDelay =20s
**.udpApp[0].rand_generator=1
**.udpApp[0].time_end=0s
**.host*.mobilityType = "inet.mobility.NullMobility"
**.host*.mobility.speed = 20mps #uniform(0mps,20mps)
**.host*.mobility.updateInterval = 0.1s
**.host*.mobility.scrollX = 50
**.host*.mobility.scrollY = 50
**.host*.mobility.nodeId = -1
# ip settings
**.routingFile=""
**.ip.procDelay=10us
# **.IPForward=false
# ARP configuration
**.networkLayer.proxyARP = true # Host's is hardwired "false"
**.arp.retryTimeout = 1s
**.arp.retryCount = 3
**.arp.cacheTimeout = 100s
# manet routing
**.manetrouting.manetmanager.routingProtocol = "DYMO"# DSR/AODV/OLSR
# nic settings
**.wlan.mgmt.frameCapacity = 10
**.wlan.mac.address = "auto"
**.wlan.mac.maxQueueSize = 14
**.wlan.mac.rtsThresholdBytes = 3000B
**.wlan.mac.bitrate = 54Mbps
**.wlan.mac.basicBitrate = 24Mbps # 24Mbps
**.wlan.mac.retryLimit = 7
**.wlan.mac.cwMinData = 31
**.wlan.mac.cwMinBroadcast = 31
**.wlan.mac.opMode = 2 # 802.11g
**.wlan.mac.slotTime = 9us #
**.wlan.mac.AIFSN = 2 #DIFS
**.wlan.radio.transmitterPower = 2.0mW
**.wlan.radio.pathLossAlpha = 2
**.wlan.radio.snirThreshold = 4dB # in dB
**.wlan.radio.bitrate = 54Mbps
**.wlan.radio.thermalNoise = -110dBm
**.wlan.radio.sensitivity = -85dBm
**.wlan.radio.phyOpMode = 2 #1/2 802.11b/802.11g-only
**.wlan.radio.channelModel = 1 #1/2 rayleigh/awgn
**.wlan.radio.berTableFile = "per_table_80211g_Trivellato.dat"
**.broadCastDelay=uniform(0s,0.005s)
#/ parameters : DYMOUM
**.no_path_acc_ = false
**.reissue_rreq_ = false
**.s_bit_ = false
**.hello_ival_ = 0
**.MaxPktSec = 20 #// 10
**.promiscuous = false
**.NetDiameter = 10
**.RouteTimeOut = 3000
**.RouteDeleteTimeOut = 3000*5 #//5*RouteTimeOut
**.RREQWaitTime = 1000
**.RREQTries = 3
**.noRouteBehaviour = 1
# // parameters: AODVUU;
**.log_to_file = false
**.hello_jittering = true
**.optimized_hellos = true
**.expanding_ring_search = true
**.local_repair = true
**.rreq_gratuitous = true
#**.debug = false
**.rt_log_interval = 0
**.unidir_hack = 0
**.internet_gw_mode = 0
**.receive_n_hellos = 1
**.ratelimit = 1000
**.llfeedback = false# //1000
**.wait_on_reboot = 0
**.active_timeout = 6000 # // time in ms
**.internet_gw_address = "0.0.0.0"
# // parameters: DSRUU;
**.PrintDebug = true
**.FlushLinkCache = true
**.PromiscOperation = false
**.UseNetworkLayerAck = false
**.BroadCastJitter = 20 # 20 ms
**.RouteCacheTimeout = 300 #300 seconds
**.SendBufferTimeout = 300# //30 s
**.SendBufferSize = -1
**.RequestTableSize = -1
**.RequestTableIds = -1
**.MaxRequestRexmt = -1 #// 16,
**.MaxRequestPeriod = 10 #//10 SECONDS
**.RequestPeriod = 500 #//500 MILLISECONDS
**.NonpropRequestTimeout = 30# //30 MILLISECONDS
**.RexmtBufferSize = -1 #//MAINT_BUF_MAX_LEN
**.MaintHoldoffTime = 250# //250 MILLISECONDS
**.MaxMaintRexmt = 2 # //2
**.TryPassiveAcks = true #//1
**.PassiveAckTimeout = 100# //100 MILLISECONDS
**.GratReplyHoldOff = 1 #, //1 SECONDS
**.MAX_SALVAGE_COUNT = 15 # //15
**.LifoSize = 20
**.PathCache = true
**.ETX_Active = false
**.ETXHelloInterval = 1 #, // Second
**.ETXWindowNumHello = 10
**.ETXRetryBeforeFail = -1
**.RREPDestinationOnly = false
**.RREQMaxVisit = 5 # // Max Number that a RREQ can be processes by a node
#// Olsr
**.Willingness = 3
**.Hello_ival = 2
**.Tc_ival = 5
**.Mid_ival = 5
**.use_mac = 0 #1
**.Mpr_algorithm = 1
**.routing_algorithm = 1
**.Link_quality = 2
**.Fish_eye = false
**.Tc_redundancy = 3
**.Link_delay = true #//default false
**.C_alpha = 0.2
#// DSDV
**.manetroutingprotocol.hellomsgperiod_DSDV = 1 # //Period of DSDV hello
message generation [seconds]
**.manetroutingprotocol.manetroutingprotocol.timetolive_routing_entry = 5 # // ;
[seconds]
**.netmask = "255.255.0.0" # //
**.MaxVariance_DSDV = 1
**.RNGseed_DSDV = 0
seed-0-mt = 1209575029
seed-1-mt = 449294716
**.host*.mobility.traceFile = "esce_10_no_pausa.1"
• File .awk
BEGIN {
sends = 0;
receives = 0;
sum_delay = 0;
simulation = 0;
numSent = 0;
numReceived = 0;
numReceivedOther = 0;
routing =0;
t = 0;
}
{
# CALCULATE PACKET DELIVERY FRACTION
if ($3 == "Total_send") { sends += $4; t++;}
if ($3 == "Total_received") { receives += $4; }
if ($3 == "sum_delay") { sum_delay += $4; }
if ($3 == "simtime") { simulation += $4; }
if ($3 == "numSent") { numSent += $4; }
if ($3 == "numReceived") { numReceived += $4; }
if ($3 == "Routing-overhead") { routing += $4; }
if ($3 == "numReceivedOther") { numReceivedOther += $4; }
}
END {
printf("Totalsends(pkts) = %.8f\n",sends);
printf("Totalreceives(pkts) = %.8f\n",receives);
printf("mean_delay = %.8f\n",sum_delay/receives);