ADOV路由和DSR路由matlab對比模擬

软件算法开发發表於2024-06-10

1.程式功能描述

ADOV路由和DSR路由的模擬,模擬輸出網路的路由路徑,跳數,路由長度,並對比ADOV和DSR的效能。

2.測試軟體版本以及執行結果展示

MATLAB2022a版本執行

3.核心程式

Nodes    = 30; 
Radius   = 10; %節點通訊距離 
Sp       = 10;  %開始點	
Ep       = 6; %目標點
X      = 20*rand(1,Nodes);
Y      = 20*rand(1,Nodes);
Z      = 1*rand(1,Nodes);%節點的信任值

figure(1); 
clf; 
hold on; 
%畫拓撲結構
for i = 1:Nodes
    plot(X(i), Y(i), '.'); 
    text(X(i), Y(i), num2str(i)); 
    for j = 1:Nodes
dist = sqrt((X(i) - X(j))^2 + (Y(i) - Y(j))^2); 
        if dist<= Radius   
Fmat(i,j)  = 1;   
Tmat(i,j)  = 1-((Z(i)+Z(j))/2); 
dmat(i,j)  = dist; 
        else 
Fmat(i,j)  = inf; 
Tmat(i,j)  = inf; 
dmat(i,j)  = inf; 
        end  
    end  
end 
%路由  
[path, cost] = func_dijkstra(Sp,Ep,Tmat);



dist_all=0; 
for j=2:length(path) 
dist_all= dist_all + dmat(path(j-1),path(j)); 
end 

for p =1:(length(path)-1) 
    line([X(Sp) X(path(1))],[Y(Sp) Y(path(1))],'Color','r','LineWidth', 1, 'LineStyle', '-') 
    line([X(path(p)) X(path(p+1))], [Y(path(p)) Y(path(p+1))], 'Color','r','LineWidth', 2, 'LineStyle','-')  
end 
grid 




disp('路由:');
path
disp('跳數:');
length(path)-1 
disp('路由長度:');
dist_all


save R1.mat 
18

  

4.本演算法原理

4.1 ADOV路由(Ad hoc On-demand Distance Vector Routing)

ADOV是一種反應式的路由協議,它僅在需要時才建立路由。這種路由協議主要包括三個過程:路由發現、路由維護和路由表更新。

路由發現:

當源節點需要向目的節點傳送資料,但路由表中沒有有效路由時,源節點會發起路由發現過程。它廣播一個路由請求(RREQ)訊息,該訊息包含源節點和目的節點的地址、請求的序列號等資訊。

路由維護:

每個節點都維護一個路由表,其中包含到達已知目的地的下一跳地址和跳數。當節點的路由表發生變化時(例如,鏈路中斷),它會更新其路由表,並可能向鄰居節點傳送路由錯誤(RERR)訊息。

路由表更新:

當節點收到RREQ或RERR訊息時,它會根據這些訊息更新其路由表。如果RREQ訊息提供了一個更好的路由(即跳數更少),則節點會更新其路由表,並可能將RREQ訊息轉發給其鄰居節點。

在ADOV路由中,一個重要的概念是路由度量。路由度量通常基於跳數,但也可以考慮其他因素,如鏈路質量。假設(d(i, j))表示從節點(i)到節點(j)的距離(以跳數計),則路由發現過程可以表示為尋找從源節點(s)到目的節點(d)的最短路徑,即最小化(d(s, d))。

4.2 DSR路由(Dynamic Source Routing)

DSR是一種源路由協議,意味著路由是由源節點確定的,並且路由資訊包含在資料包頭中。DSR同樣是反應式的,它使用路由快取來儲存先前發現的路由。

路由發現:

與ADOV類似,當源節點需要向目的節點傳送資料但沒有有效路由時,它會發起路由發現過程。不同的是,DSR會在RREQ訊息中包含一個路由記錄,該記錄用於記錄從源節點到目的節點的路徑。

路由維護:

DSR使用路由快取來儲存先前發現的路由。當節點收到資料包時,它會檢查資料包頭中的路由資訊,並根據該資訊轉發資料包。如果路由快取中的路由不再有效(例如,由於節點移動導致鏈路中斷),則節點會丟棄資料包,並可能向源節點傳送路由錯誤訊息。

在DSR中,路由發現過程可以表示為尋找從源節點(s)到目的節點(d)的有效路徑(P)。路徑(P)可以表示為一系列節點的序列:(P = \langle s, n_1, n_2, ..., n_k, d \rangle),其中(n_1, n_2, ..., n_k)是路徑上的中間節點。源節點將路徑(P)包含在資料包頭中,以便中間節點能夠根據該路徑轉發資料包。

相關文章