16、信道分配问题与多路访问协议(介质访问控制子层)

引言

  • 在物理层叙述过点到点链路,本章将讨论广播网络和相应的协议,广播信道有时候也称为多路访问信道或者随机访问信道。在任何一个广播网络中,关键问题是当多方竞争信道的使用权时如何确定谁可以使用信道。用来确定多路访问信道下一个使用者的协议属于数据链路层的一个子层,该层称为介质访问控制子层(MAC)。
  • 在LAN中,MAC子层显得尤为重要,特别是在无线局域网中,因为无线本质上就是广播信道。相反WAN则使用点到点链路,当然,卫星网络除外。因为多路访问信道和LAN如此紧密,本章也将从总体上讨论LAN。技术上,MAC子层位于数据链路层底部,一般来说只有更好地理解了只有两方参与的协议之后更易理解多方协同的协议,所以有些偏离本书自底向上的顺序。

1、信道分配问题

引言

  • 本章的主题是如何在竞争用户之间分配单个广播信道。信道可以是一个地理区域内的一部分无线频谱,也可以是连接着多个节点的单根电缆或者光纤。本节先考察静态分配方案在突发流量情况下的缺点;然后将给出一些假设,这些假设在后面讨论动态分配方案的模型时要用到。

1.1静态信道分配

  • 在多个竞争用户之间分配单个信道的传统做法是把信道容量拆开分给多个用户使用,具体方法可以采用前述的多路复用技术,如FDM等。然而,当发送方的数量非常多而且经常不断变化,或者流量呈现突发性,FDM就存在问题:如果整个频谱被切割成N份,并且当前只有很少的用户(比N少得多)需要进行通信,那么大量的频谱将被浪费掉;而用户数超过了N个,那么部分用户将因带宽不够而遭到拒绝。假设用户数在N个不变,将单个信道划分成多个静态子信道也是低效的:当有些用户停止通信时便开始了带宽的浪费。
  • 静态FDM如此差的性能通过一个简单的排队理论计算就可以看得清清楚楚。我们考虑一个容量为Cbps的信道上发送一帧所需的平均时延T。假设,随机到达帧的平均到达率为λ帧每秒,帧的长度可变,其均值为每帧1/μ位。那么信道的服务率为μC帧每秒。标准的排队理论的结果是:T=1/(μC-λ)。如果C为100Mbps,平均帧长1/μ等于10000位,帧的到达率是5000帧每秒,则T=200微秒。而在一个无竞争的信道上,没有排队延迟,在一个100Mbps的信道上发送一个10000位的帧只需要100微秒。
  • 现在我们将单个信道分成N个独立的子信道,每个子信道的容量为C/Nbps。现在,每个子信道的平均到达率变成λ/N。重新计算T,我们得到:TN=1/[ μ(C/N)-(λ/N) ]=N/(μC-λ)=NT。适用于FDM的结论同样也适用于其他划分信道的方法。如果我们打算使用时分复用(TDM)技术为每个用户固定分配每N个时间槽,当一个用户没有使用分配给他的时间槽,那么该时间槽就会空闲。如果我们将物理上将网络分割开,则存在同样的问题。继续引用前面的例子,如果我们用10个10Mbps的网络来代替一个100Mbps的网络且为每一个用户分配其中一个网络,则平均时延将从200微秒跳跃到2毫秒。

