1. 概述
转发表(基于目的地转发)和流表(通用转发)是连接网络层的数据平面和控制平面的首要元素,定义了路由器的本地数据平面的转发行为。
通用转发不仅包括转发分组到达路由器的输出端口,还能够丢弃、复制分组和重写第2、3或4层分组首部字段。
转发表和流表的计算、维护和安装有两种方法:
- 路由器自己控制:路由器运行路由选择算法,由路由选择组件和其他路由器中的路由选择组件通信,以计算其转发表的值。
- 逻辑集中式控制:逻辑集中式控制器计算并分发转发表供每台路由器使用。
控制器与路由器中的控制代理(CA)进行交互以配置和管理转发表。CA与控制器通信并且按控制器命令行事,但CA既不能相互交互,也不能主动参与计算转发表。
逻辑集中式控制出于容错和性能扩展性的原因,可能由多个服务器实现。
2. 路由选择算法
路由选择算法(routing algorithm)确定一条通过路由器网络最低开销的路径。
图(graph)G = (N, E)是一个 N 个节点和 E 条边的集合。
- 节点是路由器,做出分组转发的决定;
- 边是路由器之间的链路;
边上的值是对应的开销,开销反映出链路的物理长度、链路速度或金钱上的花费。
我们用 c (x, y) 表示节点 x 和 y 之间的开销,如果 (x, y) 不属于E,则 c (x, y) =
路由选择算法的目标是找出最低开销路径(least-cost path)。当具有相同开销时,选择最短路径(shortest path)。
路由选择算法分类:
- 根据集中式和分散式分类:
- 集中式路由选择算法(centralized routing algorithm)以所有节点之间的连通性及所有链路的开销为输入。这种具有全局状态信息的算法被称为链路状态(Link State,LS)算法,因为该算法必须知道网络中每条链路的开销。
- 分散式路由选择算法(decentralized routing algorithm)使用迭代、分布式的方式计算。每个节点仅有与其直接相连链路的开销知识,通过迭代计算过程以及与相邻节点的信息交互逐渐计算出最低开销路径。距离向量(Distance-Vector,DV)算法,因为每个节点维护到网络中所有其他节点的开销(距离)估计的向量。
- 根据静态和动态分类:
- 静态路由选择算法(static routing algorithm),路由变化缓慢,通常由人工调整。
- 动态路由选择算法(dynamic routing algorithm)随着网络流量负载或拓扑发送变化而改变路由选择路径。
- 根据负载敏感和负载迟钝分类:
- 负载敏感算法(load-sensitive algorithm),开销会动态地变化以反映出底层链路的拥塞水平,并趋于绕开拥塞链路。
- 现在都是负载迟钝(load-insensitive),因为开销不能明确的反映当前的拥塞水平。
3. 自治系统内部的路由选择:OSPF
- 随着路由器数目变大,需要减少因特网中的路由计算的复杂程度;
- ISP希望按照自己的意愿运行和管理其网络;
因此,路由器组织为自治系统(Autonomous System,AS)。每个AS由一组处在相同管理控制下的路由器组成,一个ISP中的路由器及链路构成一个或多个AS。一个AS由唯一的AS号标识。在一个AS中运行的选择算法称为自治系统内部路由选择协议(intra-autonomous system routing protocol)。
开放最短路选择(OSPF)
4. ISP间的路由选择:BGP
在AS之间需要自治系统间路由选择协议(inter-autonomous system routing protocol),所有AS都运行相同的协议——边界网关协议(Broder Gateway Protocol,BGP)。它和IP协议是互联网中最重要的两个协议。
4.1. BGP的作用
对位于AS外部的目的地,转发表由BGP确定。
在BGP中,分组是路由到CIDR(Classless Inter-Domain Routing,无类域内路由选择)化的前缀,其中每个前缀表示一个子网或一个子网的集合。因此,一台路由器的转发表将具有形式为(x,I)的表项,x 是一个前缀(如138.16.68/22),I 是该路由器接口之一的接口号。
BGP需要完成以下任务:
- 从邻居AS获得前缀的可达性信息,BGP允许每个子网向因特网的其余部分通告它的存在。
- 确定到该前缀最好的路由;该路由器将本地运行BGP路由选择过程,基于策略及可达信息。