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()函数决定是否必须将数据包传递到上层代理或转发到其他节点
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)