1.2动态分配的假设

  • 本章介绍的多种动态信道分配方案需要以下几个假设作为基础:(1)流量独立。该模型是由N个独立的站(比如计算机,电话)组成的,每个站都有一个程序或者用户产生要传输的帧。在长度为∆t的间隔内,期望产生的帧数是λ∆t,这里λ为常数(新帧的到达率)。一旦生成一帧,则站就被阻塞,直到该帧被发送出去。(2)单信道。所有的通信都用这一个信道。所有的站可以在该信道上传输数据,也可以从该信道接收数据。所有站的能力都相同,尽管协议可能为站分配不同的角色(如优先级)。(3)冲突可观察。如果两帧同时传输,则它们在时间上就重叠,由此产生的信号是混乱的,这种情况称为冲突。所有的站都能检测到冲突事件的发生。冲突帧必须在以后再次发送。(4)时间连续分槽。时间可以假设是连续的,即在任何时刻都可以开始传输帧。另一种选择是把时间分槽或者分成离散的间隔(称为时间槽)。帧的传输只能从某个时间槽的起始点开始。一个时间槽可能包含0、1或者多个帧,分别对应于空闲的时间槽、一次发送成功或者一次冲突。(5)载波侦听或不听。有了载波侦听的假设,一个站在试图用信道之前就知道该信道当前是否被使用。如果信道侦听结果是正忙,则没有一个站会使用该信道。如果没有载波侦听,站就无法在使用信道之前侦听信道,它们只能盲目传输,以后判断这次传输是否成功。
  • 流量独立意味着帧的到达是独立的,帧可以来自多个站或者某个特定的站,但以恒定的速率产生帧。单信道的假设是该模型的核心,除了这个信道外,没有任何外部途径可以通信。其余三个假设依赖于该系统的工程。
  • 冲突假设是最基本的。当站要发送时需要一些方法来检测是否发生了冲突,由此决定重传帧而不是任由那些帧被丢失。对于有线信道,节点的硬件可设计成一边发送一边检测冲突;然后,如果发生了冲突,该帧可提前终止传输,以免浪费信道容量。这种检测对于无线信道很难做到,所以冲突的检测通常被推迟到确信没有出现预期的确认帧这样一个既成事实之后。但是由于信道强度以及接受硬件的能力,冲突的帧也有可能被接收,不过这种情况很少见。
  • 对时间给出两种不同的假设在于时间槽可用来改善协议的性能。将时间分为离散的间隔需要所有站都遵循一个主时钟或者它们的行动与其他站同步。类似的,一个网络可能具有载波侦听功能,也可能没有。有线网络通常具有载波侦听功能,无线网络不能有效使用它,因为并不是每个站都在其他各个站的广播范围内。同样,在站不能直接和其他站通信的一些其他设置中,载波侦听也不可用,例如线缆调制解调器,站必须通过线缆头端才能通信。(这个意义上载波一般是指信道上的信号)
  • 没有多路访问协议能保证可靠的传送。即使没有发生冲突,也有一些原因使得接收器错误的复制了帧的某些部分。因此,要由链路层的其他部分或比链路层更高的层次来提供数据传输的可靠性。

2、多路访问协议

2.1ALOHA

引言

  • ALOHA是世界上最早的无线电计算机通信网。它是1968年美国夏威夷大学的一项研究计划的名字。70年代初研制成功一种使用无线广播技术的分组交换计算机网络,也是最早最基本的无线数据通信协议。取名ALOHA,是夏威夷人表示致意的问候语,这项研究计划的目的是要解决夏威夷群岛之间的通信问题。Aloha网络可以使分散在各岛的多个用户通过无线电信道来使用中心计算机,从而实现一点到多点的数据通信。我们将要讨论两个版本的ALOHA:纯ALOHA和分槽ALOHA。它们的区别在于时间是连续的,那就是纯粹的ALOHA;或者时间分成离散槽,所有的帧都必须同步到时间槽中。纯ALOHA中,一旦产生新帧,就立即发送,全然不管是否有用户正在发送,所以冲突可能伴随整个发送过程;分槽ALOHA中,规定发送行为必须在时隙的开始,一旦在开始发送时没有冲突,则该帧将成功发送。

纯ALOHA

  • ALOHA系统的基本思想非常简单:当用户有数据需要发送时就传输,但这样可能因为冲突而损坏帧。发送方需要方法知道是否发生了冲突。在ALOHA系统中,每个站在给中央计算机发送帧之后,该计算机把该帧重新广播给所有站。因此,那个发送站可以侦听来自集线器的广播,以此确定它的帧是否发送成功。在其他系统,如在有线局域网中,发送方在发送的同时能侦听到冲突的发生。
  • 如果帧损坏了,则发送方需要等待一段随机时间,然后再次发送该帧。等待的时间必须是随机的,否则同样的帧会一次又一次产生冲突,如果系统中多个用户共享一个信道的方法会导致冲突,这样的系统称为竞争系统。图中给出了一个ALOHA系统中帧的框架结构。我们使所有的帧具有同样的长度,因为对于ALOHA系统,采用统一长度的帧比长度可变的帧更能到达最大的吞吐量。
    在这里插入图片描述
  • 无论何时,只要两个帧在相同的时间试图占用信道,冲突就会发生并且损坏帧(冲突后帧的校检和会不正确,校检和并不能区分是完全损坏还是局部差错,坏了就是坏了)。
  • 使用帧时来表示传输一个标准的、固定长度的帧所需要的时间(即帧的长度除以比特率)。现在假定站产生的新帧可以模型化一个平均帧时产生N个帧的泊松分布(假设存在无穷多个用户是必须的,因为这样可以确保N不会随着用户变成阻塞状态而下降)。如果N>1,则用户群生成帧的速率大于信道的处理速度,因此,几乎所有的帧都要经受冲突,为了取得合理的吞吐量,我们应该期望0<N<1。
  • 假设除了新生成的帧以外,每个站还会产生由于冲突而重传的帧,假设每个帧时,老帧和新帧也符合泊松分布,每帧时的平均帧数为G。显然G≥N。在负载较低的情况下,即N约等于0,冲突很少发生,因此重传也很少,于是G约等于N。在负载较高时,将会有很多冲突,所以G>N。吞吐量S就是负载G乘以成功传输的概率P0
  • 如果从一帧发送出去开始算起,在一个帧时内没有发出其他的帧,则这一帧就不会遭到冲突。如图所示,假设发送一帧所需时间为t,如果其他用户在t0~t0+t之间生成了一帧,则该帧的结尾部分将与阴影帧的开始部分发生冲突,类似地,在t0+t~t0+2t之间开始发送的任何其他帧将与阴影帧的结尾部分冲突。在这里插入图片描述
  • 在给定的一个帧时内平均帧数是G帧,设生成k帧,其概率服从泊松分布:Pr[k]=(Gke-G)/k!;所以,生成0帧的概率为e-G,在两个帧时长的间隔中,生成帧的平均数是2G。因此,在整个易受冲突期中,生成0帧的概率(在2t的时间内发送成功的概率 = 2t的时间内都没有其它帧生成的概率)是P0=e-2G。利用S=GP0,则可以得到:S=Ge-2G。流量与吞吐量之间的关系如下图。最大的吞吐量出现在等G=0.5时,S=1/2e,大约等于0.184。换句话说,我们可以希望的最好信道利用率是18%。
    在这里插入图片描述

分槽ALOHA

  • 分槽ALOHA将时间分成离散的间隔,这种时间间隔称为时间槽,每个时间槽对应一帧。这种方法要求用户遵守统一的时间槽边界,取得同步时间的一种办法是由一个特殊的站在每个间隔起始时发出一个脉冲信号,就好像一个时钟一样。 此系统将易受冲突期减小了一半,在测试帧所在的同一个时间槽中没有其他流量的概率是e-G,于是S=Ge-G,图中尖峰在G=1处,吞吐量为1/e,大约等于0.368,是纯ALOHA的两倍。如果系统在G=1处,则空时间槽的概率也是0.368。使用分槽ALOHA,我们期望的最好结果是37%为空时间槽,37%为成功,剩下26%为冲突,因为在更高的G值上运行,空时间槽数会降低,但冲突时间槽数会呈指数增长,即信道负载的微小增长也会极大地降低信道的性能。为了看出冲突时间槽数是如何随着G的变化而快速增长,请考虑一个帧的传输过程。该帧能够避免一次冲突的概率是e-G,即所有其他用户在该时间槽中禁止不发帧的概率。于是,冲突的概率为1-e-G。需要k次尝试才能成功传输的概率(第k次成功)为:Pk=e-G(1-e-G)k-1。所以每帧传输次数期望E:
    在这里插入图片描述

2.2载波侦听多路访问协议(CSMA)

引言

  • 利用分槽ALOHA,可以达到的最佳信道利用率是1/e。在一个协议中,如果站监听是否存在载波(即是否有传输),并据此采取相应的动作,则这样的协议称为载波侦听协议。在局域网中,站完全有可能检测到其他站在做什么,通过载波侦听协议可以获得比1/e更高的利用率。

坚持和非坚持CSMA

  • 1-坚持载波检测多路访问是最简单的CMSA方案。当一个站有数据要发送时,它首先侦听信道是否空闲,如果空闲就发送数据,否则等待信道变成空闲再发送。如果发生冲突,该站等待一段随机时间,然后重复上述过程。这样的协议之所以称为1-坚持,是因为当站发现信道空闲时,它传输数据的概率为1。
  • 第二个载波侦听协议是非坚持CSMA。和前一个协议一样,站在发送数据之前要侦听信道,如果没有其他站在发送数据就开始发送自己的数据,否则在信道空闲后再继续等待一段随机时间,重复上述算法。因此,该算法会导致更好的信道利用率,但是比起前一个协议也带来了更大的延迟。
  • 最后一个协议是p-坚持CSMA。它适用于分时间槽的信道,其工作方式:当一个站准备发送数据时侦听信道,如果信道空闲,则它按照概率p发送数据;而以概率q=1-p,将此次发送推迟到下一个时间槽;如果下一个时间槽也是空闲的,则还是以概率p发送,以概率q=1-p推迟,这个过程一直推迟到帧被发送出去,或者另一个站发送数据。如果是后者,那么等待一段随机时间,然后重新开始。如果该站一开始就侦听到信道忙,则等待下一个时间槽应用以上算法。IEEE 802.11对p-坚持CSMA作了细微的改良。
  • 下图显示了几个协议的可计算吞吐量和负载之间的关系。在这里插入图片描述

带冲突检测的CSMA

  • 坚持和非坚持CSMA协议无疑是对ALOHA的改进,因为这些协议都确保了信道忙时,所有站都不再传送数据。然而,如果两个站侦听到信道为空,并且同时传输,则它们的信号仍然会产生冲突。因此,另一个改进是每个站都快速检测到发生冲突后立即停止传输帧(而不是继续完成传输),因为这些帧已经无可挽回地成为乱码,这种策略可以节省时间和策略。这种协议称为带冲突检测的CSMA(CSMA/CD),它是经典以太网的基础。
  • 冲突检测是一个模拟过程,站的硬件在传输时必须侦听信道,如果它读回的信道不同于它放到信道上的信号,则它知道产生了碰撞。言外之意是接收信号相比发射信号不能太微弱(这对无线很难做到,因为接收信号可能弱于发射信号1百万倍,可能难以接收到),并且必须选择能被检测到冲突的调制解调技术(比如,两个0伏信号的冲突很可能无法被检测到)。如同许多其他LAN协议一样,CSMA/CD也使用了下图所示的概念模型。在标记为t0点,一个站已经完成了帧的传送,其他需要发送帧的站已经试图发送了。如果有两个或多个站同时发送,冲突就发生了。如果一个站检测到冲突,它就立即终止自己的传送,等待一段随机时间,然后再重新尝试发送。因此,我们的CSMA/CD模型将由交替出现的竞争期、传输期以及当所有站都静止的空闲期组成。在这里插入图片描述
  • 考虑一个检测到冲突的最坏情形。假设两个相距最远的站传播信号所需时间为τ。在t0时刻,一个站开始传送数据。在t0+τ-ε时刻,也就是信号到达那个最远的站之前的那一刹那,那个站也开始传输,原来的那个站要到2τ-ε才能监听到冲突。如果一个站在传输了2τ后还没有检测到冲突,它可以确保自己抓住了信道。我们可以把CSMA/CD竞争看成是一个分槽ALOHA系统,时间槽宽度为2τ。在1千米的同轴电缆上τ<5微秒。CSMA/CD和分槽ALOHA区别在于,如果信道被抓住,该站能用来剩下的时间槽传输该帧的其余部分,如果帧时相比传播时间长太多,这种差异将能大大提高协议的性能。

2.3无冲突协议

引言

  • 在CSMA/CD中,一旦站已经抓住信道,冲突将不会发生,但在竞争期冲突仍有可能发生。某些协议以根本不可能产生冲突的方式解决了信道竞争问题,但这些协议目前并没有用于主流系统中。

位图协议

  • 这个无冲突协议采用了基本位图法,每个竞争期正好包含N个站所需的N个槽。如果0号站有一帧数据要发送,则它就在0号槽中传送1位,类似的,j号站在j号槽中传送1位来声明自己有帧发送。当遍历了N个槽后,每个站都知道了哪些站有帧传输。这时候,它们便按照数字顺序开始传送数据了。如图。在这里插入图片描述
  • 由于每个站都同意下一个是谁传输,所以不会发生冲突,当所有站检测到最后一个站传送完数据后,另一个N位竞争期开始了。像这样在实际传输数据之前要先广播自己有发送数据愿望的协议,称为预留协议。
  • 为了分析这个协议的性能,将用竞争位槽作为点位来计量时间,并假定数据帧由d个时间单位组成。典型情况下,当低序号要发送数据时,当前槽处于位图中间某个地方,低序号站必须等到扫描完剩下的N/2个站,再等待完成下一轮的扫描,然后再开始传送数据,所以平均等待1.5N个槽;类似的,高序号站平均等待0.5N个槽;对所有站而言,平均等待N个槽。在低负载情况下,每一帧的额外开销是N位,数据长度是d位,于是信道利用率d/(N+d)。在高负载情况下,若所有站在任何时候都要发送数据,则N位竞争期被分摊到N个帧上,因此,每一帧的额外开销只有1位,或者信道利用率是d/(d+1)。一帧的平均时延是所有其他站轮流发送一帧以及一个位图的时间,即(N-1)d+N。

令牌传递

  • 令牌传递也是以预定义的顺序从一个站传到下一站,令牌代表了发送权限。在令牌协议中,网络的拓扑结构被用来定义站的发送顺序,所有站连接成一个单环结构,站在一个方向上接收令牌,在另一个方向发送帧和令牌,这样,它们将绕着环循环到达任何一个目标站。为了阻止帧陷入无限循环,帧的接收站或者在帧完成一个循环后的发送站必须把帧取下来。
  • 并不需要一个物理环来实现令牌传递,连接各站可以是一根长总线。每个站可以通过总线按照预定义的顺序把令牌传给下一站,令牌的拥有者可以发送帧。这个协议称为令牌总线。令牌传递的性能类似于位图协议,尽管现在竞争槽和站被混合在一个周期中。发送一帧后,每个站必须等待所有N个站(包括自身)把令牌发送给下一站,以及其他N-1个站发送完一帧(如果有帧发送的话)。两者的细微差别在于,因为在周期中所有的位置是均等的,所以不存在偏向低序号或者高序号一说。
    在这里插入图片描述
  • 令牌显身于MAC协议,这些协议具有某些一致性。早期的令牌环协议(称为令牌环,并标准化为IEEE 802.5)在20世纪80年代非常流行,是经典以太网之外的另一种选择。20世纪90年代,一种更快的令牌环(称为光纤分布式数据接口)被交换式以太网击败。2000年以后,一个称为弹性数据包环的令牌环被定义为IEEE 802.17,这是对ISP使用的城域环组合所制定的标准化。

二进制倒计数

  • 基本位图协议每个站的开销是1位,扩展到上千个站的网络中不能很好的工作,令牌传递扩展后有同样的问题。如果一个站想要使用信道,它可以二进制位串的形式从高序位开始广播自己的地址。假设所有地址都有同样的长度,不同站地址中的相同位在同时发送时被信道布尔或在一起。这样的协议称为二进制倒计数协议。
  • 假设传输延迟可忽略不计,所有的站几乎能同时看到地址宣告位。为了避免冲突,必须使用一条仲裁规则:一个站只要看到自己的地址位中的0值位置被改写成1,则它必须放弃竞争。例如,如果站0010、0100、1001和1010都试图获得信道,在第一位时间中,这些站分别传送0、0、1和1。它们被OR在一起,得到1。站0010和0100看到了1,它们立即放弃竞争,站1001和1010继续竞争。接下来为0,竞争继续;再接下来的位为1,所以1001放弃竞争,最后胜者是1010,因为它有最高的地址。随后,它可以传送一帧,之后又开始新一轮竞争。该协议的特性是:高序站优先级比低序站的优先级高,这可能是好事也可能是坏事,具体取决于上下文。
    在这里插入图片描述
  • 这种方法的信道利用率为d/(d+log2N),但是如果精心设计帧格式,使得发送方的地址正好是帧内的第一个字段,那么log2N位也不会浪费,所以信道利用率为100%。

