第4章 局域网
4.3 CSMA/CD媒体访问控制
CSMA/CD是一种常用争用的方法来决定对媒体访问权的协议,这种争用协议只适用于逻辑上属于总线拓扑结构的网络。在总线网络中,每个站点都能独立地决定帧的发送,若两个或多个站同时发送帧,就会产生冲突,导致所发送的帧都出错。因此,一个用户发送信息成功与否,在很大程度上取决于监测总线是否空闲的算法,以及当两个不同节点同时发送的分组发生冲突后所使用的中断传输的方法。总线争用技术可分为载波监听多路访问CSMA和具有冲突检测的载波监听多路访问CSMA/CD两大类。
4.3.1 载波监听多路访问CSMA
载波监听多路访问CSMA的技术,也称做无听后说LBT(Listem Before Talk)。要传输数据的站点首先对媒体上有无载波进行监听,以确定是否有别的站点在传输数据。如果媒体空闲,该站点便可传输数据;否则,该站点将避让一段时间后再做尝试。这就需要有一种退避算法来决定避让的时间,常用的退避算法有非坚持、1-坚持、P-坚持三种。
1、非坚持算法
算法规则为:
⑴如果媒本是空闲的,则可以立即发送。
⑵如果媒体是忙的,则等待一个由概率分布决定的随机重发延迟后,再重复前一步骤。
采用随机的重发延迟时间可以减少冲突发生的可能性。非坚持算法的缺点是:即使有几个着眼点为都有数据要发送,但由于大家都在延迟等待过程中,致使媒体仍可能处于空闲状态,使用率降低。
2、1-坚持算法
算法规则:
⑴如果媒体空闲的,则可以立即发送。
⑵如果媒体是忙的,则继续监听,直至检测到媒体是空闲,立即发送。
⑶如果有冲突(在一段时间内未收到肯定的回复),则等待一随机量的时间,重复步骤⑴~⑵。
这种算法的优点是:只要媒体空闲,站点就立即可发送,避免了媒体利用率的损失;其缺点是:假若有两个或两个以上的站点有数据要发送,冲突就不可避免。
3、P-坚持算法
算法规则:
⑴监听总线,如果媒体是空闲的,则以P的概率发送,而以(1-P)的概率延迟一个时间单位。一个时间单位通常等于最大传播时延的2倍。
⑵延迟一个时间单位后,再重复步骤⑴。
⑶如果媒体是忙的,继续监听直至媒体空闲并重复步骤⑴。
P-坚持算法是一种既能像非坚持算法那样减少冲突,又能像1-坚持算法那样减少媒体空闲时间的折中方案。问题在于如何选择P的有值,这要考虑到避免重负载下系统处于的不稳定状态。假如媒体是忙时,有N个站有数据等待发送,一旦当前的发送完成时,将要试图传输的站的总期望数为NP。如果选择P过大,使NP>1,表明有多个站点试图发送,冲突就不可避免。最坏的情况是,随着冲突概率的不断增大,而使吞吐量降低到零。所以必须选择适当P值使NP<1。当然P值选得过小,则媒体利用率又会大大降低。
4.3.2具有冲突检测的载波监听多路访问CSMA/CD
在CSMA中,由于信道传播时延的存在,即使总线上两个站点没有监听到载波信号而发送帧时,仍可能会发生冲突。由于CSMA算法没有冲突检测功能,即使冲突已发和,仍然将已破坏的帧发送完,使总线的利用率降低。
一种CSMA的改进方案是使发送站点传输过程中仍继续监听媒体,以检测是否存在冲突。如果发生冲突,信道上可以检测到超过发送站点本身发送的载波信号的幅度,由此判断出冲突的存在。一于检测到冲突,就立即停止发送,并向总线上发一串阻塞信号,用以通知总线上其它各有关站点。这样,通道容量就不致因白白传送已受损的帧而浪费,可以提高总线的利用率。这种方案称做载波监听多路访问/冲突检测协议,简写为CSMA/CD,这种协议已广泛应用于局域网中。
CSMA/CD的代价是用于检测冲突所花费的时间。对于基带总线而言,最坏情况下用于检测一个冲突的时间等于任意两个站之间传播时延的两倍。从一个站点开始发送数据到另一个站点开始接收数据,也即载波信号从一端传播到另一端所需的时间,称为信号传播时延。信号传播时延(μs)=两站点的距离(m)/信号传播速度(200m/μs)。如图4.9所示,假定A、B两个站点位于总线两端,两站点之间的最大传播时延为tp。当A站点发送数据后,经过接近于最大传播时延tp时,B站点正好也发送数据,此时冲突便发生。发生冲突后,B 站点立即可检测到该冲突,而A站点需再经过一份最大传播时延tp后,才能检测出冲突。也即最坏情况下,对于基带CSMA/CD来说,检测出一个冲突的时间等于任意两个站之间最大传播时延的两倍(2tp)。
数据帧从一个站点开始发送,到该数据帧发送完毕所需的时间和为数据传输时延;同理,数据传输时延也表示一个接收站点开始接收数据帧,到该数据帧接收完毕所需的时间。数据传输时延(s)=数据帧长度(bit)/数据传输速率(bps)。若不考虑中继器引入的延迟,数据帧从一个站点开始发送,到该数据帧被另一个站点全部接收所需的总时间,等于数据传输时延与信号传播时延之和。
由上述分析可知,为了确保发送数据站点在传输时能检测到可能存在的冲突,数据帧的传输时延至少要两倍于传播时延。换句话说,要求分组的长度不短于某个值,否则在检测出冲突之前传输已经结束,但实际上分组已被冲突所破坏。由此引出了CSMA/CD总线网络中最短帧长的计算关系式:
最短数据帧长(bit) 任意两站点间的最大距离(m)
数据传输速率(Mbps) 200m/us
计算时要注意单位统一。
由于单向传输的原因,对于宽带总线而言,冲突检测时间等于任意两个站之间最大传播时延的4倍。所以,
对于宽带CSMA/CD来说,要求数据帧的传输时延至少4倍于传播时延。
在CSMA/CD算法中,一旦检测到冲突并发完阻塞信号后,为了降低再次冲突的概率,需要等待一个随机时间,然后再使用CSMA方法试图传输。为了保证这种退避操作维持稳定采用了一种称为二进制指数退避和算法,其规则如下:
(1)对每个数据帧,当第一次发生冲突时,设置一个参量L=2;
(2)退避间隔取1到L个时间片中的一个随机数,1个小时片等于两站之间的最大传播时延的两倍;
(3)当数据帧再次发生冲突,由将参量L加倍;
(4)设置一个最大重传次数,超过该次数,则不再重传,并报告出错。
二进制指数退避算法是按后进先出LIFO(List In First Out)的次序控制的,即未发生冲突或很少发生冲突的数据帧,具有优先发送的概率;而发生过多次冲突的数据帧,发送成功的概率就更少。
IEEE 802.3就是采用二进制指数退避和1-坚持算法的CSMA/CD媒体访问控制方法。这种方法在低负荷时,如媒体空闲时,要发送数据帧的站点能立即发送;在重负荷时,仍能保证系统的稳定性。由于在媒体上传播的信号会衰减,为确保能检测出冲突信号,CSMA/CD总线网限制一段无分支电缆的最大长度为500米。
4.3.3 IEEE 802.3媒体访问控制协议
1.CSMA/CD总线的实现模型
IEEE 802.3是一个使用CSMA/CD媒体访问控制方法的局域网标准。CSMA/CD总线的实现模型如图4.10所示,它对应于OSI/RM的最低两层。从逻辑上可以将其划分为两大部分:一部分由LLC子层和MAC子层组成,实现OSI/RM的数据链路层功能,另一部分实现物理层功能。
把依赖于媒体的特性从物理层中分离出来的目的,是要使得LLC子层和MAC子层能适应于各类不同的媒体。
物理层内定义了两个兼容接口:依赖于媒体的媒体相关接口MDI和访问单元接口AUI。MDI是一个同轴电缆接口,所有站点都必须遵循IEEE 802.3定义的物理媒体信号的技术规范,与这个物理媒体接口完全兼容。由于大多站点都设在离电缆连接处有一段距离的地方,在与电缆靠近的MAC中只有少量电路,而大部分硬件和全部的软件都在站点中,AUI的存在为MAC和站点的配合使用带来了极大的灵活性。
MAC子层和LLC子层之间和接口提供每个操作的状态信息,以供高一层差错恢复规程所用。MAC子层和物理层之间的接口,提供包括成帧、载波监听、启动传输和解决争用、在两层间传送串行比特流的设施及用于定时等待等功能。
2.IEEE 802.3 MAC帧格式
MAC帧是在MAC子层实体间交换的协议数据单元,IEEE 802.3 MAC帧的格式如图4.11所示.
IEEE 802.3 MAC帧中包括前导码P、帧起始定界符SFD、目的地址DA、源地址SA、表示数据字段字节数长度的字段LEN、要发送的数据字段、填充字段PAD和帧校验序列FCS等8个字段。这8个字段中除了数据字段和填充字段外,其余的长度都是固定的。
前导码字段P占7个字节,每个字节的比特模式为“10101010”,用于实现收发双方的时钟同步。帧起始定界符字段SFD占1个字节,其比特模式为“10101011”,它紧跟在前导码后,用于指示一帧的开始。前导码的作用是使接收端能根据“1”、“0”交变的比特模式迅速实现比特同步,当检测到连续两位“1”(即读到帧起始定界符字段SFD最末两位)时,便将后续的信息递交给MAC子层。
地址字段包括目的地址字段DA和源地址字段SA。目的地址字段占2个或6个字节,用于标识接收站点的地址,它可以是单个的地址,也可以是组地址或广播地址。DA字段最高位为“0”表示单个的地址,该地址仅指定网络上某个特定站点;DA字段最高位为“1”、其余位不为全“1”表示组地址,该地址指定网络上给定的多个站点;DA字段为全“1”,则表示广播地址,该地址指定网络上所有的站点。源地址字段也占2个或6个字节,但其长度必须与目的地址字段的长度相同,宁用于标识发送站点的址。在6字节地址字段中,可以利用其48位中的次高位来区分是局问部地坦还是全局地址。局部地址是由网络管理员分配,且只在本网中有效的地址;全局地址则是由IEEE统一分配的,采用全局地址的网卡出厂时被赋予惟一的IEEE地址,使用这种网卡的站点也就具有了全球独一无二的物理地址。
长度字段LEN占两个字节,其值表示数据字段的内容即为LLC子层递交的LLC帧序列,其长度为0~1500个字节。
为使CSMA/CD协议正常操作,需要维持一个最短帧长度,必要时可在数据字段之后、帧校验序列FCS之前以字节为单位添加填充字符。这是因为正在发送时产生冲突而中断的帧都是很短的帧,为了能方便地区分出这些无效帧,IEEE 802.3规定了合法的MAC帧的最短帧长。对于10Mbps的基带CSMA/CD网,MAC帧的总长度为64~1518字节。由于除了数据字段和填充字段外,其余字段的总长度为18个字节,所以当数据字段长度为0时,填充字段必须有46年字节。
帧校验序列FCS字段是32位(即4个字节)的循环冗余码(CRC),其校验范围不包括前导字段P及帧起始定界符字段SFD。
3. IEEE 802.3 MAC子层的功能
IEEE802.3 标准提供了MAC子层的功能说明,内容主要有数据封装和媒体访问管理两个方面。数据封装(发送和接收数据封装)包括成帧(帧定界和帧同步)、编址(源地址脏乱目的地址的处理)和差错检测(物理媒体传输差错的检测)等;媒体访问管理包括媒体分配和竞争处理。MAC功能模块如图4.12所示。
当LLC子层请求发送一数据帧时,MAC子层的发送数据封装部分便按MAC子层的数据帧格式组帧。首先将一个前导P和一个帧起始定界符SFD附加到帧的开阔部分,填上目的地址和源地址,计算出LLC数据帧的字节数,填入数据长度计数字段LEN。必要时还要将填充字符PAD附加到LLC数据帧后,以确保传送帧的长度满足最短帧长的要求。最后求出CRC校验附加到帧校验列FCS中。守成数据封装后的MAC帧,便可递交MAC子层的发送媒体访问管理部分以供发送。
借助于监视物理层收发信号(PLS)部分提供的载波监听信号,发送媒体访问管理设法避免发送信号与媒体上其它信息发生冲突。在媒体空闲时,经短暂的帧间延迟(提供给媒体恢复时间)之后,就启动帧发送。然后,MAC子层将串行位流送给PLS接口以供发送。PLA完成产生媒体上电信号的任务,同时监视媒体和产生冲突检测信号。在没有争用的情况下,即可完成发送。发送完成后,MAC子层通过LLC与MAC间的接口通知LLC子层,等待下一个发送请求。假如产生冲突,PLS接通冲突检测信号,接着发送媒体访问管理开始处理冲突。道德它发送一串称为阻塞(JAM)码的位诹列来强制冲突,由此食品保证有足够的冲突持续时间,以使其它与冲突有关的发送站点都得到通知。在阻塞信号结束时,发送媒体访问管理就暂停发送,等待一个随机选择的时间间隔后再进行重发尝试。发送媒体访问管理用二进制指数退避算法调整媒体负载。最后,或者重发成功或者在媒体故障、过载的情况下,放弃重发尝试。
接收媒体访问管理部分的功能是,首先由PLS检测到达帧,使接收时钟与前导码同步,并接通载波监听信号。接收媒体访问管理部件要检测到达的帧是否错误,帧长是否超过最大长度,是否为8位的整倍数。还要过滤因冲突产生的碎片信号(即小于最短长度的帧)。
接收数据解封部分的功能,用于检验帧的目的地址字段,以确定本站点是否应该接收该帧。如地址符合,将其送到LLC子层,并进行差错检验。
4.3.4 IEEE 802.3物理层规范
IEEEE 802.3委员会在定义可选的物理配置方面表现了极大的多样性和灵活性。为了区分各种可选用的实现方案,该委员会给出了一种简明的表示方法:
〈数据传输率(Mpbs)> <信号方式> <最大段长度(百米)>
如10BASE5、10BASE2、10BROAD36。但10BASE-F有些例外,其中的T表示双绞线、光纤。IEEE 802.3的10Mbps可选方案见表4.3。
(1)10BASE5和10BASE2。前面介绍IEEEE 802.3时所涉及的物理范围,实际上所说的就是基于以太网的10BASE5。
与10BASE5一样,10BASE2也使用50欧姆同軸电缆和曼切斯特编码.数据速率为10Mbps.两者的区别在于10BASE5使用粗缆(50mm),10BASE2使用细缆(5mm).由于两者数据传输率相同,所以可以使用10BASE2电缆段和10BASE5电缆段共存于一个网络中.
(2)10BASE-T。10BASE-T定义了一个物理上的星形拓扑网,其中央节点是一个集线器,每个节点通过一对双绞线与集线器相连.集线器的作用类似于一个转发器,它接收来自一条线上的信号并向其他的所有线转发.由于任意一个站点发出的信号都能被其他所有站点接收,若有两个站点同时要求传输,冲突就必然发生.所以,尽管这种策略在物理上是一个星形结构,但从逻辑上看与CSMA/CD总线拓扑的功能是一样的。
(3)10BROAD36。10BROAD36是802.3中为一针对宽带系统的规范,它采用双电缆带宽或中分带宽的75欧姆CATV同軸电缆。从端出发的段的最大长度为1800cm,由于是但向传输,所以最大的端-端距离为3600m。
(4)10BASE-F。10BASE-F是802.3中关于以光纤作为媒体的系统的规范。该规范中,每条传输线路均使用一条光纤,每条光纤采用曼切斯特编码传输一个方向上的信号。每一位数据经编码后,转换为一对光信号元素(有光表示高、无光表示低),所以,一个10bps的数据流实际上需要20Mbps的信号流。