链路层概述
- 在本章中为方便讨论,将运行链路层协议协议的任何设备均称为节点。节点包括主机、路由器、交换机和 WiFi 接入点 。我们也把沿着通信路径连接相邻节点的通信信道称为链路。为了将一个数据报从源主机传输到目的主机,数据报必须通过沿端到端路径上的各段链路传输。
- 链路层提供的服务
- 成帧(framing).在每个网络层数据报经链路传送之前,几乎所有的链路层协议都要将其用链路层帧封装起来。一个帧由一个数据字段和若干首部字段组成,其中网络层数据报就插在数据字段中。帧的结构由链路层协议规定。
- 链路接入。媒体访问控制(Medium Access Control, MAC)协议规定了帧在链路上传输的规则。
- 可靠交付。当链路层协议提供可靠交付服务时。它保证无差错地经链路层移动每个网络层数据报
- 差错检测和纠正。当帧中的一个比特作为 1 传输时,接收方节点中的链路层硬件可能不正确地将其判断为 0,反之亦然。这种比特差错是由信号衰减和电磁噪声导致的。因为没有必要转发一个有差错的数据报,所以许多链路层协议提供一种机制来检测这样的比特差错。通过让发送节点在帧中包括差错检测比特,让接收节点进行差错检查,以此来完成这项工作。
- 链路层在何处实现
- 链路层的主体部分是在网络适配器(network adapter)中实现的,网络适配器有时也称为网络接口卡(Nehvork Interface Card, NIC)。位于网络适配器核心的是链路层控制器,该控制器通常是一个实现了许多链路层服务(成帧、链路接入、差错检测等)的专用片。因此,链路层控制器的许多功能是用硬件实现的。
- 在发送端,控制器取得了由协议栈较高层生成并存储在主机内存中的数据报,在链路层帧中封装该数据报(填写该帧的各个字段),然后遵循链路接入协议将该帧传进通信链路中。在接收端,控制器接收了整个帧,抽取出网络层数据报。如果链路层执行差错检 测,则需要发送控制器在该帧的首部设置差错检测比特,由接收控制器执行差错检测。
- 链路层的软件组件实现了高层链路层功能,如组装链路层寻址信息和激活控制器硬件。在接收端,链路层软件响应控制器中断,处理差错条件和将数据报向上传递给网络层。所以,链路层是硬件和软件的结合体。
差错检测和纠正技术
- 奇偶位校验
- 假设要发送的信息 D 有 d 比特。在偶校验方案中,发送方只需包含一个附加的比特,选择它的值,使得这 d+1 比特中 1 的总数是偶数。对于奇校验方案,选择校验比特值使得有奇数个 1。单个校验比特被存放在一个单独的字段中。
- 采用单个奇偶校验位方式。接收方的操作也很简单。接收方只需要数一数接收的 d + 1 比特中 1 的数目即可。如果在采用偶校验方案中发现了奇数个值为 1 的比特,接收方知道至少出现了一个比特差错。更精确的说法是,出现了奇数个比特差错。
- 二维奇偶校验
- 单比特奇偶校验方案的二维一般化方案。这里 D 中的 d 个比特被划分为 i 行 j 列。对每行和每列计算奇偶值。产生的 i+j+1 奇偶比特构成了链路层帧的差错检测比特。现在假设在初始 d 比特信息中出现了列单个比特差错。使用这种二维奇偶校验方案,包含比特值改变的列和行的校验值都将会出现差错。因此接收方不仅可以检测到出现了单个比特差错的事实,而且还可以利用存在奇偶校验差错的列和行的索引来实际识别发生差错的比特并纠正它!
- 接收方检测和纠正差错的能力被称为前向纠错,FEC 技术很有价值,因为它们可以减少所需的发送方重发的次数。也许更为重要的是,它们允许在接收方立即纠正差错。FEC 避免了不得不等待的往返时延,而这些时延是发送方收到 NAK 分组并向接收方重传分组所需要的,这对于实时网络应用或者具有长传播时延的链路(如深空间链路)可能是一种非常重要的优点。
- 检验和方法
- 因特网检验和(Internet checksum)就基于这种方法,即数据的字节作为 16 比特的整数对待并求和。这个和的反码形成了携带在报文段首部的因特网检验和。接收方通过对接收的数据(包括检验和)的和取反码,并且检测其结果是否为全 1 比特来检测检验和。如果这些比特中有任何比特是 0, 就可以指示出差错。检验和方法需要相对小的分组开销。例如,TCP 和 UDP 中的检验和只用了 16 比特。然而,与常用于链路层的 CRC 相比,它们提供相对弱的差错保护。
- 循环冗余检测
- 现今的计算机网络中广泛应用的差错检测技术基于循环冗余检测编码 CRC 编码也称为多项式编码,因为该编码能够将要发送的比特串看作为系数是 0 和 1 一个多项式,对比特串的操作被解释为多项式算术。
多路访问链路和协议
- 有两种类型的网络链路:点对点链路和广播链路。
- 点对点链路(point-to-point link)由链路一端的单个发送方和链路另一端的单个接收方组成。许多链路层协议都是为点对点链路设计的,如点对点协议 (point-to-point protocol, PPP)和高级数据链路控制(high-level data link control HDLC)就是两种这样的协议。
- 广播链路(broadcast link),它能够让多个发送和接收节点都连接到相同的、单一的、共享的广播信道上。广播信道通常用于局域网中,局域网是一个地理上集中在一座建筑物中的网络。
- 多路访问协议
- 信道划分协议
- 时分多路复用(TDM)和频分多路复用(FDM)是两种能够用于在所有共享信道节点之间划分广播信道带宽的技术。假设一个支持 N 个节点的信道且信道的传输速率为 Rbps。TDM 将时间划分为时间帧(time frame),并进一步划分每个时间帧为 N 个时隙(slot)。然后把每个时隙分配给 N 个节点中的一个。无论何时某个节点在有分组要发送的时候,它在循环的 TDM 帧中指派给它的时隙内传输分组比特。通常,选择的时隙长度应使一个时隙内能够传输单个分组。TDM 是有吸引力的,因为它消除了碰撞而且非常公平:每个节点在每个帧时间内得到了专用的传输速率 R/N bps。然而它有两个主要缺陷。首先,节点被限制于 R/N bps 的平均速率,即使当它是唯一有分组要发送的节点时。其次,节点必须总是等待它在传输序列中的轮次,即我们再次看到,即使它是唯一一个有帧要发送的节点。
- FDM 将 R bps 信道划分为不同的频段(每个频段具有 R/N 带宽),并把每个频率分配给 N 个节点中的一个。因此 FDM 在单个较大的 R bps 信道中创建了 N 个较小的 R/N bps 信道。FDM 也有 TDM 同样的优点和缺点。它避免了碰撞.在 N 个节点之间公平地划分了带宽,然而,FDM 也有 TDM 所具有的主要缺点,也就是限制一个节点只能使用 R/N 的带宽,即使当它是唯一一个有分组要发送的节点时。
- CDMA 对每个节点分配一种不同的编码。然后每个节点用它唯一的编码来对它发送的数据进行编码。如果精心选择这些编码,CDMA 网络具有一种奇妙的特性,即不同的节点能够同时传输,并且它们各自相应的接收方仍能正确接收发送方编码的数据比特,而不在乎其他节点的干扰传输 CDMA 已经在军用系统中使用了一段时间,目前已经广泛地用于民用,尤其是蜂窝电话中。
- 随机接入协议
- 在随机接入协议中,一个传输节点总是以信道的全部速率(即 R bps ) 进行发送,当有碰撞时,涉及碰撞的每个节点反复地重发它的帧(也就是分组),到该帧无碰撞地通过为止。但是当一个节点经历一次碰撞时,它不必立刻重发该帧。相反,它在重发该帧之前等待一个随机时延。涉及碰撞的每个节点独立地选择随机时延。因为该随机时延是独立地选择的,所以下述现象是有可能的:这些节点之一所选择的时延充分小于其他碰撞节点的时延,并因此能够无碰撞地将它的帧在信道中发出。
- 时隙 ALOHA
- 所有帧由 L 比特组成
- 时间被划分成长度为 L/R 秒的时隙。
- 节点只在时隙起点开始传输帧。
- 节点是同步的。每个节点都知道时隙何时开始。
- 如果在一个时隙中有两个或者更多个帧碰撞。则所有节点在该时隙结束之前检测到该碰撞事件。令 p 是一个概率,即一个在 0 和 1 之间的数。在每个节点中,时隙 ALOHA 的操作是简单的。
- 当节点有一个新帧要发送时,它等到下一个时隙开始并在该时隙传输整个帧。
- 如果没有碰撞,该节点成功地传输它的帧,从而不需要考虑重传该帧。
- 如果有碰撞,该节点在时隙结束之前检测到这次碰撞。每个时隙中重传它的帧,直到该帧被无碰撞地传输出去
- 时隙多路访问协议的效率定义为:当有大量的活跃节点且每个节点总有大量的帧要发送时,长期运行中成功时隙的份额。注意到如果不使用某种形式的访问控制,而且每个节点都在每次碰撞之后立即重传,这个效率将为零。时隙 ALOHA 显然增加了它的效率,使之大于零
- 载波侦听多路访问 (CSMA)
- 说话之前先听。如果其他人正在说话,等到他们说完话为止。在网络领域中,这被称为载波侦听(carrier sensing) 即一个节点在传输前先听信道。如果来自另一个节点的帧正向信道上发送,节点则等待直到检测到一小段时间没有传输,然后开始传输 。
- 如果与他人同时开始说话,停止说话。在网络领域中,这被称为碰撞检测(colliion detection),即当一个传输节点在传输时一直在侦听此信道户。如果它检测到另一个节点正在传输干扰帧,它就停止传输,在重复"侦听-当空闲时传输"循环之前等待一段随机时间。
- 这两个规则包含在载波侦听多路访问(Carrier Sense Multiple Access, CSMA) 和具有碰撞检测的 CSMA。
- 具有碰撞检测的载波侦听多路访问 (CSMA/CD)
- 适配器从网络层一条获得数据报,准备链路层帧,并将其放入帧适配器缓存中。
- 如果适配器侦听到信道空闲(即无信号能量从信道进入适配器),它开始传输帧。在另一方面,如果适配器侦听到信道正在忙,它将等待,直到侦听到没有信号能批时才开始传输帧。
- 在传输过程中,适配器监视来自其他使用该广播信道的适配器的信号能量的存在。
- 如果适配器传输整个帧而未检测到来自其他适配器的信号能量,该适配器就完成了该帧。在另一方面,如果适配器在传输时检测到来自其他适配器的信号能量,它中止传输(即它停止了传输帧)。
- 中止传输后,适配器等待一个随机时间量、然后返回步骤 2
- 轮流协议
- 轮询协议
- 轮询协议要求这些节点之一要被指定为主节点。主节点以循环的方式轮询(poll)每个节点。特别是,主节点首先向节点 1 发送一个报文,告诉它(节点 1)能够传输的帧的最多数量。在节点 1 传输了某些帧后,主节点告诉节点 2 它(节点 2)能够传输的帧的最多数量。上述过程以这种方式继续进行,主节点以循环的方式轮询了每个节点。轮询协议消除了困扰随机接入协议的碰撞和空时隙,这使得轮询取得高得多的效率。但是它也有一些缺点。第一个缺点是该协议引入了轮询时延,即通知一个节点”它可以传输”所需的时间。例如,如果只有一个节点是活跃的,那么这个节点将以小于 R bps 的速率传输,因为每次活跃节点发送了它最多数量的帧时,主节点必须依次轮询每一个非活跃的节点。第二个缺点可能更为严重,就是如果主节点有故障,整个信道都变得不可操作。
- 令牌传递协议
- 在这种协议中没有主节点。一个称为令牌(token)的小的特殊帧在节点之间以某种固定的次序进行交换。例如,节点 1 可能总是把令牌发送给节点 2,节点 2 可能总是把令牌发送给节点 3,而节点 N 可能总是把令牌发送给节点 1。当一个节点收到令牌时,仅当它有一些帧要发送时,它才持有这个令牌;否则,它立即向下一个节点转发该令牌。当一个节点收到令牌时,如果它确实有帧要传输,它发送最大数目的帧数,然后把令牌转发给下一个节点。令牌传递是分散的,并有很高的效率。但是它也有自己的一些问题。例如,一个节点的故障可能会使整个信道崩溃。或者如果一个节点偶然忘记了释放令牌,则必须调用某些恢复步骤使令牌返回到循环中来。
- DOCSIS: 用于电缆因特网接入的链路层协议
- 一个电缆接入网通常在电缆网头端将几千个住宅电缆调制解调器与一个电缆调制解调器端接系统 CMTS 连接。CMTS 规范定义了电缆数据网络体系结构及其协议。DOCSIS 使用 FDM 将下行和上行(调制解调器到 CMTS) 网络段划分为多个频率信道。CMTS 在下行信道中传输的帧被所有在信道上做接收的电缆调制解调器接收到;然而因为仅有单一的 CMTS 在下行信道上传输,不存在多路访问问题。但在上行方向,存在着多个有趣的技术挑战,因为多个电缆调制解调器共享到 CMTS 的相同上行信道(频率),因此能够潜在地出现碰撞)。电缆调制解调器既不能侦听上行信道是否忙,也不能检测碰撞。相反,该电缆调制解调器如果没有在下一个下行控制报文中收到对请求分配的响应的话,就推断出它的微时隙请求帧经历了一次碰撞。当推断出一次碰撞,电缆调制解调器使用二进制指数回退将其微时隙请求帧延缓到以后的时隙重新发送。当在上行信道上有很少的流量,电缆调制解调器可能在名义上分配给微时隙请求帧的时隙内实际传输数据帧(因此避免不得不等待微时隙分配)。
交换局域网
- 链路层寻址和 ARP
- (ARP)该协议提供了将 IP 地址转换为链路层地址的机制。
- MAC 地址
- 并不是主机或路由器具有链路层地址,而是它们的适配器(即网络接口)具有链路层地址。
- 链路层地址有各种不同的称呼:LAN 地址(LAN address)、物理地址(physical address)或 MAC 地址(MAC address)。因为 MAC 地址似乎是最为流行的术语,所以我们此后就将链路层地址称为 MAC 地址。
- MAC 地址的一个有趣性质是没有两块适配器具有相同的地址。IEEE 在管理着该 MAC 地址空间。特别是,当一个公司要生产适配器时,它支付象征性的费用购买组成 2^24 个地址的一块地址空间。IEEE 分配这块 2^24 个地址的方式是:固定一个 MAC 地址的前 24 比特,让公司自已为每个适配器生成后 24 比特的唯一组合。
- 当某适配器要向某些目的适配器发送一个帧时、发送适配器将目的适配器的 MAC 地址插入到该帧中,并将该帧发送到局域网 上。
- 地址解析协议
- 因为存在网络层地址(例如,因特网的 IP 地址)和链路层地址(即 MAC 地址),所以需要在它们之间进行转换。对于因特网而言、这是地址解析协议(Address Resolution Protocol,ARP)的任务。
- 为了发送数据报,该源必须要向它的适配器不仅提供 IP 数据报,而且要提供目的主机 222.222.222.222 的 MAC 地址。然后发送适配器将构造一个包含目的地的 MAC 地址的链路层帧,并把该帧发送进局域网。
- 通过在发送主机中的 ARP 模块将取在相同局域网上的任何 IP 地址作为输入,然后返回相应的 MAC 地址获得 MAC 地址。
- 每台主机或路由器在其内存中具有一个 ARP 表(ARP table),这张表包含 IP 地址到 MAC 地址的映射关系该 ARP 表也包含一个寿命(TTL)值,它指示了从表中删除每个映射的时间。注意到这张表不必为该子网上的每台主机和路由器都包含一个表项;某些可能从来没有进入到该表中,某些可能已经过期。从一个表项放置到某 ARP 表中开始,一个表项通常的过期时间是 20 分钟。
- 当 ARP 表项不在时,发送方构造一个 ARP 分组,广播到连接在适配器上的所有设备。对应 MAC 地址的机器用标准帧回复。
- 最好把 ARP 看成是跨越链路层和网络层边界两边的协议
- 发送数据报到子网以外
- 子网内部通过 ARP 寻址发送数据包到路由器,子网之间的路由器也通过 ARP 协议获取 MAC 地址。
- 以太网
- 以太网因为布局早,价格,传输效率等原因已经占领绝大多数市场。
- 以太网帧结构
- 数据字段(46~1500 字节)。这个字段承载了 IP 数据报。以太网的最大传输单元(MTU)是 1500 字节。
- 目的地址(6 字节)。这个字段包含目的适配器的 MAC 地址,即 BB-BB-BB-BB-BB-BB。当适配器 B 收到一个以太网帧,帧的目的地址无论是 BB-BB-BB-BB-BB-BB.还是 MAC 广播地址,它都将该帧的数据字段的内容传递给网络层;如果它收到了具有任何其他地址的帧,则丢弃之。
- 源地址(6 字节)。这个字段包含了传输该帧到局域网上的适配器的 MAC 地址
- 类型宇段(2 字节)。类型字段允许以太网复用多种网络层协议。
- CRC
- 前同步码(8 字节)。以太网帧以一个 8 字节的前同步码(Preamble)字段开始。该前同步码的前 7 字节的值都是 10101010;最后一个字节是 10101011。前同步码字段的前 7 字节用于“唤醒“接收适配器,并且将它们的时钟和发送方的时钟同步。
- 以太网技术都向网络层提供不可靠服务。特别是,当适配器 B 收到一个来自适配器 A 的帧,它对该帧执行 CRC 校验,但是当该帧通过 CRC 校验时它既不发送确认帧;而当该帧没有通过 CRC 校验时它也不发送否定确认帧。当某帧没有通过 CRC 校验,适配器 B 只是丢弃该帧。
- 以太网技术
- 使用标准以太网帧格式, 并且后向兼容 1OBASE-T 与 1OOBASE-T 技术。这使得吉比特以太网和现已安装的以太网设备基础很容易集成。
- 允许点对点链路以及共享的广播信道。如前所述,点对点链路使用交换机,而广播信道使用集线器。在吉比特以太网术语中,集线器被称为"带缓存的分配器” 。
- 使用 CSMA/CD 来共享广播信道。为了得到可接受的效率,节点之间的最大距离必须严格限制。
- 对于点对点信道,允许在两个方向上都以 40 Gbps 全双工操作 。
- 通过所有这些改变,的确还有一个历经 30 年保持未变的持久不变量,即以太网帧格式。也许这才是以太网标准的一个真正重要的特征。
- 链路层交换机
- 交换机的任务是接收入链路层帧并将它们转发到出链路,交换机自身对子网中的主机和路由器是透明的,这就是说,某主机/路由器向另一个主机/路由器寻址一个帧,顺利地将该帧发送进局域网,并不知道某交换机将会接收该帧并将它转发到另一个节点。这些帧到达该交换机的任何输出接口之一的速率可能暂时会超过该接口的链路容量。为了解决这个问题,交换机输出接口设有缓存,这非常类似于路由器接口为数据报设有缓存。
- 交换机转发和过滤
- 过滤(filtering)是决定一个帧应该转发到某个接口还是应当将其丢弃的交换机功能。
- 转发(forwarcling)是决定一 个帧应该被导向哪个接口,并把该帧移动到那些接口的交换机功能。交换机的过滤和转发借助于交换机表(switch table)完成。该交换机表包含某局域网上某些主机和路由器的但不必是全部的表项。
- 假定目的地址为 DD-DD-DD-DD-DD-DD 的帧从交换机接口 x 到达。交换机用 MAC 地址 DD-DD-DD-DD-DD-DD 索引它的表。有 3 种可能的情况:
- 表中没有对于 DD-DD-DD-DD-DD-DD 的表项。在这种情况下,交换机向除接口 x 外的所有接口前面的输出缓存转发该帧的副本。换言之,如果没有对于目的地址的表项,交换机广播该帧。
- 表中有一个表项将 DD-DD-DD-DD-DD-DD 与接口 x 联系起来。在这种情况下,该帧从包括适配器 DD-DD-DD-DD-DD- DD 的局域网网段到来。无须将该帧转发到任何其他接口,交换机通过丢弃该帧执行过滤功能即可。
- 表中有一个表项将 DD-DD-DD-DD-DD-DD 与接口 y!=x 联系起来。在这种情况下,该帧需要被转发到与接口 y 相连的局域网网段。交换机通过将该帧放到接口 y 前面的输出缓存完成转发功能。
- 自学习
- 交换机表初始为空。
- 对于在每个接口接收到的每个入帧,该交换机在其表中存储:1.在该帧源地址字段中的 MAC 地址;2 该帧到达的接口;3 当前时间。交换机以这种方式在它的表中记录了发送节点所在的局域网网段。如果在局域网上的每个主机最终都发送了一个帧,则每个主机最终将在这张表中留有记录。
- 如果在一段时间(称为老化期(aging time))后,交换机没有接收到以该地址作为源地址的帧,就在表中删除这个地址。以这种方式,如果一台 PC 被另一台 PC (具有不同的适配器)代替,原来 PC 的 MAC 地址将最终从该交换机表中被清除掉。
- 交换机是即插即用设备(plug-and-play device),因为它们不需要网络管理员或用户的干预。要安装交换机的网络管理员除了将局域网网段与交换机的接口相连外,不需要做其他任何事。管理员在安装交换机或者当某主机从局域网网段之一被去除时,他没有必要配置交换机表。交换机也是双工的,这意味着任何交换机接口能够同时发送和接收。
- 链路层交换机的性质
- 消除碰撞。在使用交换机(不使用集线器)构建的局域网中,没有因碰撞而浪费的带宽!交换机缓存帧并且决不会在网段上同时传输多于一个帧。就像使用路由器一样,交换机的最大聚合带宽是该交换机所有接口速率之和。因此,交换机提供了比使用广播链路的局域网高得多的性能改善。
- 异质的链路。交换机将链路彼此隔离,因此局域网中的不同链路能够以不同的速率运行并且能够在不同的媒体上运行。
- 管理。除了提供强化的安全性交换机也易于进行网络管理。检测流量,检测问题发生。
- 交换机和路由器比较
- 交换机是第二层的分组交换机,而路由器是第三层的分组交换机
- 交换机是即插即用的,这是世界上所有超负荷工作的网络管理员都喜爱的特性。交换机还能够具有相对高的分组过滤和转发速率,交换机必须处理高至第二层的帧,而路由器必须处理高至第三层的数据报。在另一方面,为了防止广播帧的循环,交换网络的活跃拓扑限制为一棵生成树。另外,一个大型交换网络将要求在主机和路由器中有大的 ARP 表,这将生成可观的 ARP 流量和处理量。而且,交换机对于广播风暴并不提供任何保护措施,即如果某主机出了故障并传输出没完没了的以太网广播帧流,该交换机将转发所有这些帧使得整个以太网的崩溃。
- 因为网络寻址通常是分层次的(不像 MAC 寻址那样是扁平的),即使当网络中存在冗余路径时,分组通常也不会通过路由器循环。(然而,当路由器表被误配置时,分组可能循环;IP 用一个特殊的报文首部字段来限制循环。)所以,分组就不会被限制到一棵生成树上,并可以使用源和目的地之间的最佳路径。因为路由器没有生成树限制,所以它们允许以丰富的拓扑结构构建因特网,例如包括欧洲和北美之间的多条活跃链路。路由器的另一个特色是它们对第二层的广播风暴提供了防火墙保护。尽管也许路由器最重要的缺点就是它们不是即插即用的,即路由器和连接到它们的主机都需要人为地配置 IP 地址 C 而且路由器对每个分组的处理时间通常比交换机更长,因为它们必须处理高达第三层的字段。
- 通常,由几百台主机组成的小网络通常有几个局域网网段。对于这些小网络、交换机就足够了,因为它们不要求 IP 地址的任何配置就能使流量局部化并增加总计吞吐量。但是在由几千台主机组成的更大网络中,通常在网络中(除了交换机之外)还包括路由器。路由器提供了更健壮的流量隔离方式和对广播风暴的控制,并在网络的主机之间使用更智能的路由。
- 虚拟局域网
- 支持 VLAN 的交换机允许经一个单一的物理局域网基础设施定义多个虚拟局域网。在一个 VLAN 内的主机彼此通信,仿佛它们与交换机连接。在一个基于端口的 VLAN 中,交换机的端口(接口)由网络管理员划分为组。每个组构成一个 VLAN,在每个 VLAN 中的端口形成一个广播域。
链路虚拟化:网络化作链路层
- 多协议标签交换
- 与电路交换的电话网不同、MPLS 客观上讲是一种分组交换的虚电路网络。它们有自己的分组格式和转发行为。因此,从教学法 的观点看,有关 MPLS 的讨论既适合放在网络层的学习中、也适合放在链路层的学习中。然而,从因特网的观点看,我们能够认为 MPLS 像电话网和交换以太网一样,作为为 IP 设备提供互联服务的链路层技术。
数据中心网络
- 每个数据中心都容纳了数万至数十万台主机,并且同时支持着很多不同的云应用。数据中心都有自己的数据中心网络这些数据中心网络将其内部主机彼此互联并与因特网中的数据中心互联。
- 数据中心网络支持两种类型的流量:在外部客户与内部主机之间流动的流量,以及内部主机之间流动的流量。为了处理外部客户与内部主机之间流动的流量,数据中心网络包括了一台或者多台边界路由器(border router), 它们将数据中心网络与公共因特网相连 数据中心网络因此需要将所有机架彼此互联,并将机架与边界路巾器连接。
- 负载均衡
- 一个大型的数据中心通常会有几台负载均衡器,每台服务于一组特定的云应用。由于负载均衡器基于分组的目的端口号(第四层)以及目的 IP 地址做决策,因此它们常被称为“第四层交换机”。
- 等级体系结构
- 对于仅有数于台主机的小型数据中心,一个简单的网络也许就足够了。这种简单网络由一台边界路由器、一台负载均衡器和几十个机架组成,这些机架由单一以太网交换机进行互联。但是当主机规模扩展到几万至几十万的时候,数据中心通常应用路由器和交换机等级结构。
- 在该等级结构的顶端,边界路由器与接入路由器相连。在每台接入路由器下面,有 3 层交换机。每台接入路由器与一台第一层交换机相连,每台第一层交换机与多台第二层交换机以及一台负载均衡器相连。每台第二层交换机又通过机架的 TOR 交换机(第三层交换机)与多个机架相连。所有链路通常使用以太网作为链路层和物理层协议,并混合使用铜缆和光缆。通过这种等级式设计,可以将数据中心扩展到几十万台主机的规模。
- 数据中心网络的发展趋势
回顾:Web 页面请求的历程
- 一名学生 Bob 将他的便携机与学校的以太网交换机相连,下载一个 Web 页面(比如说 www.google.com主页)。
- Bob 便携机上的操作系统生成一个 DHCP 请求报文,并将这个报文放入具有目的端口 67(DHCP 服务器)和源端口 68(DHCP 客户)的 UDP 报文段,该 UDP 报文段则被放置在一个具有广播 IP 目的地址(255.255.255.255)和源 IP 地址 0.0.0.0 的 IP 数据报中(4.3.I 节),因为 Bob 的便携机还没有一个 IP 地址。
- 包含 DHCP 请求报文的 IP 数据报则被放置在以太网帧中。该以太网帧具有目的 MAC 地址 FF:FF:FF:FF:FF:FF,使该帧将广播到与交换机连接的所有设备;该帧的源 MAC 地址是 Bob 便携机的 MAC 地址 00:I6:D3:23:68:8A。
- 包含 DHCP 请求的广播以太网帧是第一个由 Bob 便携机发送到以太网交换机的帧。该交换机在所有的出端口广播入帧,包括连接到路由器的端口。
- 路由器在它的具有 MAC 地址 00:22:6B:45:1F 的接口接收到该广播以太网帧,该帧中包含 DHCP 请求、并且从该以太网帧中抽取出 IP 数据报。该数据报的广播 IP 目的地址指示了这个 IP 数据报应当由在该节点的高层协议处理,因此该数据报的载荷(一个 UDP 报文段)被分解向上到达 UDP,DHCP 请求报文从此 UDP 报文段中抽取出来。此时 DHCP 服务器有了 DHCP 请求报文。
- 我们假设运行在路由器中的 DHCP 服务器能够以 CIDR 块 68.85.2.0/24 分配 IP 地址)所以本例中,在学校内使用的所有 IP 地址都在 Comcast 的地址块中。我们假设 DHCP 服务器分配地址 68.85.2.101 给 Bob 的便携机。DHCP 服务器生成包含这个 IP 地址以及 DNS 服务器的 IP 地址(68.87.71.226)、默认网关路由器的 IP 地址(68.85.2.l)。和子网块(68.85.2.0/24)(等价为“网络掩码")的一个 DHCP ACK 报文该 DHCP 报文被放入一个 UDP 报文段中,UDP 报文段被放人一个 IP 数据报中,IP 数据报再被放入一个以太网帧中。这个以太网帧的源 MAC 地址是路由器连到归属网络时接口的 MAC 地址址(00:22:6B:45:1F:1B),目的 MAC 地址是 Bob 便携机的 MAC 地址
- 包含 DHCP ACK 的以太网帧由路由器发送给交换机。因为交换机是自学习的、并且先前从 Bob 便携机收到(包含 DHCP 请求的)以太网帧,所以该交换机知道寻址到 00:16:03:23:68:8A 的帧仅从通向 Bob 便携机的输出端口转发。
- Bob 便携机接收到包含 DHCPACK 的以太网帧,从该以太网帧中抽取 IP 数据报,从 IP 数据报中抽取 UDP 报文段,从 UDP 报文段抽取 DHCPACK 报文。Bob 的 DHCP 客户则记录下它的 IP 地址和它的 DNS 服务器的 IP 地址。它还在其 IP 转发表中安装默认网关的地址。Bob 便携机将向该默认网关发送目的地址为其子网 68.85.2.0/24 以外的所有数据报。此时,Bob 便携机已经初始化好它的网络组件,并准备开始处理 Web 网页获取。
- Bob 便携机上的操作系统因此生成一个 DNS 查询报文,将字符串 www.google.com 放入 DNS 报文的问题段中。该 DNS 报文则放置在一个具有 53 号(DNS 服务器)目的端口的 UDP 报文段中。该 UDP 报文段则被放入具有 IP 目的地址 68.87.71.226 和源 IP 地址 68.85.2.101 的 IP 数据报中。
- Bob 便携机则将包含 DNS 请求报文的数据报放入一个以太网帧中.该帧将发送(在链路层寻址)到 Bob 学校网络中的网关路由器。然而,即使 Bob 便携机经过上述第 5 步中的 DHCPACK 报文知道了学校网关路由器的 IP 地址(68.85.2.1),但仍不知道该网关路由器的 MAC 地址。为了获得该网关路由器的 MAC 地址,Bob 便携机将需要使用 ARP 协议。
- Bob 便携机生成一个具有目的 lP 地址 68.85.2.1(默认网关)的 ARP 查询报文,将该 ARP 报文放置在一个具有广播目的地址(FF:FF:FF:FF:FF:FF)的以太网帧中,并向交换机发送该以太网帧,交换机将该帧交付给所有连接的设备,包括网关路由器。
- 网关路由器在通往学校网络的接口上接收到包含该 ARP 查询报文的帧,发现在 ARP 报文中目标 IP 地址 68.85.2.1 匹配其接口的 IP 地址。网关路由器因此准备一个 ARP 回答,指示它的 MAC 地址 00:22:6B:45:1F:1B 对应 IP 地址 68.85.2.1~它将 ARP 回答放在一个以太网帧中,其目的地址为 00:16:D3:23:68:8A(Bob 便携机),并向交换机发送该帧,再由交换机将帧交付给 Bob 便携机。
- Bob 便携机接收包含 ARP 回答报文的帧并从 ARP 回答报文中抽取网关路由器的 MAC 地址(00:22:6B:45:1F:1B)
- Bob 便携机现在(最终!)能够使包含 DNS 查询的以太网帧寻址到网关路由器的 MAC 地址。注意到在该帧中的 IP 数据报具有 IP 目的地址 68.87.71.226(DNS 服务器),而该帧具有目的地址 00:22:68:45:1F:1B(网关路由器)。Bob 便携机向交换机发送该帧,交换机将该帧交付给网关路由器。
- 网关路由器接收该帧并抽取包含 DNS 查询的 IP 数据报。路由器查找该数据报的目的地址(68.87.71.226),并根据其转发表决定该数据报应当发送到 Comcast 网络中最左边的路由器 IP 数据报放置在链路层帧中,该链路适合将学校路由器连接到最左边 Comcast 路由器,并且该帧经这条链路发送。
- 在 Comcast 网络中最左边的路由器接收到该帧,抽取 IP 数据报,检查该数据报的目的地址(68.87.71.226),并根据其转发表确定出接口,经过该接口朝着 DNS 服务器转发数据报,而转发表己根据 Comcast 的域内协议(如 RIP、OSPF 或 IS-IS)以及因特网的域间协议 BGP 所填写。
- 最终包含 DNS 查询的 IP 数据报到达了 DNS 服务器。DNS 服务器抽取出 DNS 查询报文,在它的 DNS 数据库中查找名字www.google.com,找到包含对应www.google.com的IP地址(64.233.169.105)的DNS源记录,前面讲过这种缓存数据源于google.com的权威DNS服务器。该DNS服务器形成了一个包含这种主机名到IP地址映射的DNS回答报文,将该DNS回答报文放入UDP报文段中,该报文段放入寻址到Bob便携机(68.85.2.101)的IP数据报中。该数据报将通过Comcast网络反向转发到学校的路由器,并从这里经过以太网交换机到Bob便携机。
- Bob 便携机从 DNS 报文抽取出服务器www.google.com的IP地址。最终,在大量工作后,Bob便携机此时准备接触www.google.com服务器!
- 既然 Bob 便携机有了www.google.com的IP地址,它能够生成TCP套接字(2.7节),该套接字将用于向吓叩.google.com发送HTTPGET报文(2.2.3节)。当Bob生成TCP套接字时,在Bob便携机中的TCP必须首先与www.google.com中的TCP执行三次握手。Bob 便携机因此首先生成一个具有目的端口 80(针对 HTTP 的)的 TCP SYN 报文段,将该 TCP 报文段放置在具有目的 1P 地址 64.233.169.105(www.google.com)的IP数据报中,将该数据报放置在MAC地址为00:22:68:45:1F:1B(网关路由器)的帧中,并向交换机发送该帧.
- 在学校网络、Comcast 网络和谷歌网络中的路由器朝着 www.google.com 转发包含 TCP SYN 的数据报,使用每台路由器中的转发表,如前面步骤 14~16 那样。前面讲过支配分组经 Comcast 和谷歌网络之间域间链路转发的路由器转发表项,是由 BGP 协议决定的
- 最终,包含 TCPSYN 的数据报到达www.googole.com0从数据报抽取出TCPSYN报文并分解到与端口80相联系的欢迎套接字。对于谷歌HTTP服务器和Bob便携机之间的TCP连接生成一个连接套接字。产生一个TCP SYN ACK 报文段,将其放入向 Bob 便携机寻址的一个数据报中,最后放入链路层帧中,该链路适合将www.google.com连接到其第一跳路由器。
- 包含 TCP SYN ACK 报文段的数据报通过谷歌、Comcast 和学校网络,最终到达 Bob 便携机的以太网卡,数据报在操作系统中分解到步骤 18 生成的 TCP 套接字,从而进入连接状态。
- 借助于 Bob 便携机上的套接字,现在(终于!)准备向www.googJe.com发送字节HTTP GET 报文则写入套接字,其中 GET 报文成为一个 TCP 报文段的载荷。该 TCP 报文段放置进一个数据报中,并交付到www.google.com,如前面步骤18-20所述。
- 在www.google.com的HTTP服务器从TCP套接字读取HTTP GET 报文,生成一个 HTTP 响应报文,将请求的 Web 页内容放入 HTTP 响应体中,并将报文发送了,Bob 的浏览器生成包含要获取的 URL 的 HTTPGET 报文进 TCP 套接字中。
- 包含 HTTP 回答报文的数据报通过谷歌、Comcast 和学校网络转发,到达 Bob 便携机。Bob 的 Web 浏览器程序从套接字读取 HTTP 响应,从 HTTP 响应体中抽取 Web 网页的 html, 并最终(终于!)显示了 Web 网页。