`

NS by Example 笔记(4)Network Components

阅读更多

Network Components 网络组件

 

Figure 6 显示了NS中部分OTcl类的等级结构。

 



 

Figure 6. Class Hierarchy (Partial)

 

层级的根节点是TclObject 类, 它是所有OTcl 库对象(scheduler, network components, timers and the other objects including NAM related ones)的超类superclass。NsObject类是所有基础网络组件对象的超类,它负责处理数据包,也可以用于构成复合的网络对象(compound network object)例如节点和连接。根据可能输出的data path的数量,基础网络组件可进一步地分成2类Connector 和 Classifier 。如果只有一个输出的data path则是Connector 类, 如果可能有多个输出的data path则是 Classifier 类。

 

 

 

节点与路由 Node and Routing

 

节点是一个由节点登记对象和分类器构成的复合对象(见Figure 7)。NS中有2种类型的节点unicast 和multicast。unicast 节点有一个做单播路由的地址分类器去和一个端口分类器。 multicast节点则多具有一个分类器去分类多播数据包和单播数据包, 并且执行多播路由。 



 

Figure 7. Node (Unicast and Multicast)

 

NS中默认的节点的是Unicast 节点。要创建 Multicast 节点的话,需要在OTcl脚本中建立scheduler 对象后马上显示的声明。 指定了节点类型后,还可以指定路由协议type 如果不想使用默认的。

  • Unicast
    - $ns rtproto type
    - type: Static, Session, DV, cost, multi-path
     
  • Multicast
    - $ns multicast (right after set $ns [new Scheduler])
    - $ns mrtproto type
    - type: CtrMcast, DM, ST, BST

更多关于路由的信息可以参考NS 手册 http://www.isi.edu/nsnam/ns/ns-documentation.html

 

 

 

连接Link

 

连接是NS中另一个主要的复合对象。 当用成员函数 duplex-link 建立一个模拟对象的连接时,在双向上的2个单工的连接被建立。见Figure 8。



 
Figure 8. Link

 

节点的输出队列实际上是作为单工连接对象的一个部件被实现的。数据包从队列传到 Delay 对象,这步模拟了连接延迟。 丢弃了的数据包被发送到一个 Null 代理并释放。 最后, TTL 对象为每个收到的包计算存活时间(Time To Live)参数并更新数据包的 TTL 项。

 

  • 追踪 Tracing

    NS中, 网络活动一般在单工连接上被追踪。如果模拟直接追踪网络活动(使用 $ns trace-all file or $ns namtrace-all file), 则在命令建立连接后像Figure 9中那样插入追踪对象trace objects。也可以明确地建立类型为type 的追踪对象在给出的节点 src dst 之间,通过使用 create-trace {type file src dst} 命令。



 


Figure 9. Inserting Trace Objects

    当每个追踪对象(i.e. EnqT, DeqT, DrpT and RecvT)收到一个包, 它写入到指定的 trace 文件而且不消耗任何模拟时间, 然后传递包到下一个网络对象。 追踪信息的格式在以后介绍(Analysis Example 节中)。

     

  • 队列监听 Queue Monitor

    追踪对象用于记录数据包抵达时间。 尽管可以从追踪信息中得到足够的信息,然而用户更关注明且的输出队列的内部运行情况。例如,用户想要知道 RED 对列的行为,就可以通过测量一个 RED 队列的平均队列大小的动态变化和当前队列大小(i.e. 需要对队列进行监听). 队列监听可以通过使用 queue monitor 对象和 snoop queue 对象来实现,见Figure 10。

     

    Figure 10. Monitoring Queue

    当收到一个包, snoop(窥探)队列对象把这个事件通知给queue monitor对象。 queue monitor 使用这个信息监听队列。 RED 队列监听示例将在RED Queue Monitor Example 小节中介绍。另外snoop queue objects 可以并行的和追踪对象使用。

     

     

数据包传输流示例 Packet Flow Example

 

Figure 11 演示了网络的建立和数据包传输流。 网络中有2个节点(n0 和 n1),它们的网络地址分别为 0 和 1。 一个 TCP 代理附加到 n0 使用 port 0 与附加在n1端口0上的TCP sink 通信。 最终, 一个 FTP 应用(or traffic source)附加到 TCP 代理上, 并请求发送一定量的数据。 




 
Figure 11. Packet Flow Example

上图并没有表现在TCP上准确的FTP行为。它只体现了网络的建立和数据包传输流的内部细节。

  • 大小: 4.9 KB
  • 大小: 6 KB
  • 大小: 1.9 KB
  • 大小: 2.2 KB
  • 大小: 3 KB
  • 大小: 203.9 KB
  • 大小: 3.4 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics