CNATDA 第五章学习笔记

Computer Networking: A Top-Down Approach (8th Edition)第五章 The Network Layer: Control Plane 的学习笔记

Introduction

control plane 需要计算出 forwarding table / flow table有两种方式

  • per-router control: router 之间互相发送信息分别进行计算
  • logicially centralized control: 使用 remote controller 集中地获取信息计算分发结果

Routing Algorithms

在 routing algorithm 中网络被抽象为一张图考虑 physical lengthlink speedmonetary cost 等因素作为边权

routing algorithm 可以分为

  • centralized / decentralized计算过程中是否知道整个图的信息
  • static / dynamic是否对网络负载拓扑结构等的改变即时做出响应
  • load-sensitive/insensitive: 是否考虑 congestion 状况

LS 是一个 centralized routing algorithm需要每个 node 将其 attached links 的信息进行广播link-state broadcast使得每个 node 都有整张图的信息再用 Dijkstra 等算法计算最短路

在 load-sensitive routing algorithm 中traffic load 的改变可能导致 oscillation要么改为 load-insensitive要么设法保证各个 router 不同时运行 routing algorithm

The Distance-Vector (DV) Routing Algorithm

每个 node 维护一个到其他每个 node 的 distance vector告诉 neighbor 自己的 distance vector通过 neighbor 的 distance vector 更新自己的 distance vectorlink state 发生改变时会经过多轮迭代进行传播并最终收敛

在 link cost 减小时收敛是较快的

但是在 link cost 增大时收敛可能需要边权值域大小轮次的迭代称作 count-to-infinity problem并在过程中产生 routing loop例如下图所示的情况1

Changes in link cost

使用 poisoned reverse 可以避免出现二元环如果 uu 使用了 (u,v)(u, v) 这条边来走向 ww则在 uu 告诉 vv 的 distance vector 中uuww 的距离是 \infty

但是 poisoned reverse 不能避免多元环的出现

Comparison of LS and DV Routing Algorithms

  • message complexity: LS 需要让每个 node 都获取到全局的 link state要传送大量信息且信息需要发送到很远的地方DV 只需要从 neighbor 获取信息
  • speed of convergence: LS 有 Dijkstra 的低复杂度DV 则较慢而且过程中可能出现 routing loop还有 count-to-infinity problem
  • robustness: 在 LS 中每个 node 可以提供错误的 link state但影响有限每个 node 只为自己计算 forwarding table在 DV 中每个 node 的计算结果都是其他 node 的计算的一部分影响可以很大

实际上Internet 同时使用了这两种算法

Intra-AS Routing in the Internet: OSPF

如果统一管理所有 router一方面规模过大性能无法接受另一方面无法满足自治的需求所以实际上 router 被分成了很多个 autonomous system (AS)每个 AS 有一个 ICANN 赋予的编号例如每个 ISP 可能管理着一个或多个 AS

每个 AS 内使用同一个 intra-AS routing protocol例如 OSPF (Open Shortest Path First) 它非常复杂书中只有简要介绍

OSPF 使用的是 LS routing algorithm边权由管理员设置每个 router 都会向整个 AS 内的其他所有 router在 link state 发生变化时 & 周期性地broadcast link state

  • OSPF message 直接通过 IP 传输不使用 transport-layer protocol
  • 支持 authentication
  • 有多条最短路时可以同时使用
  • 有 MOSPF 扩展来支持 multicast
  • 可以将 AS 划分为多个 area 形成 AS 内部的 hierarchy每个 area 内部走最短路不同 area 之间通过每个 area 的 border router 走 backbone area

Routing Among the ISPs: BGP

The Role of BGP

BGP (Border Gateway Protocol) 是所有 AS 共用的 inter-AS routing protocol将各个 AS 连接在一起

在 BGP 中destination 不是特定的 IP address而是 CIDR prefixBGP 使得一个 AS 可以向其他 AS advertise prefix并计算出到达各个 prefix 的 route

Advertising BGP Route Information

不同 router 之间会建立称作 BGP connection 的 TCP connection不是 physical link一般来说负责连接两个 AS 的 gateway router 之间会建立 external BGP (eBGP) connection而 AS 内部的 router 两两之间建立 internal BGP (iBGP) connection

一条 BGP advertisement称作一个 route包含 AS-PATH 和 NEXT-HOP 等信息

  • AS-PATH 即经过哪几个 AS 能到达目的地一个 AS 收到来自其他 AS 的 route 后可以在 AS-PATH 中加上自己继续向 neighbor 发送
  • NEXT-HOP 是从当前 AS 出发向目的地走走出当前 AS 遇到的第一个 router 的 IP address

Determining the Best Routes

