在计网中,我们学习过两种网络链路:点对点链路和广播链路。
点对点链路(point-to-point link)是由链路一端的单个发送方和链路另一端的单个接受方组成,许多链路层协议都是为了点对点链路设计的;点对点(Point-to-Point Protocol,PPP)和高级数据链路控制(High-level Data Link Control,HDLC)是两种这样的协议。
广播链路(broadcast link),能够让多个发送和接受节点都连接到相同的、单一的、共享的广播信道。(用术语“广播”是因为当任何一个节点传输一个帧时,该信道广播该帧,每个其他节点都能收到一个拷贝)以太网和无线LAN是广播链路层技术的例子。
本篇博文考虑的问题是:如何协调多个发送和接收节点对一个共享广播信道的访问,也就是所谓的多路访问问题(multiple access problem)。因为所有的节点都能传输帧,两个以上的节点可能会同时传输帧。当发生这种情况时,所有节点同时接到多个帧;也就是说,传输的帧在所有接收方处发生碰撞(collide)了。通常,碰撞帧的信号纠缠在一起。因此,涉及此次碰撞的所有帧都丢失了,在碰撞时间间隔中的广播信道被浪费了。
为了解决多路访问问题,需要协议来规范节点在共享的广播信道上的传输行为,这种协议就被称为多路访问协议(multiple access protocol)。
在大量的链路层技术中,已经实现了几十种多路访问协议。尽管如此,可以将任何多路访问协议划分为3种类型之一:
1、信道划分协议(channel partitioning protocol);
2、随机接入协议(random access protocol);
3、轮流协议(taking-turns protocol)。
在理想情况下,对于速率为每秒R比特的广播信道,多路访问协议应该有以下所希望的特征:
1、当只有一个节点有数据发送时,该节点据应有Rbps的吞吐量;
2、当有M个节点要发送数据时,每个节点吞吐量为R/Mbps(不是瞬时速率,而是在一些适当定义时间间隔内的平均传输速率);
3、协议是分散的,也就是说不会因为某个主节点故障而使整个系统崩溃,同时,也是不需要同步数据,否则就不是完全分散,比如时隙ALOHA;
4、协议是简单的,使得实现起来代价不是很高。
信道划分协议:
就是把信道划分成小片,可以是时间、频道,或者是编码,然后每片资源分配给不同节点。
1、时分多路复用(time division multiple access,TDMA),将时间划分为时间帧(time frame),并进一步划分每个时间帧为N个时隙(slot),然后把每个时隙分配给N个节点中的一个。
2、频分多路复用(frequency division multiple access, FDMA),将Rbps信道划分为不同的频段(每个频段具有R/N带宽),并把每个频率分配给N个节点中的一个。
3、码分多址(code division multiple access,CDMA),对每个节点分配一种不同的编码,然后每个节点用它唯一的编码来对它发送的数据进行编码。如果精心选择这些编码,CDMA网络具有一种奇妙的特性,即不同的节点能够同时传输,并且他们各自相应的接收方仍然正确接收发送方编码后的数据比特(假设接收方知道发送方的编码),而不在乎其他节点的干扰传输。(CDMA的抗干扰性强,在军方使用一段时候后才民用)
其实TDM和FDM大同小异,优缺点都差不多。TDM来说,两个主要缺陷:1、节点被限制于R/Nbps的平均速率,即使它是唯一有分组要发送的节点;2、节点必须总是等待它在传输序列中的轮次,即使也还是唯一要发送帧的节点。
随机接入协议:
在随机接入协议中,一个传输节点总是以信道的全部速率(即Rbps)进行发送。当有碰撞时,涉及碰撞的每个节点反复地重发它的帧,直到该帧无碰撞地通过为止。但是当一个节点经受一次碰撞时,它不必立刻重发该帧。相反,它在重传该帧之前等待一个随机时延。涉及碰撞的每个节点独立地选择随机时延。因为该随机时延是独立选择的,下述现象有可能发生:这些节点之一所选择的时延远远小于其他碰撞节点的时延,并因此能够无碰撞地将它的帧在信道中发出。
1、时隙ALOHA(slotted ALOHA),最简单的随机接入协议。
前提假设:所有帧由恰好L比特组成;时间被划分为L/Rs时隙(也就是说一个时隙刚刚好等于传输一帧的时间);节点只在时起点开始传输帧;节点是同步的,每个节点都知道时隙合适开始;如果再一个时隙中有两个或更多个帧碰撞,则所有节点在该时隙结束之前检测到该碰撞事件。
令概率p表示可以重传,则1-p表示不可重传。
看起来很多优点,只有一个节点发送的时候可以全速发送,而且也是高度分散的,不过不是完整,需要同步时隙。
但是,如果很多节点需要访问呢?
定义有一个节点传输成功的时隙为成功时隙(successful slot),那么时隙多路访问协议的效率被定义为当有大量的活跃节点且每个节点有大量的帧要发送时,长期运行中成功时隙的份额。
时隙ALOHA的最大效率:当前节点成功重传p,其它节点在此时隙不重传(1-p)^(N - 1),那么任意一个节点的成功传输概率是Np((1-p)^(N - 1)),取极限得到最大效率为1/e=0.37.因此,如果有个能以全速100Mbps传输的信道,从长时间范围来看,该信道的成功吞吐量将小于37Mbps。
2、第一个ALOHA,纯ALOHA(pure ALOHA),实际上是一个非时隙、完全分散的协议。
在纯ALOHA种,当一帧首次到达(从网络层的数据报中传递下来,分组后),节点立刻将该帧完整地传输进广播信道。如果传输的一个帧与一个或多个传输经受了碰撞,这个节点将立即(在完全传输它的碰撞帧之后)以概率p重传该帧。否则,该节点等待一个帧传输时间。在此等待之后,以概率p传输该帧,1-p保持空闲。
同样,推理其最大效率:前面时间不能有帧(1-p)^(N - 1),中间过程也不能有帧(1-p)^(N - 1),那么就是N((1-p)^2(N - 1)),取极限得到最大效率为1/2e,为时隙ALOHA的一半。
3、载波侦听多路访问(carrier sense multiple access, CSMA)
两个主要的规则:
说话前先听,也就是载波侦听(carrier sensing),即一个节点在传输前先听信道。如果来自另一个节点的帧正向信道上发送,节点则等待一段随机时间后再侦听信道。如果侦听到时空闲的,则开始传输,否则再等待另一段随机时间,继续重复整个过程。
如果同时说话,那么都停止说话,在网络领域中被称为碰撞检测(collision detection),即一个传输节点在传输时一直在侦听信道,如果它检测到另一节点正在传输干扰帧,它就停止传输,用某个协议来确定应该在什么时候再尝试下一次传输。
这两个规则包含在载波侦听多路访问(CSMA)和具有碰撞检测的CSMA(CSMA with Collision Detection, CSMA/CD)协议族中。
轮流协议:
前面提到过的多路访问协议的两个理想特性:1、只有一个节点是活跃的,该节点课具有Rbps的吞吐量;2、M个节点是活跃的,每个活跃节点的吞吐量可达到R/Mbps。但是ALOHA和CSMA协议具有第一特性,都不具有第二特性。
一种轮询协议(polling protocol)要求这些节点之一被指定为主节点,主节点以循环的方式轮询(poll)每个节点。(主节点能够通过观察在信道上是否缺乏信号,来决定一个节点何时完成帧的发送)。
轮询协议消除了困扰随机接入的碰撞和空时隙,取得高得多的效率。但是也是有缺点的:1、引入了轮询时延,即通知一个节点可以传输所需的时间;2、单点故障。
另一种轮流协议是令牌传递协议(token-passing protocol),在这种协议中没有主节点。一个小的称为令牌(token)的特殊目的帧在节点之间以某种固定的次序进行交换。是固定的,比如1-2-3……当一个节点收到令牌时,仅当它有一些帧要发送时,才持有这个令牌;否则立即向下一个节点转发令牌;当一个节点收到令牌时,如果确实 有帧要发送,它发送最大数目的帧数,然后再转发令牌。令牌传递是分散的,并且有很高的效率。但是缺点:1、一个节点故障,可令整个信道奔溃;2、节点会忘记释放令牌;3、……