主机部分全为1,(如172.16.255.255):Direct Broadcast 127.0.0.0:Lookback Network 127.0.0.1:Lookback test - - - -
源发送分组到第一跳,并携带链接ID 查找流ID
用出口流ID置换分组中的流ID 转发到出口
? 路由器处理过程
[Part5].路由及DV
【路由器的基本功能】
(网络层的主要功能:最主要的功能是将分组从源机经选定的路由送到目的机。这主要是路由器的功劳)
? 收到数据报后路由器的工作步骤
(1) 打开数据报,读取头部信息 (2) 确定目标网络地址
(3) 查找路由表,重新打包后转发到相应的接口 上面的步骤完成了路由器的基本功能: 路由选择:转发表建立和维护的过程
- - - -
1个或更多的路由选择协议 将路由信息注入到转发表中 转发表(路由表) 分组中携带的信息
? 优点
- - - - - - -
更加有效的查找(simple table lookup) 链接建立的时候即可预留带宽 易于硬件实现 链接建立时仍需路由
错误恢复更复杂(重创链接) ATM –固定的信元
MPLS – 为IP网络设计的标签交换
转发(交换): 将分组从入口移到出口的过程,依据:
? 缺点
? 典型应用
【分组转发(交换)技术】
? Source routing(源路由)
- - - - -
分组携带路径
穿越网络建立链接及状态 使用链接转发分组
路由器维持到目的地的下一条 分组需要携带目的地地址
【数据报交换】
? Table of virtual circuits(虚电路)
? Table of global addresses (IP,数据报交换)
【源路由】
分组中列出整个路径,路由器处理的步骤:
(1) 检查路径上的第一步 (2) 从分组中剥离路径上的第一步 (3) 将分组转发到剥离的那一步上
路由器维持到目的地下一跳(维持路由表),分组需要携带目的地地址
? 优点
- - -
无状态:无差错恢复
每个路由器原则上要知道每个目的地,可导致超大路由表 到同一目的地的分组选取同样的路径
? 缺点
优点:可以很简单和快速地完成转发
缺点:报头可变、源必须知道和发现拓扑 应用:Ad-hoc networks (DSR)
【路由表】
含网络地址、接口、计量值(跳数)、网络掩码、网关等信息
【路由】
根据数据包目的ip地址(目的网络地址)决定下一跳如何转发 静态路由:由网络管理员手工输入。 动态路由:通过路由选择协议自动适应网络拓扑或流量变化。
【静态路由配置】
(1) 确定目的网络的地址和掩码,确定下一跳地址或转发数
据包的本地接口。 (2) 进入全局配置模式。
(3) 使用ip route 命令添加路由。 (4) 退出全局配置模式。
(5) 使用copy running-config startup-config 将配置保存到
【虚电路】
? 连接建立过程
- - -
处理连接请求
每个路由器在本地链路上分配流ID 为每个流创建入口-出口映射
? 每个分组携带着链接ID
nvram里面
第(3)步语法:ip route prefix mask {address|interface} [distance]
- -
使用接口,路由器知道从哪里转发出去,更高效 使用地址需要第二次查找,以确定转发接口
【RIPv1报文格式】
【管理距离】
重要的管理距离:0、1、110、120 ? 直连网络的管理距离为0 ? 静态路由的管理距离为1
? 值越小,越可信、可靠,有多条路由选择时依据此选择 ? 出于备份目的的静态路由,只有当其它动态路由失效时
才起作用,可以配置它的管理距离,让他高过动态协议相应的管理距离
Command:报文类型,1为request,2为reponse Version:RIP版本号
AFI:必须为2,表示为IP地址族
【RIPv2报文格式】
【静态路由使用场合】
? 拓扑长期不变,无须学习,可节约路由器学习维护开销 ? 存根网络(stub),可配置默认路由
- -
减小学习维护开销 缩减路由表的规模
Router tag:外部路由标记
【RIP缺点】
? 超过15跳便无法到达
? 协议以跳数,即报文经过的路由器个数为衡量标准,并
以此来选择路由,这一措施欠合理性 ? 该路由协议应用到实际中时,很容易出现“计数到无穷大”
的现象,这使得路由收敛很慢
? 避免错误地丢弃分组
【动态路由协议】
? 内部网关协议
- - - - -
路由信息协议(RIP)(典型DV协议) 开放最短路径优先(OSPF)(典型的LS协议) 内部网关路由协议(IGRP) 增强内部网关路由协议(E IGRP ) 边界网关协议(BGP)
【DV存在的问题】
? 表现
- - -
路由环路(routing loop) 计数到无穷问题 收敛慢的问题
? 外部网关协议
? 原因:相信错误信息导致
【DV工作原理】
? 每个路由器维护两个向量Di和Si来表示该点到网上所有节点的路径距离及其下一个节点 ? 相邻路由器之间交换路径信息 ? 各节点根据路径信息更新路由表
dij= Min{dix+ dxj, dij} ( x ∈邻居点 )
【DV上述问题解决办法】
? 定义路径代价的最大值(Maximum)
-
超过该值就认为不可达,扔弃
? 提高收敛速度
水平分割(Split Horizon)
当路由器从某个网络接口大宋RIP路由更新报文时,其中不能包含从该接口获取的路径信息。
毒性逆转(Poison Reverse) 与水平分割类似,区别在于,包含从该接口获取的路径信息,但是距离设为无穷
抑制定时器(Hold-Down Timers)
在某邻居节点发生故障时,启动抑制计时器,在计时期内:
-
若节点down转为up,关闭计时器,保留原有信息。
若收到另一邻居关于这个节点的信息,且比原路径短,则关闭计时器,更新信息。 -
上述2种情况不发生,则更新路由为信宿不可达。 -
【DV优缺点】
? 优点:
- - - - -
算法简单
交换的路径信息量大
路径信息传播慢,使得路径信息可能不一致。 收敛速度慢,存在无穷计算问题。 不适合大型网络
? 缺点:
【RIP特点】
?
? ? ?
RIP是一种距离矢量路由协议。 RIP使用跳数作为路由选择的度量。
当到达目的网络的跳数超过15跳,数据包将被丢掉。 缺省地,RIP路由更新广播周期为30秒
触发更新(Triggered Updates)
一旦发现某一些路由表项发生变化,就立即广播路由更新报文,而不必等待下一次刷新周期
【RIP运行机制】
? ? ? ?
当路由器启动RIP后,以组播向邻居发送信息请求 邻居收到请求信息,发送整个路由表作为响应; 此后,周期性交互消息(路由表)
路由器检测到路由变化时,组播更新消息给邻居
(2) 寻找一个不在N中的节点w,其D(w)值为最小,把w
加入到N中,然后对所有不在N中的节点用[D(v),D(w) + l(w,v)]中的较小的值去更新原有的D(v)值,即
(3) 重复步骤2,直到所有的网络节点都在N中为止。
【DV特点】
? 采用最短路径准则,计算D信宿(距离,下站);
? 每个站点只知道自己和邻居的局部信息,在自己的刷新
周期到来时,根据邻居的路由变化重新启动算法; ? 算法的收敛速度慢(特别是对网络崩溃)造成全网信息
的不一致,导致产生路径环,使计数至无穷大;
? 当路径环产生时,定义距离的最大值可防止算法进入死
循环,解决计数至无穷大问题。
【LS算法步骤】
(1) 各路由器主动测试所有与之相邻的路由器的状态,周期
性地向相邻路由器发出简短的查询报文,询问相邻路由器当前是否能够访问,假如对方做出反应,则说明连接状态为UP,否则为DOWN
(2) 各路由器周期性地向所有参与SPF的路由器广播其L-S
信息,而不像DV算法那样只向相邻路由器发送信息 (3) 路由器收到L-S报文后,利用它刷新网络拓扑图,将相
应的连接状态改为UP或者DOWN。假如L-S发生了变化,路由器立即利用Dijikstra前向搜索算法,这个算法可以求出加权无向图中从某给定节点到目的节点最小耗费路由或最佳路由
【RIPng】
? RIPng保留了RIP的主要特点:
- - -
距离矢量采用跳数,16跳为不可达 工作机制不变;
仍然采用水平分割、毒性逆转、触发更新等技术减少路由环的发生
【LS优点】
(1) L-S信息向全网广播,各路由器都使用相同的原始数据进
行路径计算,保证了各路由器L-S图的一致性。
(2) 各路由器在本地计算路由计算,路由信息不会反过来对
原路由器发生作用,使路由器的收敛性得到了保证 (3) 广播的路由信息只与该路由器相连的链路数目和状态有
关,比DV算法要少
? 主要改变的地方:
- - - -
组播代替广播:主机不再受骚扰 下一跳信息由单独的R Table Entry表示 安全考虑:不单独设置验证,由IPv6本身保证 只用于IP网络:不再支持其他网络协议
【RIPng的Request报文】
当路由器启动或更新时,发该类报文(组播)
- -
通用request报文:路由器启动时发送,只有一项RTE,且前缀和前缀长度都为0,量度为16,表示请求全部 指定request报文:用于网络诊断
【LS与DV对比】
? DV算法原理清楚,实现简单,并且对路由器处理能力要
求不高,在规模较小和拓扑结构变化不快的网络中获得了广泛的应用,而且由于成型较早,比较成熟。
? LS性能优越,适用于规模较大及拓扑变化较快的网络,
但每一网络节点(包括主机和路由器)均需要实时形成全网的拓扑图以及自己为根节点的树,因此对CPU的处理能力提出较高的要求,同时由于路由信息是以广播的方式传播的,比较占网络带宽。
【RIPng的Response报文】
对Request的回应:通常包含全部的路由信息 主动发送
- -
周期性发送(组播) 触发更新
【OSPF特点】
? OSPF是一种基于开放标准的链路状态路由协议,是目前
IGP中应用最广、性能最优的一个协议 ? OSPF可以在大型网络中使用 ? 无路由自环 ? OSPF支持VLSM
? 使用带宽作为度量值(108/BW) ? 收敛速度快
? 通过分区实现高效的网络管理
(通常,路由会对收到的Response报文进行有效性检查,如端口号,地址,通过了才会使用该信息来更新路由表)
[Part6].OSPF
【Dijistra算法】
(1) 初始化
设节点i为源节点令N = {i},对所有不在N中节点v,写出
【单区域OSPF】
直接封装在IP分组中,IP协议号是89
TTL=1:通常OSPF报文不转发,只被传递一条,即在IP报头的TTL值被设为1,但虚联接除外
【OSPF开销】
小于1则取为1
【OSPF分组类型】
(1) 如果一个或多个邻居竞选备份代表路由器,那么拥有最
高优先级将被选为代表路由器。在出现多个最高优先级的路由器有的情况时,拥有最大ID的路由器将被选中。 (2) 如果没有邻居竞选备份,…..最高优先级,…..ID最大。 (3) 如果一个或者多个邻居竞选代表路由器,…..最高优先
级,…..ID最大。
(4) 如果没有邻居竞选代表路由器,备份将升级为代表。重
新竞选备份路由器
【发现路由】
? 在exstart状态下交换DD报文
? 比较自己的数据库与收到的摘要是否相同 ? 不相同,则请求完整LSA信息
(当链路是一个点到点联络员或一个虚拟链路时,在建立一个双向链接之后,就可以开始建立紧邻关系。而在网络端口,必须首先选举代表路由器及其备份。)
【OSPF的运行步骤】
?
? ? ? ?
建立路由器毗邻关系 选举DR和BDR 发现路由 选择最佳路由 维护路由信息
【选择最佳路由】
SPF算法、负载均衡
【维护路由信息】
? ? ? ?
触发更新,LSU
Hello分组发送的时间间隔:缺省10秒 Hello分组的失效间隔:缺省40秒 即使没有拓扑变化,LSA在条目过期(缺省30分钟)后,发送LSU,通告链路存活
【运行OSPF的路由器状态图】
【OSPF克服路由自环原因】
? 每一条LSA都标记了生成者(用生成该LSA的路由器的
RouterID标记),其他路由器只负责传输,这样不会在传输的过程中发生对该信息的改变和错误理解。
? 路由计算算法是SPF,计算结果是一棵树,路由是树上
叶子节点,从根节点到叶子节点是单向不可回复的路径。 ? 区域之间通过规定骨干区域避免
【选举DR和BDR的原因】
【OSPF在大型网络中的问题】
? LSDB非常庞大,占用大量存储空间
? 计算最小生成树耗时增加,CPU负担很重
- - -
一点变化都会引发从头重新计算 接口up down 路由器的增加删除
? 网络拓扑结构经常发生变化,网络经常处于“动荡”之中
【路由器类型】
? ? ? ?
内部路由器--- 路由器所有接口都在一个区
主干路由器--- 所有接口都在主干区域的路由器 区域边界路由器(ABR) ---路由器接口分属不同区域
自治域边界路由器(ASBR) --- 路由器至少有一个接口不属于本自治域/OSPF.
(Stub区域:边界区域,不接收外部路由信息)
同步的次数减少了(O(n)),减少了带宽的利用 ? 路由器的角色:DR、BDR、DROther
? 路由器间的关系:Unknown、Neighbor、Adjacent
【DR选举】
选出优先级最高路由器,为防止频繁更换,选举结果在一定条件下保持不变。优先级为0不会当代表路由器,选举过程:
【距离矢量与链路状态对比】
距离矢量 链路状态 通过邻居获得网络拓扑 通过距离矢量计算 周期性更新,收敛满 传递路由表格
直接获得整个网络拓扑 最短路径优先计算 事件触发更新,收敛快 传递链路状态信息
[Part7].BGP
【AS】
处于相同技术管理下的路由器的集合,内部使用相同的IGP(interior gateway protocol)和量度去引导分组,外部使用EGP(exterior gateway protocol)去引导分组到其他AS。
【OSPFv3与OSPFv2】
? OSPFv3保留了OSPFv2的主要工作机理
- - - - - - - -
网络类型和接口类型
邻居发现和邻接(毗邻)建立机制 接口状态机和邻居状态机 基于LSDB计算路由 LSA老化更新机制
泛洪机制(Flooding mechanism)
共五种协议报文: Hello, DD, LSR, LSU, LSAck
【BGP分类】
? 主要改变的地方 基于链路运行
-
在OSPFv2中,协议的运行是基于子网的,邻居之间形成邻接关系的条件之一就是两端的IP地址属于同一网段而且掩码相同。 -
而在OSPFv3中,协议基于链路运行,与具体的IPv6地址、前缀分离开来,即使同一链路上的不同节点具有不同的IPv6地址时,协议也可以正常运行。
【BGP】
运行于AS之间,允许基于策略(policy-based)的路由
选择,是一种距离矢量路由协议,但避免了环路(as之间采用aspath & as内部不转发路由)。通过TCP传输,端口号179,支持CIDR路由聚合。
【BGP如何避免路由环】
BGP 路由器记录下全路径信息,而不仅仅是路径代价(keeps track of the exact path),如果从外部收到一条包含自己AS的路由,就说明有环路,此时BGP将丢弃该路由。
取消了编址语义
-
在OSPFv2中,协议分组和LSA中的许多字段都是来自于网络上的某个IP地址,或掩码,或某个IP子网号。严重依赖IPv4。 -
在OSPFv3中,取消了上述编址性语义,而只保留协议运行必须的核心内容。ID依然保留32位,但只是一个编号,不再包含地址信息。
【BGP使用场合】
什么时候使用:
- 在多个AS间传输数据 - 两AS间存在多条路径 - 需要做路由策略和选择 什么时候不用: - AS只有一个出口
- 所有出口指向一个ISP
- 路由性能不高,内存不高,CPU太慢,带宽不大
链路本地地址的使用
-
在OSPFv2中,每一个运行OSPF的接口都必须有一个全局的IPv4地址,协议的运行和路由的计算都依赖于它。 -
在IPv6中,每个接口都会分配本地链路地址(link-local address),OSPFv3使用了这个本地链路地址作为协议分组发送的源地址(虚连接除外),而且使用它作为路由的下一跳。 -
可以节省大量的全局地址,同时可以说协议的运行独立于IPv6,可以方便的扩展用于多种协议的路由。
使用专门的LSA来发布路由前缀信息
-
新增加了Intra-Area-Prefix-LSA,用于传递区域内路由前缀;新增加了Link-LSA,用于传递链路范围内的IPv6前缀。
【BGP消息类型】
Open报文:打招呼,“你好,交个朋友吧”(协商参数)
Keepalive报文:我还活着,别不理我(30秒钟交换一次) Update报文:有新闻(链路的变化)
Notification报文:我不跟你玩了(异常情况的通报,终止连接)
【OSPFv3特点】
? 结构更加清晰
取消了协议报文的验证字段 明确的LSA泛滥范围
- - - -
本地链路范围(Link-local scope) 区域范围(Area scope) AS范围(AS scope)
在LS_Type中增加了专门的字段,方便传播控制
【BGP工作机制】
? 通过TCP建立BGP连接时,发送OPEN报文
? 连接建立后,如果有路由器需要发送路由或路由发生变
化时,发送UPDATE报文
? 稳定后,周期发送KEEPALIVE报文,维持连接有效性 ? 当本地BGP运行中发生错误时,发送NOTIFICATION报
文通告BGP对端
? 更好的可扩展性和适应性
- -
在OSPFv2中,不同的实例必须运行在不同的链路上。
在OSPFv3中,明确的提供了对多实例的支持,在协议报文中增加了“instance ID”字段,同时在报文接收时对该字段进行判断,只有实例号匹配的报文才会处理,否则丢弃。这样,即使是同一链路也可以运行多个OSPF实例了,而且互相独立运行不会影响。
【BGP两种邻居】