2开始
"物理"结构(文件)
protoname.h |
这是一个头文件,将在该文件中定义所有必要的计时器(如果有的话)和路由代理 |
protoname.cc |
在这个文件中实际上实现了所有的计时器、路由代理和 Tcl 钩子。 |
protoname_pkt.h |
这里声明所有需要交换的包。 |
protoname_rtable.h |
标头文件,其中声明了我们自己的路由表。 |
protoname_rtable.cc |
路由表的实现 |
"逻辑"结构(类)
必须通过从代理类继承来创建代理
代理表示构建或消耗网络层数据包的端点,并用于实现不同层的协议的端点
这是为了实现路由协议,我们必须编码的主要类。此外,该类提供了与 Tcl 接口的链接,因此我们将能够通过用 Tcl编写的模拟脚本来控制路由协议
我们的 routing agent 路由代理将维护一个内部状态和一个路由表(这并不总是需要)。
内部状态可以表示为新类或路由代理内部的属性集合。
我们将把路由表视为一个新的类,protoname rtable
此外,我们的新协议必须定义至少一个新的包类型,这将代表其控制包的格式
hese packet types are defined in protoname/protoname pkt.h
当协议需要定期或在事件发生后的一段时间后发送数据包时,计算计时器类是非常有用的
计时器在许多其他情况下也很有用。想象一下,质子体需要存储在某个时间必须删除的某种内部信息。最好的解决方案是创建一个能够完成此类工作的自定义计时器。计时器还应用于指定路由表中条目条目的时间周期。一般来说,当我们必须在给定的时间安排一个任务时,我们将使用一个计时器
Trace 类是编写有关模拟过程中发生的信息的日志文件的基础
想在代码中打印调试消息时,按照第 25 章[2]中的建议,使用调试()函数是很有用的