了解载波侦听多路访问CSMA(上)
1.CSMA的思想
CSMA的全称是Carrier Sense Multiple Access,在笔者的理解中,其更趋向于一种理论研究的随机接入协议,或者说,基于其思想诞生了比如CSMA/CD与CSMA/CA这样的具体协议。CSMA可以分成以下三种:
- 1-persistentes CSMA(1坚持-CSMA)
- 0-persistentes CSMA(0坚持-CSMA)
- p-persistentes CSMA(p坚持-CSMA)
从历史上而言,CSMA实际上是源于aloha协议,为了理清协议的设计思路的脉络关系,我们还是有必要对原始的aloha协议做一个说明。Aloha是为无线工作环境设计的一个协议,其最初的思想很简单:“一个aloha节点只要有数据的话,该节点就可以立即发送。当该节点数据发送完之后,其需要等待接收方反馈的ACK。若成功接收到ACK之后,那么这一次传输成功。如果没有收到ACK的话,那么这一次传输失败。该aloha节点会认为网络中还存在另外一个aloha节点也在发送数据,所以造成接收方发生了冲突。最后这些冲突的节点会随机选择一个时间进行回退(backoff),以避免下一次冲突。若冲突节点回退完成,其才可以重新进行发送"。
实际上从初始的aloha协议中,我们就可以看到现在CSMA/CA的影子,网络协议的设计都是符合KISS原则的(Keep It Simple and Stupid),所以实际中我们所应用到的网络协议,其思想都不会是特别复杂。基于aloha协议的思想,CSMA协议对其最大的改进即是引入了LBT机制(Listen Before Talk),在CSMA中的CS(Carrier Sense)即是指Listen监听机制。在LBT机制下CSMA的思想就是:“CSMA节点在每一次发送之前先监听信道是否是空闲的,如果信道不是空闲的话,那么就不发送数据,等待一会再进行尝试。只有确保是空闲的情况下,才可以发送数据,从而避免打断其他节点正在进行的传输过程"。
2.CSMA的工作机制
具体CSMA的工作机制关联着我们之前所叙述的三种CSMA模式,以下我们分别进行叙述:
- 1-persistentes CSMA:“节点需要持续监听信道,一旦节点发现信道空闲后,则立刻发送数据。”。
- 0-persistentes CSMA:“节点不连续监听信道,若该时刻节点监听信道为busy,那么等待一段时间后,再次进行监听。若节点该时刻监听信道为空闲,则立刻发送数据。”
- p-persistentes CSMA:“节点需要持续监听信道,一旦发现信道空闲后,节点以p的概率立刻发送数据,以1-p的概率不发送数据。若节点该时刻不发送数据,那么等待一段时间后,再次进行监听,并以p概率再次发送”。(注:这里所述的p概率可以理解成抛骰子赌大小,如果抛大,那么就发送,反之不发送。其中抛大的概率就是p,而抛小的概率就是1-p)
在以上三种CSMA机制中,若节点传输发送冲突,则类似aloha的基本算法,随机等待一个时间之后,再次进行重试。以上,我们分析了CSMA的基本工作模式,或者称之为CSMA的基本思想,接下来,我们具体讨论有线网络所应用到的CSMA/CD协议。