需要修改aodv.cc文件,以便在MANET和有线网络之间路由数据包

时间:2014-07-15 11:00:46

标签: ns2

//某些功能需要修改:

aodv.cc中的修改

void AODV :: rt_resolve(Packet * p)

在两种情况下调用此函数。首先,当移动节点要发送时 数据包和第二,当中间移动节点接收数据包时 它必须向目的地前进。 如果该函数由想要发送数据的(源)移动节点调用 数据包到某个目的节点,有一个检查确定目的地 是固定节点,到固定节点的路由无效。如果是这种情况, (源)移动节点广播RREQ_I消息以发现网关。 否则,移动节点的行为与AODV草案中描述的相同 修改。 如果函数由已接收数据的中间节点调用 必须转发的数据包,根据不同的方式处理数据包 如果中间节点是移动节点或网关。如果中间 node是一个移动节点,它有一个默认路由,数据包的目的地是a 固定节点。因此,中间移动节点更新其路由条目 固定节点并将数据包转发到网关。另一方面, 如果中间节点是网关,则它已从固定的数据包接收到数据包 目的地为移动节点的节点。因此,网关广播RREQ 消息以发现到目的地的路线。

void AODV :: sendRequest(nsaddr_t dst,u_int8_t flag)

当移动节点需要查找到目的地的路由时,将调用此函数 节点通过广播RREQ。 RREQ根据广播播出 第3.3.1节中描述的扩展环搜索算法。但是,当一个 RREQ已经通过整个网络广播,即当移动节点时 它已经完成了网络范围内的搜索而没有收到任何相应的RREP 假定目标节点是位于Internet上的固定节点。第一, 移动节点更新其固定节点的路由条目。然后,它检查 缓存的数据包发往固定节点。如果有这样的包,他们 被转发到网关。 当移动节点需要找到到a的路由时,也会调用此函数 网关通过广播RREQ_I。 RREQ_I也在广播中播出 作为RREQ消息的方式。移动节点需要找到到网关的路由 当它检测到链路中断并且路由的目的地是固定节点时。

void AODV :: recvRequest(Packet * p)

当移动节点收到RREQ或RREQ_I时,将调用此函数 信息。根据节点是否为a,处理消息的方式不同 移动节点或网关。如果节点是移动节点,则代码不运行 任何修改,即节点试图将RREP单播回发起者 RREQ消息。但是,如果节点是网关,则RREP_I是单播 回到RREQ消息的发起者。

void AODV :: sendReply(nsaddr_t ipdst,u_int32_t hop_count,nsaddr_t rpdst, u_int32_t rpseq,u_int32_t lifetime,double timestamp,u_int8_t flag)

此函数由已收到RREQ或RREQ_I消息的节点调用 并且它是目的地或者有到目的地的新路线。该 函数只是单播一个RREP或RREP_I消息(取决于值 在“flag”字段中)到RREQ或RREQ_I的发起者。看评论 关于函数recvRequest。

void AODV :: recvReply(Packet * p)

当移动节点收到RREP或RREP_I时,将调用此函数 信息。消息的处理方式不同,具体取决于它是否为RREP或 一个RREP_I。如果消息是RREP,则代码运行时不做任何修改。 但是,如果消息是RREP_I,则移动节点保存该地址 网关并使用网关地址创建(或更新)默认路由 作为下一跳。如果移动节点已经有到另一个网关的路由 比新收到的RREP_I消息的发起者,它执行网关 选择以网关的跳数作为度量标准。 然后,移动节点检查它是否有任何在其缓冲区中排队的数据包 对于固定节点。如果存在此类数据包且存在有效的默认路由,则全部 在缓冲区中排队的数据包被转发到网关。 如果使用混合网关发现方法,则由RREP_Is广播 网关定期。当移动节点收到任何这些RREP_I时,它会更新 它的路由条目,用于发起RREP_I和重新广播的网关 因此其他移动节点可以接收网关信息。如果网关收到 一个RREP_I,它丢弃该消息并且不重新广播它,以减少 不必要的网络负载。

rt_entry * AODV :: find_send_entry(rt_entry * rt)

搜索路由表并返回a的正确路由的函数 应该发送分组,即它找到分组应该的正确的下一跳 转发给。这是默认路由所必需的,接下来无效 啤酒花,已被介绍。搜索路由表以寻找正确的下一跳 仅当目的地是固定节点时,否则(如果目的地是移动台) node)该函数只返回路由表中指示的下一跳。 例如,请参阅第4.5.3节中的图4.3。如果这个功能是 如果没有调用,发往FN的数据包将被发送到下一跳“DEFAULT” 在aodv.h中定义为-10。由于没有这个地址的节点,所以 数据包将被丢弃。因此,调用此函数以查找正确的 下一跳,本例中为MN_A。因此,分组被转发到MN_A 它们将它们转发到网关,然后将它们转发给FN。

我无法修改代码,因为我是初学者请帮帮我 提前谢谢

0 个答案:

没有答案