CNATDA 第六章学习笔记

Computer Networking: A Top-Down Approach (8th Edition)第六章 The Link Layer and LANs 的学习笔记

link layer 的主要功能是将 datagram 从一个 node 传输到另一个 node还可以提供下列 service

  • framing: 将 network-layer datagram 封装在 link-layer frame 中进行传输
  • link access: 通过 medium access control (MAC) protocol 控制 frame 在 link 上如何传输这对于 point-to-point link 来说是简单的但在 broadcast link 中会遇到 multiple access problem需要 MAC protocol 来进行协调
  • reliable delivery: 通过与 TCP 类似的方式acknowledgementretransmission来保证单个 link 上的 reliable delivery这在出错率较高时可以避免单个 link 的传输错误导致 end-to-end retransmission而在出错率较低时会造成不必要的 overhead所以一般是出错率较高的 wireless link 才会提供 reliable delivery
  • error detection and correction

在 host 中link layer 一般实现于外接的 network adapter (network interface controller, NIC) 中由硬件实现host 中还会有软件用来连接 link layer 和 network layer

Error-Detection and -Correction Techniques

参见 DDPP 第二章的相关内容

在 broadcast link 中同时只能有一方发送信息如果多方同时发送则会产生 collision每一方发送的信息都会丢失为了解决 multiple access problem需要使用 multiple access protocol 来进行协调

一个理想的 multiple access protocol 能做到

  • 只有一方发送时完全利用带宽
  • 多方同时发送时均分全部的带宽
  • decentralized没有 single point of failure
  • simple, inexpensive to implement

multiple access protocol 有非常多总体可以分为三大类channel partitioning protocolsramdom access protocolstaking-turns protocols

Channel Partitioning Protocols

将单个 channel 分成多个 channel

TDM (time-division multiplexing) 将时间分成 time frames将每个 time frame 分成 time slots将每个 time frame 内的各个 time slot 分配给各个 node

FDM (frequency-division multiplexing) 利用不同的频率作为不同的 channel

TDM 和 FDM 都能完全避免 collision但在只有一方发送时效率非常低唯一的 active sender 不能使用分配给其他 node 的 channel

CDMA (code-division multiple access) 通过给每个 node 分配一个 code 来允许各方同时发送在 wireless channel 中较为常用

Random Access Protocols

通过随机的等待时间来在 collision 发生后错开发送时机

ALOHA

假设传输每个 frame 的用时相同将时间划分为长度为这一用时的 slots所有 node 是同步的只在 slot 的开头发送信息发生 collision 后能在这一 slot 内检测到

slotted ALOHA 在没有 collision 时在每个 slot 开头发送 frame在发生了 collision 后在每个 slot 开头以 pp 的概率进行 retransmission 直到发送成功为止

如果一个 slot 中没有任何一方发送信息或者有多方同时发送信息则这个 slot 就浪费掉了只有恰好有一方发送信息的 slot 才是 successful slot

其 efficiency 就是 successful slot 的占比nn 个 active slot 时efficiency 为 np(1p)n1np(1-p)^{n-1}nn 很大时其最大值是 1/e0.371/e \approx 0.37

pure ALOHA 不进行 time slot 的划分或者说是每一方的 time slot 不是同步的这样更加去中心化但 efficiency 只有 slotted ALOHA 的一半

CSMA(/CD)

CSMA (carrier sense multiple access) 基于 listen before speaking 的原则进行 carrier sensing

如果再加上 If someone else begins talking at the same time, stop talking 的原则collision detection则是 CSMA/CD

在理想状态下carrier sensing 可以完全消除 collision但实际上由于 propagation delay一方开始发送到另一方收到需要时间在这段时间内可能另一方也发送了信息

在 CSMA/CD 中遇到 collision 需要等待一段时间再 retransmit等待时间通常由 binary exponential backoff 得到在一个范围内随机选择等待时间每多 retransmit 一次这个范围就加倍在 Ethernet 中nn 次 retransmission 会在 0,1,,2n10, 1, \ldots, 2^{n-1} 中随机选择一个数 kk然后等待传输 512k512 \cdot k bits 的用时nn 超过 1010 时也取 1010这里 retransmission 次数是每个 frame 分别计算的新的 frame 会从 00 开始

CSMA/CD 的 efficiency 约为 11+5dprop/dtrans\dfrac{1}{1 + 5 d_{\mathrm{prop}} / d_{\mathrm{trans}}}其中 dpropd_{\mathrm{prop}} 表示 propagation delaydtransd_{\mathrm{trans}} 表示一个 maximum-size frame 的传输用时

Taking-Turns Protocols

轮流让各方发送信息如果一方不想发送则交给下一位

在 polling protocol 中设有一个 master node它轮流 poll 每个 node 来让它发送至多若干个 frame发完再 poll 下一个polling protocol 是 centralized 的有 single point of failure并且对 inactive node 的 poll 会造成浪费

