首页
视频
资源
登录
原
OSPF 协议
2449
人阅读
2022/9/23 15:40
总访问:
2147052
评论:
0
收藏:
0
手机
分类:
网络
 >#OSPF 协议 [TOC] ## OSPF 协议简介 tn2>开放式最短路径优先OSPF(Open Shortest Path First)是IETF组织开发的一个基于链路状态的内部网关协议。目前针对IPv4协议使用的是OSPF Version 2(RFC2328);针对IPv6协议使用OSPF Version 3(RFC2740)。如无特殊说明,本文中所指的OSPF均为OSPF Version 2。 ## OSPF 出现的目的 tn2>在OSPF出现前,网络上广泛使用RIP(Routing Information Protocol)作为内部网关协议。 由于RIP是基于距离矢量算法的路由协议,存在着收敛慢、路由环路、可扩展性差等问题,所以逐渐被OSPF取代。 OSPF作为基于链路状态的协议,能够解决RIP所面临的诸多问题。此外,OSPF还有以下优点:<br/> 1.OSPF采用组播形式收发报文,这样可以减少对其它不运行OSPF路由器的影响。 2.OSPF支持无类型域间选路(CIDR)。 3.OSPF支持对等价路由进行负载分担。 4.OSPF支持报文加密。 由于OSPF具有以上优势,使得OSPF作为优秀的内部网关协议被快速接收并广泛使用。 ## OSPF协议特点 tn2>**+**<span/> OSPF把自治系统AS(Autonomous System)划分成逻辑意义上的一个或多个区域 **+**<span/> OSPF通过LSA(Link State Advertisement)的形式发布路由; **+**<span/> OSPF依靠在OSPF区域内各设备间交互OSPF报文来达到路由信息的统一; **+**<span/> OSPF报文封装在IP报文内,可以采用单播或组播的形式发送。 ## 报文字段与LSA类型 | 报文类型 | 报文作用 | | ------------ | ------------ | | Hello报文 | 周期性发送,用来发现和维持OSPF邻居关系。 | | DD报文(Database Description packet) | 描述本地LSDB(Link State Database)的摘要信息,用于两台设备进行数据库同步。 | | LSR报文(Link State Request packet) | 用于向对方请求所需的LSA。<br/>设备只有在OSPF邻居双方成功交换DD报文后才会向对方发出LSR报文。 | | LSU报文(Link State Update packet) | 用于向对方发送其所需要的LSA。 | | LSAck 报文(Link State Acknowledgment packet) | 用来对收到的LSA进行确认。 | | LSA类型 | LSA作用 | | ------------ | ------------ | | Router-LSA(Type1) | 每个设备都会产生,描述了设备的链路状态和开销,在所属的区域内传播。 | | Network-LSA(Type2) | 由DR(Designated Router)产生,描述本网段的链路状态,在所属的区域内传播。 | | Network-summary-LSA(Type3) | 由ABR产生,描述区域内某个网段的路由,并通告给发布或接收此LSA的非Totally STUB或NSSA区域。例如:ABR同时属于Area0和Area1,Area0内存在网段10.1.1.0,Area1内存在网段11.1.1.0,ABR为Area0生成到网段11.1.1.0的Type3 LSA;ABR为Area1生成到网段10.1.1.0的Type3 LSA,并通告给发布或接收此LSA的非Totally Stub或NSSA区域。 | | ASBR-summary-LSA(Type4) | 由ABR产生,描述到ASBR的路由,通告给除ASBR所在区域的其他相关区域。 | | AS-external-LSA(Type5) | 由ASBR产生,描述到AS外部的路由,通告到所有的区域(除了STUB区域和NSSA区域)。 | | NSSA LSA(Type7) | 由ASBR产生,描述到AS外部的路由,仅在NSSA区域内传播。 | | Opaque LSA(Type9/Type10/Type11) | Opaque LSA提供用于OSPF的扩展的通用机制。其中:<br/>Type9 LSA仅在接口所在网段范围内传播。用于支持GR的Grace LSA就是Type9 LSA的一种。<br/>Type10 LSA在区域内传播。用于支持TE的LSA就是Type10 LSA的一种。<br/>Type11 LSA在自治域内传播,目前还没有实际应用的例子。 | ## 邻居状态机 tn2>在OSPF网络中,为了交换路由信息,邻居设备之间首先要建立邻接关系,邻居(Neighbors)关系和邻接(Adjacencies)关系是两个不同的概念。<br/> 邻居关系:OSPF设备启动后,会通过OSPF接口向外发送Hello报文,收到Hello报文的OSPF设备会检查报文中所定义的参数,如果双方一致就会形成邻居关系,两端设备互为邻居。<br/> 邻接关系:形成邻居关系后,如果两端设备成功交换DD报文和LSA,才建立邻接关系。<br/> OSPF共有8种状态机,分别是:Down、Attempt、Init、2-way、Exstart、Exchange、Loading、Full。<br/> | 状态 | 描述 | | ------------ | ------------ | | Down | 邻居会话的初始阶段,表明没有在邻居失效时间间隔内收到来自邻居路由器的Hello数据包。 | | Attempt | 该状态仅发生在NBMA网络中,表明对端在邻居失效时间间隔(dead interval)超时前仍然没有回复Hello报文。此时路由器依然每发送轮询Hello报文的时间间隔(poll interval)向对端发送Hello报文。 | | Init | 收到Hello报文后状态为Init。 | | 2-way | 收到的Hello报文中包含有自己的Router ID,则状态为2-way;如果不需要形成邻接关系则邻居状态机就停留在此状态,否则进入Exstart状态。 | | Exstart | 开始协商主从关系,并确定DD的序列号,此时状态为Exstart。 | | Exchange | 主从关系协商完毕后开始交换DD报文,此时状态为Exchange。 | | Loading | DD报文交换完成即Exchange done,此时状态为Loading。 | | Full | LSR重传列表为空,此时状态为Full。 | ## OSPF 简单 Demo tn2>我们创建两个AR路由器,然后设置它们的`g0/0/0`接口的IP网段为`10.1.12.x`,设置的L0网卡分别为`1.1.1.1`和`2.2.2.2`。  tn2>配置AR1路由器。 ```bash # 创建名称 system-view sysname AR1 # 创建l0网段 int l0 ip a 1.1.1.1 32 dis this q # 为g0/0/0接口附上ip int g0/0/0 ip a 10.1.12.1 24 dis this q ```  tn2>配置AR2路由器。 ```bash # 创建名称 system-view sysname AR2 # 创建lo0网段 int l0 ip a 2.2.2.2 32 dis this q # 为g0/0/0接口附上ip int g0/0/0 ip a 10.1.12.2 24 dis this q ping 1.1.1.1 ```  tn2>我们发现它们并不能ping通,因为没有设置静态路由。 ```bash dis ip routing-table ```  tn2>配置ospf tn>在配置ospf网络的时候,需要配置区域;区域相当于在相同区域下的设备可以通过ospf进行连接。 ```bash # AR1 配置ospf ospf router-id 1.1.1.1 # 配置为0区域 area 0 # 宣告1.1.1.1网络 network 1.1.1.1 0.0.0.0 # 宣告 10.1.12.0 network 10.1.12.0 0.0.0.255 ```  ```bash # AR2 配置ospf ospf router-id 2.2.2.2 # 配置为0区域 area 0 # 宣告1.1.1.1网络 network 2.2.2.2 0.0.0.0 # 宣告 10.1.12.0 network 10.1.12.0 0.0.0.255 ping 1.1.1.1 ```  tn2>我们可以看到一些刚刚表中的状态信息。 我们还可以通过下面的命令来查询邻居。 ```bash dis ospf peer b ```  tn2>当我们一端停止`g0/0/0`接口时,邻居信息将会移除,AR1设备举例。 ```bash int GigabitEthernet 0/0/0 shutdown dis ospf peer b ```  tn2>然后我们再次激活,会看见一些启动起来的包,并且通过查看routing的方式我们发现已经学习到了对端地址,并且是通过OSPF的方式。 ```bash undo shutdown # 等30秒再次查看 dis this q dis ospf peer b # 查看ospf routing dis ospf routing dis ospf routing-table ```  tn2>当然我们要退出一条网络可以通过下面的命令进行实现 ```bash undo network 2.2.2.2 0.0.0.0 undo network 10.1.12.0 0.0.0.255 ```  tn2>如果我们在一台设备上添加一条ip地址希望其他端学习到,我们可以添加一条`0.0.0.0 255.255.255.255`的网络(两个设备都添加)。 ```bash network 0.0.0.0 255.255.255.255 # 然后我们查看状态到full为止 dis ospf peer brief q ```  tn2>然后添加一条ip `3.3.3.3` 到我们的AR1上,AR2可以学习到。 ```bash # 在AR1添加ip 3.3.3.3 int l0 ip a 3.3.3.3 32 # 在AR2查询路由 dis ip routing-table # ping ping 3.3.3.3 ```   tn>OSPF Router-ID用于在OSPF domain中唯一地表示一台OSPF路由器,从OSPF网络设计的角度,我们要求全OSPF域内,禁止出现两台罗尤其拥有相同的Router-ID。 OSPF Router-ID的设定可以通过手工配置的方式,或者通过协议自动选取的方式。当然,在实际网络部署中,强烈将以手工配置OSPF的Router-ID,因为这关系到协议的稳定。 ## 广播多路访问网络 tn2>在广播多路访问网络(Multi Access)中,所有的路由器的接口都是相同网段,这些接口两两建立OSPF邻居关系,这就意味着,网络中共有:n(n-1)/2。维护如此多的邻居关系不仅额外消耗资源,更增加了网络中LSA的泛洪数量。 ———为减小多路访问网络中的 OSPF 流量,OSPF 会在每一个MA网络(多路访问网络)选举一个指定路由器 (DR)和一个备用指定路由器 (BDR)。 ——DR选举规则:最高OSPF接口优先级拥有者被选作DR,如果优先级相等(默认为1),具有最高的OSPF Router-ID的路由器被选举成DR,并且DR具有非抢占性。 ——指定路由器 (DR):DR 负责使用该变化信息更新其它所有 OSPF 路由器(DR Rother)。 ——备用指定路由器 (BDR):BDR 会监控 DR 的状态,并在当前 DR 发生故障时接替其角色。 ——注意OSPF为“接口敏感型协议”,DR及BDR的身份状态是基于OSPF接口的。 ——MA网络中,所有的DRother路由器均只与DR和BDR建立邻接关系,DRother间不建立全毗邻邻接关系。 ——如此一来,该多路访问网络中设备需要维护的OSPF邻居关系大幅减小:M= (n-2)×2+1,LSA的泛洪问题也可以得到一定的缓解。 tn>简单来讲:在一个小组里面,学习路由找人,你直接找组长或副组长就可以了。 成为组长(DR)或副组长(BDR)通过`router-id`进行选举,数值越大越优先。 如果组长出事了或者请假了、挂了由职务又由副组长代替。 >### Demo案例 tn>抱歉诸位,关于下面的命令需要大家自己去尝试了,我本地交换机不知道为什么跑不起来。  tn2>配置AR4设备。 ```bash sysname AR4 interface Ethernet 0/0/0 # 由于该设备是交换机的口,所以先关闭交换机的接口 undo portswitch # 添加IP ip a 1.1.1.4 24 int l 0 ip a 100.100.100.100 32 dis ip int b ``` tn2>配置AR6设备。 ```bash sysname AR6 int Ethernet 0/0/0 undo portswitch ip a 1.1.1.6 24 int l 0 ip a 20.20.20.20 32 dis ip int b ``` tn2>配置AR5设备。 ```bash system-view sysname AR5 int Ethernet 0/0/0 undo portswitch ip a 1.1.1.5 24 int l0 ip a 5.5.5.5 32 dis ip int b ``` tn2>配置AR8设备。 ```bash system-view sysname AR8 int Ethernet 0/0/0 undo portswitch ip a 1.1.1.8 24 int l0 ip a 8.8.8.8 32 dis ip int b ``` tn2>配置AR7设备。 ```bash system-view sysname AR7 int Ethernet 0/0/0 undo portswitch ip a 1.1.1.7 24 int l0 ip a 7.7.7.7 32 dis ip int b ``` tn2>配置AR4设备的OSPF。 ```bash ospf router-id 100.100.100.100 area 0 network 0.0.0.0 255.255.255 dis this ``` tn2>配置AR6设备的OSPF。 ```bash ospf router-id 20.20.20.20 area 0 network 0.0.0.0 255.255.255 ``` tn2>配置AR5设备的OSPF。 ```bash ospf router-id 5.5.5.5 area 0 network 0.0.0.0 255.255.255 ``` tn2>配置AR8设备的OSPF。 ```bash ospf router-id 8.8.8.8 area 0 network 0.0.0.0 255.255.255 ``` tn2>配置AR7设备的OSPF。 ```bash ospf router-id 7.7.7.7 area 0 network 0.0.0.0 255.255.255 dis ospf peer brief ``` ## 多区域 tn2>通过不同区域的交换机连接进行通信。  ```bash system-view sysname AR4 int g0/0/0 ip a 10.1.45.4 24 int l0 ip a 4.4.4.4 32 dis this dis ip int b q ``` ```bash system-view sysname AR5 int g0/0/0 ip a 10.1.45.5 24 int l0 ip a 5.5.5.5 32 q dis ip int b int g0/0/1 ip a 10.1.56.5 24 q ``` ```bash system-view sysname AR6 int g0/0/0 ip a 10.1.56.6 24 int l0 ip a 6.6.6.6 32 dis ip int b # 测试直连情况 ping 10.1.56.5 ``` tn2>AR4 ```bash ospf router-id 4.4.4.4 area 0 network 0.0.0.0 255.255.255.255 dis this q ``` tn2>AR5 ```bash int g0/0/0 ospf router-id 5.5.5.5 area 0 network 10.1.45.0 0.0.0.255 dis ospf peer b network 5.5.5.5 0.0.0.0 dis this q int g0/0/1 network 10.1.56.0 0.0.0.255 dis ospf peer b ``` tn2>AR6 ```bash ospf router-id 6.6.6.6 area 1 network 0.0.0.0 255.255.255.255 dis ospf peer b q ``` tn2>AR4 ```bash ping 6.6.6.6 ```
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739
评价
{{titleitem}}
{{titleitem}}
{{item.content}}
{{titleitem}}
{{titleitem}}
{{item.content}}
尘叶心繁
这一世以无限游戏为使命!
博主信息
排名
6
文章
6
粉丝
16
评论
8
文章类别
.net后台框架
160篇
linux
17篇
linux中cve
1篇
windows中cve
0篇
资源分享
10篇
Win32
3篇
前端
28篇
传说中的c
4篇
Xamarin
9篇
docker
15篇
容器编排
101篇
grpc
4篇
Go
15篇
yaml模板
1篇
理论
2篇
更多
Sqlserver
4篇
云产品
38篇
git
3篇
Unity
1篇
考证
2篇
RabbitMq
23篇
Harbor
1篇
Ansible
8篇
Jenkins
17篇
Vue
1篇
Ids4
18篇
istio
1篇
架构
2篇
网络
7篇
windbg
4篇
AI
17篇
threejs
2篇
人物
1篇
嵌入式
2篇
python
8篇
最新文章
最新评价
{{item.articleTitle}}
{{item.blogName}}
:
{{item.content}}
关于我们
ICP备案 :
渝ICP备18016597号-1
网站信息:
2018-2023
TNBLOG.NET
技术交流:
群号656732739
联系我们:
contact@tnblog.net
欢迎加群
欢迎加群交流技术