目标网络+跳数 【 一次公告最多25个 子网 最大跳数为16 】
如果180秒没有收到通告信息–>邻居或者链路失效
发现经过这个邻居的路由已失效
新的通告报文会传递给邻居
邻居因此发出新的通告 (如果路由变化的话)
链路失效快速(?)地在整网中传输
使用毒性逆转(poison reverse)阻止ping-pong回路 (不可达的距离:跳数无限 = 16 段)
RIP 以应用进程的方式实现:route-d (daemon)
通告报文通过UDP报文传送,周期性重复
网络层的协议使用了传输层的服务,以应用层实体的 方式实现
OSPF(Open Shortest Path First)
是基于链路状态(LS)算法实现
LS 分组在网络中(一个AS内部)分发
全局网络拓扑、代价在每一个节点中都保持
路由计算采用Dijkstra算法
具体的链路算法怎么算的呢 ?
首先链路状态分组会在全网泛洪, 通过这个, 每个节点都会拿到全局拓扑以及代价和 每个节点所能到达目标的汇集树。 从而装载他的路由表
按照这个路由表, 对到来的分组进行转发。
IS-IS路由协议:几乎和OSPF一样
OSPF “高级” 特性(在RIP中的没有的)
安全: 所有的OSPF报文都是经过认证的 (防止恶意的攻击)
允许有多个代价相同的路径存在 (在RIP协议中只有一个)
对于每一个链路,对于不同的TOS有多重代价矩阵
例如:卫星链路代价对于尽力而为的服务代价设置比较低,对实 时服务代价设置的比较高
支持按照不同的代价计算最优路径,如:按照时间和延迟分别计 算最优路径
对单播和多播的集成支持:
Multicast OSPF (MOSPF) 使用相同的拓扑数据库, 就像在OSPF中一样
在大型网络中支持层次性OSPF
层次化的OSPF路由
2个级别的层次性: 本地, 骨干
路状态通告仅仅在本地区域Area范围内进行
每一个节点拥有本地区域的拓扑信息;
关于其他区域,知道去它的方向,通过区域边界路 由器(最短路径)
区域边界路由器: “汇总(聚集)”到自己区域 内网络的距离, 向其它区域边界路由器通告.
骨干路由器: 仅仅在骨干区域内,运行OSPF路由
边界路由器: 连接其它的AS’s.
ISP之间的路由选择: BGP (自治区域之间的路由选择)
自治区域之间的路由选择。 之前学的(距离矢量算法等等及其一些协议)自治区域内部的协议
层次路由
一个平面的路由
一个网络中的所有路 由器的地位一样
通过LS, DV,或者其 他路由算法,所有路 由器都要知道其他所 有路由器(子网)如 何走
所有路由器在一个平面
平面路由的问题
规模巨大的网络中,路由信 息的存储、传输和计算代价巨大
管理问题
层次路由:
层次路由: 将互联网 分成一个个AS(路由器 区域)
某个区域内的路由器集合,自治系统 “autonomous systems” (AS)
一个AS用AS Number (ASN)唯一标示
一个ISP可能包括1个 或者多个AS
路由变成了: 2个层次路由
AS内部路由:在同一个AS 内路由器运行相同的路由协议
“intra-AS” routing protocol:内部网关协议
不同的AS可能运行着不同的 内部网关协议
能够解决规模和管理问题 如:路由选择RIP,OSPF,IGRP
网关路由器:AS边缘路由器 ,可以连接到其他AS
AS间运行AS间路由协议
“inter-AS” routing protocol:外部网关协议
解决AS之间的路由问题,完 成AS之间的互联互通
层次路由的优点
解决了规模问题
内部网关协议解决:AS内部 数量有限的路由器相互到达的 问题, AS内部规模可控
如AS节点太多,可分割AS,使 得AS内部的节点数量有限
AS之间的路由的规模问题
增加一个AS,对于AS之间的路 由从总体上来说,只是增加了一 个节点=子网(每个AS可以用一 个点来表示)
对于其他AS来说只是增加了一 个表项,就是这个新增的AS如 何走的问题
扩展性强:规模增大,性能不会 减得太多
解决了管理问题
各个AS可以运行不 同的内部网关协议
可以使自己网络的细 节不向外透露
互联网AS(自治系统)间路由:BGP
BGP (Border Gateway Protocol): 自治区域间路由 协议“事实上的”标准
“将互联网各个AS粘在一起的胶水”
BGP 提供给每个AS以以下方法:
eBGP: 从相邻的ASes那里获得子网可达信息
iBGP: 将获得的子网可达信息传遍到AS内部的所有路由器
根据子网可达信息和策略来决定到达子网的“好”路径
eBGP、iBGP的链接
允许子网向互联网其他网络通告“我在这里”
基于距离矢量算法(路径矢量)
不仅仅是距离矢量,还包括到达各个目标网络的详细路径(AS 序号的列表)能够避免简单DV算法的路由环路问题
BGP基础:
BGP 会话 : 2个BGP路由器(“peers”)在一个半永久的TCP连接上 交换BGP报文:
通告向不同目标子网前缀的“路径”(BGP是一个“路径 矢量”协议)
当AS3网关路由器3a向AS2的网关路由器2c通告路径: AS3,X 【3a是2c关于X的下一跳(next hop)】
3a参与AS内路由运算,知道本AS所有子网X信息
语义上:AS3向AS2承诺,它可以向子网X转发数据报
路径的属性& BGP 路由
当通告一个子网前缀时,通告包括 BGP 属性 [ prefix + attributes = “route” ]
2个重要的属性:
AS-PATH: 前缀的通告所经过的AS列表: AS 67 AS 17
检测环路;多路径选择
在向其它AS转发时,需要将自己的AS号加在路径上
NEXT-HOP: 从当前AS到下一跳AS有多个链路,在NETX-HOP属性中,告诉对方通过那个 I 转发.
其它属性:路由偏好指标,如何被插入的属性
基于策略的路由:
当一个网关路由器接收到了一个路由通告, 使用输入策略来接受或过滤( accept/decline. )
策略也决定了是否向它别的邻居通告收到的这个路由信息
BGP 路径通告
路由器AS2.2c从AS3.3a接收到的AS3,X路由通告 (通过 eBGP)
基于AS2的输入策略,AS2.2c决定接收AS3,X的通告,而且通过 iBGP)向AS2的所有路由器进行通告
基于AS2的策略,AS2路由器2a通过eBGP向AS1.1c路由器通告 AS2,AS3,X 路由信息
路径上加上了 AS2自己作为AS序列的一跳
网关路由器可能获取有关一个子网X的多条路径,从多个eBGP 会话上:
AS1 网关路由器1c从2a学习到路径:AS2,AS3,X
AS1网关路由器1c从3a处学习到路径AS3,X
基于策略,AS1路由器1c选择了路径:AS3,X,而且通过iBGP 告诉所有AS1内部的路由器
BGP报文
使用TCP协议交换BGP报文.
报文包括:
OPEN: 打开TCP连接,认证发送方
UPDATE: 通告新路径 (或者撤销原路径)
KEEPALIVE:在没有更新时保持连接,也用于对 OPEN 请求确认
NOTIFICATION: 报告以前消息的错误,也用来关闭 连接
BGP 路径选择
路由器可能获得一个网络前缀的多个路径,路由器必须进行路径的选择,路由选择可以基于:
本地偏好值属性: 偏好策略决定
最短AS-PATH :AS的跳数
最近的NEXT-HOP路由器:热土豆路由
附加的判据:使用BGP标示
一个前缀对应着多种路径,采用消除规则直到留下一条路径
BGP: 通过路径通告执行策略
为什么内部网关协议和外部网关协议如此不同?
策略:
Inter-AS: 管理员需要控制通信路径,谁在使用它的网络 进行数据传输;
Intra-AS: 一个管理者,所以无需策略;
AS内部的各子网的主机尽可能地利用资源进行快速路由
规模:
AS间路由必须考虑规模问题,以便支持全网的数据转发
AS内部路由规模不是一个大的问题
如果AS 太大,可将此AS分成小的AS;规模可控
AS之间只不过多了一个点而已
或者AS内部路由支持层次性,层次性路由节约了表空间, 降低了 更新的数据流量
性能:
Intra-AS: 关注性能
Inter-AS: 策略可能比性能更重要
Software defined networking (SDN) 控制器
互联网络网络层:历史上都是通过分布式、每个 路由器的实现
单个路由器包含了:交换设备硬件、私有路由器OS( 如:思科IOS)和其上运行的互联网标准协议(IP, RIP, IS-IS, OSPF, BGP)的私有实现
需要不同的中间盒来实现不同网络层功能:防火墙, 负载均衡设备和NAT
传统的方式: 每-路由器(Per-router)控制平面
在每一个路由器中的单独路由器算法元件,在控制平面进行交互 复杂且难以管理
SDN方式: 逻辑上集中的控制平面
一个不同的(通常是远程的)控制器与本地控制代理(CAs) 交互
SDN
SDN的优点:
网络管理更加容易:避免路由器的错误配置,对 于通信流的弹性更好
基于流表的转发(回顾一下OpenFlow API),允 许“可编程”的路由器
集中式“编程”更加容易:集中计算流表然后分发
传统方式分布式“编程”困难:在每个单独的路由器 上分别运行分布式的算法,得到转发表(部署和升级 代价低) 。而且要求各分布式计算出的转发表都得基本正确
控制平面的开放实现(非私有)
SDN特点:
通用“ flowbased” 基于流的 匹配+行动(e.g., OpenFlow)
控制平面和数据平面的分离
控制平面功能在数据交换设备之外实现
可编程控制应用 … 在控制器之上以 网络应用形式实 现各种网络功能
SDN架构
数据平面交换机
快速,简单,商业化交换设备 采用硬件实现通用转发功能
流表被控制器计算和安装
基于南向API(例如OpenFlow ),SDN控制器访问基于流的 交换机
定义了哪些可以被控制哪些不能 也定义了和控制器的协议 (e.g., OpenFlow
SDN控制器(网络OS):
维护网络状态信息
通过上面的北向API和网络 控制应用交互
通过下面的南向API和网络 交换机交互
逻辑上集中,但是在实现上 通常由于性能、可扩展性、 容错性以及鲁棒性采用分布 式方法实现
网络控制应用
控制的大脑: 采用下层提供 的服务(SDN控制器提供的 API),实现网络功能
• 路由器 交换机
• 接入控制 防火墙
• 负载均衡
• 其他功能
非绑定:可以被第三方提供 ,与控制器厂商以通常上不 同,与分组交换机厂商也可 以不同
SDN控制器里的元件