首页 > IT基础架构 > 网络安全 > 向NS2中添加新协议类型的步骤
[具体的可以参考ping协议的实现例子]
在NS2中定义一种新的类型的packet,至少要实现如下4个步骤。下面以ns2中的tcp包头为例子说明。
具体源码见 "~ns/tcp" 目录、 "~ns/common" 目录以及"~ns/tcl/lib" 目录下的相关文件。
1. 为packet头定义一个struct数据类型, 例如 "struct hdr_tcp"; ( 在 "~ns/tcp/tcp.h" 文件中)
2. 实现该packet的OTcl linkage,即需要定义一个 PacketHeader 类。例如 static class TcpHeaderClass,并需要将"PacketHeader/TCP" 作为参数传给该类的构造函数; (在 "~ns/tcp/tcp.cc" 文件中)
3. 在 "~ns/common/packet.h" 文件中,为 enum packet_t 添加一个新的条目 "PT_TCP" ,并在p_into类的构造函数中添加一个新的数组元素 name[PT_TCP] = "tcp",要注意此处的位置必须对应。
4. 在文件 "~ns/tcl/lib/ns-packet.tcl" 中添加,往 "foreach prot" 中添加一行 "TCP" 。
以上各个步骤中,步骤1是为了定义新的包头格式;步骤2是为了能够将该数据包与Otcl联系起来;步骤3是为了在trace中能够使用该数据包,注意name[PT_TCP]="tcp",其中的 "tcp" 即是出现在trace文件中的第五列,pkt type;步骤4是为了NS在启动的时候能够载入我们定义的包头。
最后需要注意:如果新建的协议是无线路由协议,则还需要在 "~ns/tcl/lib/ns-lib.tcl" 文件中Simulator的create-wireless-node方法中添加相应的处理。
[@more@]来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9378682/viewspace-1018026/ ,如需转载,请注明出处,否则将追究法律责任。