从一个 AS 出发到达某个 prefix 可能有很多条路径BGP 按照下面的顺序来决定 best route平局则使用下一条规则

  1. 由管理员设置或从其他 AS 获取的 local preference
  2. shortest AS-PATH经过最少个 AS
  3. 在 AS 内走最短路通过 intra-AS protocol 以及 NEXT-HOP 得到到达 gateway router
  4. 根据 BGP identifier 选

IP-anycast

BGP 可以计算出到达某个 prefix (IP address) 的 best route如果为多个 host 设置相同的 IP address则可以实现 IP-anycast例如在 CDN 中可以让用户从多个内容相同的 server 中挑选最适合的一个而这一挑选是在 router 处通过 BGP 实现的

但是 IP-anycast 如果用于 TCP 可能导致同一个 TCP connection 发给不同 host所以 CDN 一般不采用 IP-anycast而 DNS root server 则采用了 IP-anycastDNS 使用 UDP

Routing Policy

BGP 通过 local preference 给管理员提供了决定如何选择 route 的自由以实现某些 policy

例如当一个 access ISP 连接到多个 backbone ISP即 multi-homeaccess ISP 不应该作为中介在不同 backbone ISP 之间进行传输一般来说一个 ISP 只会在通信双方至少有一方是其 customer 时提供服务

The SDN Control Plane

SDN 分为 SDN controllernetwork management applications例如 routingaccess controlload balancingcontrolled devices 三个部分其中 SDN controller 连接了 network management applications 和 controlled devices

SDN 使用 generalized forwarding将 data plane 和 control plane 分开通过 network management applications 提供 network control functions实现了 programmable network

SDN 将 network functionality 进行了 unbundle使得 packet switchesSDN controllernetwork management applications 可以来自不同的供应商各自发展

  • communication layer (northbound API): controlled devices 和 SDN controller 进行通信SDN controller 向 controlled device 发送信息例如 flow table从 controlled device 获取 link state 等信息并在 network state 发生改变时被通知可以使用 OpenFlowSNMP 等协议
  • network-wide state-management layer: SDN controller 存储了一些信息包括 network stateflow table统计数据等
  • interface to the network-control application layer (southbound API): network management applications 可以从 SDN controller 获取 network state订阅状态发生改变的 event通过 RESTful API 等方式通信

在 OpenFlow 中SDN controller 可以向 controlled device 发送

  • configuration修改配置参数
  • modify-state例如修改 flow table
  • read-state例如获取统计信息
  • send-packet让 router 发出一个 packet

controlled device 可以向 SDN controller 发送

  • flow-removed: 通知一个 flow table entry 已被移除timeout 或者被 modify-state 删除
  • port-status: 例如一个 link up/down 了
  • packet-in: 如果一个 packet 在 flow table 中没有 match或者 action 为发送到 controller

ICMP: The Internet Control Message Protocol

ICMP 用来进行 router 和 host 之间的通信作为 IP payload 进行传输

ICMP message 有很多种例如

  • 用来 ping 的 echo request 和 echo reply
  • destination network/host/protocol/port unreachable
  • router advertisement
  • router discovery
  • TTL expired
  • IP header bad

Traceroute 就是通过 ICMP 实现的向一个 unlikely port number 发送 TTL 递增的 UDP datagram通过 TTL expired 得到每个 router 的信息通过 port unreachable 得到终点的信息

Network Management and SNMP, NETCONF/YANG

Network management involves the deployment, integration and coordination of all the hardware, software and human elements to monitor, test, poll, configure, analyze, evaluate, and control the network and element resources to meet the real-time, operational performance and quality-of-service (QoS) requirements at reasonable cost.2

network management 包括 managing server (以及 network manager)managed devicedata每个 device 有 configurationoperational datadevice statistics而 managing server 有每个 device 以及整个 network 的 datanetwork management agentnetwork management protocol

network management 有若干方式

  • CLI: error-prone难以 scale
  • SNMP/MIB: 每个 device 有 management information base (MIB) objects可以通过 simple network management protocol (SNMP) 来获取/设置 MIB objects 中的 datadevice 也可以通过 trap message 向 managing server 通知状态变化SNMP/MIB 是针对单个 device 的也难以 scale
  • NETCONF/YANG: NETCONF 比起 SNMP 更注重于配置管理可以一次性操控多个 device (atomic network management transaction)可以设置 constraint 检查配置的正确性使用 YANG 作为 data modeling language以 XML 格式通过 TLS 进行通信

Footnotes

  1. p393, Figure 5.7: Changes in link cost, b.

  2. Saydam, T., Magedanz, T. From networks and network management into service and service management. J Netw Syst Manage 4, 345–348 (1996). https://doi.org/10.1007/BF02283158