m基于DCAR编码感知的网络路由发现算法matlab仿真

1.算法描述

1.路由请求过程


当一个源节点有数据要向目的节点发送且在当前路由缓存中未发现可用路径时,则启动路由请求过程,下面分步对该过程进行说明:


步骤1:路由建立初期,源节点需要向所有邻居节点发送路由请求信息REQ,转向步骤2;


步骤2:中间节点收到REQ后将依次进行如下处理:


(1)检查本节点的地址是否出现在REQ所保存的路由记录中,如果是,为避免出现环路,则丢弃该RREQ不再处理;


(2)检查本节点地址是否与RREQ中记录的目的地址吻合,如果是,那么此时该节点为目的节点,将进入路由反馈阶段;否则临时存储该RREQ,然后把当前节点信息及其邻居节点信息分别添加到REQ的NodeID和Neighbors中,广播更新后的REQ。重复步骤2直至其到达目的节点。


2.路由反馈过程


目的节点按照如下步骤进行路由反馈:


步骤1:目的节点为其所收到若干路由请求信息生成对应的路由反馈信息REP,此时每个REP包含从源节点到目的节点的路径信息以及这条路径上的所有节点的相关信息。目的节点将根据此信息,沿REQ的反向路径单播传输REP。


步骤2:中间节点收到该REP后将依次执行以下操作:


(1)检查本节点地址是否与REP中记录的目的地址吻合,如果是,那么此时当前节点为源节点,转向步骤3;


(2)计算获取当前节点的缓存队列长度并将其写入REP中;


(3)检查是否有其他数据流的流经信息及相应节点的监听信息存储在该节点的流表中,如果节点流表不为空,则进入编码感知阶段。编码感知阶段主要是根据编码条件获得可与REP中的路由在当前节点处进行编码的数据流集合,并利用此结果对REP中的编码相关信息进行更新,然后按照REP中记录的路径将其传送至下一跳节点。重复步骤2直至其到达源节点。


步骤3:源节点接收到REPs后,分别计算每个路由反馈信息所记录路径的CARM值,选择CARM值最小的路径进行数据传输并将该条路径的信息记录到其路由表中,完成路由表的更新。至此完成整个编码感知路由发现过程。


算法的基本流程如下所示:



2.仿真效果预览

matlab2022a仿真结果如下:




3.MATLAB核心程序

%数据流个数

data_num    = [4:4:40];

%初始化卫星网络模型

Throughput  = zeros(size(data_num));%延迟变量

times       = 400;%模拟卫星运行的时间

Ndata       = 8;%数据流数量


%产生格子矩阵坐标数据点

STEP        = 10;

X0          = 0:STEP:100;

Y0          = 0:STEP:100;

Xset        = [];

Yset        = [];

for i = 1:length(X0)

for j=1:length(Y0)

Xset = [Xset,X0(i)];

Yset = [Yset,Y0(j)];       

end

end

figure;

plot(Xset,Yset,'b.');


REPs=[];

for iii = 1:length(data_num);

iii

Throughput0 = [];

for jjj = 1:times

rng(jjj);

%初始位置

%定义格子网格

Nnode = 25;

SCALE = 100;

%初始节点能量

E0    = 1;

%通信半径

Radius= 20;%

%发送率

Trans = 15e6;%15Mbps

packet= 512; %512byte

Slen  = 3e4;

%在格子网里面随时分布

sels  = randperm(Nnode);

X  = Xset(sels);  

Y  = Yset(sels);      

%         end

%模拟发送数据

data_frame = 2*(rand(1,1024)>=0)-1;

Qmatrix = zeros(Nnode,Nnode);%平均包长矩阵

gmatrix = zeros(Nnode,Nnode);%增益矩阵

rmatrix = zeros(Nnode,Nnode);%丢包率矩阵

dmatrix = zeros(Nnode,Nnode);

ETX     = zeros(Nnode,Nnode);

for i = 1:Nnode

for j = 1:Nnode

Dist = sqrt((X(i) - X(j))^2 + (Y(i) - Y(j))^2);

%a link;

if Dist <= Radius & Dist > 0  

%距离因素

dmatrix(i,j) = Dist;

ETX(i,j)     = 1/Dist;    

gmatrix(i,j) = 1/Dist;

rmatrix(i,j) = Dist/2/SCALE/10;

Qmatrix(i,j) = length(data_frame)*rand;

else

%距离因素

dmatrix(i,j) = inf;

ETX(i,j)     = 0;    

gmatrix(i,j) = 0;

rmatrix(i,j) = inf;

Qmatrix(i,j) = inf;

end;

end;

end;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,100评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,308评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,718评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,275评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,376评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,454评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,464评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,248评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,686评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,974评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,150评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,817评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,484评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,140评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,374评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,012评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,041评论 2 351

推荐阅读更多精彩内容