第5章 网络层:控制平面
目录:
- 目标:
- 理解网络层控制平面的工作原理
- 传统路由选择算法
- SDN 控制器(了解)
- ICMP:Internet Control Message Protocol
- 在互联网上的实例和实现
- OSPF, BGP, OpenFlow, ODL 和ONOS控制器,ICMP, SNMP
- 提纲:
- 导论
- 路由选择算法
- link state
- distance vector
- 因特网中自治系统内部的路由选择
- RIP
- OSPF
- ISP之间的路由选择:BGP
- SDN控制平面(了解)
- ICMP: 因特网控制报文协议
1 路由选择算法
- 路由:按照某种指标(传输延迟,所经过的站点数目等)找到一条从源节点到目标节点的较好路径
- 较好路径: 按照某种指标较小的路径
- 指标:站数, 延迟,费用,队列长度等, 或者是一些单纯指标的加权平均
- 采用什么样的指标,表示网络使用者希望网络在什么方面表现突出,什么指标网络使用者比较重视
- 路由选择算法(routing algorithm):网络层软件的一部分,完成路由功能
- 路由的原则
- 正确性(correctness):算法必须是正确的和完整的
- 简单性(simplicity):最优但复杂的算法,时间上延迟很大,不实用
- 健壮性(robustness):能适应通信量和网络拓扑的变化
- 稳定性(stability):产生的路由不应该摇摆
- 公平性(fairness):对每一个站点都公平
- 最优性(optimality):某一个指标的最优
1.1 链路状态路由选择算法(link state):迪杰斯特拉算法
LS路由的基本工作过程:
- 发现相邻节点,获知对方网络地址
- 测量到相邻节点的代价(延迟,开销)
- 组装一个LS分组,描述它到相邻节点的代价情况
- 将分组通过扩散的方法发到所有其它路由器
以上4步让每个路由器获得拓扑和边代价 - 通过Dijkstra算法找出最短路径(这才是路由算法)
1.2 距离矢量路由选择(distance vector routing):动态规划
距离矢量路由选择的基本思想:
- 各路由器维护一张路由表,结构如图(其它代价)
- 各路由器与相邻路由器交换路由表(待续)
- 根据获得的路由信息,更新路由表(待续)
动态规划方程:
DV的特点:好消息传的快坏消息传的慢(无穷计算问题)
处理方案:只能处理但不能解决
- 限制最大路径距离为15 (16表示不可达)
- 当路由表发生变化时就立即发送更新报文(即“触发更新”) ,而不仅是周期性发送
- 让路由器记录收到某特定路由信息的接口,而不让同一路由信息再通过此接口向反方向传送(即"水平分割”)
1.3 LS 和DV 算法的比较
- 消息复杂度(DV胜出)
- LS: 有n 节点, E 条链路,发送报文O(nE)个
- 局部的路由信息;全局传播
- 全局的路由信息,局部传播
- DV: 只和邻居交换信息
- LS: 有n 节点, E 条链路,发送报文O(nE)个
- 收敛时间(LS胜出)
- LS: O(n2) 算法
- DV: 收敛较慢
- 可能存在路由环路
- count-to-infinity 问题
- 健壮性: 路由器故障会发生什么(LS胜出)
- LS:
- 节点会通告不正确的链路代价
- 每个节点只计算自己的路由表
- 错误信息影响较小,局部,路由较健壮
- DV:
- DV 节点可能通告对全网所有节点的不正确路径代价
- 每一个节点的路由表可能被其它节点使用
- LS:
2 因特网中自治系统内部的路由选择协议
设法使分组在-个自治系统内尽可能有效地从源网络传输到目的网络
无需考虑自治系统外部其他方面的策略
2.1 RIP ( Routing Information Protocol)
- RIP要求自治系统AS内的每一个路由器都要维护从它自己到AS内其他每一个网络的距离- 记录。这是一组距离,称为“距离向量D-V(Distance-Vector)”
- RIP使用跳数(Hop Count)作为度量(Metric)来衡量到达目的网络的距离。
- 路由器到直连网络的距离定义为1。
- 路由器到非直连网络的距离定义为所经过的路由器数加1.
- 允许一条路径最多只能包含15个路由器。 “距离" 等于16时相当于不可达。因此,RIP只适用于小型互联网。
- RIP认为好的路由就是“距离短”的路由,也就是所通过路由器数量最少的路由。
- 当到达同一目的网络有多条“距离相等"的路由时,可以进行等价负载均衡。
- 三个要点:
- 和谁交换信息 仅和相邻路由器交换信息
- 交换什么信息 自己的路由表
- 何时交换信息 周期性交换(例如每30秒)
2.2 OSPF (Open Shortest Path First)
- 开放最短路径优先OSPF(Open Shortest Path First),是为克服RIP的缺点在1989年开发出来的。
- “开放” 表明OSPF协议不是受某-家厂商控制,而是公开发表的。
- “最短路径优先” 是因为使用了Djkstra提出的最短路径算法SPF。
- OSPF是基于链路状态的,而不像RIP那样是基于距离向量的。
- OSPF采用SPF算法计算路由,从算法上保证了不会产生路由环路。
- OSPF不限制网络规模,更新效率高,收敛速度快。
- 链路状态是指本路由器都和哪些路由器相邻,以及相应链路的“代价”(cost)
- OSPF相邻路由器之间通过交互问候(Hello) 分组,建立和维护邻居关系。
2.2.1 OSPF在多点接入网络中路由器邻居关系的建立
- 选举指定路由器DR(designated router)和备用的指定路由器BDR(backup designated router)
- 所有的非DR/BDR只与DR/BDR建立邻居关系
- 非DR/BDR之间通过DR/BDR交换信息
- 为了使OSPF能够用于规模很大的网络, OSPF把- 个自治系统再划分为若干个更小的范围,叫做区域(Area)
2.2.2 基本工作原理
- 使用OSPF的每个路由器都有一个链路状态数据库LSDB, 用于存储LSA。
- 通过各路由器洪泛发送封装有自己LSA的LSU分组,各路由器的LSDB最终将达到- -致。
- 使用OSPF的各路由器基于LSDB进行最短路径优先SPF计算,构建出各自到达其他各路由器的最短路径,即构建各自的路由表。
2.2.3 OSPF有以下五种分组类型
- 类型1, 问候(Hello) 分组
用来发现和维护邻居路由器的可达性。 - 类型2, 数据库描述(Database Description)分组
向邻居路由器给出自己的链路状态数据库中的所有链路状态项目的摘要信息 - 类型3, 链路状态请求(Link State Request)分组
向邻居路由器请求发送某些链路状态项目的详细信息。 - 类型4, 链路状态更新(Link State Update)分组
路由器使用这种分组将其链路状态进行洪泛发送,即用洪泛法对全网更新链路状态。 - 类型5, 链路状态确认(Link State Acknowledgment)分组
这是对链路状态更新分组的确认分组。
3 ISP之间的路由选择:BGP
- 在不同自治系统内,度量路由的“代价”(距离, 带宽,费用等)可能不同。
因此,对于自治系统之间的路由选择,使用“代价”作为度量来寻找最佳路由是不行的。 - 自治系统之间的路由选择必须考虑相关策略(政治,经济,安全等)
- BGP只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子)而并非要寻找一条最佳路由
3.1 边界网关协议BGP的基本工作原理
- 在配置BGP时,每个自治系统的管理员要选择至少-个路由器作为该自治系统的**“BGP发言人”**
- 不同自治系统的BGP发言人要交换路由信息,首先必须建立TCP连接,端口号为179
- 在此TCP连接上交换BGP报文以建立BGP会话
- 利用BGP会话交换路由信息(例如,增加新的路由,或撤销过时的路由,以及报告出错的情况等)
- 使用TCP连接交换路由信息的两个BGP发言人,彼此称为对方的邻站(neighbor) 或对等站(peer)
- BGP发言人除了运行BGP外,还必须运行自己所在自治系统所使用的内部网关协议IGP,例如OSPF或RIP
- BGP发言人交换网络可达性的信息(要到达某个网络所要经过的一系列自治系统)
- 当BGP发言人互相交换了网络可达性的信息后,各BGP发言人就根据所采用的策略从收到的路由信息中找出到达各自治系统的较好的路由。也就是构造出树形结构、不存在回路的自治系统连通图。
- BGP-4有以下四种报文:
- OPEN(打开)报文:用来与相邻的另-个BGP发言人建立关系,使通信初始化。
- UPDATE(更新)报文:用来通告某一路由的信息, 以及列出要撤销的多条路由。
- KEEPALIVE(保活)报文:用来周期性地证实邻站的连通性。
- NOTIFICATION(通知)报文:用来发送检测到的差错。
4 网际控制报文协议ICMP
- 由主机、路由器、网关用于传达网络层控制信息
- 错误报告:主机不可到达、网络、端口、协议
- Echo 请求和回复(ping)
- ICMP处在网络层,但是是在IP协议的上面
- ICMP消息由IP数据报承载
- ICMP 报文:
- 类型
- 编码
- 加上IP数据报的头8B,第一个导致该ICMP报文的IP数据报
4.1 Traceroute and ICMP
- 源主机发送一系列UDP段给目标主机
- 第一个:TTL =1
- 第二个: TTL=2, etc.
- 一个不可达的端口号
- 当nth数据报到达nth路由器(nth –匹配特定的第N次收到的数据报的规则)
- 路由器抛弃数据报
- 然后发送一个给源的ICMP报文(type 11, code 0)
- 报文包括了路由器的名字和IP地址
- 当ICMP报文到达,源端计算RTT
- 对于一个nTraceroute做3次
- 停止的判据
- UDP 段最终到达目标主机
- 目标返回给源主机ICMP “端口不可达”报文(type 3, code 3)
- 当源主机获得这个报文时,停止