NS2学习笔记(三)

代理(Agents)

代理是网络层数据包产生和使用的端点,用于实现多层的协议。Agent类部分用OTcl实现,部分用C++实现。C++的代码在~ns/agent.cc和~ns/agent.h中,OTcl的代码在~ns/tcl/lib/ns-agent.tcl中。

 

1.C++实现的Agent类包含的成员变量有:

  • addr_   源地址
  • dst_     目的地址
  • size_    数据包大小(byte)
  • type_   数据包类型
  • fid_     IP流号
  • prio_    IP优先级字段
  • flags_   数据包标志
  • defttl_  默认IP ttl 值

不是每一个Agent或其子类都需要使用以上所有的成员变量,这些成员变量的值可以通过Agent的子类修改。

 

2.C++实现的Agent类包含的方法:

不需要子类重写的方法:

  • Packet* allocpkt()           分配新数据包的空间
  • Packet* allocpkt(int n)    分配新数据包的空间,大小n bytes

需要子类重写的方法:

  • void timeout(timeout number)    超时方法
  • void recv(Packet*,Handler*)        接收方法

allockpkt()方法用于产生需要发送的数据包,它填充默认包头,IP头,标志头的一些字段。如果自己定义了新的包头内容,则需要在子类中自行处理。

recv()方法是代理接收包后的处理方法,在大多数情况下,第二个参数没用。

 

3.OTcl Linkage

OTcl的成员变量和OTcl与C++绑定的成员变量在 ~ns/tcl/lib/ns-default.tcl 文件中设置默认值。

OTcl Agent类的过程(方法)在 ~ns/tcl/lib/ns-agent.tcl 文件中。

 

4.

 

posted @ 2015-01-05 15:53  米其林轮船  阅读(433)  评论(0编辑  收藏  举报