- 1、本文档共12页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
无线网络技术课程论文-在NN的网络拓扑下双信道的分配问题及编程实现分配算法
无线网络技术课程论文
PAGE
PAGE 12
在N*N的网络拓扑下双信道的分配问题及编程实现分配算法
空白小龙
现有的WMN基本上都是采用单信道MAC协议。这种技术限制了整个网络的数据传输速率与网络容量,因为根据无线信道特点,当一个节点向另一个节点传输数据的时候,为了避免冲突,两个节点的所有领节点都不能够进行数据传送(如下图),这就极大地限定了整个网络的容量。
信道1 信道1
D
C
B
A
单信道MAC协议下节点的数据传输
尽管现有的802.11a/b/g与802.16协议在物理层技术上有了很大的进步,如采取了一些有效的功率控制等方法,但仍然不能从根本上满足今天人们对网络带宽日益增大的需求。802.11a/g标准标称的带宽为54Mb/s,但这只是在峰值速率,而在真正应用过程中,由于用户接入时会发生多用户冲突、丢包错误等,因此真正的可达带宽几乎只有标称值的一半。另外,随着接收双方通信距离的增大,数据传输速率会显著下降。
幸运的是,802.11b/g标准和802.11a标准分别提供3个和12个没有交迭的信道(频点),使相邻的节点可以同时使用不同的信道。如果网络中的节点能够同时使用多个信道(如下图),就可以提高网络吞吐量。
信道1 信道2
D
C
B
A
多信道MAC协议下节点的数据传输
实际上,早在移动Ad Hoc网络的设计中,人们就用了多信道的设计思想来提高网络的传输速率与网络容量。WMN是Ad Hoc网络的一种特例,因此,人们仍然可以采用多信道MAC机制,来设计WMN的多信道MAC协议。
多信道MAC协议概括起来,主要有以下几种:
按控制信道分,有专用控制信道的多信道MAC协议和无专用控制信道的多信道MAC协议。前者采用专用的射频(一直在控制信道上)来传递控制信息,这样,能够更有效地传递控制信息,但信道的利用率不高。而后者不能有效地传递控制信息。
按节点射频分,有多射频多信道MAC协议和单射频多信道MAC。前者每个节点有多个射频,这样节点可以同时在多个信道上传输数据,可以再多个信道上实现“边说边听”的功能,更有效地控制节点的传输。
基于这个问题,我通过编程实现了在N*N的网络拓扑下双信道的分配算法,并用图形化的形式很好的展示了在N*N的网络拓扑下双信道(信道1、信道2)的分配情况,通过构建了三个数据结构(图Graph、边ArcCell、点VertexType),编写的信道分配算法我把它命名为Blank算法—BlankAlgorithm。
下面是实现了的在N*N的网络拓扑下双信道的分配算法的运行界面截图,之后再详细的分析此算法的实现过程以及具体解释它的运算机理。
3*3的网络拓扑下双信道(信道1、信道2)的分配情况
4*4的网络拓扑下双信道(信道1、信道2)的分配情况
5*5的网络拓扑下双信道(信道1、信道2)的分配情况
6*6的网络拓扑下双信道(信道1、信道2)的分配情况
下面通过结合Blank算法中的数据结构和具体的代码对3*3的网络拓扑下双信道(信道1、信道2)的分配情况这个特例来分析并且详细解释Blank算法的思考过程及原理。
下面是所有文件的截图:
Blank算法数据结构的核心是图、边、点。
图
点
边
Graph.java
//图
public class Graph{
int row;//行数
int line;//列数
int vexnum,arcnum;//节点的数目和边的数目
VertexType vex[];//图中节点的数据结构类VertexType
ArcCell arcs[][];//图中边的数据结构类ArcCell
//构造方法
public Graph(){}
//在构造方法中对各个数据结构的属性赋值
public Graph(int row,int line){
this.row=row;
this.line=line;
//点数=行数*列数
vexnum=row*line;
//边数的求法
arcnum=row*(line-1)+line*(row-1);
//实例所有的点
vex=new VertexType[row*line];
//实例所有的边
arcs=new ArcCell[row*line][row*line];
}
}
ArcCell.java
//边
public class ArcCell{
int ChannelNumber;//边上的信道信息
}
VertexType.java
//点
public class Ve
文档评论(0)