计算机网络 - 网络层控制平面
哪有人写网络层不写路由选择算法的 KORA!!!
路由器根据转发表转发分组;在泛化转发的场景下,流表定义了匹配特定网络流量的规则以及与之关联的动作。控制平面配置和管理这两张表
要计算这些表,有两种思路:
每台路由器运行一个路由选择算法,自己计算转发表的值
使用一个逻辑集中式的控制器统一计算,再发给每个路由器
后者日益成为主流......其实现在就是,SDN(软件定义网络)如今采用极为广泛
OSPF - 因特网 AS 内部的路由选择
在我们研究路由选择算法的时候,我们将网络看成一个路由器集合。但是现实的因特网太过庞大,而且每个 ISP 都希望按照自己的想法组织内部网络,我们不可能将整个因特网直接统一管理
所以有了 AS 自治系统的概念,每一个 AS 有一组路由器及互联它们的链路组成,这些路由器一般处于相同管理控制下。AS 由一个唯一的 AS 号(ASN)表示,由 ICANN 分配。显然,一个 AS 内有多个子网
OSPF 开放最短路优先
OSPF 是一种链路状态协议,使用洪范链路状态信息和 Dijkstra。每台路由器在本地运行 Dijkstra 确定从自身到所有子网的最短路径树,各条链路的开销由网络管理员配置
每当一条链路状态变化路由器就会广播链路状态信息,没有变化也会周期性广播
ISP 间的路由选择:BGP
不同 AS 内部会运行不同的路由选择协议,然而,在因特网内部,所有的 AS 运行相同的 AS 间路由选择协议,称为边界网关协议 BGP
在 BGP 协议中,一台路由器转发表具有(x,l)形式的表项,其中 x 是 IP 地址的前缀,l 是路由器接口之一的端口号
BGP 为每台路由器提供了完成以下工作的手段:
从邻居 AS 获得可达性信息。这允许子网向因特网其他部分通告其存在
确定到一个前缀的“最好的”路由
通告 BGP 路由信息
在 BGP 中每对路由器使用半永久的 TCP 连接(即长时间打开)交换路由选择信息,其中跨越两个 AS 的称为外部 BGP(eBGP),AS 内部的称为内部 BGP(iBGP)这样路由器之间便可以相互通告
确定最好路由
路由器会受到很多不同的路径可达性信息,我们需要确认其中一条
每条 BGP 路由包含 3 个组件(不止,但目前只讨论这些):AS-PATH;NEXT_HOP;目的地址前缀。AS-PATH 属性告知一个 BGP 通告到达此 AS 时经历过的 AS 列表,这个列表还可以防止环路。NEXT-HOP 属性告知 AS-PATH 起始路由器接口的 IP(其实就是接下来必须经过的接口的 IP,这不一定和起始的路由器直接相连)
BGP 使用了一个和热土豆路由选择结合的算法。若果到达目的前缀的路径有多条,那么叫按顺序依照以下规则筛选:
路由器被指派一个本地偏好,这取决于该 AS 的网路管理员。具有最高偏好的下一跳路由器将被选择
在所有具有最高偏好值得路径中,选择 AS-PATH 最短的一条
使用热土豆,选择到达 NEXT-HOP 开销最小的一条
如果还剩下,使用 BGP 标识符
IP 任播
比如一家 CDN 公司为其多台服务器分配相同的 IP(对于客户来说,这个 IP 有天然的多个路径),并使用 BGP 让这些服务器通告其 IP。这样,BGP 的路由选择算法会自动地找到“最近的”服务器
SDN 控制平面
SDN 控制平面大致分为两个部分:SDN 控制器与 SDN 网络控制应用程序
SDN 控制器自底而上有 3 个层次:
通信层:与其控制的网络设备通信,收集设备之间的信息,称为“南向接口”
网络状态管理层:监控运行,管理配置维护各设备信息,实施策略等功能
对网络控制应用的接口:“北向接口”,与上层程序交互
SDN 控制器被认为是逻辑上集中,而物理上分散的。即它被视为整体,但是实现往往是分布式的
SDN 网络控制应用程序,像是负责路由选择,输入控制,负载均衡之类的程序,可以完成多种功能。与 SDN 控制器就像操作系统和应用程序一样
ICMP 因特网报文控制协议
最典型的用途是差错报告,比如路由器找不到 HTTP 指定的主机路径,这个路由器就会像你的主机发送一个 ICMP 报文。被认为是 IP 的一部分,但似乎又位于其上:ICMP 报文是由 IP 承载的