第六章 链路层和局域网

6.1 链路层概述

我们将运行链路层协议的任何设备均称为节点。节点包括主机、路由器、交换机和WiFi接入点。我们也把沿着通信路径连接相应节点的通信信道称为链路。在通过特定的链路时,传输节点将数据报封装在链路层帧中,并将该帧传送到链路中。

6.1.1 链路层提供的服务

链路层协议能够提供的可能的服务包括:

  • 成帧:把网络层数据报和一些首部字段封装成帧。
  • 链路接入:**媒体访问控制(MAC)**协议规定了帧在链路上的传输规则。在点对点电路中(只有一个发送方和一个接收方)MAC的协议较简单(或者不存在),即无论何时链路空闲,发送方都能够发送帧。当多个节点共享单个广播链路时,MAC用于协调多个节点的帧传输。
  • 可靠交付:当链路层协议提供可靠交付服务时,它保证无差错的经链路层移动每个网络层数据报。与运输层类似,通过确认和重传取得。链路层的可靠交付通常用于易于产生高差错的率的链路,例如无线链路,其目的是本地(也就是在差错发生的链路上)纠正一个差错,而不是通过运输层或者应用层协议迫使进行端到端的数据重传。对于低比特的差错的线路(一般是有线线路)链路层可靠交付一般会认为是一种不必要的开销,所以一般不提供。
  • 差错检测和纠正:许多链路层协议提供一种机制来检测这种比特差错。通过让发送节点在帧中包括差错检验比特,让接收节点进行差错检查。链路层的差错检测通常更复杂并且用硬件实现。接收方还拥有检错和纠错功能。

6.1.2 链路层在何处实现

链路层是实现在路由器中的线路卡中的。那么在主机上呢?链路层的主体部分是在网络适配器中实现的,网络适配器有时也称为网络接口卡(NIC)。位于网络适配器核心的是链路层控制器,该控制器通常是一个实现了许多链路层服务的专用芯片。因此,链路层控制器的许多功能是由硬件实现的。

在发送端,控制器取得了由协议栈较高层生成并储存在主机内存中的数据报,在链路层帧中封装该数据报(填写各个字段),然后遵循链路接入协议将该帧传进通信链路中。在接收端,控制器接受了整个帧,抽取出网络层数据报。如果链路层执行了差错检测,则需要发送控制器在该帧的首部设置差错检测比特,由接受控制器执行差错检测。

链路层是硬件和软件的结合体,即此处是协议栈中软件和硬件交接的地方。

6.2 差错检测和纠正技术

本节中我们研究几种简单的检测比特差错的技术,并在某些情况下能够纠正差错。

在发送节点,为了保护比特免受差错,使用差错检测和纠正比特(EDC)来增强数据D。通常要保护的数据不止数据字段,还包括首部字段,D和EDC都被发送到接收端,接受到比特序列D’和EDC’(可能与初始不同)。差错检测和纠错技术越复杂导致的开销越大(检测不出来差错的概率越小),也就意味着需要更多的计算量和差错检测和纠错比特。下面我们学习三种技术。

6.2.1 奇偶校验

单个奇偶校验位和二维奇偶校验。不再赘述。

接收方检测和纠正差错能力被称为前向纠错(FEC)。这些技术通常用于如音频CD这样的音频储存和回放设备中。在网络环境中,FEC技术可以单独应用,或与链路层ARQ技术(自动重传)一起应用。FEC技术可以减少所需的发送方重发的次数,也允许在接收方立即纠正差错。FEC避免了不得不等待的往返时延,而这些时延是发送方收到NAK分组并向接收方重传分组所需要的,这对于实时网络应用或者具有长传播时延的链路可能是一种非常重要的优点。

6.2.2 检验和方法

通常更多的应用于运输层。

数据的字节被作为16比特的整数对待并求和,这个和的反码形成了携带在报文段首部的因特网检验和。接收方通过对接受的数据(包括检验和)的和取反码,并且检测其结果是否全为1来检测检验和,如果这些比特中有任何是0,就可以指示出差错。

6.2.3 循环冗余检测(CRC)

更多的应用在适配器中的链路层。

CRC编码也成为多项式编码,因为该编码能够将要发送的比特串看作系数为0和1的一个多项式,对比特串的操作被解释为多项式算术。

