控制平面工作的两种可能方法
1.每路由器控制(传统方法)
每台路由器中都运行一种路由选择算法。每台路由器中都拥有一个路由选择组件,用于与其他路由器中的路由选择组件通信,以计算转发表的值
2.逻辑集中式控制(SDN方法)
由逻辑集中式控制器计算并分发转发表以供每台路由器使用。这种情况下每台路由器中都有一个控制代理,这个代理负责与控制器进行交互以及执行相关命令。不同路由器的控制代理不能相互交互,也不能主动参与计算转发表。
路由选择算法
路由选择算法有三个分类标准
标准一:集中式路由选择算法/分散式路由选择算法
集中式路由选择算法使用全局性的数据计算最低开销路径,这种算法也被称为链路状态算法,因为算法知道网络中每条链路的开销.
分散式路由选择算法每个节点只需使用与其直接相连的链路的开销即可开始工作。从一个节点不断迭代,逐渐到达目的节点。
标准二:静态路由选择算法/动态路由选择算法
静态路由选择算法中路由随时间的变化十分缓慢,通常由人工进行手动调整。而动态路由选择算法会随着网络流量负载或拓扑发生变化而改变路由选择路径。
标准三:负载敏感算法/负载迟钝算法
负载敏感中,链路开销会动态变化来反映当前拥塞水平。负载迟钝中链路开销则无法反映当前的拥塞水平
链路状态路由选择算法(集中式路由选择算法)示例 :LS算法
从 源节点开始 ,使用Dijkstra算法,算出到目的节点的最短路径 。
缺点:拥塞敏感导致的路由选择震荡
当计算出某一条路的开销小时,流量都往这条路上引,导致这条路的开销大,从而导致最好路径发生变化,而这种变化又将引起开销小的路开销变大,开销大的路开销变小。
解决方案:确保并非所有路由器都同时 运行LS算法
分散式路由选择算法示例:距离向量路由选择算法(DV算法)
节点x到节点y的最低开销路径为,min(x到某一邻居的路径+该邻居到y的最低开销路径)。
当节点x 发现它的直接相连的链路开销变化或者从某个邻居接收到一个距离向量的更新时,就需要更新最低开销路径
缺点:链路开销增大导致的routing loop
这一缺陷的根本原因:路由器之间互相连接构成环路,其中某条环路骤增导致该节点进行更新,而这一更新所涉及的节点并不知道这条环路开销的骤增
解决方案:毒性逆转
如果z通过y路由到x,那么z将告诉y,它到x的距离是无限大的。(防止z更新距离时拿旧的值通过y再路由到x)
两种算法的比较:
LS算法的报文复杂度更大,因为它需要向每个节点传递报文,而DV算法只需要向邻居节点传递报文。
LS算法的收敛速度快,而DV算法的收敛速度慢。
LS算法的健壮性高,DV算法一旦某个节点发生故障会影响到其他节点。
网络不单单是 路由器的集合,因为随着路由器数目的增大,在路由器之间进行 广播的开销将会变得很大,因此应将网络划分为不同组织,每个组织应当能够按照自己的意愿运行和管理网络,还要将网络与其他外部网络连接起来.
自治系统(AS)
每个自治系统由一组通常处在相同管理控制下的路由器组成.运行在自治系统内部的路由选择算法被称为自治系统内部路由选择协议
自治系统内部路由选择: 开放最短路径优先(OSPF)
OSPF是一种链路状态协议,使用OSPF,一台路由器构建了一幅关于整个自治系统的完整拓扑图,于是,每台路由器在本地运行Dijkstra算法,以确定一个以自身为根节点到所有子网的最短路径树.
使用OSPF时,路由器向自治系统内所有其他路由器广播路由选择信息,而不仅仅是邻居.
ISP之间路由选择:边界网关协议(BGP)
这个协议是仅次于IP协议重要的一个因特网协议,因为正是这个协议将因特网中数以千计的ISP黏合起来
BGP的作用
在BGP中,分组并不是路由到一个目的地址,而是路由到一个CIDR化的前缀,每个前缀代表一个子网集合.BGP主要完成两个任务
1. 从邻居自治系统获得前缀可达性信息
BGP允许每个子网向因特网的其余部分通告它的存在.对于每个AS,每台 路由器要么是网关路由器,要么是内部路由器.网关路由器存在于AS边缘,用来直接连接到其他AS中的路由器.
假设AS3的前缀为x,它要告知AS2这一信息,他就会向AS2发送BGP报文:(AS3, x),然后AS2向AS1发送BGP报文(AS2 AS3 x),这样传播下去即可使得因特网的其他部分得知该AS及其对应前缀的存在.
2. 确定到该前缀的最好路由路径
为了确定最好的路由,该路由器将本地运行一个BGP路由选择过程
首先需要熟悉两个组件:AS-PATH和NEXT-HOP
AS-PATH:该通告已经经过的AS列表
NEXT-HOP:AS-PATH起始的路由器接口的IP地址,即在该AS-PATH下,AS的网关路由器到达下一跳的IP地址.
每条BGP路由包括三个组件:NEXT-HOP,ASPATH,目的前缀
下面开始讨论BGP路由选择算法
热土豆路由选择
首先,在AS内部通过学习得知想到达子网x,可以选择经过多个网关.首先使用AS内部的路由选择协议,算出到达每个网关的最小开销.再从这些最小开销中选出最小者,以这条路径的终点作为网关路由器转发分组.之所以称之为热土豆,是因为分组被类比为烫手的土豆,因为它烫手,需要尽快将其扔出去,只保证AS内部开销最低,而不考虑AS之外端到端开销
实际运用的路由选择算法
如果到相同的前缀有两条或者多条路径,顺序的调用下列消除规则直到余下一条路由
1.路由器被指派了一个本地偏好值,本地偏好是一种策略决定,由网络管理员设置.具有最高本地偏好的路由将被选择
2.从余下的路由中(具有最高本地偏好的那一批)选择具有最短AS-PATH的路由
3.从余下的路由中使用热土豆进行选择.
IP任播
动机
1.在分散的不同的地理位置,替换不同服务器上的相同内容
2.让每个用户从最靠近的服务器访问内容
原理
比如,CDN公司为它的多台服务器指派相同的IP地址,并使用BGP进行通告.当某BGP路由器收到该IP地址的多条通告后,它会将其当作是来自同一个地理位置的不同路径(实际上是来自不同地理位置的不同路径),因此它会运作BGP路由选择算法,选出最近的一条路径配置选择表.
实践中CDN并不使用该方式进行IP任播,因为CDN是基于TCP的,而来自同一个TCP连接的不同分组可能会到达Web服务器的不同实例.
实践中DNS使用该方式,IP任播被广泛应用于将DNS请求指向最近的根DNS服务器
路由选择策略
在路由器选择一条路径时,路由选择策略是胜过其他所有考虑的首要决定因素.它存在的目的之一是可以强制防止转发不必要的流量.因为不同的ISP网络可能接入了不同的主干提供商网络,而这些主干提供商是竞争关系,主干提供商A一定是不乐意去帮忙转发主干提供商B的流量的
ICMP:因特网控制报文协议
ICMP被主机和路由器用来彼此沟通网络层的信息。在某个为宗,IP路由器不能找到一条通往HTTP请求所指定主机的路径,该路由器就会向源主机生成并发送一个ICMP报文以指示错误。ICMP报文是作为IP有效载荷承载的。ICMP报文有一个类型字段和一个编码字段,并且包含首次引起该ICMP报文生成的IP数据报的首部和前八个字节。ICMP并不仅用于通知差错情况。不同类型字段和编码字段的组合生成的ICMP报文具有不同含义。典型的就是ping程序会发送一个ICMP 带有8类型字段,0编码字段的报文到指定主机,目的主机会发回一个0类型0编码的回显回答