token-passing protocol 是 decentralized 的有一个 token 在各个 node 之间环状地传递拿着 token 就可以发送至多若干个 frame发送完或者不想发送就把 token 交给下一个token-passing protocol 在有任何一个 node 出错时就会卡住需要采取一些 recovery procedure

DOCSIS 用于 cable access network将 residential cable modems 连接到 cable modem termination system (CMTS)它同时用到了多种 multiple access protocol是一个很好的例子

使用 FDM 分为 downstream 和 upstream 两个 channel其中 downstream channel 由 CMTS 向 cable modem 发送sender 唯一比较简单

upstream channel 被分成了若干 mini-slots与 TDM 类似而这些 mini-slots 是由 CMTS 动态分配的需要由 cable modem 发送 mini-slot-request frame这些 request 在一些特殊的 mini-slots 以 random access 的方式发送通过是否收到来自 CMTS 的 mini-slot 分配来判断 request 是否成功发送使用 binary exponential backoff

Switched Local Area Networks

host 和 router 的每个 interface (adapter) 都有一个 link-layer addressMAC address (physical address / LAN address)

MAC address 的长度为 6 bytes与 IP address 不同物理上的每个 interface 的 MAC address 是固定的不会因移动而变化MAC address 由 IEEE 管理在全球范围内是唯一的

如果使用 broadcast link多个 interface 都会收到同样的 frame只有 MAC address 符合时才会接收否则会丢弃不会传递给 network layer

MAC broadcast address 是 ff:ff:ff:ff:ff:ff

Address Resolution Protocol

ARP 用来将 subnet 内部的 IP address 翻译为 MAC address

每个 host / router 会维护一张 ARP table用来记录 IP address 和 MAC address 的对应关系表项有过期时间到期自动删除

如果在 ARP table 内没有查询到需要的 IP address则会发送一个 ARP query一个 broadcast packet具有这个 IP address 的 interface 在收到 ARP query 后会回复 ARP response一般不是 broadcast因为此时 broadcast 可能造成浪费但是若采用 broadcast 也有助于发现 address conflict1收到 ARP response 后更新 ARP table通过这样的机制ARP table 可以自动建立不需要任何手动配置

如果要向 subnet 外发送信息则需要向 gateway (first-hop router) 发送信息所以需要查询的是 gateway 的 MAC address

Ethernet

Ethernet 是现在最常用的 wired LAN

Ethernet 通常使用 hub 或 switch 来连接各个 interfacehub 会将收到的每个 bit 转发给其他所有 interface可能产生 collisionswitch 则根据 MAC address 进行转发不会产生 collision

Ethernet frame 包含

  1. preamble (8 bytes): 31 个 10 和 1 个 11用来标识 frame 的开头并同步时钟
  2. destination MAC address (6 bytes)
  3. source MAC address (6 bytes)
  4. type (2 bytes): upper layer protocol例如 IPARP
  5. data (46 ~ 1500 bytes): 如果需要传送的数据不足 46 bytes 需要进行填充通过 type 以及 data 中的 header例如 IP header来判断 data 的长度
  6. CRC checksum (4 bytes)

Ethernet 是 connectionlessunreliable 的

Ethernet 既是 link-layer protocol也是 physical layer protocol而且实际上是一类而非一个 protocol例如10BASE-T10BASE-2100BASE-T1000BASE-LX10GBASE-T40GBASE-T 是不同的 Ethernet technology开头表示 10Mbps100Mbps1Gbps10Gbps40Gbps 的传输速度BASE 表示 media 只传送 Ethernet traffic最后是不同的 physical media

switch 和 router 的功能类似但它工作于 link layer而且是 transparent其他设备感受不到 switch 的存在也不需要手动进行任何配置

switch 的每个 interface 都有一个 output buffer与 router 类似

switch 维护了一张 switch table表示每个 MAC address 对应的 switch 的 interface以及表项的过期时间

对于从 interface xx 收到的 destination MAC address 为 α\alpha 的 frame

  1. α\alpha 不在 switch table 中broadcast
  2. 若 switch table 中 α\alpha 对应 interface xxdiscard
  3. 若 switch table 中 α\alpha 对应 interface yxy \ne xforward to yy

switch 是 self-learning如果在 interface xx 收到 source MAC address 为 α\alpha 的 frame则会在 switch table 中记录 α\alphaxx 的对应关系

相对于 hubswitch 的优点有

  • 没有 collision可以优化性能
  • 可以将不同 technology 的 link (media) 连接在一起
  • switch 还提供了一些 network management 功能例如自动检测异常的 adapter 并禁用对流量进行统计

switch 减少了 broadcast在提升性能的同时也增强了安全性但是 attacker 可以设法用 bogus entries 将 switch table 填满使得大部分 frame 被 broadcast这被称作 switch poisoning