细节见书,懒得写了0.0

6.3 多路访问链路和协议

网络链路有两种类型:点对点链路和广播链路。

广播链路能够让多个发送方和接收节点都连接到相同的、单一的、共享的广播信道上。使用广播是因为当任何一个节点传输一个帧时,信道广播该帧,每个其它节点都收到一个副本。以太网和无线局域网是广播链路层技术的例子。本节我们探讨:如何协调多个发送和接收节点对一个共享广播信道的访问,这就是多路访问问题。广播信道通常用于局域网中。

计算机网络广播信道上的节点既能够发送也能够接收,通过多路访问协议来规范节点在共享的广播信道上的传输行为。

因为所有节点都能被传输帧,那么所有节点都会同时接收到帧,这时候接收方处的帧就会碰撞了,碰撞的帧是因为信号纠缠在一起而不会被正常使用而会丢失,在碰撞时间间隔内的广播信道被浪费掉了。显然频繁的传输帧会导致很多碰撞从而浪费掉广播信道上的大量带宽。所以为了保护信道正常工作,通过多路访问协议协调这些节点是非常有必要的。

我们可以大致把多路访问协议划分为三种:信道划分协议随机接入协议轮流协议

假定在理想条件下。对于速率为Rbps的广播信道,多路访问协议应该具有以下特性:

  • 1) 当仅有一个节点发送数据时,该节点具有Rbps的吞吐量。
  • 2) 当有M个节点发送数据时,每个节点吞吐量为R/Mbps。(非瞬时,而是在一段时间内的平均值)
  • 3) 协议是分散的,也就是说不会因某个节点故障而使得整个系统崩溃。
  • 4) 协议是简单的,实现不贵。

6.3.1 信道划分协议

先来看看时分多路复用(TDM),它将时间划分为时间帧,并进一步将时间帧划分为N个时隙然后把每个时隙分配给N个节点中的一个,某个节点只能在对应的时隙中发送分组。通常时隙长度应该能传输单个分组。(也就是说,A先说半分钟,B再说半分钟,C。。。然后又回到A)

这个东西消除了碰撞并且非常公平,每个节点在每个帧时间内得到了专用的传输速率R/Nbps。但是有缺陷,首先传输速率被限制了,即使我是信道中唯一一个想发送分组的节点,而在这种情况下我也不得不等待我的轮次。

再来看看频分多路复用(FDM),它将Rbps信道划分为不同的频段,每个频段具有R/N带宽,并把每个频率分配个N个节点中的一个,但是缺陷和上一种类似。

还有一种信道划分协议叫做码分多址(CDMA)对每一个节点分配一种不同的编码,然后每个节点用它唯一的编码来对它发送的数据进行编码,这个方法能实现同时接收而不产生干扰,具体后面会讲。

6.3.2 随机接入协议

在这个协议中,一个节点总是以信道的全部速率(Rbps)来发送,当有碰撞时,设计碰撞的每个节点反复地重发它的帧,直到该帧无碰撞的通过为止。但是一个节点经历碰撞时,不会立即重发这个帧,而是会等待一个时间,这个时间是独立且随机的,所以这些节点之一所选择的时延充分小于其他碰撞节点的时延从而无碰撞的发出是可能的。

只要我足够随机,我的帧总有一天能硬怼出去

1.时隙ALOHA协议

我们做下列假设:

  • 所有帧由L比特组成。
  • 时间被划分成长度为L/R秒的时隙(也就是说一个时隙等于传输一帧的时间)。
  • 节点只在时隙起点传输帧。
  • 节点是同步的,所有节点都知道时隙何时开始。
  • 如果在一个时隙中由两个或者多个帧碰撞,那么所有节点在该时隙结束之前检测到该碰撞事件。

令p是一个概率,在每个节点中时隙ALOHA的操作是简单的:

  • 当一个节点要传送一个帧时,它等到下一个时隙开始并在这个时隙发送整个帧。
  • 如果没有碰撞那么传输成功那么自然也就不需要重传该帧。
  • 如果有碰撞该节点能够在时隙结束之前检测到这个碰撞,该节点以概率p在后续的每个时隙重传它的帧,直到这个帧被无碰撞的传输出去。