2.4有限竞争协议

引言

  • 如何在一个广播网络中获取信道,我们已经考虑了如CSMA那样的竞争协议和无竞争协议两种方案。每一种都可以用低负载下的延迟和高负载下的信道利用率着两个重要指标来衡量。在负载较轻的情况下,竞争方法(即纯ALOHA或分槽ALOHA)更为理想,因为它的延迟短(冲突很少发生);随着负载的增加,信道仲裁所需的开销越来越大;而对于无冲突协议,在低负载情况下具有相对高的延迟,但是随着负载的增加,信道的利用率反而得到提高(因为开销固定)。
  • 综合竞争协议和无冲突协议的优势,在低负载下采用竞争的做法而提供较短的延迟,但在高负载下采用无冲突技术,从而获得良好的信道效率。这样的协议称为有限竞争协议。到目前为止,学习过的协议都是对称的,即每个站企图获得信道的概率为p,不过有时为不同的站分配不同概率系统的性能会有所提高。在讨论非对称协议之前,先快速回顾一下对称协议的性能状况。假设有k个站,它们传输的概率为p。那么某个站成功获得信道的概率是该站以概率p传输,而其他所有站以1-p的概率把传输延迟到下个时间槽,这个值为kp(1-p)k-1。对该式求微分,令其等于0,解出p值,得1/k,带入原式的Pr[p为最佳值时的成功概率]=(1-1/k)k-1。这个概率如图所示,对于站较少的情形,成功率很高;但是一旦站的数量达到5个以后,概率逼近与它的极限值1/e。在这里插入图片描述
  • 只要减少站的数量则概率就能上升,有限竞争协议就是如此工作的。它们将所有站划分成组,只有j号组的成员才允许竞争j号时间槽。如果0组中的一个成员竞争成功,则它获得信道,可以传输帧;如果0组的时间槽是空闲的或者发生了竞争,那么1号组成员开始竞争1号时间槽,以此类推。采用适当分组的方法,可以减少每个时间槽中的竞争数量,从而使得每个时间槽的行为接近图中左侧。
  • 在讨论一般情况前,先考虑一些特殊情形。在一种极端情况下,每个组只包含一个站,这样的分配方案可以保证永远不会发生冲突,如二进制倒计数协议;另一种情形是,每个组有两个站,在一个时间槽中,两个站都要传输数据的概率是p2,对于很小的p,这个值可以忽略不计。随着分配在一个时间槽中的站越来越多,冲突概率随之增加,但是给予各站竞争机会所需的位图扫描长度却缩短了。有限的情况是每个组包含全部的站(即分槽ALOHA)。我们所需的是一种动态地将站分配到时间槽的方法,当负载很低时,每个时间槽中的站点数量就多一些;当负载很高时,每个时间槽中的站点数量就少一些。

