背景
- 当网络规模主键变大的时候, 使用什么样的技术, 可以让网络更好地通?
- 随着企业的发展, 网络的规模越来越大, 网段的数量越来越多, 公司内部的路由器的数量越来越多.
- 为了实现不同网络之间的互通, 需要在路由器上配置大量的路由条目, 工作量庞大并且随着网络扩展, 后期管理难度增大.
- 为了实现不同网段之间的互通, 需要在每个路由器上配置新增加的网段.
- 如果新添加的网段数量很多, 同时路由器的数量也很多, 就需要对每个路由器进行路由配置, 工作量非常庞大.
- 如果向想删除某个网段, 也同样需要在所有路由器上一个一个地删除, 工作量也非常庞大.
解决方案
在路由器之间允许 ‘动态路由协议‘, 让路由器之间自动学习和分享彼此地路由表信息, 每个路由器都独立地计算出一个去往目标网段地最好路由.
动态路由协议的特点:
- 减少了后期网络管理任务, 避免了人为的配置错误.
- 在设备之间传输路由, 会占用少量的网络带宽.
动态路由协议的类型:内部网关路由协议和外部网关路由协议。
- 内部网关协议(IGP): 在同一公司内部运行的路由协议, 如RIP, ISIS, OSPF
- 其中,最热门的技术是ISIS和OSPF
- OSPF 在有点规模的企业网内部常用.
- ISIS 在大型的数据中心, 运营商常用.
- RIP如今已接近淘汰, . RIP(路由信息协议)作为一种广泛使用的路由协议,虽然具有简单易用和便于维护等优点,但也存在一些明显的缺点:
- 网络规模受限:RIP协议对网络规模有严格的限制,它只能支持最多15跳的路由路径,第16条不可达,这意味着在大型网络中,RIP可能无法满足需求。
- 收敛速度较慢:RIP路由表的更新速度较慢,对于动态变化的网络环境可能无法快速响应。
- 安全性能较差:RIP协议本身存在安全问题,如路径信息易泄露、易受恶意攻击等。
- 占用带宽:RIP每30秒广播一次更新,可能会占用大量带宽,影响关键IT流程的资源。
- 不支持多路径:RIP不支持同一路由上的多条路径,这可能导致路由环路和数据包丢失。
- 坏消息传播慢:当网络中出现故障时,RIP可能需要较长时间才能将故障信息传播到所有路由器,导致网络收敛速度慢。
- 这些缺点使得RIP在大型网络或对安全性、实时性要求较高的环境中可能不是最佳选择。
- 以条数为度量:存在选择次优路径的风险。
- 不会根据带宽来选路:比如跳数多带宽高效率高的线路和跳数少带宽低效率低的线路中,RIP可能会选择跳数少的。
- 外部网关协议(EGP): 在不同公司之间运行的路由协议, 如BGP.
希望传路由快一点:ISIS OSPF.
希望传路由多一点,稳一点,慢点没事:BGP
OSPF概述(特点)
- 应用在企业内部, 属于公有标准协议, 位于 OSI 模型的第三层.
- OSPF 的数据包, 包含着 IP 头部后面, 协议号为 89(ISIS没有协议号,OSI有端口号)。
- OSPFv2支持IPv4;OSFPv3支持IPv6
- OSPF支持企业网络的层次化设计, 将网络分为 2 层: 骨干和非骨干区域.
- 支持无类域间路由.
- 收敛速度快.
- 使用IP组播收发协议数据, ospf:224.0.0.5/6; rip: 224.0.0.9; 520是rip的udp协议端口号.
- 支持多条等价路由.
- 支持协议报文认证.
- OSPF在同一链路上进程ID可以不同,可以建立邻居。
如AR1的Router ID为1.1.1.1,AR1的Router ID为2.2.2.2,两者可以建立邻居。
OSPF在同一设备的不同接口处于不同进程的话,需要进行相互宣告 —多进程导入。 - display ospf error —-查看ospf错误日志,可以用来判断问题所在。
- OSPF优先级:
—-内部优先级:10;
—-外部优先级:150;
—-满足最长匹配原则的前提下,比较不同协议的优先级,越小越优先。
OSPF路由器类型:
- IR: Internal Router, 内部路由器, 是指所有连接的网段都在同一个区域的路由器.
- ABR: Area Border Router, 区域边界路由器, 是指连接多个区域的路由器, ABR为每一个所连接的区域维护一个LSDB.
- BR: Backbone Router: 骨干路由器, 是指至少有一个端口(或者虚接口)连接到骨干区域的路由器. 包括所有的ABR和所有端口都在骨干区域的路由器.
- ASBR: AS Boundary Router, AS边界路由器, 是指和其他AS中的路由器交换路由信息的路由器, 这种路由器向整个AS通告AS外部路由信息. AS边界路由器可以是内部路由器IR, 或者是ABR,可以属于骨干区域也可以不属于骨干区域.
OSPF区域的表示
- 通过十进制表示: 例如 区域0, 1, 2, 3 等。
- 通过点分十进制表示, 例如 区域0.0.0.0, 0.0.0.1, 0.0.0.2 等.IP地址格式一样。
- 区域 0 就是骨干区域 , 设备会自动识别为 0.0.0.0 这样的点分十进制格式。
- 区域号非0的区域, 为非骨干区域,取值范围非常大,1~4294967296≈43亿,1~232。
- 非骨干区域必须和骨干区域 ‘直接’ 相连, 能实现 ‘区域之间的互通’。
- 区域划分的意义是:为了更好地管理网络和设备。
process ID
进程号, 默认是 1 . 取值范围: 1-65535
Router ID
路由器标识符,OSPF中,每个路由器都需要一个唯一的标识符来识别自己,有助于网络管理员快速识别设备。格式也与IP地址一样都是用32位点分十进制表示(如1.1.1.1等)。
- 为不同设备取的名字, OSPF以此来区分不同的路由器
- Router ID的特定是: 稳定, 即一旦确定, 就不会改变. 除非重启设备或者重启ospf进程.
- Router ID的可以手动指定, 也可以是自动选举. 手动指定的优先级最高.
- 手动配置router id的命令是(在系统视图system-view下配置):
- [R1]ospf {进程号1,2,3… …} router-id x.x.x.x
- 例:[R1]ospf 1 router-id 1.1.1.1 //指定ospf 1的 router-id 为 1.1.1.1
- 执行命令后会提示重启才能生效:
Info: The configuration succeeded. You need to restart the OSPF process to validate the new router ID.
- Route ID命令配置成功后并不是立即生效的,需要重启OSPF进程
- 重启ospf进程命令:
<R1>reset ospf 1 process
- 重启ospf进程命令:
display ospf 1 brief
或display ospf brief
可查看ospf配置信息.- Router ID选举规则:
- 手工配置的Router ID的优先级最高,唯一且稳定。
- 如果未进行过手工配置,如果存在IP接口的Loopbuck回环接口,则从Loopback接口地址中选择IP地址最大的作为Router ID。回环接口是一个逻辑接口,通常不受物理链路状态的影响,所以这种方式下,路由器ID较为稳定。
- 如果没有已配置IP地址的Loopback接口,则从其它已配置IP地址的接口(即活动接口)中选择IP地址最大的作为Router ID。这种方式下,路由器ID可能会随着接口状态的改变而变化。通常,管理员可以通过查看路由器接口信息来确认当前的路由器ID。
小结
- 路由器和网段较多时, 动态协议效率更高.
- 在企业内网, 适应性和扩展性最强的动态路由协议是 OSPF.
- OSPF 属于 网络层 协议, 所以配置之前, 必须确保网络的物理层和数据链路层是互通的.
- OSPF支持将网络划分为骨干层 和 非骨干层, 便于网络的扩展, 排错和管理.
LSA
所谓Link State指的就是路由器接口的状态。在OSPF中路由器的某一接口链路状态包含了如下信息:
- 该接口的IP地址及掩码
- 该接口的带宽
- 该接口连接的邻居
- ··· ···
- OSPF作为链路状态路由协议,不直接传递各路由器的路由表,而传递链路状态信息,各路由器基于链路状态信息独立计算路由。
- 所有路由器各自维护一个链路状态信息库。邻居路由器间先同步链路状态数据库,再基于SPF算法计算最优路径。科学家:Dijkstra
- 在度量方式上,OSPF将链路带宽作为选路的参考依据。
- RIP在大型网络中所面临的问题,OSPF都有相应的解决办法。
OSPF工作原理
- 建立OSPF邻居表
- 同步OSPF数据库
- 计算OSPF路由表
OSPF报文
所有的OSPF报文使用相同的OSPF报文头部
- Version #:
OSPF协议号,应当被设置成2为OSPFv2,3为OSPFv3
Type:
OSPF报文类型,OSPF共有五种报文。
Packet length:
OSPF报文总长度,包括报文头部。单位是字节。
Router ID:
生成此报文的路由器的Router ID。(会影响ospf邻居的建立)
Area ID:会影响ospf邻居的建立
此报文需要被通告到的区域。
AuType:会影响ospf邻居的建立 - 命令
[接口]ospf timer hello 10
hello报文不合法(两端时间不同)也会影响邻居建立>reset ospf peer
//清除邻居关系(清除ospf进程)
ospf的认证类型
- ospf认证类型:
- 不认证
- 简单的明文认证
- 密文认证
验证此报文所应当使用的验证方法
OSPF报文的验证:VRP中,OSPF支持区域验证和接口验证两种方式。
- 配置方式一:
- 接口下:
ospf authentication-mode simple hw
- 接口下:
- 配置方式二:
- area下:
authentication-mode simple hw
- area下:
- 接口认证配置优先与区域认证配置,如果两端采用不同认证配置方式,也可以创建邻居关系(前提密码和认证方式相同)。
- md5认证:Key ID必须要保持一致,密码也要保持一致。
- ospf 认证分接口和区域认证,接口认证优先于区域认证。
- 两台路由一端配置了接口认证,一端配置了区域认证,如果认证类型一致,密码一致,是可以建立邻居关系的。
如何验证方式为区域验证,则在区域视图下使用如下命令:
- 验证模式为明文验证:
- authentication-mode simple { [ plain ] plain-text | cipher cipher-text }
- plain:密码显示方式为明文。
- cipher:密码显示方式为密文。
- 验证模式为MD5验证:
- authentication-mode md5 key-id { [ plain ] plain-text | cipher cipher-text }
- Authentication:
- 验证此报文时所需要的密码等信息。
OSPF报文类型
OSPF报文类型 | 描述 |
Hello | 用于发现, 建立, 维护和拆除 OSPF 邻居 |
DD(数据库描述报文) | 用于发送 OSPF 数据库条目的简要信息, 高效且稳定地实现数据库同步 |
LSR(链路状态请求报文) | 用于请求自己数据库中没有的链路状态通告信息(LSA) |
LSU(链路状态更新报文) | 用于回应LSR报文, 其中包含的是详细的链路状态通告信息(LSA) |
LSAck(链路状态确认报文) | 用于对LSR和LSU报文确认, 实现LSR和LSR报文的可靠传输 |
OSPF建立邻居关系经过的状态
状态 | 描述 |
down | 设备彼此之间谁也不知道谁 |
init | 收到对方的信息,但对方不知道自己 |
2-way | 彼此知道对方是谁 |
exstart | 确定谁是主动端,主动与对端交互信息 |
exchange | 开始发送数据库简要信息,彼此进行对比交互 |
loading | 通过数据库摘要信息,发现本端没有的信息发送LSR请求消息,对方通过Update更新,本端通过Lsack进行确认 |
full | 达到同步数据库的完美状态 |
Hello报文
Hello报文的作用
建立邻居关系:Hello报文用于发现网络中的邻居设备,并建立和维护这些设备之间的邻居关系。
维护邻接关系:通过周期性发送Hello报文,路由器能够监测邻居路由器的存活状态。如果在特定时间内没有收到某个邻居的Hello报文,就会将其认定为失效,从而触发相应的路由计算和更新操作。
通过Keepalive机制,检测邻居运行状态。
Hello报文的发送原则
在IS-IS协议中,Hello报文的发送间隔和邻居保持时间可以通过配置来控制。
Hello报文的发送间隔越短,占用的系统资源越多,可能导致CPU负载过重。
邻居保持时间过长会导致检测到邻居失效的时间延长,从而减慢路由收敛速度;过短则可能导致路由震荡。
Hello报文的字段内容
- Network Mask(子网掩码):发送Hello报文的接口的子网掩码,该属性只在MA网络中有效,在P2P网络中是不检查的。
- HelloInterval(hello间隔):在广播型网络上,默认值为10秒;而在非广播型网络(如NBMA网络)上,默认值为30秒。Hello报文的泛洪周期,即发送Hello报文的时间间隔,单位为秒;hello时间要保持一致,否则会影响邻居的建立。
- option(可选项):表示发送此报文的路由器支持的可选功能。具体的可选功能得去deepseek一下。
- Rtr Pri(路由优先级):发送Hello报文的接口的Router Priority,用于DR和BDR的选举。
- RouterDeadInterval(路由失效时间):路由器在多长时间内没有收到邻居路由器的Hello报文后,会将邻居路由器视为失效的时间间隔。RouterDeadInterval通常是HelloInterval的四倍。
- 在广播网络中,默认设置为40秒(因为HelloInterval默认为10秒)。
- 在NBMA(非广播多路访问)网络环境下,RouterDeadInterval可能设置为120秒。
- Designated Router(DR和BDR的接口IP):发送Hello报文的路由器所选举出的DR的IP地址。如果设置为0.0.0.0,表示未选举DR路由器。
- BackuP Designated(BDR的接口IP):发送Hello报文的路由器所选举出的BDR的IP地址。如果设置为0.0.0.0,表示未选举BDR路由器。
- Neighbor(邻居Router-ID):已经建立邻居关系的邻居路由器ID,表示本路由器已经从该邻居收到合法的Hello报文。
Hello报文的类型
OSPF协议:Hello报文是OSPF五种报文之一,用于建立和维护邻接关系。
IS-IS协议:IS-IS协议通过Hello报文的收发来维护与相邻设备的邻居关系。
配置Hello报文的发送间隔
- 进入系统视图:执行命令system-view。
- 进入接口视图:执行命令interface interface-type interface-number。
- 对于以太网接口,如果需要,执行命令undo portswitch将其切换到三层模式。
- 配置Hello报文的发送间隔:执行命令ospf timer hello interval [conservative]或ospfv3 timer hello interval [conservative] [instance instance-id],其中interval是Hello报文的发送间隔时间。
- 需要注意的是,Hello定时器的值与路由收敛速度、网络负荷大小成反比。在配置时,应确保OSPF邻居之间的Hello定时器的时间间隔保持一致,否则它们将无法协商为邻居。此外,对于链路故障时的收敛速度,可以考虑配置BFD For OSPF功能,或者在对端不支持该功能时,配置
conservative
参数。
DR和BDR和DRother
每一个含有至少两个路由器的广播型网络和NBMA网络都有一个DR和BDR。
在MA(广播网络,NBMA)网络中会选举DR/BDR ,在点到点和点到多点是不会选举DR/BDR的。
DR和BDR的作用:
- 减少邻接关系的数量,从而减少链路状态信息以及路由信息的交换次数,这样可以减少带宽,减少路由器硬件的负担。
- DRother:DRother与DR和BDR建立邻接关系;BRother之间的邻居关系为2-Way。
- DRother与DR/BDR形成邻接关系并交换路由状态信息以及路由信息,这样就大大减少了大型广播网络或NBMA网络中的邻接关系的数量。
- 在描述拓扑的LSDB中,一个广播型网络或NBMA网络是由单独一条LSA来描述的,这条LSA是由该网段上的DR产生的。
DR/BDR的选举规则
- 在2-way阶段选举。
- 在第一个报文中,DR、BDR的字段都为空(0.0.0.0)。
- 如果DR、BDR的字段都为空,先选出BDR,先比较优先级(0~255,0不参与选举),如果优先级相同,则比较Router ID,越大越优先。
- 如果DR字段为空,BDR字段非空,则BDR升级为DR,并再次选举BDR。
- 如果DR字段非空,BDR为空,则选举BDR。
- DR和BDR不能被抢占,选举时间40秒(2-Way阶段)。
在华为设备的配置中,可以通过执行特定命令来配置Hello报文的发送间隔和邻居保持时间。
例如,执行命令isis timer hello hello-interval [ level-1 | level-2 ]来配置接口上Hello报文的发送间隔。
修改DR优先级命令:
- 接口下:ospf priority 0~255 //修改接口优先级,0为不参与选举。
邻居和邻接状态
网络类型
- 广播网络:两台或两台以上路由器通过共享介质互联。
- 支持广播、组播。
- 举例:以太网、局域网等
- NBMA网络,常见的非广播网络技术包括ATM、帧中继、X.25和家庭电力线网络;帧中继(Frame Relay):在OSPF协议中,默认将帧中继链路识别为NBMA网络类型,需手动配置邻居关系,并通过单播发送所有OSPF报文。异步传输模式(ATM):由于ATM不支持广播或多播,OSPF在ATM网络中默认配置为NBMA类型。X.25:是早期的广域网协议,基于分组交换技术,通过虚电路连接节点,由于缺乏广播能力,OSPF在X.25网络中也默认采用NBMA类型。定时器配置:Hello间隔默认30秒,Dead间隔120秒,需根据网络延迟调整。
- P2P:仅两台路由器互连,支持广播,组播。
- 举例:两台通过PPP链路相连的路由器网络。
- P2MP:多个P2P的集合
- 支持广播,组播的转发。
- 没有一种链路层协议是支持P2MP类型网络,也就是说必须是由其他网络类型强制更改为P2MP。常见的做法是将非完全连接的帧中继或ATM改为P2MP的网络。
OSPF在不同网络类型中,OSPF邻接关系建立的过程不同,分为广播网络,NBMA网络,点到点/点到多点网络。下面是
OSPF协议路由的计算过程可简单描述如下:
- 建立邻接关系,过程如下:
- 本端设备通过接口向外发送Hello报文与对端设备建立邻居关系。
- 两端设备进行主/从关系协商和DD报文交换。
- 两端设备通过更新LSA完成链路数据库LSDB的同步。此时,邻接关系建立成功。
- 路由计算OSPF采用SPF(Shortest Path First)算法计算路由,计算得到一颗以自己为根的SPT(Shortest Path Tree)可以达到路由快速收敛的目的。
影响OSPF邻居建立的因素
- 接口没有启动OSPF。
- 网络第1或2层故障。
- 被动接口。
- ACL阻止了224.0.0.5,224.0.0.6。
- hello,dead timer。
- 认证类型和密码不匹配。
- area ID 不匹配。
- 在NBMA网络中没有手工指定peer。
- 两边的frame-relay map 缺少broadcast。
- option选项不匹配。
- router id 冲突。
- MA网络中掩码不匹配。
- DBD报文中接口MTU不匹配。
广播型网络中建立邻接关系的过程:
- 224.0.0.5
- 邻居发现:所有OSPF路由器默认加入224.0.0.5组播组,用于发现邻居和维护邻居关系。
- 全局通信:DR/BDR通过224.0.0.5向所有运行OSPF的路由器(包括DROther)发送Hello报文、LSU报文等,确保全网拓扑信息的一致性。
- 224.0.0.6
- DR和BDR作为接收方会监听224.0.0.6的组播地址,用于接收DROther路由器发送的LSU报文或LSAck报文。例如,当DROther感知到网络拓扑变化时,会通过224.0.0.6向DR/BDR发送LSU报文。
- DR和BDR不会使用224.0.0.6发送报文,而是通过224.0.0.5向所有OSPF路由器(包括DROther)发送LSU报文,以同步链路状态数据库(LSDB)。
- 好处:DROther仅需监听224.0.0.5,DR/BDR同时监听224.0.0.5和224.0.0.6两个地址,减少接口处理开销。
邻居关系:
- Down:这是邻居的初始状态,表示没有收到邻居的任何信息。在NBMA网络上,此状态下仍然可以向静态配置的邻居发送Hello报文,发送间隔为PollInterval,通常和RouterDeadInterval相同(40秒)。
Attempt:此状态旨在只在NBMA网络上存在,表示没有收到邻居的任何信息,但是已经在周期性向邻居发送Hello报文,发送间隔为 PollInterval。如果在 RouterDeadInterval 间隔内未收到邻居的Hello报文,则转为Down状态。- Init:在此状态下,路由器已经从邻居收到了Hello报文,但是自己不在收到的Hello报文的邻居列表中,表示尚未邻居建立双向通信关系。在此状态下的邻居要被包含在自己所发送的Hello报文的邻居列表中。
- 2-WayReceived:此事件表示路由器发现与邻居的双向通信已经开始,(发现自己在邻居发送的hello报文的邻居列表中)。如果在Init状态下收到包含自己Router ID的Hello报文,就会触发2-WayReceived事件,状态机将从Init状态转换到2-Way状态。进入2-Way状态后,路由器会检查是否需要与邻居建立邻接关系。如果需要建立邻接关系,则会进入ExStart状态,开始数据库同步过程;如果不需要建立邻接关系,则邻居状态机将停留在2-Way状态。
- 2-Way:在此状态下,双向通信已经建立,但是和邻居没有建立邻接关系。这是建立邻接关系前的最高状态。收到了邻居发送过来的Hello报文,并在报文中的邻居列表中看到了自己的Router-ID,进入2-Way状态。
- 1-WayReceived:如果在2-Way状态下,路由器发现自己没有在邻居发送的Hello报文的邻居列表中,通常会触发1-WayReceived事件,状态机可能会回到Init状态。此事件表示路由器发现自己并没有在邻居发送Hello报文的邻居列表中,通常是由于对端重启造成的。
邻接关系
- 协商主从关系:
- 邻居状态机变为 ExStart 状态以后,RA向RB发送第一个DD报文中,”MS=1″宣称自己是Master,每一台路由器都会认为自己是Master,并规定序列号Seq=X,”I(Initial)=1″ 表示第一个DD报文,”M(More)=1″ 表示后续还有报文。第一个报文不包含LSA摘要,主要是为了协商主从关系。
- 邻居状态机变为 ExStart 状态以后,RB向RA发送第一个DD报文,同样不包含LSA的摘要信息。由于RB的Router ID较大(2.2.2.2),认为自己是Master,并且重新规定了序列号Seq=Y。Router ID的比较结束后,RTA会产生一个 NegotiationDone 的事件,所以RTA将状态机从 ExStart 改变为Exchange。
- RA收到了报文后,同意RB为Master,并将RB的邻居状态机改为Exchange。RA使用RB的序列号来Seq=Y来发送新的DD报文,该报文开始正式的传输LSA摘要。在报文中,RA的MS=0,表示自己是Slave。
- RB收到该报文后,将RA的邻居状态机改为 Exchange,并发送新的DD报文来描述自己的LSA摘要,此时RB将报文的序列号改为Seq=Y+1(上次的序列号+1)。
- 上述过程持续进行,RA通过重复RB的序列号来确认自己收到了RB的报文。RB通过将序列号+1来确认收到了RA的报文。当RB发送最后一个DD报文时,在报文中写上M=0。
- LSDB同步(LSA请求、LSA传输、LSA应答)
- RA收到最后一个DD报文后,发现RB的数据库中许多LSA是自己没有的,将邻居状态机改为 Loading 状态。此时RB也收到了RA的最后一个DD报文,但RA的LSA,RB已经有了,不需要再请求,所以直接将RA的状态机改为FULL状态。
- RA发送LSR报文向RB请求更新LSA。RB用LSU报文回应RA的请求。RA收到后,发送LSAck报文确认。
- 上述过程持续到RA的LSA与RB的LSA完全同步为止,此时RA将RB的邻居状态机改为FULL
- 状态。
在NBMA网络中建立OSPF邻接关系
- NBMA网络和广播网络的邻接关系建立过程只在交换DD报文前不一致,如图中的蓝色标记。
- 在NBMA网络中,所有路由器只与DR和BDR之间形成邻接关系。
- 在NBMA网络中,所有报文均以单播形式发送,不依赖组播地址。
在NBMA网络中建立OSPF邻接关系的过程如下:
- 建立邻居关系
- RouterB向RouterA的一个状态为Down的接口发送Hello报文后,RouterB的邻居状态机置为Attempt。此时,RouterB认为自己是DR路由器(DR=2.2.2.2),但不确定邻居是哪台路由器(Neighbors Seen=0)。
- RouterA收到Hello报文后将邻居状态机置为Init,然后再回复一个Hello报文。此时,RouterA同意RouterB是DR路由器(DR=2.2.2.2),并且在Neighbors Seen字段中填入邻居路由器的Router ID(Neighbors Seen=2.2.2.2)。
- 在NBMA网络中,两个接口状态是DR Other的路由器之间将停留在此步骤。
- 主/从关系协商、DD报文交换过程同广播网络的邻接关系建立过程。
- LSDB同步(LSA请求、LSA传输、LSA应答)过程同广播网络的邻接关系建立过程。
在点到点/点到多点网络中建立OSPF邻接关系
在点到点/点到多点网络中,邻接关系的建立过程和广播网络一样,不同的是不需要选举DR和BDR,点到点网络所有报文均使用组播地址(224.0.0.5)交互;点到多点的Hello报文使用组播地址(224.0.0.5),其它报文使用单播形式交互。
在MA网络中的状态机:
- Waiting:在此状态下,路由器通过监听接收到的Hello报文检测网络中是否已经有DR和BDR。在此状态下的路由器不可以参与选举DR和BDR。
- Backup:在此状态下,该路由器成为所连接网络上的BDR,并与网段中所有的其他路由器建立邻接关系。
- DR:在此状态下,该路由器成为所连接网络上的DR,并与网段中所有的其他路由器建立邻接关系。
- DROther:该路由器连接到一个广播型网段或者NBMA网段,而且该路由器不是一个DR或者BDR。此状态下的路由器与DR和BDR形成邻接关系并交换路由信息。
- BackupSeen:路由器已经检测到网络上是否存在BDR。
端口状态变换-点到点、点到多点网段和虚连接
- a、端口状态:
- Down:这是端口的初始状态,在该状态下,底层协议显示该端口不可用,所有定时器被关闭。
- Loopback:此状态表示端口被环回。在该状态下的端口被通告为一个Stub网段。
- Point-to-point(P-to-P):在此状态下,端口是可用的,而且端口是连接到点到点、点到多点或者虚连接,此状态下的端口试图与邻居建立邻接关系,并以HelloInterval的间隔发 送Hello报文。
- b、端口转变过程中发生的事件解释如下:
- UnloopInd:Unloopback Indication,表示端口解除环回状态。处于Loopback状态下的端口如果收到此事件,则进入Down状态。
- InterfaceUp:端口的链路层协议变成可用状态,即常说的链路层Up。由于不需要选举DR和BDR,因此点到点、点到多点网段以及虚连接的端口状态变换比较高效,因为减少了因DR和BDR选举带来的复杂性和延迟。
- c、interface Serial1/0/0
- link-protocol fr /修改接口封装类型为FR(Frame Relay帧中继)
- fr map ip 10.1.1.2 102
- fr map ip 10.1.1.3 103
- [RTC-ospf-1-area-0.0.0.1]network 10.1.2.0 0.0.0.255
- [RTC-ospf-1-area-0.0.0.1]vlink-peer 2.2.2.2 //虚链路
- d、修改接口类型,可以提高ospf收敛
- [接口下]ospf network-type p2p(点到点)//修改接口类型
- broadcast
- nbma
- 两端类型必须一致。
虚链路
- 虚链路的应用场景:
- area 0被分割。
- 非骨干区域没有连接到区域0。
- 区域中没有area 0,可以配置虚链路(虚链路相当于是骨干区域area 0),在思科中不支持。
- 增加网络的稳定性。
OSPF的度量方式
- 某接口cost=参考带宽/实际带宽,默认参考带宽为100M。
- 当计算结构有小数时,只取整数位;
- 当结果小于1时,cost取1。
- 更改cost的两种方式:
- 直接在接口下配置,需要注意的是,cost值是此接口最终的cost值,作用范围仅限于本接口。
- 命令:进入接口, ospf cost 1~65535
- 修改参考带宽(所有路由器都有修改,确保选路一致),作用范围是本使能了OSPF的路由器的接口。
- 命令:进入接口,bindwidth 1~1000000
- 直接在接口下配置,需要注意的是,cost值是此接口最终的cost值,作用范围仅限于本接口。
- 要么修改cost要么修改带宽bindwidth,因为如果修改了cost相当于直接告诉系统结果了,系统就不需要再去计算cost值了;如果配置bindwidth,则按照bindthwidth的参数来计算cost;因此只需使用其中一种方式来配置cost。
- OSPF以累计cost为开销值,也就是流量从源网络到目的网络所有路由器出接口的cost总和。
- 相比RIP,OSPF不仅考虑跳数,还考虑带宽,
OSPF的单区域配置
在企业内部, 灵活实现不同部门之间互通的解决方案, 并且具有丰富的扩展性, 只有OSPF可以做到.
为了便于网络规模的扩展, 当前的OSPF网络必须设计为 区域0
OSPF wild card bits: 反掩码, 可以在配置的时候输入反掩码(如0.0.0.255), 也可以在配置的时候写正掩码, 设备会自动转换为反掩码(如255.255.255.0 转换成0.0.0.255). 因此, 在实际工程中, 怎么方便怎么来, 保证最终结果正确即可. 另外, 不能把OSPF wild ward bits看成通配符, 因为掩码是连续的 1 组成, 如果使用通配符系统会认为输入是无效的(Error: The network mask is invalid because the network mask must be consecutive,由于网络掩码必须连续,因此网络掩码无效)
单区域OSPF配置命令:
- [AR1]ospf ∥指定ospf协议的进程号,不指定则默认为1。
- [AR1-ospf-0]area 0 ∥进入ospf协议的区域0。
- [AR1-ospf-0-area 0]network 192.168.1.0 255.255.255.0 ∥将192.168.1.0/24宣告进入到区域0。
- [AR1-ospf-0-area 0]network 192.168.12.0 255.255.255.0 ∥network 后面跟的必须是直连路由。
- [AR2]ospf 2 ∥OSPF协议的进程号,在每个设备上是可以不相同的。
- [AR2-ospf-0]area 0
- [AR2-ospf-0-area 0]network 192.168.12.0 255.255.255.0
- [AR2-ospf-0-area 0]network 192.168.23.0 255.255.255.0
- [AR3]ospf 3
- [AR3-ospf-0]area 0
- [AR3-ospf-0-area 0]network 192.168.23.0 255.255.255.0
- [AR3-ospf-0-area 0]network 192.168.2.0 255.255.255.0
- display ospf peer brief //查看网络设备(如路由器)OSPF(Open Shortest Path First)协议邻居简要信息的命令, 通过这些信息,网络管理员可以快速判断OSPF邻居关系的建立情况和状态,从而帮助诊断和解决网络问题(在任意视图下执行)。
- 以下是display ospf peer brief命令输出的一些关键信息:
- OSPF Process:显示OSPF进程ID和路由器的Router ID。
OSPF Process 1 with Router ID 1.1.1.1
- Area Id:显示邻居所在的OSPF区域ID,表示路由器当前建立的邻居关系所在的区域,OSPF通过区域划分来减少路由信息的交换量和计算复杂度。
- Interface:显示与邻居建立关系的本地接口。
- Neighbor id:显示邻居路由器的Router ID。
- State:显示与邻居的OSPF关系状态。常见的状态包括:
- 2-way:双方都收到了对方的Hello报文,邻居关系建立。
- ExStart:开始交换数据库描述报文(DBD,DBD也即DD)。
- Exchange:交换DBD报文,同步链路状态数据库(LSDB)。
- Loading:请求和接收链路状态更新(LSU)报文,同步LSDB。
- Full:双方LSDB完全同步,邻接关系建立。最终完美状态。(完全邻接)
- OSPF Process:显示OSPF进程ID和路由器的Router ID。
OSPF单区域配置总结
企业网内, 如果仅仅配置一个区域, 那必须是 OSPF 区域 0.
OSPF进程号的作用是: 在同一个路由器上区分不同的OSPF协议, 不同路由器上的进程可以相同也可以不相同, 互不相干.
OSPF的router-id 用于标识不同的路由器, 必须确保唯一.
OSPF router-id 最大的特点是稳定, 一旦确定, 就无法修改, 除非重启 OSPF 协议或重启路由器.
OSPF 邻居表中的状态必须是 FULL, 才能互相学习对方的路由.
OSPF多区域配置
背景
企业核心机房, 连接不同的办公楼宇, 实现不同楼宇互通.
企业核心机房设置为 OSPF 骨干区域.
其他办公楼宇为 非骨干区域. 通过路由器与核心机房互联互通.
随着企业内网的规模越来越大, 网络的稳定性, 扩展性以及管理工作, 收到越来越大的考验.
为了能够增强网络稳定性以及扩展性, 简化网络管理和故障排查工作, 我们引入了OSPF区域
相关概念
骨干区域路由器:
路由器所有的接口, 都属于骨干区域的路由器.
非骨干区域路由器:
路由器所有的接口, 都属于非骨干区域
区域边界路由器(ABR):
同时连接着骨干区域和非骨干区域的路由器.Area Border Router
自治系统边界路由器(ASBR)
具有产生外部路由能力的路由器, Autonomous System Border Router
OSPF区域的类型:
- 骨干区域 0
- 非骨干区域 (非0和特殊区域)
- 普通区域
- 特殊区域:Stub区域, 完全Stub区域, NSSA区域, 完全NSSA区域
答: 骨干区域和非骨干区域. 而在非骨干区域中, 因为一些特殊需求, 又可以把非骨干区域分为: Stub区域, 完全Stub区域, NSSA区域和完全NSSA区域.
多区域互的互联原则:
所有的非骨干区域, 必须与骨干区域直接相连, 否则区域之间无法互通.
多区域OSPF小结
多区域的OSPF,最关键的是ABR的配置,实现区域之间的互通。
在ABR上配置的时候,必须出现‘区域0’的相关配置。
多区域OSPF网络,非骨干区域必须和骨干区域直接相连。
路由器之间的直连网段,必须通过network命令宣告进入OSPF。
stub区域 -末梢区域
Stub区域的特点:
- 该区域的路由器,没有OSPF外部路由
- 该区域的ABR,会自动产生1个默认路由,确保与网互通。
- 该区域内的所有路由器都需要配置相的stub配置命令。
例如,当stub区域外部的某个链路或设备出现故障或配置错误或增加外部路由时,其它区域可能会因此更新Ospf路由而受到影响,但不会影响stub区域内的路由器的路由表。这是因为stub区域的ABS连接区域0的端口不会向stub区域发送(__)类LSA报文,stub区域内的设备由于接收不到相关LSA的报文,不会更新OSpf路由表,而stub区域内所有路由器自动生成的默认路由依旧存在,因此该区域内的设备依旧可以通信。
内部路由:network 宣告的路由就是内部路由。
外部路由:import 宣告的路由就是外部路由。外部路由是不稳定路由,会影响全网。
特殊区域:不要外部路由的区域。
项目背景:
两公司之间运行OSPF,通过静态路由互通。
为了实现企业之间相互访问,需要将“静态路由”宣告进OSPF。
企业内部重要区域(Area12)不希望受到外部链路的抖动的影响。
项目分析:
因为R6和R7之间的链路的稳定性,不完全受到企业的控制,所以对于该企业而言,R6~R7之间的链路,被认为是外部链路。
那么,为了减小这种不稳定的外部链路对内部某些重要区域(area 12)的影响,我们可以将该区域配置为:特殊区域,从而达到保护这个区域的目的。
在R6 和 R7之间配置静态路由,实现双网通信。
在R6上将静态路由宣告进入到OSPF,只能通过import-route的方式,该路由以“外部路由”形式,存在于OSPF网络。R6和R7之间链路不稳定,导致OSPF外部路由不稳定,影响到整个OSPF网络中的OSPF网络中的路由表的稳定。
OSPF计算外部路由,是通过External LSA计算的。
解决方案
想让重要区域(Area 12)不受外部路由的影响,可以让该区域不接收External LSA,即将Area 12配成特殊区域。
OSPF特殊区域,指的是不接收External LSA的区域。
配置思路
- 配置企业网络内部的OSPF协议,即多区域OSPF。
- R6创建静态路由,实现PC3的互通。
- R7创建静态路由,访问企业内网的所有网段。
- R6通过import-route的方式宣告‘静态路由’。
- 将Area 12配置为OSPF特殊区域-stub area(末梢区域)。
- 配置终端IP,掩码,网关
- 配置各路由器IP,并启用OSPF,宣告网段进入区域。
配置命令
- 配置R7去往公司内网所有网段的路由条目。
- [R7]ip route-static 192.168.0.0 16 192.168.67.6
- 配置R6去往PC3的静态路由。
- [R6]ip route-static 192.168.3.0 24 192.168.67.7
- 在ASBR->R6上宣告静态路由进入OSPF
- ospf 1
- area 12
- import-route static //在R6上,宣告静态路由进入OSPF协议。“导入”后的静态路由,会通过OSPF协议发送出去并被各区域设备学习到。通过该命令产生的路由称为外部路由。
- 将区域12配置为stub区域,在该区域的所有路由器上配置(R1/R2):
- R1:
- [R1]ospf 1
- [R1-ospf-1]area 12
- [R1-ospf-1-0.0.0.12]stub //配置完成后,R1会产生一个默认路由条目->0.0.0.0/0,同时还有其他区域的路由条目。
- R2
- [R2]ospf 1
- [R2-ospf-1]area 12
- [R2-ospf-1-0.0.0.12]stub //配置完成后,R2作为ABR,和R1不同,并没有产生默认路由。依然保留了3.0网段的外部路由。
- R1:
Stub区域总结
Stub区域是一种特殊的区域类型,主要用于优化网络性能并减少路由器的处理负担。以下是详细的作用说明:
- 减少路由表条目:在Stub区域内,路由器不会接收来自其他OSPF区域的路由更新,而是仅依赖于ABR(区域边界路由器)提供的默认路由。这意味着Stub区域内的路由器不需要维护整个自治系统的路由信息,只需知道如何到达ABR即可,从而显著减少路由表中的条目数量。
- 降低处理负担:由于减少了路由表的大小,路由器需要处理的路由信息量也随之减少,这降低了路由器的CPU负担和内存消耗。
- 简化网络管理:通过使用默认路由代替具体的外部路由,网络管理员可以更容易地管理和配置网络,提高了网络管理的效率。
- 减少路由震荡:由于减少了路由信息的传播,Stub区域内的路由器受到网络变化的影响较小,从而减少了路由震荡的可能性。
- 需要注意的是,骨干区域不能配置为Stub区域,并且要配置一个区域为Stub区域,该区域内的所有路由器都需要进行相应的配置。此外,Stub区域内不能存在ASBR(自治系统边界路由器),即不能引入外部路由。
Totally stub – 完全末梢区域
是基于stub区域的优化。
stub区域的特点是:
- 该区域不会受到外部链路的不稳定的影响。
- 该区域的ABR,会自动产生1个默认路由,确保与外部链路互通。
- 该区域,依然会受到“其它区域的链路”不稳定带来的影响。
stub区域的优化 –> totally stub(完全末梢区域)
Totally Stub区域是一种特殊类型的区域,它比普通的Stub区域具有更强的路由信息过滤能力。
- 在ABR上配置,确保该区域不包含“区域之间的链路”,从而避免该区域受到“其它区域”的影响。
- 具备这种特点的区域,称之为Totally Stub区域(完全末梢区域)。
Totally Stub区域不仅禁止Type-5 LSA(自治系统外部LSA)的传播,还禁止Type-3 LSA(区域间LSA)的传播。这意味着Totally Stub区域内的路由器不会接收任何来自其他区域的路由信息,无论是内部路由还是外部路由。所有通往其他区域的流量都将通过一条默认路由(0.0.0.0/0)来实现,这条默认路由由ABR(Area Border Router,区域边界路由器)生成并广播给Totally Stub区域内的所有路由器。
Totally Stub配置命令
将stub区域12,进一步配置为Totally Stub区域
- 仅仅需要在stub区域的ABR(R2)上配置以下命令:
- ospf 1
- area 12
- stub no-summary //该ABR不允许向区域12发送Summary LSA。
- 配置完成后,AR1会产生基于OSPF协议产生的默认路由条目。同时AR1只维护本区域内的路由信息和一条OSPF默认路由。
Totally Stub区域的作用
- 进一步减少LSDB大小:由于禁止了Type-3 LSA的传播,Totally Stub区域内的路由器只需要维护本区域内的路由信息和一条默认路由,这极大地减少了LSDB的大小。
- 降低CPU和内存负担:更小的LSDB意味着更少的SPF(Shortest Path First,最短路径优先)算法计算次数,从而降低了路由器的CPU和内存负担。
- 简化网络管理:通过使用默认路由代替详细的区域间路由信息,网络管理员可以更容易地管理和配置网络,减少配置错误的可能性。
Stub总结
- stub区域,不会受到外部链接不稳定的影响。
- ABR会自动的产生一个默认路由,确保该区域与外部链路以及其它区域互通。
- 在stub区域的基础上,更加优化的方案是:Totally Stub区域。
- 在Totally stub区域中的设备,不会受到外部链路以及其它区域链路的影响,确保该区域更加稳定和安全。
Default-route-advertise
项目背景
企业内网运行OSPF,经运营商访问公司架设在公网的“服务器”。
为了确保内网区域123的稳定性,将区域123配置为stub区域。
“合作公司”与“企业”有特定业务合作经公司访问公网服务器。
思路和过程
- 内网:
- 路由器接口IP,配置运行OSPF
ospf 1
area 123
network 192.168.12.0 0.0.0.255
- 边界设备:静态默认路由,ACL,NAT(EasyIP)
- AR4边边界设备,在AR4上配置。
[AR4]ip route-static 0.0.0.0 0 200.1.1.9
- quit
[AR4]ACL 2000
[AR4-ACL-2000]
rule 10 permit Source any- quit
- int g0/0/0
- [AR4-interface-g0/0/0]nat outbound 2000
- quit
- 配置ABR stub,区域123的ABR是R3
- ospf 3
- area 0
- stub
- 路由器接口IP,配置运行OSPF
- 外网
- 路由器接口IP,Server的IP,掩码,网关。
- 测试。
- PC ping 不通server,由于R4未做静态路由宣告,而R4的默认路由比较特殊,它是由Ospf协议生成的默认路由,不能用import-route static将该路由宣告进区域。
- 需用新的命令:
default-route-advertise
默认路由通告,用于将缺省路由通告到OSPF路由区域。 - 再次Ping服务器,通!
default-route-advertise使用方法:
1.当需要引入其他协议产生的缺省路由时,必须在ASBR(Autonomous System Boundary Router)上配置 default-route-advertise,发布缺省路由到整个普通OSPF区域。
2.如果ASBR已经有缺省路由,执行 default-route-advertise 将在整个OSPF区域中通告缺省路由0.0.0.0。
3.如果ASBR没有缺省路由,执行 default-route-advertise 命令时按照需求选择是否配置 always 参数。
注意事项
OSPF缺省路由发布的方式取决于引入缺省路由的区域类型,该命令仅用于发布缺省路由到普通OSPF区域。
对于Stub区域、Totally Stub区域、Totally NSSA区域,缺省路由自动发布。
对于NSSA区域,则通过命令 nssa default-route-advertise 发布缺省路由。
NAAS
OSPF产生默认路由的方式:
- 确保该设备上本身有默认路由
- 通过特定的命令产生:
- default-route-advertise
需求:
- 企业内网,实现访问server
- 保护区域 123,不受到外部链路影响。
思路:
- 搞定企业内网
- 接口IP,路由协议—ospf
- 搞定模拟运营商:
- 接口IP
- 实现内外网互通
- 默认路由+NAT
- 保护区域 123
- 设置为 stub 区域,保障区域123不受外部链路影响。
- 验证与测试
配置:
- 企业内网(配置IP地址)
- R1:
- int g0/0/0
- ip address 192.168.12.1 24
- R2:
- int g0/0/0
- ip address 192.168.12.2 24
- int g0/0/1
- ip address 192.168.23.2 24
- R3:
- int g0/0/0
- ip address 192.168.23.3 24
- int g0/0/1
- ip address 192.168.34.3 24
- R4:
- int g0/0/0
- ip address 192.168.34.4 24
- int g0/0/1
- ip address 200.1.1.254 24
- R1:
- 企业内网(配置OSPF)
- R1:
- sys
- ospf 1 router-id 1.1.1.1
- area 123
- network 192.168.12.0 0.0.0.255
- R2:
- sys
- ospf 2 router-id 2.2.2.2
- area 123
- network 192.168.12.0 0.0.0.255
- network 192.168.23.0 0.0.0.255
- R3:
- sys
- ospf 3 router-id 3.3.3.3
- area 123
- network 192.168.23.0 0.0.0.255
- area 0
- network 192.168.34.0 0.0.0.255
- R4:
- sys
- ospf 4 router-id 4.4.4.4
- area 0
- network 192.168.34.0 0.0.0.255
- R1:
- 模拟运营商
- R5:
- int g0/0/0
- ip address 200.1.1.9 24
- int g0/0/1
- ip address 210.1.1.254 24
- 实现内外网互通(静态+NAT)
- 在R4上配置指向运营商的静态路由:
- ip route-static 210.1.1.0 24 200.1.1.9 //配置指向运营商服务器的默认路由
- 在R5上配置,指向公司内部网段的静态路由:
- ip route-static 192.168.0.0 16 200.1.1.254 //配置指向公司内部192.168.0.0网段的静态路由
- 在R4上配置acl+NAT
- [R4]acl 2000
- [R4-acl-2000]rule 10 permit source any //配置允许所有IP地址的数据包通过
- quit
- 在R4的出接口上配置NAT
- [R4]int g0/0/1
- nat outbound 2000 //NAT Outbound :指的是从内部网络到外部网络的流量转换。2000:这是一个访问控制列表(ACL)的编号,用于指定哪些内部IP地址或流量需要进行NAT转换。通过定义这样的ACL,网络管理员可以精确控制哪些内部设备或服务可以通过NAT访问外部网络。
- 在R4上配置指向运营商的静态路由:
- 保护区域123(配置区域123为stub,R1/R2/R3都需要配置)
- R1/R2/R3:
- ospf 1
- area 123
- stub
- R1/R2/R3:
- 实验与测试:
新需求:
- 合作公司,想访问我公司内部的业务服务器Server,而访问需经过区域123。
思路二:
- 方案1: 可以使用Nat,但公司没有多余的公网IP,购买成本高,不好。
- 方案2:使用私有地址,利用Ospf实现路由交换。
由于新购买IP地址不现实,只能使用私有地址(使用方案2)。使用私有地址不用NAT,可以使用静态路由。但又面临的问题是区域123是stub区域,使用import-route static来宣告对stub区域不起作用,因此,需要将stub区域改为NSSA区域(Not so stub area)。
每个属于区域123的路由器都需要配置,配置过程是进入区域123,将原有的stub命令undo掉(undo stub),再输入NSSA。使用display ospf peer brief查看邻状态信息表,邻居状态从init→2-way→full。使用display ip route-table protocol Ospf,查看Ospf路由表,可以看到由O_NSSA生成的路由条目,说明区域123已成为NSSA区域。
另外,连接骨干区域和NSSA区域的ABR边界路由会将NSSA的路由转换成ASE路由后进入区域0,区域0设备从而生成通往server的ospf动态路由,最终实现数据通往server。
NSSA区域的特点
- 不接受其他区域的设备产生的外部路由,但本区域设备自己可产生外部路由。
- ABR会自动地产生一个默认路由,确保该区域可以与外部链路互通。
- 该区域,依然会受到“其他区域的链路”不稳定所造成的影响。
Totally Nssa
在ABR上配置,确保该区域不包含“区域之间的链路”,从而避免该区域受到“其他区域”的影响。
具备这种特点的区域,称之为 Totally Nssa 区域
Totally Nssa配置命令
仅仅需要在区域123的ABR上配置:
- ospf 3
- area 123
- nssa no-summary //该ABR不允许向区域123发送 Summary LSA
Nssa总结
不能接受 External LSA 的区域,称之为特殊区域。
OSPF特殊区域包括:Stub/Totally Stub/Nssa/Totally Nssa 四种类型。
通常情况下,为了确保一个区域更加的安全和稳定,才会将其配置为特殊区域。
只有非骨干区域可以配置为特殊区域,骨干区域无法配置为特殊区域。
OSPF汇总之区域间路由
企业内网运行很多区域的OSPF网络, 当某个路由器存在多个不稳定链路时,会影响到邻居路由器的稳定性,从而影响到骨干区域的稳定性。
造成影响的原因是:某个设备经常加入或减少设备,然后路由条目经常变换,且路由条目越来越多,导致其他ospf设备在更新路由表和查找路由条目时消耗大量资源,导致网络不稳定,影响骨干区域的网络。
希望通过技术方案,降低不稳定区域对骨干区域的影响。
汇总:多个路由被汇总后,有以下优点:
- 路由条目变少了,从而节省对方设备的系统资源。
- 路由表变小了,从而可以加速路由器转发数据包的速度。
- 路由条目少了,从而那些随意变化的,不稳定的路由接受不到了,从而提高网络的稳定性。
项目背景
企业内网运行多区域的OSPF网络,在R1上存在多个不稳定的链路
R1上的不稳定链路,会影响到骨干区域的稳定性。
希望通过技术方案,降低区域12的不稳定性对区域0的影响。
项目分析
R1的每个接口通过OSPF进入区域0后,是以3类LSA(即区域间路由)的形式存在。
3类LSA,只能由ABR(R2)产生。
如果ABR不产生这些路由的LSA,就不会对区域0产生影响。
解决方案
在区域12的ABR(R2)上,对区域12中的路由,进行路由汇总
路由汇总的本质就是:将很多的路由,变成很少的路由。只发汇总之后的路由,不发明细路由。
配置命令:
- ospf 1 //在ABR上配置
- area 12
- abr-summary 10.10.0.0 255.255.0.0 //将区域12发向区域0的路由,汇总成10.10.0.0/16
- 配置思路:
- 如图配置接口IP地址和OSPF区域
- 在R1上,将Lookback接口,宣告进入到区域12
- 在R2上,对区域12中的路由进行汇总。
- 结果是:
- 区域0中已经没有了关于10.10.x.x/24的路由。
- 只有10.10.0.0/16的11个路由。
- (模拟故障:比如关闭某些接口)区域12的路由如果发生变化不会对区域0造成影响。
OSPF汇总之外部路由
项目背景
企业内网运行多区域的OSPF网络,在R6上存在多个外部链路。
R6上的不稳定链路,会影响到骨干区域的稳定性。
希望通过技术方案,降低外部链路的不稳定性对区域0的影响。
项目分析
R6的Loopback接口,通过“重分发”的方式引入。
R6的外部路由,在OSPF网络中,以 External LSA 形式存在。
只有ASBR可以产生 External LSA,影响整个OSPF网络。
解决方案
在R6上,对引入的外部路由,进行路由汇总。
路由汇总的本质就是:将很多的路由,变成很少的路由。只发汇总后的路由,不发明细路由。
配置思路:
- 如图配置各个路由器的接口IP和 OSPF 各个区域,宣告网段。
- 在 R6 上,配置Loopback接口ip地址,通过 import-route direct 宣告进入OSPF。
- interface Loopback 1
- ip add 10.60.1.1 24
- interface Loopback 2
- ip add 10.60.2.2 24
- interface Loopback 3
- ip add 10.60.3.3 24
- interface Loopback 4
- ip add 10.60.4.4 24
- 宣告外部路由
- ospf 6
- import-route diret
- R6 作为区域 56 的 ASBR,在R6上配置,对宣告的外部路由进行汇总。
- ospf 6
- asbr-summary 10.60.0.0 255.255.0.0
小结
在OSPF网络中,5类LSA标识外部路由。
在OSPF网络中,只有ASBR可以产生5类LSA。
在OSPF网络中,只能在产生这些5类LSA的ASBR上进行。
路由汇总,可以减少对方设备资源的占用,提高网络稳定性。
OSPF安全认证之链路认证
项目背景
企业内网运行多区域OSPF网络,区域之间通过骨干区域互通。
为了保证区域0的安全, 需要确保骨干区域的邻居关系都必须是经过认证的,非法接入的路由器不能与骨干区域建立邻居关系。
项目分析
为确保非法路由器不能与区域0的设备建立邻居关系,需要对建立邻居关系的 Hello 报文,进行加密处理。
Hello 报文时通过路由器的接口传输的,所以需要在接口配置认证。
解决方案
OSPF链路认证,即对运行OSPF协议的接口发送和接收的OSPF进行加密和认证。
OSPF链路认证的类型分为“明文认证”和“密文认证”。
配置思路
如图配置接口IP地址和OSPF多区域网络。
在属于区域0的链路上配置 OSPF 链路认证。
R2-R3,R3-R4配置明文认证,R4和R5之间配置密文认证。
- R2-R3之间的明文认证:
- R2:
- int g0/0/1
- ospf authentication-mode simple cipher 2323
- R3:
- int g0/0/0
- ospf authentication-mode simple cipher 2323
- R2:
- R3-R4之间的明文认证:
- R3:
- int g0/0/1
- ospf authentication-mode simple cipher 3434
- R4:
- int g0/0/0
- ospf authentication-mode simple cipher 3434
- R3:
- R4-R5之间的密文认证:
- R4:
- int g0/0/1
- ospf authentication-mode md5 10 cipher 4545
- R5:
- int g0/0/0
- ospf authentication-mode md5 10 cipher 4545
- R4:
小结:
OSPF链路认证,仅仅对当前端口起作用。
已建立邻居关系的 情况下,如果仅配置了一个端口的链路认证,邻居关系将断开。需两端接口都配置相同的认证。
一个端口下,只能配置一种类型的认证。
同一个区域中的多个链路,可以配置不同类型的认证和密码。
明文认证的规则是‘链路两端的认证类型和密码要相同’。
密文认证的规则是‘链路两端的认证类型,key id,密码都要相同’。
OSPF安全认证之区域认证
项目背景
企业内网运行多区域的OSPF网络,区域之间通过骨干区域互通。
骨干区域的网络设备非常多,需要确保非法接入骨干区域的设备不能与骨干区域建立正常的 OSPF 邻居关系。
项目分析
骨干区域的范围庞大,并且网络设备以及互联接口非常多。
需要确保该区域的每个设备的每个接口,都启用OSPF认证。
更加高效的配置方案是:OSPF 区域认证
解决方案
OSPF 区域认证,即该设备上的所有属于特点区域的接口,都启用认证功能。
OSPF区域认证 的类型分为“明文认证”和“密文认证”。
配置思路
如图配置接口IP地址和OSPF多区域网络。
在属于区域0的每个路由器上配置OSPF区域认证。
配置命令
- 配置R2/R3/R4/R5的 OSPF 区域 0 认证。
- 明文认证:
- ospf 1
- area 0
- authentication-mode simple cipher 0000
- quit
- 密文认证:
- ospf 1
- area 0
- authentication-mode md5 10 cipher 0000
- quit
小结
OSPF区域认证,对该设备上的属于指定区域的所有接口都起作用。
明文认证的规则是:链路两端的认证类型和密码都要相同。
密文认证的规则是:链路两端的认证类型,key id和密码都要相同。
针对同一个区域的链路,同时配置了区域认证和链路认证,优先使用链路认证的密码进行加密和认证。
OSPF不连续区域之虚链路
项目背景
企业内网运行多区域 OSPF网络,因网络规划问题,导致区域12没有连接到骨干区域。
现因业务需要,需确保R1能和其他区域的设备实现快速互通。
项目分析
正常的OSPF网络架构中,所有的非骨干区域,必须和骨干区域直接相连。
不同区域之间的数据包进行互通,必须使用区域之间的路由条目。
不同区域之间的路由,是通过 Sum-net LSA 表示的。而这种LSA只有ABR可以产生。
故:必须确保区域12存在ABR设备。此时使用方案:虚链路(vlink-peer)。
解决方案
OSPF虚链路,即永远属于骨干区域的一个虚拟的链路。通过虚拟链路建立的邻居,也都属于OSPF骨干区域。
OSPF虚链路的建立,必须要穿越‘普通的’非骨干区域。
配置思路
如图配置接口IP地址和OSPF多区域网络。
穿越普通区域34,在R2和R5之间建立OSPF虚链路。
虚链路配置命令
- 配置R2的OSPF虚链路:
- ospf 2
- area 34
- vlink-peer 5.5.5.5 //vlink-peer后面跟的是对端设备的router-id。
- 配置R5的OSPF虚链路:
- ospf 5
- area 34
- vlink-peer 2.2.2.2 //vlink-peer后面跟的是对端设备的router-id。
配置前后对比
- 配置前:
- 各个设备无法学习区域12的路由,区域12也无法学习其他区域的路由。
- R1没有其他区域的路由条目,R1无法ping通R6。
- 配置后:
- 区域12通过虚链路成功与区域0直接连接,各个设备能够完成路由信息的传递和学习。
测试
- 查看OSPF虚链路状态
- display ospf vlink
- 查看R1的OSPF路由表,可以学习到其他区域的路由
- display ip routing-table protocol ospf
- 测试R1与R6的连通性
- ping一下192.168.56.6,成功通信。
小结
OSPF多区域网络设计中,必须确保非骨干区域与骨干区域相连。
OSPF虚链路永远属于OSPF骨干区域。
OSPF虚链路的建立,必须穿越普通的非骨干区域,无法穿越特殊区域。
OSPF虚链路,是在两个ABR设备之间建立的。
OSPF虚链路配置中,vlink-pper参数后面跟的是router-id,不是接口IP地址。
OSPF不连续区域之多进程导入
项目背景
企业内网运行多区域OSPF网络,因网络规划问题,导致区域12没有连接到骨干区域。
现因业务需要,需确保R1能和其他区域的设备实现快速互通。
项目分析
正常的OSPF网络架构中,所有的非骨干区域,必须与骨干区域直接相连。
不同的区域之间互通,必须确保相互有对方的路由条目。
OSPF路由条目的类型分为内部路由和外部路由。
如果不使用‘虚链路’的方式,可以使用‘外部路由’,确保R1与其他区域的网段互通。
解决方案
在区域12的R2上,运行2个OSPF进程:R2通过OSPF进程1,与R1建立邻居关系;R2通过OSPF进程3,与R3建立邻居关系。
在R2上,将OSPF进程1和3,进行相互导入(import-route)
配置思路
如图配置接口IP地址和OSPF多区域网络。
在R2上创建两个OSPF进程,然后再在各自的进程中,引入另外的OSPF进程。
多进程导入配置命令
- 在R2上配置OSPF进程2:
- ospf 2 router-id 2.2.2.2
- area 12
- network 192.168.12.0 0.0.0.255 //宣告直连接口路由进入区域12。
- import-route ospf 3 //导入OSPF进程3学习的路由条目到OSPF进程2。
- 在R2上配置OSPF进程3:
- ospf 3 router-id 2.2.2.2
- area 34
- network 192.168.23.0 0.0.0.255 //宣告直连接口路由进入区域23。
- import-route ospf 2 //导入OSPF进程2学习的路由条目到OSPF进程3。
测试与结果
- 查看OSPF路由条目:
- display ip routing-table protocol ospf //可以查看到其他区域的路由条目,以O_ASE的形式存在。
- O_ASE路由是指那些OSPF AS(自治系统)之外的网络中学习到的路由。属于外部路由,类型5。
- ping 192.168.56.6,成功连通。
小结
不同网段之间的互通,是依靠路由表中的路由条目。
OSPF的路由类型分为:外部路由和内部路由。
OSPF内部路由:即通过network命令产生的路由。
OSPF外部路由:即通过import-route 命令产生的路由。
在同一个路由器上,不同的OSPF进程,相当于不同的路由协议,可以使用import-route进行导入,导入后的路由是以外部路由的形式存在。
OSPF不连续区域之GRE隧道
项目背景
企业内网运行多区域OSPF网络,因网络规划问题,导致区域12没有连接到骨干网络。
现因业务需要,需确保R1能和其他区域额设备实现快速互通。
项目分析
实现R1与其他区域快速互通最好的办法,就是连接一个线路到骨干区域0的设备上,然后宣告进入到OSPF区域0,即直接连接到骨干区域。
但是,因为不能随意更改网络结构,所以我们只能使用虚拟的线路。
在虚拟线路的解决方案中,有虚链路和GRE隧道两种方法。
OSPF虚链路非常的不稳定且太依赖传输区域,所以可以使用GRE的方法。
解决方案
GRE隧道(Generic Routing Encapsulation),即通用路由封装。
在R2和R5之间利用稳定的接口,建立GRE隧道,宣告进入到OSPF区域0,确保区域12可以之间连接到区域0。
配置思路
如图配置接口IP地址和OSPF多区域网络。
在R2和R5建立稳定的回环口,建立GRE隧道,并将其宣告进入区域0。
配置命令
- 配置R2和R5的环回口,并宣告进入区域 34:
- R2:
- [R2]interface loopback 25
- [R2-loopback25]ip address 10.10.25.2 32
- [R2-loopback25]quit
- [R2]ospf 2
- [R2-ospf-2]area 34
- [R2-ospf-2-0.0.0.34]network 10.10.25.2 0.0.0.0
- R5:
- [R5]interface loopback 25
- [R5-loopback25]ip address 10.10.25.5 32
- [R5-loopback25]quit
- [R5]ospf 5
- [R5-ospf-5]area 34
- [R5-ospf-2-0.0.0.34]network 10.10.25.5 0.0.0.0
- R2:
- 配置R2和R5,建立GRE隧道,并配置隧道的接口地址:
- R2:
- [R2]interface tunnel 0/0/25
- [R2-tunnel0/0/25]tunnel-protocol gre
- [R2-tunnel0/0/25]source 10.10.25.2
- [R2-tunnel0/0/25]destination 10.10.25.5
- [R2-tunnel0/0/25]ip address 192.168.25.2 24
- quit
- R5:
- [R5]interface tunnel 0/0/25
- [R5-tunnel0/0/25]tunnel-protocol gre
- [R5-tunnel0/0/25]source 10.10.25.5
- [R5-tunnel0/0/25]destination 10.10.25.2
- [R5-tunnel0/0/25]ip address 192.168.25.5 24
- quit
- R2:
- 配置R2和R5,分别将GRE隧道的网段,宣告进入到区域0:
- R2:
- [R2]ospf 2
- [R2-ospf-2]area 0
- [R2-ospf-2-0.0.0.0]network 192.168.25.0 0.0.0.255
- quit
- R5:
- [R5]ospf 5
- [R5-ospf-5]area 0
- [R5-ospf-5-0.0.0.0]network 192.168.25.0 0.0.0.255
- quit
- R2:
- 配置基本完成,查看路由表,邻居关系等信息,验证是否建立了区域0的OSPF邻居关系。
小结
GRE隧道,是一种“数据”重新封装的技术,即将原始数据包,使用GRE隧道的源和目标IP地址,重新封装一个IP头部信息。
在GRE隧道中传输数据时,路由器只能查看到外层头部信息,不能查看原始数据的真实头部信息。
只要GRE隧道可以建立,通过GRE隧道转发的不同区域之间的数据就肯定可以互通,这是不同于OSPF虚链路的地方。比OSPF虚链路更加稳定和可靠。
OSPF路由表管理
项目背景
为了提高企业内网的稳定性,在骨干区域增加了冗余设备的线路。
为了更好地利用这些线路,需要优化这些数据地转发路径。
项目分析
在区域 0 中,存在多个数据转发路径。R8作为R3/R4的备份设备。
最优的数据转发路径为:R2->R3->R4->R5。
R1经过R2访问R6时,存在2个可能的路径,下一跳IP分别为R3和R8。
在路由表中,表示一个路由好坏的属性为:开销值和优先级。
路由的开销:表示的是去往一个目标网段的距离长短;越小越好。
路由的优先级:表示的是一个路由条目的稳定性;越小越好。
调整线路上的入接口的Cost(开销值),确保R2的路由表中,去往R6的下一跳为R3的路由条目的Cost值更小。(入接口指的是路由方向的入接口,数据包的传输方向和路由的传输方向是相反的。)
查看入接口的开销值:display ospf interface 端口号。
配置思路:
如图配置IP地址和多区域OSPF
使用Tracert命令查看当前R2到达R6的所经过的路径。(显示的路径为R2-R8-R5-R6)
为了确保数据的传输路径为:R1-R2-R3-R4-R5-R6,所以要把R2的g0/0/2和 R3的g0/0/2的接口开销值增大;同时,为了确保数据返回的路径为R6-R5-R4-R3-R2-R1,所以要把R4的g0/0/2和R5的g0/0/2的接口开销值增大。
修改R2连接R8的接口的Cost,调整为大于1的值,调整后,去往R3的Cost值更小,路由会优先选择R3。
配置命令:
- 在R2的去往R8的接口上配置
- interface g0/0/2
- ospf cost 3 //修改接口的OSPF开销为3;默认为1。
- 查看R2去往R6,数据所经过的路径。
- tracert 192.168.56.6
- 查看R2的接口和路由表
- display ospf interface g0/0/2 //查看接口的ospf开销值。
- display ip routing-table protocol ospf //查看ospf路由表。
- R2的g0/0/2开销配置完成后,通过tracert查看转发路径发现,数据包会优先去往R3,但是不会走R4而是走R8,此时还需要在R3上修改去往R8端口的开销,从而让数据优先走R4。最终实现数据传输路径为R2->R3->R4->R5。
小结
路由的优先级,表示的是路由的稳定性,越小越好。
路由的开销,表示的是距离目标网络的距离,越小越好。
比较路由的好坏时,先比较优先级,再比较开销。
修改路由的开销,一定要修改路由传递发向上的接口的开销值(路由传递方向和数据传输方向是相反的)。
内部路由的优先级,默认是10.
外部路由的优先级,默认是150.
在OSPF中,当开销值和路由优先级相同时,数据转发的方向选择遵循以下规则:
- 负载均衡:如果到达相同目标网段的多条路由的开销值和优先级都相同,OSPF会进行负载均衡,将数据流量均匀分配到这些等价的路由上。
- 路由类型:如果路由类型不同,OSPF会根据路由类型的优先级来选择路由。路由类型优先级从高到低的顺序是:O(域内路由)、OA(域间路由)、O E1(类型1外部路由)、O E2(类型2外部路由)、O N1(类型1 NSSA路由)、O N2(类型2 NSSA路由)。
- 种子度量值:对于类型1和类型2的外部路由,如果开销值类型相同,OSPF会先比较种子度量值,选择种子度量值小的路由。
- 沿途累加开销值:如果种子度量值也相同,则比较沿途累加开销值,选择沿途累加开销值小的路由。
- 路由器ID:如果以上条件都相同,OSPF会选择路由器ID较大的路由。
- 综上所述,OSPF在开销值和路由优先级相同的情况下,会根据路由类型、种子度量值、沿途累加开销值和路由器ID等因素来选择数据转发的方向。如果所有条件都相同,则进行负载均衡。
OSPF路由过滤之 route-policy
项目背景
企业内网部分网络运行OSPF协议,但是服务器所在的部门使用静态。
匹配路由控制策略,确保PC1仅仅能访问Server2。
项目分析
R1和R2之间通过配置静态路由实现互通。
为了实现PC1访问Server2,必须在R2上宣告配置的静态路由进入OSPF。
宣告静态路由进入OSPF协议,使用的时import-route命令。
在R2本地存在两个静态路由,需要在使用import-route命令时,借助路由策略工具,过滤掉其他不关心的路由条目。
该路由策略工具,必须具备抓取感兴趣路由以及过滤路由的功能。
解决方案
在OSPF协议中,通过import-route 命令宣告静态路由进入OSPF的时候,可以借助路由过滤工具(route-policy),实现过滤路由的效果。
在route-policy中,需要借助ACL工具抓取感兴趣的路由条目。
配置思路
如图配置接口的IP地址和多区域OSPF网络。
在R2和R1之间配置静态路由,确保R2可以访问Server1和Server2。
在R2上配置基本ACL匹配路由,配置route-policy过滤路由。
在R2上,使用import-route static 命令,宣告静态路由进入OSPF。同时关联route-policy,实现仅仅引入Server2所在的网段(2.0网段)进入OSPF,(1.0网段)被过滤。
配置命令
- 配置R1和R2的静态路由:
- R1:
- ip route-static 192.168.0.0 16 192.168.12.2
- R2:
- ip route-static 192.168.1.0 24 192.168.12.1
- ip route-static 192.168.2.0 24 192.168.12.1
- R1:
- 配置R2上的ACL和route-policy
- 配置基本ACL:
- [ar2]ACL 2000 //用于匹配去往Server2的路由条目。
- [ar2-acl-basic-2000]rule 10 permit souce 192.168.2.0 0.0.0.255
- [ar2-acl-basic-2000]quit
- 配置route-policy
- [ar2]route-policy A permit node 10 //创建路由策略 — A。
- [ar2-route-policy]if-match acl 2000
- [ar2-route-policy]quit
- 配置基本ACL:
- 配置R2上的import-route 和 route-policy A
- [R2]ospf 1
- [R2-ospf-1]import route-static route-policy A //引入静态路由,并通过路由策略A进行过滤。//仅仅运行Server2所在网段进入OSPF协议。
- 验证与测试
- 在R5上验证OSPF路由表:
- display ip routing-table protocol ospf
- PC1 ping Server1
- ping 192.168.1.1 //不通。
- PC1 ping Server2
- ping 192.168.2.1 //通。
- 在R5上验证OSPF路由表:
小结
基本ACL在匹配路由的时候,只能匹配路由的网段,不匹配掩码。
基本ACL在匹配路由的时候,最后一个隐含的条目是:拒绝所有。
Route-policy 最后存在一个隐含的条目,动作是拒绝所有。
Route-policy 不仅可以用来匹配路由,还可以修改路由的属性。
OSPF路由过滤之LSA过滤
项目背景
企业内网运行多区域OSPF网络,区域之间通过骨干区域互通。
为了确保业务安全,现控制区域56的设备与用户,不允许访问区域12中的设备和资源,同时减少区域56中的设备资源的占用率。
项目分析
确保区域56无法访问区域12的设备,就必须确保区域56中的设备上不能包含区域12的路由条目。
想要实现上述目标,有两种解决方案:过滤路由表、过滤数据库。
过滤路由表:需要在区域56的每一个设备上配置策略,工作量大。并且不能确保最大程度节省设备资源占用率。
过滤数据库:仅需要在区域56上的ABR上配置,最大程度节省资源。
解决方案
过滤数据库,即过滤OSPF路由器之间传递的 LSA(链路状态信息)。
表示区域之间路由的 LSA ,称为 3 类LSA ,只能由ABR产生,在不同的区域之间传输。
区域 56 中的设备学习到区域 12 的路由,是由 R5 产生的 3类LSA 计算出来的。
在R5上, 3类LSA 进入区域56的时候,可以过滤区域12的路由条目。
配置思路
如图配置接口IP地址和多区域OSPF多区域网络。
在R5上配置ACL,匹配区域12的路由,通过 filter命令 进行过滤。
配置命令
R5作为区域56的ABR, 能够接收到区域12 的 3类LSA,通过ACL来控制R5不接收区域12的LSA。
- 在R5创建ACL,匹配区域12的路由条目。
- [R5]acl 2012
- [R5-acl-basic-2012]rule 10 deny source 192.168.12.0 0.0.0.255 //拒绝192.168.12.0/24的路由条目。
- [R5-acl-basic-2012]rule 20 permit source any //允许其他所有路由。
- 在R5的区域56中配置 3类LSA 过滤。
- [R5]ospf 1
- [R5-ospf-1]area 56
- [R5-ospf-1-0.0.0.56]filter 2012 import //区域56在接收 3类LSA 的时候,基于ACL2012规则过滤。
验证与测试
- 验证R6的数据库和路由表
- display ospf lsdb //查看R6的ospf数据库,区域12路由的LSA不存在。
- display ip routing-table protocol ospf //R6的OSPF协议路由表中没有区域12的路由。
- 通过上面两个命令,可以证实区域12的路由已被过滤,不会进入区域56的设备的路由表中。
- 而R5作为ABR是可以接收到区域12的路由的,因此R5的路由表中存在区域12的路由。
- 测试R1与R6的连通性
- [R6]ping 192.168.12.1 //无法互通。因为R6没有去往目标IP的路由。
- 测试R5和R1的连通性
- [R5]ping 192.168.12.1 //互通,因为R5作为ABR拥有去往区域12的路由。
- R5配置了ACL过滤了区域12的 3类LSA ,使其无法进入区域56,而R6作为区域56的内部设备,无法学习到区域12的路由,因此R6无法与R1通信。
小结
基本LSA过滤,达到过滤路由的效果,需了解常见LSA的作用。
基于LSA过滤策略,只能配置在‘产生LSA’的路由器上。
通过ACL匹配路由条目的时候,最后的隐含条目是:拒绝所有。
LSA在区域之间的是有传输方向的:import和export。所以在配置策略的时候,一定要确定目前所在的区域以及 LSA 的传递方向。
认识不同LSA
查看OSPF数据库
display ospf lsdb
区分不同类型的LSA:
- 1类LSA:router
- 2类LSA:network
- 3类LSA:sum-net
- 4类LSA:sum-asbr
- 5类LSA:external,普通区域的外部路由。
- 7类LSA:nssa,nssa区域的外部路由。
- 6类LSA:不存在。
LSA和路由之间的关系
- 内部路由:通过network命令宣告的路由
- 区域内路由,通过1类LSA产生,每台路由器都会产生。
- 区域间路由,只有ABR可以产生。
- 外部路由:通过import-route命令宣告的路由
- 普通区域的外部路由,通过5类LSA表示,普通区域的ASBR可以产生。
- 特殊区域的外部路由,通过7类LSA表示,特殊区域的ASBR可以产生。