以概率p重传是指,在节点在该时隙投掷一枚有偏倚的硬币,分别对应着重传和在下一个时隙重传。

时隙ALOHA有很多优点,当只有一个节点时这个节点可以全速R连续传输。也是高度分散的因为每个节点检测碰撞并独立的决定重传,只不过要保证对时隙同步。

但是当有大量节点有大量帧要发送时我们注意到,一部分时隙有碰撞被浪费掉了,还有一部分时隙会因为没有节点传输数据而被浪费掉,而唯一没有被浪费掉的时隙称为成功时隙,是指恰好只有一个帧在信道中。在时隙多路访问中的效率是指成功时隙所占的比重。如果不使用某种协议进行控制的话,每个节点检测到碰撞后立即重传的话,效率将是0。那么这个最大效率是多少呢?经过数学推导大致为37%(1/e)。

2.ALOHA

这个协议不分时隙,也就是说当一个帧从上层协议到达并封装好后立即完整的传输进信道。如果发生碰撞则立即(在完全传输完这个碰撞帧)以概率p重传。这个完全分散的ALOHA协议的最大效率仅为时隙ALOHA的一半(1/2e)。

3.载波侦听多路访问(CSMA)

在上面两个协议中,好比一个鸡尾酒会中一个粗鲁的客人,一直在逼逼赖赖而不管其他人,我们想要一个更礼貌的协议在谈话中减少与他人相撞的时间从而增加谈话时的数据量。这就要求有两个重要的规则:

  • 说之前先听听,有别人说话你就别说了,没人说了你再说。这就是载波侦听,即一个节点在传输前先听信道,如果来自另一个节点的帧正向信道上发送,节点则等待直到检测到一小段时间没有传输,然后开始传输。
  • 如果你说的同时别人也在说,就憋说了。这就是碰撞检测,即当一个传输节点在传输时一直在侦听此信道。如果它检测到另一个节点正在传输干扰帧,它就停止传输,在重复“侦听-当空闲时传输”循环之前等待一段随机时间。

这两个规则包含在载波侦听多路访问(CSMA)和具有碰撞检测的CSMA(CSMA/CD)协议族中。那么如果所有节点都被侦听了,当初是不是就不会发生碰撞了?当然不是,传播是需要时间的(虽然很短),当A节点监听到信道为空而开始传输时,很可能另一个节点B已经开始传输而只不过帧还没有到达而已,那么一会之后就会开始发生干扰。显然广播信道的端到端信道传播时延在决定其性能方面起决定性的作用。

4.具有碰撞检测的载波侦听多路访问(CSMA/CD)

与上一种不同的是,一旦进行了碰撞检测,当检测到碰撞时将立即停止传输,而上一种出现了碰撞时,这两个节点都将继续完整的传输它们的帧,这是无用帧,所以进行碰撞检测有助于改善协议的性能。

我们先在与广播信道相连的节点中的适配器的角度总结它的运行:

  • 1)适配器从网络层一条获得数据报,准备链路层帧,并将其放入帧适配器缓存中。
  • 2)如果适配器侦听到信道空闲(即无能量信号从信道进入适配器)就开始传输帧;如果侦听到信道在忙,就等着,直到没有能量信号,就开始传输帧。
  • 3)传输过程中也在检测来自其他使用该广播信道的适配器的信号能量的存在。
  • 4)如果适配器传输整个帧而未检测到来自其他适配器的信号能量,该适配器就完成了该帧。反之则停止。
  • 5)终止传输后,适配器等待一个随机时间量,然后返回2)。

我们希望的随机时间间隔应该是:节点少时间隔时间短(从而不会出现大量空闲时间),节点多时间隔时间长(从而尽可能减少潜在的碰撞)。用于以太网以及DOCSIS电缆网络多路访问协议中的二进制指数后退算法简练的解决了这个问题。当传输一个给定帧时,该帧经历了一连串的n次碰撞后,节点随机的从 { 0,1,2 。。。 2^n -1 }中选择一个K值,所以一个帧经历的碰撞越多选择的间隔越大。这个算法还有一个特点是,当几个适配器处于后退方案中时,一个具有新帧的节点大概率能够插入依次依次成功的传输。

5。CSMA/CD效率

令dprop表示信号能量在任意两个适配器之间传播所需要的最大时间,dtrans表示传输一个最大长度的以太网帧的时间。

