随机访问情况下的多路访问
2015-11-23 16:06
162 查看
前言:
这里是以数据链路层的ALOHO协议算法为例1. pureALOHO
夏威夷大学的Hello算法所有站点直接发送数据,collesion以后就重发,重发前需要等待一个(0,2^k-1)范围的随机时间(二进制指数回退),其中k为该站点重发次数(k一般设上限15,超过上限后,认为断网)
这个算法优点是实现方便,成本低廉;缺点是带宽利用率不高,而且存在先发后到的问题(先发碰撞,平均总比后发碰撞等待的时间长,因为重复的次数多)
它的脆弱时间是两倍的帧传播时间
假设平均每一帧传输成功的概率为p,则传N帧的情况下传过去的帧数满足二项分布
在传输数量N趋向于无穷大时,平均传输帧数S趋向于泊松分布S=Ge−2G,GS=Ge^{-2G},G为一个帧传输时间内,系统产生帧的平均数量,求导可得当G=0.5时,有最大吞吐率0.184
2.时隙ALOHO
某人在论文中提出的算法强制站点只能在时隙开始时才能发送数据,一个时隙长度为一个数据帧的传输时间。
在这个理论的分析下,脆弱时间为一倍的帧传输时间,S=Ge−G,G=1S=Ge^{-G},G=1时有最大值–0.368(最大吞吐率提升了一倍)
然而这个算法只是理论上的,因为需要依靠同步时钟同步各站点时间,而性能提升一倍后最大吞吐率也只有0.368,因此相比成本是划不来的
3.CSMA
也即载波侦听多路访问(Carrier sense multiple access)一位夏威夷大学的访问学者提出的算法,因为需要侦听载波,所以应用前提是载波衰减小的传输方式(比如wired connect)(所以对于夏威夷大学来说并没有什么卵用,不过他们可以用CSMA/CA)
总体讲就是先监听,空闲以后再发送
监听方式分三种
1-持续 如同端口监听中的轮询,不断侦听线路 (大量消耗cpu资源,极易连续发生碰撞)
非持续,侦听线路忙以后,等待一个随机时间后再监听(带宽利用率低)
p-持续 前提是通道有时隙,且时隙>=帧传播时间(路程/速度)(综合前两者优点)
def action_free():
以概率p直接发送数据;
以概率q=1-p,等待下一帧再发送数据
如果侦听线路空闲 执行action_free()
如果线路忙,视为发生碰撞,执行action_busy()
CSMA没有定义如何处理碰撞action_busy(),可以简单地让它们等待一个随机时间
而关于如何应对冲突,又有了两种算法CSMA/CD(CSMA-with-CollisionDeal–碰撞处理) CSMA/CA(CSMA-with-CollisionAvoid–碰撞避免)
3.1CSMA/CD
实现的协议:802.3(Ethernet)家族
802.3u (fast ethenet)(百兆以太网)
802.3z(千兆以太网)
802.3ae(十千兆以太网)
站点在检测到碰撞后,发送一个强干扰信号(确保通知所有站点线路繁忙),
然后使用ALOHO里的二进制回退
这里对要保证检测到所有碰撞,就要保证信号在最远的两个站点来回传送的时间小于一帧的传输时间,即Tfr>=2TpT_{fr}>=2T_p这往往对帧长度的下限有要求
在1-持续方法中,G=1时,有最大吞吐量约0.5G=1时,有最大吞吐量约0.5
在 p-持续方法中 ,G=[3,8],最大吞吐率高达0.9G=[3,8],最大吞吐率高达0.9
3.2CSMA/CA
1 相比有线网,无线网的建站成本要求更高,冲突检测使建站成本上升2 CD还存在隐藏站点问题
3 无线信号衰减快,使冲突检测难
隐藏站问题:
站b位于两个站a,c之间
(a b c)
a,c相互不能就检测到(a,c互为隐藏)
因此存在a,c同时向b发送数据的情况,降低了网络能力。
暴露站
(a b)(c d)
b向a发数据,c向d发数据,本互不干扰
但因bc的监听,误判存在干扰,浪费通道
CSMA/CA 的CTC帧可以解决(两次握手),
当其中一个站点发送RTS帧时,b返回CTC帧,而另一个没有发送RTS的站点接收到这个帧时,就知道隐藏站点正在传输数据
无线传输特别版
802.11
如果检测通道空闲,等待一个帧传输时间(等远方站点传送)
如果仍然空闲,由二进制回退决定进行等待一个随机数量的时隙(竞争)
如果仍然空闲,再传送,如果等待ACK超时,二进制回退(同样有网络不通的k值上限15)
相关文章推荐
- SimpleDateFormat(示例,出错代码)
- php 微信js分享 项目示例 类已经封装
- iOS:开发者中心证书创建流程
- 数据结构实践——用二叉树求解代数表达式
- 比较时间大小工具
- jetty 启动报错: java.net.BindException: Address already in use
- Javascript高级程序设计 第七章 --- 函数表达式
- Linux Shell 编程语法
- srm 555
- Interview Summary
- AlertDialog使用
- tableView的属性设置解析
- java日期格式大全 format SimpleDateFormat
- ServletRequest,HttpServletRequest ServletResponse,ServletResponse的区别
- 被忽略的技能
- 手游性能之渲染分析
- JAVA调用HTTPS双向认证API
- c:out escapeXml
- 第12周项目2-操作用邻接表存储的图
- 做一个Active To