课程资源
- 课程网站:http://staff.ustc.edu.cn/~qzheng/teaching.html
- 课程视频:https://www.bilibili.com/video/BV1JV411t7ow/
- 课程教材:计算机网络(自顶向下方法 第7版),机械工业出版社,2016
第五章
网络层:控制平面
1、导论
- 2种构建网络控制平面功能的方法:
- 每个路由器控制功能实现(传统)
- 逻辑上集中的控制功能实现(software defined networking)
2、路由选择算法
路由的概念
- 路由:按照某种指标(传输延迟,所经过的站点数目等)找到一条从源节点到目标节点的较好路径
- 以网络为单位进行路由(路由信息通告+路由计算)
- 网络到网络的路由= 路由器-路由器之间路由
- 网络对应的路由器到其他网络对应的路由器的路由
- 在一个网络中:路由器-主机之间的通信,链路层解决
- 到了这个路由器就是到了这个网络
- 路由算法分类
- 全局:
- 所有的路由器拥有完整的拓扑和边的代价的信息
- “link state” 算法
- 分布式:
- 路由器只知道与它有物理连接关系的邻居路由器,和到相应邻居路由器的代价值
- 叠代地与邻居交换路由信息、计算路由信息
- “distance vector” 算法
- 全局:
链路状态路由选择(link state routing)
- LS路由的工作过程
-
各点通过各种渠道获得整个网络拓扑, 网络中所有链路代价等信息(这部分和算法没关系,属于协议和实现)
- 发现相邻节点,获知对方网络地址
- 测量到相邻节点的代价(延迟,开销)
- 组装一个LS分组,描述它到相邻节点的代价情况
- 将分组通过扩散的方法发到所有其它路由器
-
使用LS路由算法,计算本站点到其它站点的最优路径(汇集树),得到路由表
- 通过Dijkstra算法找出最短路径(这才是路由算法)
-
距离矢量路由选择(distance vector routing)
-
动态路由算法之一
- 路由变化很快
- 周期性更新
- 根据链路代价的变化而变化
- 自适应路由选择(adaptive algorithm):能适应网络拓扑和通信量的变化
- 路由变化很快
-
核心思路:
- 每个节点都将自己的距离矢量估计值传送给邻居,定时或者DV有变化时,让对方去算
- 当x从邻居收到DV时,自己运算,更新它自己的距离矢量
- 采用B-F equation:
- 采用B-F equation:
-
距离矢量路由选择的基本思想
- 各路由器维护一张路由表,结构如图(其它代价)
- 各路由器与相邻路由器交换路由表(待续)
- 根据获得的路由信息,更新路由表(待续)
- 各路由器维护一张路由表,结构如图(其它代价)
-
DV的特点
- 好消息的传播以每一个交换周期前进一个路由器的速度进行
- 坏消息的传播速度非常慢(无穷计算问题)
- 水平分裂(split horizon)算法:一种对无穷计算问题的解决办法
LS与DV算法比较
- 消息复杂度(DV胜出)
- LS: 有 n 节点, E 条链路,发送报文O(nE)个
- 局部的路由信息;全局传播
- DV: 只和邻居交换信息
- 全局的路由信息,局部传播
- LS: 有 n 节点, E 条链路,发送报文O(nE)个
- 收敛时间(LS胜出)
- LS: O(n2) 算法
- 有可能震荡
- DV: 收敛较慢
- 可能存在路由环路
- count-to-infinity 问题
- LS: O(n2) 算法
- 健壮性: 路由器故障会发生什么(LS胜出)
- LS:
- 节点会通告不正确的链路代价
- 每个节点只计算自己的路由表
- 错误信息影响较小,局部,路由较健壮
- DV:
- DV 节点可能通告对全网所有节点的不正确路径代价
- 距离矢量
- 每一个节点的路由表可能被其它节点使用
- 错误可以扩散到全网
- DV 节点可能通告对全网所有节点的不正确路径代价
- LS:
- 2种路由选择算法都有其优缺点,而且在互联网上都有应用
3、因特网中自治系统内部的路由选择
- RIP ( Routing Information Protocol)
- 基于DV算法:在邻居之间每30秒交换通告报文
- 每一个通告: 至多AS内部的25个目标网络的DV
- 如果180秒没有收到通告信息–>邻居或者链路失效
- 通告报文通过UDP报文传送,周期性重复
- 网络层的协议使用了传输层的服务,以应用层实体的方式实现
- OSPF (Open Shortest Path First)
- 基于LS算法
- OSPF通告信息中携带:每一个邻居路由器一个表项
- 通告信息会传遍AS全部(通过泛洪)
- 在IP数据报上直接传送OSPF报文 (而不是通过UDP和TCP)
- IS-IS路由协议:几乎和OSPF一样
- OSPF “高级” 特性(在RIP中的没有的)
- 安全: 所有的OSPF报文都是经过认证的 (防止恶意的攻击)
- 允许有多个代价相同的路径存在 (在RIP协议中只有一个)
- 对于每一个链路,对于不同的TOS有多重代价矩阵
- 对单播和多播的集成支持:Multicast OSPF (MOSPF) 使用相同的拓扑数据库,就像在OSPF中一样
- 在大型网络中支持层次性OSPF
4、ISP之间的路由选择:BGP
层次路由
- 平面路由
- 一个网络中的所有路由器的地位一样
- 问题:
- 规模巨大的网络中,路由信息的存储、传输和计算代价巨大
- 管理问题:不同的网络所有者希望按照自己的方式管理网络等
- 层次路由
- 将互联网分成一个个AS(某个区域内的路由器集合,自治系统 autonomous systems 路由器区域)
- 一个AS用AS Number(ASN)唯一标示
- 一个ISP可能包括1个或者多个AS
- 路由变成了: 2个层次路由
- AS内部路由在同一个AS内路由器运行相同的路由协议:RIP、OSPF、IGRP
- “intra-AS” routingprotocol:内部网关协议
- 网关路由器:AS边缘路由器,可以连接到其他AS
- AS间运行AS间路由协议
- “inter-AS” routingprotocol:外部网关协议
- AS内部路由在同一个AS内路由器运行相同的路由协议:RIP、OSPF、IGRP
- 优点:
- 解决了规模问题:
- AS内部数量有限的路由器相互到达的问题, AS内部规模可控
- 解决了管理问题:
- 各个AS可以运行不同的内部网关协议
- 可以使自己网络的细节不向外透露
- 解决了规模问题:
- 将互联网分成一个个AS(某个区域内的路由器集合,自治系统 autonomous systems 路由器区域)
互联网AS间路由:BGP (Border Gateway Protocol 边界网关协议)
- 自治区域间路由协议“事实上的”标准
- BGP 提供给每个AS以以下方法
- eBGP: 从相邻的ASes那里获得子网可达信息
- iBGP: 将获得的子网可达信息传遍到AS内部的所有路由器
- BGP 会话: 2个BGP路由器(“peers”)在一个半永久的TCP连接上交换BGP报文
- BGP 报文:使用TCP协议交换BGP报文
- OPEN: 打开TCP连接,认证发送方
- UPDATE: 通告新路径 (或者撤销原路径)
- KEEPALIVE:在没有更新时保持连接,也用于对OPEN 请求确认
- NOTIFICATION: 报告以前消息的错误,也用来关闭连接
- BGP 路径选择:
- 路由器可能获得一个网络前缀的多个路径,路由器必须进行路径的选择,路由选择可以基于:
- 本地偏好值属性: 偏好策略决定
- 最短AS-PATH :AS的跳数
- 最近的NEXT-HOP路由器:热土豆路由(选择具备最小内部区域代价的网关作为往X
的出口) - 附加的判据:使用BGP标示
- BGP通过路径通告执行策略
- 路由器可能获得一个网络前缀的多个路径,路由器必须进行路径的选择,路由选择可以基于:
内部网关协议vs外部网关协议
- 策略:
- Intra-AS: 一个管理者,所以无需策略;
- AS内部的各子网的主机尽可能地利用资源进行快速路由
- Inter-AS: 管理员需要控制通信路径,谁在使用它的网络进行数据传输;
- Intra-AS: 一个管理者,所以无需策略;
- 规模:
- AS内部路由规模不是一个大的问题
- 如果AS 太大,可将此AS分成小的AS;规模可控
- AS之间只不过多了一个点而已
- 或者AS内部路由支持层次性,层次性路由节约了表空间, 降低了更新的数据流量
- AS间路由必须考虑规模问题,以便支持全网的数据转发
- AS内部路由规模不是一个大的问题
- 性能:
- Intra-AS: 关注性能
- Inter-AS: 策略可能比性能更重要