这里给出近似式:

效率 = 1 /(1+5dprop/dtrans)

当dprop接近0时,效率接近1(可不是嘛,信号chua一下就过去了,效率可不大嘛);dtrans很大时,效率也接近1(只有一个节点一直占着茅坑,虽然其他节点都会一直等,但是总的效率很高,即使只是针对一个节点来说0.0)。

6.3.3轮流协议

多路访问协议的两个理想特性为①只有一个节点活跃时具有Rbps的吞吐量②有M个活跃节点时,每个节点都有接近R/Mbps的吞吐量ALOHA和CSMA具备第一个但是不具备第二个。另一类协议轮流协议就解决了这个问题,轮流协议包括很多种协议而每个协议又有很多变种,在这里我们讲一下轮询协议。这个协议要求这些节点之一被指定为主节点,以循环的方式轮询每个节点。比如向节点1发送一个报文,告诉节点1能传输的帧的最多数量,节点1传输了一些之后又告诉节点2。。。(主节点能通过观察在信道上是否缺乏信号来决定一个节点何时完成了帧的发送。

轮询协议消除了困扰随机接入协议的碰撞和空时隙,使得其取得了高得多的效率。但是也有缺点,第一,引入了轮询时延,即向每一个节点发送报文的时间,而且如果只有一个节点是活跃的那么效率也不会到达R,因为主节点也必须询问其他非活跃节点,这也是需要代价的。第二个缺点,主节点崩了整个系统就崩了。802.15协议和蓝牙协议都是轮询协议。

还有一种轮流协议叫做令牌传递协议,这种协议种没有主节点,一种被称为令牌的小的特殊帧在节点之间以某种固定的次序交换。当一个节点收到令牌时,有帧要传输就传,没有就把令牌传递给下一个节点。这个协议也有缺点,比如一个节点崩了整个系统就崩了,而且如果某个节点偶然的忘记了传递令牌,则必须调用某且返回步骤使令牌回到循环中。

6.3.4 DOCSIS:用于电缆因特网接入的链路层协议

前面三小节我们学习了3大类多路访问协议:信道划分协议、随机接入协议和轮流协议。学习电缆接入网是因为这玩意三种都用到了,帮助我们理解。

一个电缆接入网通常在电缆网头端将几千个住宅电缆调制解调器与一个电缆调制解调器端接系统连接。数据经电缆服务接口规范(DOCSIS)定义了电缆数据网络体系结构及其协议。DOCSIS使用FDM将下行(CMTS到调制解调器)和上行(调制解调器到CMTS)网络段划分为多个频率信道每个上行信道和下行信道具有不同的带宽和吞吐量且均为广播信道。CMTS(电缆数据机终端系统)在下行信道中传输的帧被所有在信道上做接收的电缆调制解调器收到。因为仅有单一的CMTS在下行信道中传输,因此不存在多路访问问题。但是在上行信道上,因为多个电缆调制解调器共享到CMTS的相同上行信道(频率),因此能够潜在的出现碰撞。

每条上行信道被划分为时间间隔(类似于TDM),每个时间间隔包含一个微时隙序列,电缆调制解调器可在该微时隙中向CMTS传输。CMTS在下行信道上通过发送称为MAP报文的控制报文来告诉哪个带有发送数据的调制解调器在哪个特定的微时隙中传输由控制报文指定的时间间隔,由于这种明确分配,所有么得碰撞。

那么CMTS怎么知道哪个有数据要传送呢?CMTS设定了一组特殊的微时隙来让电缆调制解调器们发送请求时隙的请求帧,这些请求帧是随机接入的,所以可能相互碰撞。电缆调制解调器们没法监听信道,也不能检测碰撞,所以如果一个电缆调制解调器在下一个下行控制报文中收到对请求分配的响应的话,它就会觉得它的请求帧碰撞了,然后二进制回退重发。如果上行信道很闲,电缆调制解调器也可能用本来分配给请求帧的时隙来传输数据帧来避免不得不等待的微时隙分配。

6.4交换局域网

6.4.1 链路层寻址和ARP(地址解析协议)

1.MAC地址

事实上并不是主机或者路由器具有链路层地址,而是适配器(网络接口)具有链路层地址。所以有多个接口的主机或者路由器将会有多个链路层地址。链路层交换机并不具备与它们的接口(这些接口是与主机和路由器相连的)相关联的链路层地址。MAC地址也叫LAN地址或者物理地址,对于大多数局域网(包括以太网和802.11无线局域网)MAC地址长度6字节,共有2^48个可能的MAC地址。通常采用16进制表示法,每个字节一对16进制数。尽管MAC地址是永久的,但是用软件改变一个MAC地址被认为是可能的。

没有两块适配器具有相同的MAC地址。适配器的MAC地址具有扁平结构(与层次结构相反),而且适配器地址不会随着位置的改变而变化。IP地址具有层次结构(一个网络部分和一个主机部分),主机移动时,IP地址也会改变。IP地址类似于人的邮政地址,搬家了就变了,MAC地址类似于人的身份证号。

某适配器向某目的适配器发送一个帧时会把目的适配器的MAC地址插入到帧中,一台交换机偶尔会把一个帧广播到所有数据接口,因此一个适配器可以接收一个并非向它寻址的帧。所有当一个适配器收到一个帧时,就检查帧中的目的MAC地址是不是跟自己的一样,一样就提取出数据报并沿着协议栈向上传递,不一样就扔了。有时也会发送帧要求局域网中的所有其他适配器来处理这个帧,这时候填入一个特殊的MAC广播地址(FF-FF-FF-FF-FF-FF)。

2.地址解析协议

因为存在链路层地址(即MAC地址)和网络层地址(例如IP地址,为什么这里是例如呢,因为网络层还具有除了IP之外的其他协议,如果使用IP地址寻址而不是MAC的话,那么适配器将不能方便的支持其他网络层协议工作,这也是MAC地址存在的原因之一),而且还需要在它们之间进行相互转换,所以就有了地址解析协议(ARP)。另外,本节假设交换机广播所有帧。为了发送数据报,源要向它的适配器不仅提供IP数据报还要提供目的主机的IP地址,这就用到了ARP。在发送主机中的ARP模块将取在相同局域网上的任何IP地址作为输入,然后返回响应的MAC地址,这和DNS类似,但不同的是,DNS为在因特网中的任何位置的主机解析主机名,而ARP只为在同一个子网的主机和路由器接口解析IP地址,否则将返回错误。

每台路由器或主机在内存中维护一个ARP表,包含了MAC地址和IP地址的映射关系,也包含一个寿命值(TTL),它指示了从表中删除某个映射的时间。

如果发送端维护的ARP表中没有目的IP地址对应的MAC地址怎么办呢?发送方用ARP协议来解析这个地址也就是发送一个ARP分组,包括源和目的IP地址和MAC地址,查询分组和响应分组都具有相应的格式,查询分组的目的是询问子网上的所有其他主机和路由器。发送方会使用广播地址(FF-FF-FF-FF-FF-FF)来发送分组,适配器在链路层帧中封装这个分组并传输进子网中。联系之前的类比,就好像在一个拥挤的房间大喊:邮政地址是xxx的那个人的身份证号是多少?子网中的每个适配器都会收到这个帧并且向上传递给ARP模块,查询之后与之IP匹配的就发送一个ARP响应分组回去,里面当然包括了它的MAC地址,这时候之前的查询主机就能更新它的ARP表,并且继续之后的发送工作。

3.发送数据报到子网以外

子网1中的一个主机要向子网2中的一个主机发送数据报,假设中间通过一个路由器相连,发送主机要向其适配器指示一个目的MAC地址,这个MAC地址并不是子网2中目的主机的MAC地址,因为在子网一中所有适配器的MAC地址都与这个MAC地址不匹配,这个数据报就狗带了,所以指示的地址应该为路由器本子网接口的IP地址,欸,不是指示MAC地址吗?这个过程通过使用ARP来完成。然后发送端的适配器就创建一个帧,并且最终会送到路由器的网络层(这个帧并没有忘记它的最终目的地是子网2中IP地址为xxx的某个主机)。路由器通过转发表来确定要把这个数据报推给哪个接口,这个接口的适配器把数据报封装到一个新的帧中,并且把这个帧送到子网2中,那么怎么获取这个目的的MAC地址呢?也是通过ARP。

6.4.2 以太网

1.以太网帧结构

【 前同步码 | 目的地址 | 源地址 | 类型 | 数据 | … | CRC 】

发送适配器在一个以太网帧中封装了一个IP数据报,并把该帧传递到物理层。接收适配器从物理层收到这个帧,提取出IP数据报,并将该IP数据报传递给网络层。

  • 数据字段(46~1500字节)。这个字段承载了IP数据报。以太网的最大传输单元(MTU)是1500字节,这意味着如果数据报超过了1500字节就得把这个数据报切了。同理,小于46字节也必须被填充到46字节,这时传递到网络层的数据包包括IP数据报和填充部分,网络层使用IP数据报首部中的长度字段来去掉填充部分。
  • 目的地址(6字节)。包含目的适配器的MAC地址。接收适配器如果接收到一个目的地址是自己的MAC地址的帧或者为广播地址,则向上传,否则丢弃。
  • 源地址(6字节)。源适配器的MAC地址。
  • 类型字段允许以太网复用多种网络层协议,也就是说主机能够使用除了IP以外的其他网络层协议,这个字段和网络层数据报中的协议字段,运输层报文段的端口号字段相类似,都哦是为了把一层中的某协议和上一层中的某协议结合起来。
  • CRC(4字节)。使接收适配器检测帧中是否引入了差错。
  • 前同步码(8字节)。前7个字节都是10101010,最后一个字节是10101011,前7个字节用于唤醒适配器,并且将时钟于发送方的时钟同步(发送端适配器不会以精确的额定速率传输帧,而相对于额定速率总会有一些漂移,局域网上的其他适配器不会预先知道这种漂移的),接收适配器只需锁定前同步码的前7个比特,就能够锁定发送适配器的时钟,第8字节最后两个比特第一个出现两个连续的1警告接收适配器:重要的东西要来了。

所有的以太网技术都向网络层提供无连接服务,也就是说一个适配器向另一个适配器发送以太网帧时并没有提前握手,这种第二层的无连接服务类似于IP的第三层数据报服务和第四层从UDP无连接服务。

以太网技术都向网络层提供不可靠服务,当一个适配器向另一个适配器发送以太网帧时,目的适配器收到这个帧后,通过CRC校验不发送确认帧,没有通过也不发送否认帧,只是丢掉。这种服务使得以太网变得简单和便宜,也意为着它传到网络层的数据报流存在间隙。

目的主机会不会知道这个间隙取决于上层用的是啥,如果是UDP则确实会看到这个间隙,如果是TCP,别忘了TCP提供可靠服务,依然会启动它那重传的一套机制并且确实实现了原来丢失或损坏的数据重传,只不过链路层根本不知道而已,也没有意识到网络层在重传。(我干好我的活儿,你用我的帧重传还是怎的,关爷啥事)

2.以太网技术

以太网实际上有许多种特色和命名,但是许多以太网技术已经被 [IEEE 802.3 2012]标准化了。这些名称首字母缩写的第一部分指该标准的速率:10、100、1000或10G,分别代表10Mbps、100Mbps、1000Mbps和10Gbps。“BASE”指基带以太网,这意味着该物理媒体仅承载以太网流量。几乎所有的802.3标准都是用于基带以太网。缩写词的最后一部分指物理媒体本身;以太网是链路层也是物理层的规范,并且能够经各种物理媒体承载,一般而言“T”指双绞铜线。

6.4.3 链路层交换机

交换机的任务是接收入链路层帧并将它们转发到出链路。交换机自身对子网中的主机和路由器是透明的;这就是说某主机/路由器向另一个主机/路由器寻址一个帧(而不是向交换机寻址该帧),顺利的将该帧发送进局域网,并不知道某交换机将会接收到该帧并将它转发到另一个节点。(也就是说双方只管发和接收,过程是怎样的对双方而言其实并不明确)这些帧到达交换机输出接口之一的速率可能会暂时超过该接口的链路容量,所以为了解决丢帧的问题,交换机的输出接口设有缓存。

1.交换机转发和过滤

过滤是决定一个帧应该转发到某个接口还是应当将其丢弃的交换机功能。转发是决定一个帧应该被导向哪个接口,并把该帧移动到那些接口的交换机功能。交换机的过滤和转发借助于交换机表完成。表中的一个表项包含:一个目的MAC地址、通向该MAC地址的交换机接口、表项放置在表中的时间。

假定目的地址为DD-DD-DD-DD-DD-DD的帧从交换机接口x到达,交换机中会有三种可能的情况:

  • 表里没有DD-DD-DD-DD-DD-DD这个表项,那么除了x外,交换机广播该帧。
  • 有一个表项将DD-DD-DD-DD-DD-DD与接口x联系起来,那么丢了就行。(过滤)
  • 有一个表项将DD-DD-DD-DD-DD-DD与接口y≠x联系起来,交换机将该帧放到y前面的输出缓存。

2.自学习

交换机是自动、动态和自治地建立的,也就是说不用人或者配置协议管。

  • 交换机表初始为空
  • 接收到入帧后会记录源MAC地址,到达的接口,到达时间和当前时间。
  • 如果在一段时间后(称为老化期),交换机没有接收到以该地址做源地址的帧,就在表中删除这个地址。

交换机即插即用,而且是全双工的,使用的时候除了把插头插上不需要做任何其他的事。

3.链路层交换机的性质

  • 消除碰撞:在使用交换机(不使用集线器)构建的局域网中,没有因碰撞而浪费的带宽!交换机缓存帧并且绝不会在网段上同时传输多于一个帧!,就像使用路由器一样,交换机的最大聚合带宽是该交换机所有接口速率之和。因此交换机提供了比使用广播链路的局域网高得多的性能改善。
  • 异质的链路:交换机将链路彼此隔离,因此局域网中的不同链路能够以不同的速率运行并且能够在不同的媒体上运行。
  • 管理:除了提供强化的安全性,交换机也易于进行网络管理。

4.交换机和路由器比较

交换机是即插即用的,方便是真方便,还能够具有相对高的分组过滤和转发速率。另一方面,为了防止广播帧的循环,交换网络的活跃拓补限制为一颗生成树。而且,一个大型交换网络将要求在主机和路由器中有很大的ARP表,这将生成客观的ARP流量和处理量,而且,交换机对于广播风暴不提供任何保护措施,某主机要是出了故障而没完没了的发送帧,交换机将转发这些所有帧使得整个以太网崩溃。

那么路由器呢?网络寻址是分层的(不像MAC寻址那样是扁平的),即使当网络中出现冗余路径时,分组也不会通过路由器循环(路由器表配置错误时可能循环,但是IP用一个特殊的报文首部来限制循环),所以分组就不会被限制到一颗生成树上,并且可以使用源和目的地之间的最佳路径。因为路由器没有生成树限制,所以它们允许以丰富的拓补结构构建因特网。路由器为广播风暴提供了防火墙保护,但是路由器和连接到它们的主机都必须人为的配置IP地址,而且路由器对每个分组的处理时间比交换机更长(多处理一层的字段)。

通常,由几百台主机组成的小网络有几个局域网网段,对于这些小网段,交换机就足够了,因为它们不要求IP地址的任何配置就能使流量局部化并增加总计吞吐量。但是在几千台主机组成的更大网络中,通常在网络中除了交换机之外还包括路由器。路由器提供了更健壮的流量隔离方式和对广播风暴的控制,并在主机间使用更“智能的”路由。

6.4.4虚拟局域网

现代机构的局域网常常配置为等级结构的,每个工作组有自己的交换局域网,经过一个交换机等级结构与其他工作组的交换局域网互联。但是在现实中却有三个缺点:

  • 缺乏流量隔离:尽管该等级结构把组流量局域化到一个单一交换机中,但广播流量(例如携带ARP和DHCP报文或那些目的地还没有被自学习交换机学习到的帧)仍然必须跨过整个机构网络。限制那些广播流量的范围将改善局域网的性能。为了安全和隐私的目的也可能希望限制局域网广播流量。通过用路由器来代替中心交换机能实现这种类型的隔离。
  • 交换机的无效使用:如果该机构有10个组,则要求有十台第一级交换机,如果每个组都较小,比如少于十个人,则单台96端口的交换机将足以容纳每个人,但这台单一的交换机将不能提供流量隔离。
  • 管理用户:如果一个雇员在不同组间移动,必须改变物理布线,以将该雇员连接到不同的交换机中。

幸运的是每个难题都能够通过**虚拟互联网(VLAN)**来实现,支持VLAN的交换机允许经一个单一的物理局域网基础设施定义多个虚拟局域网。在同一个VLAN内的主机彼此通信,仿佛他们(并没有其他主机)与交换机连接。在一个基于端口的VLAN中,交换机的端口由网络管理员划分为组。每个组构成一个VLAN,在每个VLAN中的端口形成一个广播域(即来自一个端口的广播流量仅能到达该组中的其他端口)。当有主机进行组之间的变化时,网络操纵员只需重新配置VLAN软件即可,在交换机中维护一张端口到VLAN的映射表交换机软件仅在属于相同的VLAN端口之间交付帧。

但是两个不同的虚拟局域网之间怎么通信呢?解决方式是将VLAN交换机的一个端口与一台外部的路由器相连,并将该端口配置为属于这两个虚拟局域网。

两台交换机互联可将在每一个交换机上定义一个属于当前VLAN的端口并且相连,但是这个方案不具有扩展性,因为在每台交换机上N个VLAN将要求N个端口直接互联这台交换机。

一种更具扩展性互联VLAN交换机的方法称为VLAN干线连接,每台交换机上的一个特殊端口被配置为干线端口以互联这两台VLAN交换机。该干线端口属于所有VLAN,发送到任何VLAN的帧经过干线链路转发到其他交换机。IEEE定义了一种扩展的以太网帧格式——802.1Q,用于跨越VLAN干线的帧,在首部增加了4字节的VLAN标签

6.5 链路虚拟化

多协议标签交换(MPLS)网络与电话交换的电话网不同,是一种分组交换的虚电路网络,拥有自己的分组格式和转发行为。其目标是:对于基于固定长度标签和虚电路的技术,在不放弃基于目的地IP数据报转发的基础设施的前提下,当可能时通过选择性的标识数据报并允许路由器基于固定长度的标签(而不是目的地IP地址)转发数据报来增强其功能。

6.6数据中心网络

每个数据中心都有自己的数据中心网络,这些数据中心网络将其内部主机彼此互联。数据中心的主机称为刀片,一般是包括CPU、内存和磁盘存储的商用主机。每个机架堆放20~40台刀片,在每个机架顶部有一台机架顶部交换机,与机架上的主机互联,并与数据中心中的其他交换机互联。

为了处理外部客户与内部主机之间的流量,数据中心网络包括了一台或多台边界路由器,它们将与数据中心网络与公共因特网相连。数据中心网络需要因此需要将所有机架彼此互联,并将机架与边界路由器互联。

1.负载均衡

为了支持来自外部客户的请求,每一个应用都与一个公开可见的IP地址关联,外部用户向该地址发送请求并从该地址接收响应。在数据中心内部,外部请求首先被定向到一个负载均衡器,其任务是向主机分发请求,以主机当前的负载作为函数来在主机之间均衡负载。由于负载均衡器基于分组的目的端口号(第四层)以及目的IP地址做决策,因此常被称为“第四层交换机”。收到某个请求后负载均衡给某个主机,主机处理完后向负载均衡器回送响应再由其中继发回给外部客户。除了平衡负载,负载均衡器还提供了类似NAT的功能。

2.等级体系结构

当主机规模较大时,数据中心通常应用路由器和交换机等级结构,在该结构顶端,边界路由器与接入路由器相连,在每台接入路由器下面有几层交换机,每台接入路由器与一台第一层交换机相连,每台第一层交换机与多台第二层交换机以及一台负载均衡器相连。每台第二层交换机又通过机架的TOR交换机(第三层交换机)与多个机架相连。当数据中心网络存在并发流时,则存在主机到主机的容量受限的问题,一种可行的解决方案是部署更高速率的交换机和路由器,当然成本也会更高。

3.数据中心网络的发展趋势

一个趋势是部署能够克服传统等级设计缺陷的新型互联体系结构和网络协议。一种方法是采用全连接拓补来替代交换机和路由器的等级结构,在这种设计中,每台第一层交换机都与所有第二层交换机相连,因此:①主机到主机的流量绝不会超过该交换机层次②对于n台第一层交换机,在任意两台交换机间有n条不相交的路径,这种设计可以显著的改善主机到主机的容量。

另一个主要的趋势就是采用基于船运集装箱的模块化数据中心