1. GPSR协议简介
GPSR通过应用邻居节点和终点的地理位置,允许每个节点对全局路由分配做出决策。当一个节点以贪婪算法转发一个包时,它有比自己更接近终点的邻居节点,这个节点就选择距离终点最近的邻居节点来转发该包。当没有这种邻居节点时,数据包进入周围模式,将包向前传送给网络平面字图的临近节点,直到传到距离终点较近的节点,将包转发的方式为贪婪算法模式。
2. GPSR协议流程
3. 协议源文件
gpsr_packet.h : 定义不同类型的包
gpsr_neighbor.h : 定义该gpsr实现所使用的每个节点的邻居列表
gpsr_neighbor.cc : 邻居列表类的实现
gpsr.h : 该实现的GPSR路由代理函数的定义
gpsr.cc : GPSR路由代理的实现
gpsr_sinklist.h: 用于多个接收器的场景的定义
gpsr_sinklist.cc: 实现gpsr_sinklist.h
4. 宏定义
#define DEFAULT_GPSR_TIMEOUT 200.0 //生存时间
#define INIFINITE_DISTANCE 1000000000.0 //无穷大
#define SINK_TRACE_FILE "sink_trace.tr" //sink_trace文件
#define NB_TRACE_FILE "gpsrnb_trace.tr" //nb_trace文件
#define GPSR_CURRENT Scheduler::instance().clock() //计时器
#define INFINITE_DELAY 5000000000000.0 //无穷大
#define GPSRTYPE_HELLO 0x01 //hello msg
#define GPSRTYPE_QUERY 0x02 //query msg from the sink
#define GPSRTYPE_DATA 0x04 //the CBR data msg
#define GPSR_MODE_GF 0x01 //greedy forwarding mode
#define GPSR_MODE_PERI 0x02 //perimeter routing mode