控制平面的主要职责是如何计算和维护路由转发表。
从发送方到接收方确定一条代价最优的路径。
集中式 / 分布式
前者知道完整、全局的网络信息,后者只知道与其直接相连链路的开销。
动态 / 静态
动态算法会随着网络情况变化,但可能有路由震荡问题(频繁改变路由)。
负载敏感 / 负载迟钝
链路开销是否明确反映拥塞水平。目前主流算法均是负载迟钝的。
是集中式的算法。可采用Dijkstra算法实现。
两个集合S、U = Σ - S。Σ 表示全顶点集,S 称为已确定最短路的顶点数组,U 是未确定的。
初始,S 只包含起点。初始化 dis[|Σ|] 数组用于表示起点到该点的最短距离。
从 U 中选出“当前最近的顶点 k ”,将顶点 k 加入 S ,从 U 中移除 k 。
利用 k 更新 U 中各个顶点到起点s的距离。d(s, v) = min(current, (s,k) + (k,v))。
重复上述两步,直到遍历完所有顶点。
如果需要同时获得具体路径,则在第二步更新时,在距离上附带来源顶点即可。
当链路开销等于链路上承载的负载时,可能造成路由的反复变化。
是分布式的算法。可采用Bellman-Ford算法实现。
节点 x 维护一个距离向量[dis(x→y) : y ? N ], 表示 x 到 N 中任意节点 y 的开销估计向量,其到任意邻居 v 的开销为 c(x, v) 。
当 x 发现它的直接相连的链路开销发生变化, 或从某个邻居接收到一个距离向量的更新时, 就会利用 Bellman-Ford 方程更新自己的距离向量。如果确实有变化, 则向邻居发送更新后的距离向量。
Bellman-Ford 方程:dis(x→y) = min {c(x, v) + dis(v→y)} through all v
链路开销变化时,好消息传得快,坏消息传的慢,可能导致无穷计数问题(出现路由选择环路:为了到达x,y要经过z,z又要经过y)。
处理方法:毒性逆转。如果z通过y路由到达x,则z告诉y它到x的距离是无穷大。这可以解决两个直接相连的邻居节点的无穷计数问题。
AS:自治系统。由于网络规模越来越大,不可能在全体主机之间运行路由选择算法,而要分层分级,ISP之间运行一个,ISP之内运行一个。这样ISP也可以隐藏自己的网络细节。
开放路由最短路径优先协议OSPF就是AS内部的路由选择策略之一。采用的是LS算法。
路由器会将OSPF连接状态通告所有其他路由器,并且每当一条链路状态发生变化,路由器就会广播链路状态信息。即使链路状态未发生变化, 它也要周期性地广播链路状态。
边界网关协议BGP是AS之间的路由选择策略。它在AS内部运行iBGP会话,在AS之间运行eBGP会话。
上图表示了连接关系和通告子网X的通告流程——内部通告、AS间通告。
有时候,网关路由器可能获得到达某个目的地的多条路径,这时需要使用BGP的路由选择算法来决定。具体有如下几种策略:
软件定义网络SDN的主要思想是让配置网络像配置软件一样简单、可伸缩。SDN体系结构有四个特征:
即因特网控制报文协议。主机和路由器用来交互网络层信息。虽然装在IP数据报中,但它是网络层协议。
原文:https://www.cnblogs.com/zxuuu/p/12977956.html