3.5 实例研究:以太网、WiFi、蓝牙
到目前为止,我们已经讨论了有关构造计算机网络的原理,描述了互联网的“虚拟网络层”IP。在结束本章前,我们将描述三种实际网络的原理与实现。
在20世纪80年代初,美国电子与电气工程师协会(IEEE)成立了一个委员会来制订局域网的一系列标准(802委员会[IEEE 1990]),128它的分会制订了一系列已成为LAN关键标准的规约。在大多数情况下,这些标准基于20世纪70年代由研究而定的已有工业标准。相关的分会以及迄今发布的标准如图3-22所示。
这些标准在性能、有效性、可靠性和成本上有所不同,但它们都提供了在中短距离上相对较高的网络带宽。IEEE 802.3以太网标准极大地赢得了有线LAN市场。作为有线LAN的代表技术,我们将在3.5.1节中描述它。尽管以太网实现有多种可用带宽,但它们的操作原理是相同的。
IEEE 802.5令牌环网标准在20世纪90年代是以太网的一个重要竞争者,它比以太网更有效并能保证带宽,现在已经从市场上消失了。如果读者对这种LAN技术感兴趣,可以在www.cdk5.net/networking找到它的简要描述。以太网交换机的广泛使用(与集线器相对)使得以太网能以提供带宽和延迟保证(进一步的讨论见3.5.1节中“用于实时应用和服务质量至关重要的应用的以太网”)的方式被配置,这是它取代令牌环网技术的一个理由。
IEEE 802.4令牌总线标准是为具有实时需求的工业应用而开发的,并应用于该领域。IEEE 802.6城域网标准覆盖高达50公里的距离,并用于跨城镇的网络。
IEEE 802.11无线LAN标准的出现稍晚一些,但由于许多制造商生产的WiFi产品以及它被安装到大量移动设备和手持计算设备上,它目前已经在市场上占据了主要的位置。IEEE 802.11标准支持具有简单的无线发送器/接收器设备之间的通信,设备间的距离在150米之内,速度可高达54Mbps。我们在3.5.2节描述它的操作原理。IEEE 802.11网络的详情可以在Crow等[1997]以及Kurose和Ross[2007]中找到。
IEEE 802.15.1无线PAN标准(蓝牙)基于1999年由爱立信公司开发的技术,该技术可在不同设备(例如平板电脑、129移动电话和耳机)之间传输低带宽的数字声音和数据,并在2002年标准化成IEEE 802.15.1。3.5.3节将详细介绍蓝牙。
IEEE 802.15.4(ZigBee)是另一个WPAN标准,它用于为家中极低带宽、低能量设备(例如远程控制、防盗报警和加热系统传感器)和无处不在设备(例如Active badge、标签读取器)提供数据通信。这样的网络称为无线传感器网络,它们的应用和通信特征见第19章。
IEEE 802.16无线MAN标准(商用名称为WiMAX)在2004—2005年被批准。IEEE 802.16标准作为家庭和办公室的“最后一公里”连接的电缆和DSL连接的替代品。该标准的一个变体意在替代802.11 WiFi网络成为室内外公共区域中笔记本电脑和移动设备之间的主要连接技术。
20世纪80年代末到90年代初,ATM技术从电信和计算机界的研究和标准化工作中产生[CCITT1990]。它的目标是提供适合电话、数据以及多媒体(高品质语音与视频)应用的高带宽的广域数字网络技术。尽管它被接受的过程比预期缓慢,但ATM现在是超高速广域网的主导技术。它在某些地方的LAN应用中替代了以太网,但在LAN市场上不是太成功,因为100Mbps和1000Mbps以太网通过低得多的价格与之竞争。ATM的详细情况以及其他高速网络技术可以参阅Tanenbaum[2003]和Stallings[2002]的著作。
3.5.1 以太网
以太网是1973年[Metcalfe and Boggs1976;Shoch et al.1982;1985]在Xerox Palo Alto研究中心作为个人工作站和分布式系统研究计划的一部分开发出来的。该实验以太网是第一个高速局域网,展示了链接一个场地里的计算机,并使它们以低错误率、无交换延迟的高速传输速率互相通信的高速局域网的可行性和可用性。最初的以太网原型以3Mbps的速度运行,现在以太网系统的可用带宽已经扩展到10Mbps~1000Mbps。
我们将描述在IEEE 802.3标准[IEEE 1985a]中定义的10Mbps以太网的操作原理。它是第一个广泛部署的局域网技术。100Mbps的变体是现在广泛使用的一种以太网,它的操作原理与10Mbps类似。本节最后将总结目前以太网传输技术更重要的变体以及可用的带宽。所有以太网变体的综合描述,请参见Spurgeon[2000]。
单个以太网是一个简单的或有分支的类似总线的连接,它使用的传输介质由通过集线器或中继器连接的一个或多个连续的电缆段组成。集线器和中继器是连接线路的设备,它使得同样的信号能穿过所有线路。几个以太网可在以太网网络协议层通过以太网交换机或网桥连接。交换机和网桥在以太网帧层操作,130将目的地为邻接以太网的帧转发过去。对于IP这样的高层协议,连接起来的以太网可看做一个网络(如在图3-10中,IP子网138.37.88和138.37.94都由几个以太网组成,它们由标记为Eswitch的交换机连接)。特别是ARP协议(参见3.4.2节),它可以跨越相互连接的一组以太网来解析IP地址;每个ARP请求都广播到子网中所有连接的网络上。
以太网的操作方法定义为“具有冲突检测的载波侦听多路访问”(简称CSMA/CD),它们属于竞争总线类网络。竞争总线使用一种传输介质连接所有的主机。管理介质访问的协议称为介质访问控制(Medium Access Control,MAC)协议。由于单一链路连接所有主机,所以MAC协议将数据链路层协议(负责在通信链路上传输数据包)和网络层协议(负责将数据包传输到主机)的功能合并到一个协议层中。
数据包广播 CSMA/CD网络中的通信方法是在传输介质上广播数据包。所有工作站不断地“监听”介质上传输的数据包的目的地是否是自己。任何想发送消息的工作站会广播一个或多个数据包(在以太网规约中称为帧)到介质上。每个数据包包含目的工作站地址、发送工作站地址和表示要传输消息的变长比特序列。数据传输以10Mbps的速度(在100Mbps和1000Mbps以太网上以更高速度)进行,数据包长度为64B到1518B。因此,在10Mbps以太网上传输一个数据包的时间是50~1200ms,具体时间取决于数据包的长度。尽管除了需要限制冲突产生的延迟外,没有任何其他技术原因需要制订固定的界限,但在IEEE标准中,MTU还是被定义为1518B。
目的工作站的地址通常指一个网络接口。每个工作站的控制器硬件接收每个数据包的一个副本。它比较每个数据包的目的地址和本地的硬编码地址,忽略地址为其他工作站的数据包,并将地址匹配的数据包接收到本地主机。目的地址也可以指定一个广播或者组播地址。普通地址通过最高位与广播地址和组播地址区分(前者为0,后者为1)。全为1的地址被保留为广播地址,在一条消息被网络上所有工作站接收时使用。这可用于实现ARP IP地址解析协议。任何收到具有广播地址的数据包的工作站将把数据包传送到本地主机。组播地址指定了一种受限的广播方式,一个数据包由一组其网络接口被配置为可接收具有组播地址的数据包的工作站接收,但不是所有的以太网接口实现都可以识别组播地址。
以太网网络协议(在一对主机之间传输以太网数据包)由以太网硬件接口实现,而传输层以及传输层之上的协议需要协议软件。131
以太网数据包格式 以太网工作站上传输的数据包(或更准确地说是帧)具有以下格式:
除了已提到目的地址和源地址外,帧还包括一个8字节的固定前缀、一个长度域、一个数据域和一个校验和。前缀用于硬件定时,由7字节的前同步符组成,每个前同步符都包括位模式10101010,后接一字节的开始帧分界符(在图中是S),分界符的模式为10101011。
尽管标准规定单个以太网中的工作站不能超过1024个,但以太网的地址占了6字节,可提供248个不同的地址。这使得每个以太网硬件接口制造商可以给硬件接口分配一个唯一的地址,以保证所有互连的以太网中的工作站都有唯一的地址。美国电气和电子工程师协会(IEEE)作为以太网地址分配的负责方,将不同范围的48比特地址分配给以太网硬件接口制造商。这些地址被称为MAC地址,因为它们用于介质访问控制层。事实上,以这种方式分配的MAC地址已经被IEEE 802家族中其他网络类型(例如802.11(WiFi)和802.15.1(蓝牙))采用为唯一地址。
数据域包含要传输的消息的全部或一部分(如果消息长度超过1500字节)。数据域的下限为46字节,这可以保证数据包最小长度为64字节,设置下限是必要的,这可以保证网络上所有工作站的冲突都能检测到,下文对此做了解释。
帧校验序列是一个校验和,它由发送者产生并插入数据包中,由接收者用于验证数据包。校验和不正确的数据包由接收工作站的数据链路层丢弃。这是端到端争论的应用的另一个例子,即为了保证消息的传输,必须使用像TCP这样的传输层协议,它会对每个接收到的数据包发出确认信息并重传未被确认的数据包。在局域网中,数据出错的情况非常少,所以当需要保证传输时,使用这种错误恢复方法能获得令人满意的效果,并且当不需要保证数据传输时,可以采用像UDP这样开销比较小的协议。
数据包冲突 即使数据包的传输时间相当短,也有可能出现网络上两个工作站同时传输消息的情况。如果一个工作站试图传输一个数据包,而没有检查传输介质是否被另一个工作站使用,就会产生冲突。
以太网有三种机制来处理这种可能性。第一种机制称为载波侦听。每个工作站的接口硬件监听在介质上出现的信号(称为载波,类似于无线电广播)。当一个工作站欲传输一个数据包时,它会等到介质上没有信号出现时才开始传输。132
遗憾的是,载波侦听不能阻止所有的冲突。冲突存在的原因是,一个在介质的某个点插入的信号到达所有的点需要有限时间τ(信号以电波速度传播,大约每秒2×108m)。假设两个工作站A和B几乎同时准备传输。如果A首先开始传输,在A开始传输之后的t<τ时间内,B检查介质,未发现有信号,于是B开始传输,但它干扰了A的传输,最后A和B的数据包都会被干扰、破坏。
从这种干扰中恢复的技术称为冲突检测。当一个工作站通过其硬件输出端口传送一个数据包时,它也监听它的输入端口,并比较两个信号。如果两者不同,则说明发生了冲突。此时工作站停止传输并产生阻塞信号,通知所有工作站产生了一个冲突。我们已经注意到,最小数据包长度可以确保检测到冲突。如果两个工作站几乎同时从网络的另一端传输,它们在2τ秒之内不会意识到冲突(因为当第一个发送者接收到第二个信号时,必须仍然继续发送)。如果它们发送的数据包的广播时间小于τ,就注意不到冲突,因为每个发送工作站直到传输完自己的数据包才会看到别的数据包,而中间的工作站将因为同时接收两个数据包而产生数据崩溃。
阻塞信号发出之后,所有传输工作站和监听工作站取消当前的数据包。传输工作站不得不试图重新传输它们的数据包。这会产生更大的困难。如果发生冲突的工作站都试图在阻塞信号之后立即重传它们的数据包,就可能发生另一个冲突。为避免这种情况,可以使用称为后退的技术。发生冲突的每个工作站选择在传输之前等待一段时间nτ。n是一个随机整数,由每个工作站分别选取,并小于在网络软件中定义的常数L。如果产生进一步的冲突,将L的值加倍,必要的话可将整个过程重复10次。
最后,接收工作站的接口硬件计算校验序列,并将之与数据包中传送的校验和相比。使用这些技术,连接到以太网的工作站便可以在无任何集中控制或同步的情况下管理介质的使用。
以太网的效率 以太网的效率定义为成功传送的数据包的个数与无冲突情况下理论上能传输的数据包的最大值之间的比率。它受τ值的影响,因为数据包传送后的2τ秒间隔是冲突的“机会窗口”,即在数据包开始传输2τs(秒)后不会有冲突发生。网络上工作站的数目以及它们的活动性也会影响效率。
对于长度为1km的电缆,τ的值小于5ms,因此冲突概率很小,足以确保传输的高效性。尽管当通道利用率大于50%时,争夺通道造成的延迟足以令人重视,但以太网仍可以获得80%~95%的通道利用率。因为负载是变化的,所以不可能保证在一段固定的时间内传递给定信息,原因是网络可能在准备传输消息时变成满负荷运行。133但在给定的延迟内传递消息的概率等同或好于其他网络技术。
Xerox PARC的Shoch与Hupp[1980]报告的关于以太网性能的实际测量数据确认了上述分析。在实际中,分布式系统中使用的以太网负载变化很大。很多网络主要用于异步客户-服务器交互,在大多数情况下,网络在无工作站等待传输、通道利用率接近1的状况下运行。支持大量用户进行批量数据访问的网络会承受更多的负载,对于那些携带多媒体流的网络,如果有几个流同时传输的话,则有可能被淹没。
物理实现 上面的叙述定义了所有以太网的MAC层协议。市场对以太网的广泛应用,使得我们可以获得执行以太网算法的低成本的控制器硬件,它已成为很多桌面计算机与消费类计算机的标准部件。
有很多不同的以太网物理实现,它们是基于不同的性能/成本权衡提出的,也利用了不断增长的硬件性能。不同的实现源于使用了不同的传输介质,包括同轴电缆、双绞线(与电话线相似)以及光纤,它们具有不同的传输范围,而使用更高的信号速度,会带来更高的系统带宽与更短的传输范围。IEEE采纳了不同的物理层实现标准,并有一个区分它们的命名方案。可使用10Base5与100BaseT这样的名字,它们具有如下形式:
其中:R=以Mbps计的数据率
B=媒体信号类型(基带或宽带)
L=以米/100计的最大数据片长度或者T(双绞线)
我们将当前可用的标准配置以及电缆类型的带宽与最大范围列在图3-23中。以T结尾的配置由UTP电缆(非屏蔽双绞线,即电话线)实现,它被组织成集线器层次结构,而计算机作为树的叶子。在这种情况下,表中给出的数据片长度是计算机到集线器的最大允许长度的两倍。
针对实时应用和服务质量至关重要的应用的以太网 以太网MAC协议因为缺乏传递延迟的保障,所以不适合实时应用或需要质量保证的应用,这一点经常被讨论。但应该注意到,现在大多数以太网的安装都基于MAC层交换机的使用(如图3-10所示,有关的描述见3.3.7节),而不是以前的集线器或带有堵头的电缆。交换机的使用使得每个主机对应一个单独的网段,除了到达这个主机的包之外没有其他包传递给它。因此,如果到该主机的流量来自一个源,那么就没有介质冲突——有效性是100%,延迟是常量。竞争的可能性仅出现在交换机上,这些能够并且经常用于并发地处理包。因此,一个轻负载的基于交换机的以太网安装几乎100%有效,能延迟通常是一个小常量,所以它们经常被成功地用于关键性应用。
对以太网风格的MAC协议的实时支持可见[Rether,Pradhan and Chiueh 1998]的描述,类似的方案在开源的Linux扩展[RTnet]中实现。这些软件方法通过实现一个应用层协作协议为介质的使用保留了时间槽,从而解决了竞争问题,它依赖连接到一个网段的所有主机的协作。