自适应树遍历协议

  • 该算法来源于第二次世界大战中美军为了测试士兵是否感染梅毒而设计的算法。如图,将站看做是二叉树的叶节点。在一次传输成功后的第一个时间槽,即0号槽,允许所有的站尝试获取信道;如果它们之中的某个获得了信道,那么它将传输,如果发生了冲突,则在1号槽中,只有位于树中2号节点之下的那些站才可以参与竞争;一方面,如果其中某个站获得了信道,则在该站发送完一帧之后的那个槽被保留给位于节点3下面的那些站,另一方面,如果节点2也发生了冲突,则在2号槽中由位于节点4下面的站竞争。
    在这里插入图片描述
  • 本质上,如果在0号槽中发生了冲突,则整棵树都会被遍历到,按深度优先策略找到所有就绪站。每一个位槽都跟树中某些特定的节点相关联。如果发生了冲突,则在该节点的左子节点和右子节点继续递归搜索。如果一个位槽是空闲的,或者在位槽中只有一个站传送数据,则停止该节点的搜索,因为这表明已经找到了该节点下面所有就绪的站(如果有多个就绪站就一定发生冲突)。
  • 当系统负载较重,即冲突概率较大,将0号槽专门指定给节点1几乎不值得,因为只有当精确地只有一个站有帧发送,这才有意义;基于同样的理由,节点2和3也应该跳过去。很明显负载越重,则越是应该从树的下面节点开始搜索。对树的级数从上往下编号,图中节点1位于第0级,节点2和3位于第1级,以此类推。注意,第i级上的每个节点是其下面总站数的2-i。如果q个就绪站均匀分布,则在第i级上某个特定节点下面期望的就绪站是2-iq。直观上,我们期望开始搜索的最优先级数应该是每个槽中参与竞争的平均站数为1,也就是说,在这级上,2-iq=1,解得i=log2q。
  • 这个算法已经有了大量的改进算法。例如考虑这种情况:只有站G和H想要发送数据,在节点1上,发生冲突所以节点2下面的站开始竞争,却发现它是空闲的;此时探索节点3毫无意义,因为它肯定冲突,对节点3的探测可以跳过,直接探测节点6,当这次探测结果也是空闲的话,可以直接去尝试节点G了。

2.5无线局域网协议

  • 笔记本电脑通过无线电通信,它们组成的系统可以看做是无线局域网。这样的局域网是广播信道的一个例子,它通常具有和有线局域网不同的属性,这些属性导致了无线局域网不同的MAC协议,本节中将讨论一些。无线局域网的一种常见配置是在一座办公大楼内放置一些环绕大楼的接入点(AP),AP通过铜缆或者光纤连接在一起并为连接的站提供接入服务。如果AP和电脑的发射功率调整在一个数十米的范围内,附近的房间就变得像个蜂窝,而整栋楼就像一个蜂窝电话系统,但每个蜂窝只有一个信道可用,被包括AP在内的所有站共享。它通常提供Mbps的带宽,最大可达600Mbps。
  • 因为无线通信系统中站接收到的信道比发出去的可能弱上百万倍,所以很难检测冲突,确认机制可用在事后发现冲突和其他错误。另一个与有线局域网的差异是,无线电传输范围有限,无线局域网中的站或许无法给其他所有站发送帧,接收也是如此。
  • 使用无线局域网的一种方案是尝试使用CSMA:每个站在其范围内侦听是否有其他站在传输,并且只有当没有其他站在传输数据时它才传输,但接收方可能出现冲突。如图a,A开始向B发送帧,由于C侦听不到A,C也向B发送帧,B处将产生冲突,扰乱所有帧(假设没有类似CDMA的编码模式可以提供多信道传输),由于竞争者离得太远而导致站无法检测到潜在的竞争者,这个问题称为隐藏终端问题。
    在这里插入图片描述
  • 另一个问题是暴露终端问题。如图b,B向A传输数据,同时C想给D发送数据;C侦听发现一个传输正在进行,从而得出错误的结论:它不能向D发送数据。能处理无线LAN这些问题的一个早期且有影响力的协议是冲突避免多路访问(MACA)。MACA的基本思想是发送方刺激接收方输出一个短帧,以便其附近的站能检测到该次传输,从而避免在接下去进行的(较大)数据传输中也发送数据,这项技术被用来代替载波侦听。
  • 如图,A首先给B发送一个RTS(Request To Send),这个短帧(30字节)包含了随后将要发送的数据帧长度;然后B用一个CTS(Clear To Send)作为应答,包含了从RTS中复制过来的数据长度,A在收到了CTS帧之后便开始传输。如果一个站听到了RTS帧,那么它一定离A很近,它必须保持沉默,至少等待足够长的时间以便在无冲突情况下CTS被返回给A。如果一个站听到了CTS,那么它一定离B很近,在接下来的数据传输过程中它必须保持沉默,只要检查CTS帧,该帧就知道数据帧的长度,数据传输要持续多久。尽管有了这些防范措施,冲突仍有可能发生。例如,B和C可能同时给A发送RTS帧,在发生了冲突的情况下,发送方(即在期望的时间间隔没有听到CTS)必须等待一段随机时间重试。

猜你喜欢

转载自blog.csdn.net/ao__ao/article/details/85225521