DSDV协议分析
来源:互联网 发布:mac win8压缩软件 编辑:程序博客网 时间:2024/05/29 15:07
In this routing protocol routing messages are exchanged between neighboring mobilenodes (i.e mobilenodes that are within range of one another), not flooding (the route advertisements are not re-broad-casted....) Routing updates may be triggered or routine. Updates are triggered in case a routing information from one of the neighbors forces a change in the routing table. A packet for which the route to its destination is not known is cached if no routing entry in the routing table. w. There is a maximum buffer size for caching the pkts waiting for routing information beyond which pkts are dropped.
In the route-advertisement messages, for each new route, there are three data:
- destination address
- metric
- sequence number which is originally stamped by the destination
All packets destined for the mobilenode are routed directly by the address dmux to its port dmux. The port dmux hands the packets to the respective destination agents. A port number of 255 is used to attach routing agent in mobilenodes. The mobilenodes also use a default-target in their classifier (or address demux). In the event a target is not found for the destination in the classifier (which happens when the destination of the packet is not the mobilenode itself), the pkts are handed to the default target which is the routing agent. The routing agent assigns the next hop for the packet and sends it down to the link layer.
The routing protocol is mainly implemented in C++. See dsdv directory and tcl/mobility/dsdv.tcl for all procedures related to DSDV protocol implementation
Implementation in ns-2
DSDV Packet format
It has a size of 9*N+1. N is the number of changed entries So, the first byte is N, then following 9 bytes in [dstnode:4 + metric:1 + seqno:4 ] and on and on.
HELLO MessagesThere is no hello message in sourcecode. Actually, Update messages are real HELLO messages. because the update is default set to be periodic as much as 15 seconds. There are two kinds of updates:
- Periodically triggered
- Immediately triggered
How long would it take to discover a medium-size topology?
perup_ is set to 15 seconds.... It is not very long. Usually, the topology information should be propagated to each node at 0-2 seconds because those updates are immediately triggered. However, WIRELESS LINK IS NOT RELIABLE FOR BROADCASTING. Therefore, some updates are not heard by all neighbors. It is quite possible that some neighbor will be discovered until the end of another round of updates (10-15 seconds later).
Double IP header bug
The DSDV agent has a 5-packet queue to store packets whose route can not be determined yet.
// see if we can send off any packets we've got queued if (rte.q && rte.metric != BIG) { Packet *queued_p; while ((queued_p = rte.q->deque())) recv(queued_p, 0); // give the packets to ourselves to forward delete rte.q; rte.q = 0;
table_->AddEntry(rte); // record the now zero'd queue }
So, the packet from the node itself, if queued, will be go to recv() function and add an IP header again. The "while loop" code shall be changed as:
while ((queued_p = rte.q->deque())) forwardPacket(queued_p); // give the packets to ourselves to forward
- DSDV协议分析
- DSDV协议
- DSDV路由协议设计
- NS2中DSDV分析
- DSDV路由协议设计续
- 目的节点序列距离矢量(DSDV)协议
- NS2中DSDV, AODV, DSR协议评估
- 三种路由协议的吞吐量对比:aodv,dsdv,dsr
- DSDV的问题(Problems of DSDV)
- AODV=DSR+DSDV
- 【协议分析】DNS协议
- 【协议分析】ARP协议
- 【协议分析】IP协议
- 协议分析
- 协议分析
- Performance Evaluation of DSDV, AODV, and DSR
- Performance Evaluation of DSDV, AODV, and DSR
- TCP_IP协议分析-协议分层
- 《Linux程序设计》读书笔记------第十一章 进程
- Linux输入子系统:事件的编码 -- event-codes.txt
- linux 压缩文件的命令总结
- 【转】Ubuntu安装PHP
- 输入n,输出对应的所有长度为n的二进制串
- DSDV协议分析
- Eclipse导入makefile工程
- 使用bulk进行优化及优化原理
- Sql 语句
- DSR协议分析
- TFS分析(基于1.3.1) -- 配置
- algorithm—fill_n()
- IDEA初接触
- 【没有结局的承诺我依然会遵守,那是我答应你的】