控制平面作为一种网络范围的逻辑,不仅控制沿着从源主机到目的主机的端到端路径间的路由器如何转发数据报,而且控制网络层组件和服务如何配置和管理
转发表(在基于目的地转发的场景中)和流表(在通用转发的场景中)是链接网络层的数据平面和控制平面的首要元素。
转发表和流表是如何计算、维护和安装的?
该控制器经一种定义良好的协议与每台路由器中的一个控制代理(CA)进行交互,以配置和管理该路由器的转发表
目的:从发送方到接收方的过程中确定一条通过路由器网络的好的路径(等价于路由)。
路由选择算法(routing algorithm):网络层软件的一部分,完成路由功能
网络的图抽象
图: G = (N,E)
N = 路由器集合 = { u, v, w, x, y, z }
E = 链路集合 ={ (u,v), (u,x), (v,x), (v,w), (x,w), (x,y), (w,y), (w,z), (y,z) }
边有代价
c(x,x’) = 链路的代价 (x,x’)
如果(x, y)属于E,节点y也被称为节点x的邻居(neighbor)
路由的输入:拓扑、边的代价、源节点
路由的输出:源节点的汇集树
图G =(N, E)中的一条路径(path)是一个节点序列(x1,x2,… ,xp),开销为沿着路径所有边的开销的总和,即 c(x1,x2)+c(x2,x3)+…+c(xp-1 , xp),最低开销路径也就是最短路径,即在源和目的地之间的具有最少链路数量的路径。
路由选择算法的原则
路由选择算法的分类
在链路状态算法中,网络拓扑和所有的链路开销都是已知的。现实中通过让每个节点向网络中所有其他节点广播链路状态分组来完成的,其中每个链路状态分组包含它所连接的链路的标识和开销,常由链路状态广播算法完成,其结果为所有节点都具有该网络的统一、完整的视图。
的链路状态路由选择算法叫作Dijkstra算法,其计算从某节点(源节点,我们称之为u)到网络中所有其他节点的最低开销路径。其通过k次迭代,可知道到k个目的节点的最低开销路径。定义下列记号
当LS算法终止时,对于每个节点,我们都得到从源节点沿着它的最低开销路径的前一节点。对于每个前一节点,我们又有它的前一节点,以此方式我们可以构建从源节点到所有目的节点的完整路径。
该算法的计算复杂性是什么?
在第一次迭代中,我们需要搜索所有的n个节点,在第二次迭代时,我们需要检查n-1个节点,第三次对n-2个节点迭代,所有迭代中需要搜寻的节点总数为n(n + 1)/2,的链路状态算法在最差情况下复杂性为O(n2)
距离向量算法是一种迭代的、异步的和分布式的算法,而LS算法是一种使用全局信息的算法。
令dx(y)是从节点x到节点y的最低开销路径的开销。则该最低开销与著名的Bellman- Ford方程相关,即
dx(y)=minv{c(x,y)+dv(y)}d_x(y)= min_v\lbrace c(x,y)+d_v(y)\rbrace dx(y)=minv{c(x,y)+dv(y)}
例子:
核心思路:
每个节点做的事:
DV的特点
好消息传的快,坏消息传的慢
好消息:好消息的传播以每一个交换周期前进一个路由器的速度进行,比如某个路由器接入或有更短的路径
坏消息的传播速度非常慢
比如:
解决坏消息传得慢的一种方法:水平分裂(split horizon)算法
但水平分裂算法在某些拓扑形式下会失败(存在环路)
LS 和 DV 算法的比较
自治系统(Autonomous System, AS)
开放最短路优先(OSPF):
- 使用LS算法
- LS 分组在网络中(一个AS内部)分发
- 全局网络拓扑、代价在每一个节点中都保持
- 路由计算采用Dijkstra算法
- OSPF通告信息中携带:每一个邻居路由器一个表项
- 通告信息会传遍AS全部(通过泛洪)
特性:
层次路由:将互联网分成一个个AS(路由器区域)
路由变成了: 2个层次路由
层次路由的优点
在因特网中,所有的AS运行相同的AS间路由选择协议,称为边界网关协议(Broder Gateway Protocol, BGP),这个协议将因特网中数以千计的ISP黏合起来。BGP是一种分布式和异步的协议
对于位于相同AS中的目的地而言,在路由器转发表中的表项由AS内部路由选择协议所决定。而对于位于该AS外部的目的地而言情况如何呢?这正是BGP用武之地。
一台路由器的转发表将具有形式为(x,I)的表项,其中x是一个前缀(例如138.16. 68/22),I是该路由器的接口之一的接口号。
从邻居AS获得前缀的可达性信息。BGP允许每个子网向因特网的其余部分通告它的存在
确定到该前缀的“最好的”路由。为了确定最好的路由,该路由器将本地运行一个BGP路由选择过程
eBGP: 从相邻的ASes那里获得子网可达信息,跨越两个AS的BGP连接
iBGP: 将获得的子网可达信息传遍到AS内部的所有路由器,在相同AS中的两台路由器之间的BGP会话
下面网络有3个自治系统AS1、AS2和AS3
BGP会话:在BGP中,每对路由器通过使用179端口的半永久TCP连接交换路由选择信息。
传播可达性信息,使用了iBGP和eBGP会话
从某个给定的路由器到某个给定的目的地可能有多条不同的路径,每条通过了不同的AS序列。在上图这种情况下,从AS1到x有两条路径:经过路由器1c的路径“AS2 AS3 x” ;以及经过路由器1c的新路径“AS3 x” 。
当路由器通过BGP连接通告前缀时,它在前缀中包括一些BGP属性(BGP attribute)
前缀及其属性称为路由。两个较为重要的属性是AS-PATH和NEXT HOP
1.热土豆路由选择
热土豆路由选择增加AS向外前缀的步骤。
热土豆路由选择依据的思想是:对于路由器1b,尽可能快地将分组送出其AS(更明确地说,用可能的最低开销),而不担心其AS外部到目的地的余下部分的开销。
2.路由器选择算法
如果到相同的前缀有两条或多条路由,则顺序地调用下列消除规则直到余下一条 路由
BGP还常被用于实现IP任播(anycast)服务,该服务通常用于DNS中
CDN公司为它的多台服务器指派相同的IP地址,并且使用标准的BGP从这些服务器的每台来通告该IP地址。当某台BGP路由器收到对于该IP地址的多个路由通告,它将这些通告处理为对相同的物理位置提供不同的路径。
当配置其路由选择表时,每台路由器将本地化地使用BGP路由选择算法来挑选到该IP地址的“最好的”(例如,由AS跳计数确定的最近的)路由
在这个初始BGP地址通告阶段后,CDN能够进行其分发内容的主要任务。
当该客户想向那个IP地址发送一个请求时,因特网路由器则向那个“最近的”服务器转发该请求分组,最近的服务器是由BGP路由选择算法所定义的
实践中CDN通常选择不使用IP任播,IP任播被DNS系统广泛用于将DNS请求指向最近的根DNS服务器
在路由选择算法中,实际上首先根据本地偏好属性选择路由,本地偏好值由本地AS的策略所确定。
例:
W、X和Y是接入ISP,而A、B和C是主干提供商网络。
假设一个ISP只想 路由流量到/去往它的客户网络 (不想承载其他ISPs之间的流量,即不通告:不是去往我的客户,也不是来自我的客户)
A向B和C通告路径Aw
B选择不向C通告BAw:
C可能会通过 CAw (而不是使用B)最终路由到w
X 是双重接入的,多宿桩网络,接入了2个网络
策略强制让X:X不想路由 从B通过X到C的分组,因而X就不通告给B,它实际上可以路由到C
传统方式:每-路由器(Per-router)控制平面
在每一个路由器中的单独路由器算法元件,在控制平面进行交互
SDN方式:逻辑上集中的控制平面
一个不同的(通常是远程的)控制器与本地控制代理(CAs)交互
SDN体系结构具有4个关键特征
SDN控制平面大体划分为两个部分,即SDN控制器和SDN网络控制应用程序。
控制器的功能可大体组织为3个层次
OpenFlow协议运行在SDN控制器和SDN控制的交换机或其他实现OpenFlow API的设备之间,协议运行在TCP之上,使用6653的默认端口号
从控制器到受控交换机流动的重要报文有下列这些
受控交换机到控制器流动的重要报文有下列这些:
网络管理员不需要直接通过创建/发送流表来编程交换机,而是采用在控制器上的app自动运算和配置
因特网控制报文协议(ICMP),被主机和路由器用来彼此沟通网络层的信息。
ICMP通常被认为是IP的一部分,但从体系结构上讲它位于IP之上,因为ICMP报文是承载在IP分组中的。
ICMP报文是作为IP有效载荷承载的
ICMP报文有一个类型字段和一个编码字段,并且包含引起该ICMP报文首次生成的IP数据报的首部和前8个字节(以便发送方能确定引发该差错的数据报)
Traceroute程序
该程序允许我们跟踪从一台主机到世界上任意一台主机之间的路由。Traceroute是用ICMP报文来实现的
为了判断源和目的地之间所有路由器的名字和地址,源主机中的Traceroute向目的地主机发送一系列普通的IP数据报
这些数据报的每个携带了一个具有不可达UDP端口号的UDP报文段。
- 第一个:TTL =1
- 第二个:TTL=2, etc.
- 该源主机也为每个数据报启动定时器
第n个数据报到达第n台路由器时,第n台路由器观察到这个数据报的TTL正好过期
- 路由器抛弃数据报
- 然后发送一个给源的ICMP报文 (type 11, code 0)
- 报文包括了路由器的名字和IP地址
当ICMP报文到达,源端计算RTT
停止的判据:
- UDP 段最终到达目标主机
- 目标返回给源主机ICMP “端口不可达”报文 (type 3, code 3)
- 当源主机获得这个报文时,停止
什么是网络管理?
网络管理包括了硬件、软件和人类元素的设置、综合和协调,以监视、测试、轮询、配置、分析、评价和控制网络及网元资源,用合理的成本满足实时性、运营性能和服务质量的要求
简单网络管理协议是一个应用层协议,用于在管理服务器和代表管理服务器执行的代理之间传递网络管理控制和信息报文。
SNMP最常使用的是请求响应模式,其中SNMP管理服务器向SNMP代理发送一个请求,代理接收到该请求后,执行某些动作,然后对该请求发送一个回答。
SNMP第二个常被使用的是代理向管理服务器发送的一种非请求报文,该报文称为陷阱报文(trap message)
SNMPv2定义的7种类型的报文
务器和被管设备之间,允许管理服务器查询被管设备的状态,并经过其代理间接地在这些设备上采取行动。
上一篇:DDD很难,学不会怎么办?
下一篇:Vue使用的编辑器