NS2源码图示---物理层

来源:互联网 发布:新窗口打开网页js 编辑:程序博客网 时间:2024/04/29 10:14
为了理清楚NS底层源码的实现原理以及给后来人一些借鉴,我打算近期把NS底层的东西用图示的方式表达出来。为了便于入手和理解,我将从最底层开始画起:

第一篇

Channel(信道)
    信道在通信系统中算是比较底层的东西了,你可以把它看作是通信的介质(声音通过空气才可以传播,信道的作用类似于空气)。无线通信中的信道具体可以指频率或者CDMA中的码道。
    程序中的信道,我宁愿把它想像成管道之类的东西,毕竟它的作用就是连接通信的两端。言归正传,我们来看看NS2中的有线信道吧,对应代码在channel.hchannel.cc中,大致的结构如下图: 


它对外的主要接口是向上层发送sendUp和接受recv
    
我们再来看一下无线信道,对于的源码也在channel.{h,cc}中。大致的结构如下图:


主要的接口同上。Channel应该提供基础设施来支持Mac的载波侦听、竞争和冲突检测,不过ns2.29中,这部分代码都被注释掉了。说明:上图并未列出无线信道的所有属性,只是把主要属性和接口示意出来,下面的图示也是如此。

Phy (物理层)

     在介绍Phy之间,先介绍一个通用连接“上下”的连接器BiConnector,大致的示意图如下:


为了突出重点,图中省略了一些从BiConnector继承的属性。注意图中的chnl_link_node_link_都是结构体类型。chnl_link_的定义如下:
struct {                                                    
      
 Phy *le_next; /* next element */        
       
Phy **le_prev;     /* address of previous next element */
}
chnl_link_的作用是把连在同一条信道(channel)上的Phy都串起来,
node_link_的作用是把连在同一个节点上的Phy都串起来。其它的两个属性node指向节点,channel指向信道。
物理层的主要作用是控制信道的访问,同时也能够设置带宽和计算传输时间等。
ChannelPhy合在一起可以看作我们通常所说的物理层,这样Channel就负责模拟数据包在物理层上的传输,Phy负责控制Channel传输。


原创粉丝点击