switch 和 router 都可以将多个 host 连接在一起

  • switch 不需要手动配置性能一般更好只能连成生成树不能连出环如果同一个 subnet 内有太多 host 可能影响性能可能遭受 broadcast storm
  • router 需要手动配置性能可能略差可以随便连从而可以提供多条 route 供 routing protocol 选择提供 firewall 来防止遭受 broadcast storm

一般来说多至数百个 host 时用 switch 即可有更多 host 的话则需要适当使用 router 来进行中转

Virtual Local Area Networks (VLANs)

有时物理上的 switch 会对网络管理造成一些限制

  • 一个 switch 一般有很多 port但希望设置的 subnet 大小为了安全等原因想分成不同的 subnet可能和 port 数量不符
  • 如果要在不同 subnet 之间移动 host需要更改物理连线

VLAN 可以用来解决这些问题

VLAN 通过软件控制一个 switch 上哪些 port 属于同一个 subnet为了将两个 subnet 相连需要将它们连到同一个 router 上为了方便这样操作支持 VLAN 的 switch 往往自带一个 router

可以使用 VLAN trunking 来将多个 switch 上的 port 合并为一个 VLAN每个 switch 上有一个 trunk port将需要 trunking 的 switch 的 trunk port 相连发送到 VLAN 的 frame 会被 forward 到 trunk porttrunking 时所属 VLAN 的识别通过扩展的 Ethernet frame format 802.1Q 来实现在 header 中添加 VLAN tag 来表示所属的 VLAN

除了基于 switch port 的 VLAN还有基于 MAC address 的 VLAN以及基于 network-layer protocol 的 VLAN

Multiprotocol Label Switching (MPLS)

MPLS 基于 fixed-length label 进行 switch在 link-layer header 和 IP header 之间添加 MPLS header需要在支持 MPLS 的 router 之间进行传输switch 时不需要管 IP header

MPLS 有 switch 速度快便于进行 traffic management 等优点

书中对它的介绍过于简略感觉说了和没说差不多我就在此基础上再简略一点(

Data Center Networking

很多大型互联网公司都有由数万台 server 组成的 data centerdata center 对外接入 Internet而其内部又有一套 data center network

data center 主要提供三部分的功能向终端用户 serve content进行 distributed computation对外提供 cloud computing 服务

data center 中的 host 被称作 blade一般数十个 blade 会放在一起组成一个 rack连到同一个 switchtop of rack, TOR switch而整个 data center 通过多级 router 和 switch 构成一个 hierarchy其中 access router 的下方可以分为多个 VLAN如下图所示2

A data center network with a hierarchical topology

在 data center 中一个 application 通常由很多 host 来提供同样的服务而对外只提供一个 IP addressload balancer 通过类似 NAT 的方式将 request 均衡地分配给各个 host 进行处理

树状的网络结构使得一个 data center 可以有数万台 server但 host-to-host capacity 还是会受限尤其是两个 host 的 LCA 位于较高层级时为了解决这一问题可以

  • 使用更高速的 router 和 switch但这会大大增加开销
  • 尽量将需要互相通信的 host 放在较低的同一棵子树内但这不一定做得到可能大量 host 都需要互相通信也会影响 host 位置的灵活性
  • 增加 interconnection 的数量从而增加 host-to-host 的路径数量在优化性能的同时也可以提升系统的可靠性例如每个 TOR switch 连接到 8 个 tier-2 switch每个 tier-2 switch 连接到 16 个 tier-1 switch…… 这也被称作 Clos network

data center 通常使用 SDN 来对网络进行集中管理

为了支持 cloud computing更方便地进行管理通常会使用 virtual machine (VM) 等技术将 software 和 hardware 解耦为了让 VM 能方便地在不同 host 之间移动可以将 ARP 的 broadcast 机制改为类似于 DNS 的机制存储 VM 的 IP address 到 TOR switch 的映射关系

data center network 通常具有极低的延迟以及较小的 buffer size而 congestion control 需要快速作出反应传统的 TCP 不再适用通常会使用为 data center 设计的 TCP 等方式来进行优化

modular data center (MDC) 是一个内有至多数千个 host 的 container用来作为 data center 的组成部分在 MDC 的部分 component 坏掉时MDC 可以继续以 degraded performance 工作而在坏掉的 component 过多时则会报废

很多公司会自己定制 data center 中的各个组成部分包括 network adapterswitchroutersoftwarenetworking protocol

Amazon 通过 availability zone 提高了服务的可靠性即将 data center 在邻近但不同的地理位置上进行复刻从而提供 fault tolerance而地理位置上的邻近保证了 low latency便于同步

Footnotes

  1. ethernet - ARP Replies can they be Broadcast - Network Engineering Stack Exchange

  2. p506, Figure 6.30: A data center network with a hierarchical topology