4路由代理The Routing Agent

protoname/protoname.h

   

   

我们定义了一个叫做agent的新类,包含帮助协议完成其工作所需的属性和函数。

为了说明计时器的使用,我们假设质子体是一个主动的路由协议,需要定期发送一些控制数据包。

   

   

具体看代码

   

   

   

4.1 TCl 钩子

3 节中看到了如何将我们自己的数据包绑定到 Tcl 上。

现在我们将对agent代理类做同样的操作。其目的是让olsr从 Tcl 中实例化

为此,我们必须从下一个代码中描述的类 TclClass 中继承

   

protoname/protoname.cc

   

   

   

4.2计时器 p277

每指定一个任务,该任务就可能要计时器来结束或者进行别的事情

   

   

4.3Agent

4.3.1构造结构

   

4.3.2命令 p105

//打印rtable的一个实例:

//它假设 ns_包含一个模拟器的实例,而 node_是一个由 ns_创建的节点。我们将 255 作为参数传递,因为这是路由代理附加到的端口数。

//simulation.tcl

//1: $ns_ at 15.0 "[$node_agent255] print_rtable"

   

4.3.3 recv() p508

只要收到数据包,这个函数就会被调用。它识别接收到的数据包的类型并相应地处理它。

   

4.3.4 recv_protoname_pkt()

让我们假设路由代理已经收到了一个olsr数据包,从而使得要调用 recv_olsr_pkt()

这个函数的实现将根据具体的协议而有很大的不同

   

!!!黑洞节点在这里设置

   

4.3.5 send_protoname_pkt()

数据包是事件,因此需要安排它们。事实上,发送一个数据包相当于在某个时间安排它

   

4.3.6 reset _protoname_pkt_timer()

我们的数据包发送计时器执行另一个回调(第 4.2 节)来重新安排自己。它是在恢复^质子^pk^计时

()的功能中完成的。我们将在下一个例子中展示,其中 pkt_timer_被重新安排到五秒后过期。

   

olsr中没有

   

4.3.7 forward_data()

//到目前为止,我们主要关注olsr数据包,但现在是时候处理数据包了。

//forward_data()函数决定是否必须将数据包传递到上层代理或转发到其他节点

   

   

posted @ 2022-08-31 11:25  atomxing  阅读(46)  评论(0编辑  收藏  举报