当节点接收到基础数据包时,首先需要判断数据包是否有效,遇到以下情况,数据包就会被丢弃或者删除:
- 数据包长度小于或等于数据包header的大小,说明没有包含信息,可以丢弃;
- 消息的time to live<=0;
- 消息的发起者地址是接收节点的主地址,说明该消息是由接收节点发送的;
接下来,若数据包没有被删除,则需要判断消息是否需要处理,遇到以下情况,数据包不会被处理:
节点的重复集合中存在一个重复元组为(D_addr=该消息的发起者地址,D_seq_num=该消息的消息序列,....),说明该消息已被处理过。(可参考“OLSR路由协议 小细节_xihuanmadaima的博客-CSDN博客)
最后,若数据包被判断为需要处理,则根据Message Type的类型进行相应的处理。
数据包转发过程遇到以下情况,数据包不会被转发:
节点的重复集合中存在一个重复元组为(D_addr=该消息的发起者地址,D_seq_num=该消息的消息序列,D_iface_list[该消息的接收接口地址,...],....),说明该消息已被转发过。
若不是以上情况,则按照Message Type的类型进行相应的转发。特殊情况是节点没有指明消息的Message Type,则按照默认转发算法进行转发操作。



