CCNA 学习笔记(六)--路由协议(OSPF)

上面我们已经认识到了RIP(路由信息协议)&EIGRP(增强开内部网关路由协议)后,我们再来认识下面的这个路由协议OSPF(开放式的最短路径优先协议)也有人叫它为 接口敏感型路由协议。

OSPF 链路状态协议

(open short path first)开放式最短路径优先协议

下面让我们慢慢的一点一点的去了解OSPF协议吧.

1、OSPF  路由协议是一种典型的链路状态路由协议(link-state).

A、OSPF采用的是SPF算法,计算到达目的地最短的路径。

B、链路:就是指路由器接口。

C、状态:就是指描述当前接口及其与相邻路由器之间的关系。

所以别人也会把OSPF链路状态协议说是接口状态路由协议。

 2、管理距离:

OSPF的管理距离是:120    EIGRP的管理距离:5、170、90    RIP:110

3、组播地址:

OSPF:224.0.0.5、224.0.0.6

EIGRP:224.0.0.10

RIP:224.0.0.9

4、度量值(metirc):

RIP:使用跳数来作为度量值(hops)。

EIGRP:度量值为=(10^7/带宽bandwidth+延迟delay)*256

OSPF:度量值是使用开销(cost)来算。

OSPF度量值cost计算公式 = 所有链路入接口的cost之和;

接口cost计算公式 = 100M/带宽(bps)取整;环回接口的cost值为1。

5、Router-ID

OSFP上的Router-id也就相似现实中的人名一样,同一个区域(AS号)内都是唯一的,所以也有人说:Router-id是一个ospf域内唯一标志的路由器ID

那Routre-id怎么来的呢?

Router-id确定的方法如下2种:

1、由管理员手工确定。

2、由路由器自动选取:

A、若有loopback口,Loopback 口IP地址最大的选择为该路由的Router-id

B、若没有Loopback口,即看当前活跃的物理接口IP地址,选择IP地址最大的的使用该路由器的Router-id。

注:1、在选择IP地址时,C 类IP地址优先于 B 类IP地址。

2、物理接口一定是要活跃状态。

3、RID不具有抢占性,如果要想新的RID起效,需要使用(clear ip ospf process)命令

4、如果活动的物理接口使用了(secondary 配置IP的),该物理接口不参与RID选举。

5、更改接口的COST命令:ip ospf cost XX(直接进入接口后,XX为要更改的数值)

 6、OSPF的几种报文。

 7、OSPF的三张表:

    8、邻居关系 & 邻接关系

邻居:邻居可以是二台或者多台路由,并且这些路由器之间有一个或者多个接口连接在同一个网络中。

邻接:是指二台相邻,同时运行了OSPF进程的路由器之间的关系,这二台路由器允许二二之间直接交换路由信息数据更新,OSPF只与建立邻接关系的邻居交换路由信息,但不是所有的成为邻居的路由器都会建立邻接关系。

邻居关系的建立:二台相连的路由器,并且在各自相连的接口上都运行了OSPF进程,它们之间通过HELLO包交换互相发现对方,HELLO包信息(HELLO TIME/DEAD TIME/ROUTER-ID/认证)一致,双方的关系达到 2-WAY后,这时二路由器之间就建立了邻居关系。

这时二路由器之间还没有达到邻接关系,所以只是交换了HELLO报文,而没有交互链路状态数据库。

邻接关系的建立:双方在相邻的基础上,再发送DBD/LSR/LSU/LSACK报文,最后双方达到同步时,而且关系也转为FULL状态时,双方才算是建立了邻接关系。

邻居主要是通过    HELLO    包来发现与建立邻居关系。通过 224.0.0.5来发送ALLSPFROUTERS.

9、DR/BDR的选举:

为什么要选举DR/BDR?

答:OSPF中的多路访问广播弄网络会发生LSA泛洪,为了减少多路访问的OSPF流量,会在多路访问的广播型网络中选举一个DR/BDR,DR/BDR会监视224.0.0.4这组组播地址所以的广播流量,在多路访问的MA网络中,所有的Drouter路由器都只会与DR/BDR建立邻接的关系,不是与所有的邻居都建立邻接关系,这样话,泛洪就不会在全网里泛洪,只是通过DR/BDR使用单播224.0.0.5的发播。

1、DR、BDR有自己的组播地址:224.0.0.6

2、凡是“点到点”网络都不进行DR/BDR的选举,凡是"广播型”网络都会进行DR/BDR的选举。

3、DR/BDR的选举规则:

A、最高OSPF接口优先级拥有者被选举成DR,默认的情况下:多路访问网络默认的优先级别为 1,点到点访问网络的优先级别为 0.所以如果把默认的级别配置成O后,即不参与DR/BDR选举。

更改OSPF优先级的命令是:(在接口的进程中)使用 (config-if)#ip ospf priority 100)

B、如果接口优先级一致,那么拥有ROUTER-ID最高的接口被选举成DR。

4、DR/BDR 具有查抢占性。(也就是当DR/BDR选举成功后,就算新加入的路由器具有比现在的DR更高的接口优先级,也不给把DR抢占过来,也只有当DR挂掉,BDR不存在或者重新选举时,才可以抢占)

5、DR/BDR 重新选举的规则:

A、重新路由器(重置)

B、使用命令(clear ip ospf process) 不一定。

6、指定路由器(DR):用来更新屔广播路由器之间的OSPF信息。

7、备用指定路由器(BDR):会监视DR,并在当DR发生故障时,替代DR用。

10、OSPF的网络类型:

    11、区域(area):

为什么要分区域??

答:1、减少SPF运算量,使SPF运算只是涉及区域内的链路,减少CPU与内在的负荷。

2、减少LSA泛洪区域,有效的利用带宽。

3、在边界易于做流量控制。

4、在边界路由器做路由汇总,减少路由表条目,优化路由表。

5、多区域提高了网络的扩展性,有利于创建大规模的网络。

6、多区域有利于提高网络的收敛性。

7、多区域有利于提高网络的稳定性。

1、区域的分类:骨干区域、标准区域、末梢区别、完全末梢区域、虚拟链路

A、骨干区域(backbone):默认的情况下,area 0 为骨干区域。负责各区域之的信息交换。骨干区域内的路由必须是连续的,而且别的区域必须连接到骨干区域。

B、末梢区域(stub-area):只接收OSPF内部的更新,不接收LSA-5的更新。

C、虚拟链路:当骨干区域发生故障或者因设计的原因导致到当前的网络路由与骨干区域没有直接相连的一种补救网络。

D、完全末梢网络:只是接收区域内部的OSPF更新,不接收LSA-3。

===============================================================================

基本实验:

相关的基本配置:(也可以下载附件)

R1#conf t

R1(config)#no ip domain lo

R1(config)#lin co 0

R1(config-line)#logg sy

R1(config-line)#exec-t 0 0

R1(config-line)#lin vty 0 4

R1(config-line)#pass hznethome

R1(config-line)#login

R1(config-line)#end

--------------------------------------------------

R1(config)#int lo 0

R1(config-if)#ip add 1.1.1.1 255.255.255.0

R1(config-if)#no sh

R1(config-if)#int s0/1

R1(config-if)#ip add 192.168.12.1 255.255.255.0

R1(config-if)#no sh

R1(config-if)#int s0/0

R1(config-if)#ip add 192.168.13.1 255.255.255.0

R1(config-if)#no sh

---------------------------------------------------

R1(config)#router os 100

R1(config-router)#router-id 1.1.1.1

R1(config-router)#net 192.168.13.0 0.0.0.255 ar 0

R1(config-router)#net 1.1.1.1 0.0.0.255 ar 0

R1(config-router)#end

============================================================

R2#conf t

R2(config)#no ip domain lo

R2(config)#lin co 0

R2(config-line)#logg sy

R2(config-line)#exec-t 0 0

R2(config-line)#lin vty 0 4

R2(config-line)#pass hznethome

R2(config-line)#login

R2(config-line)#end

----------------------------------------------------

R2#conf t

R2(config)#int lo 0

R2(config-if)#ip add 2.2.2.2 255.255.255.0

R2(config-if)#no sh

R2(config-if)#int s0/2

R2(config-if)#ip add 192.168.12.2 255.255.255.0

R2(config-if)#no sh

R2(config-if)#int s0/0

R2(config-if)#ip add 192.168.24.2 255.255.255.0

R2(config-if)#no sh

R2(config-if)#end

--------------------------------------------------------

R2(config)#router os 100

R2(config-router)#router-id 2.2.2.2

R2(config-router)#net 192.168.12.0 0.0.0.255 ar 0

R2(config-router)#net 192.168.24.0 0.0.0.255 ar 0

R2(config-router)#net 2.2.2.2 0.0.0.255 ar 0

R2(config-router)#end

========================================================

R3#conf t

R3(config)#no ip domain lo

R3(config)#lin co 0

R3(config-line)#logg sy

R3(config-line)#exec-t 0 0

R3(config-line)#lin vty 0 4

R3(config-line)#pass hznethome

R3(config-line)#login

R3(config-line)#end

----------------------------------------------------

R3#conf t

R3(config)#int lo 0

R3(config-if)#ip add 3.3.3.3 255.255.255.0

R3(config-if)#no sh

R3(config-if)#int s0/0

R3(config-if)#ip add 192.168.13.3 255.255.255.0

R3(config-if)#no sh

R3(config-if)#int s0/3

R3(config-if)#ip add 192.168.34.3 255.255.255.0

R3(config-if)#no sh

R3(config-if)#end

-------------------------------------------------------

R3#conf t

R3(config)#router os 100

R3(config-router)#router-id 3.3.3.3

R3(config-router)#net 192.168.13.0 0.0.0.255 ar 0

R3(config-router)#net 192.168.34.0 0.0.0.255 ar 0

R3(config-router)#net 3.3.3.3 0.0.0.255 ar 0

R3(config-router)#end

==================================================================

R4#conf t

R4(config)#no ip domain lo

R4(config)#lin con 0

R4(config-line)#logg sy

R4(config-line)#exec-t 0 0

R4(config-line)#lin vty 0 4

R4(config-line)#pass hznethome

R4(config-line)#login

R4(config-line)#end

-----------------------------------------------------

R4#conf t

R4(config)#int lo 0

R4(config-if)#ip add 4.4.4.4 255.255.255.0

R4(config-if)#no sh

R4(config-if)#int s0/0

R4(config-if)#ip add 192.168.24.4 255.255.255.0

R4(config-if)#no sh

R4(config-if)#int s0/3

R4(config-if)#ip add 192.168.34.4 255.255.255.0

R4(config-if)#no sh

-----------------------------------------------------

R4#conf t

R4(config)#router os 100

R4(config-router)#router-id 4.4.4.4

R4(config-router)#net 4.4.4.4 0.0.0.255 ar 0

R4(config-router)#net 192.168.24.0 0.0.0.255 area 0

R4(config-router)#net 192.168.34.0 0.0.0.255 ar 0

R4(config-router)#end

=============================================================================

先看下路由表,检查路由表是否完整。

我们测试PING 后,可以看出来实验是成功的!

终于写完了,虽然还是不完整,但勉强过得去了,哈。。。。

祝各位好运!!!

时间: 2024-12-28 23:27:12

CCNA 学习笔记(六)--路由协议(OSPF)的相关文章

CCNA 学习笔记(四)--路由协议(RIP)

现在我们先复习下,什么是路由? 答:当路由器(或者其它三层设备)收到一个IP数据包时,会查看数据包的IP头部中的目的IP地址,并在路由表中进行查找,在匹配到最优路由后,将数据包扔向路由条目所批的下一跳或者出接口. 在静态路由使用中,我们要注意的是有种网络(MA网络.P2P网络)的配置区分. 1.MA网络中若只使用出站接口,因为无法知道去往目的网段的下一跳在哪儿,这就会导致真正的下一跳路由器使用代理ARP回应,随着路由条目的增多,代理ARP条目也会增大,因此建议在MA网络中使用下一跳地址: 2.P

CCNA 学习笔记(三)--路由选择协议(静态路由协议)

CCNA 学习笔记(三)--路由选择协议(静态路由协议) 上一章,我们对CISCO的设备有了一定的了解,那现在我们开始去学习下路由选择协议. 静态路由: 1.什么时候是路由? 答:A.路由就是数据包从一端传输到另一端所选择的一条路径.B.数据包的转发. 2.路由器的工作内容? 答:A.路由器首先要知道要到达的目标地址. B.能发现到达目标地址所有可能经过的路由或者节点. C.选择最佳路径. D.维护路由表. 3.查看路由表的命令:show ip route 由上面我们可以看到当前的路由器只是有一

CCNA学习笔记七——路由概述

静态路由协议: 动态路由协议:AS(自治系统):执行统一路由策略的一组设备的集合 EGP(外部网关协议): BGP:边界网关协议 IGP(内部网关协议): 距离矢量协议: RIP:V1,V2 IGRP EIGRP 链路状态路由协议: OSPF IS-IS 静态路由: 特点: 路由表是手工设置的 除非网络管理员干预,否则静态路由不会发生变化 路由表的形成不需要占用网络资源 适合环境 一般用于网络规模很小,拓扑结构固定的网络中 默认路由: 特点: 在所有路由类型中,默认路由优先级最低 适用环境: 一

CCNA 学习笔记(二)--CISCO设备初接触

CCNA 学习笔记(二)--初识CISCO设备 上一章我们认识到网络方面的基础知识了,现在我们正式接触CISCO设备. 1.首先我们先了解一台CISCO设备里的主要组件: ROM(只读存储器):主要保存着开机自检软件.保存路由器启动引导程序. RAM(随机存储器):断电会把数据丢失.可以存储配置文件.>>>相当于PC的内存 NVRAM(非易失存储器):断电不会丢失.用来保存用户配置文件.IP.startup-config.主机名.路由协议等等. FLASH(闪存):主要是保存完整的   

CCNA学习笔记一

cisco三层模型:接入层-集散层(分布层)-核心层 OSI七层模型功能: 第七层:应用层 数据 用户接口,提供用户程序“接口”. 第六层:表示层 数据 数据的表现形式,特定功能的实现,如数据加密. 第五层:会话层 数据 允许不同机器上的用户之间建立会话关系,如WINDOWS 第四层:传输层 段 实现网络不同主机上用户进程之间的数据通信,可靠 与不可靠的传输,传输层的错误检测,流量控制等. 第三层:网络层 包 提供逻辑地址(IP).选路,数据从源端到目的端的 传输 第二层:数据链路层 帧 将上层

python之raw_input()(学习笔记六)

python之raw_input()(学习笔记六) 我们经常使用raw_input()读取用户的输入,如下例子所示: >>> name = raw_input('please input your name:'),截图如下: 下面简单说下,raw_input()与if搭配使用,脚本如下: #!/usr/bin/env python # -*- coding:utf-8 -*- birth = raw_input('birth:') if birth < 2000: print '0

swift学习笔记(六)析构过程和使用闭包对属性进行默认值赋值

一.通过闭包和函数实现属性的默认值 当某个存储属性的默认值需要定制时,可以通过闭包或全局函数来为其提供定制的默认值. 注:全局函数结构体和枚举使用关键字static标注    函数则使用class关键字标注 当对一个属性使用闭包函数进行赋值时,每当此属性所述的类型被创建实例时,对应的闭包或函数会被调用,而他们的返回值会被作为属性的默认值. ESC: Class SomeCLass{ let someProperty:SomeType={ //给someProperty赋一个默认值 //返回一个与

CCNA学习笔记三——STP生成树协议

广播风暴:当网络中存在物理环路,会产生广播风暴 STP协议:Spanning Tree Protocol(生成树协议) 逻辑上断开环路,防止广播风暴的产生 STP算法:(所有选择都是比小-小的当选) 选择根网桥(Root Bridge):在网络中的所有交换机中选择一台 选择依据:网桥ID(网桥优先级+MAC地址) 选择根端口(Root Ports):在所有非根网桥中选择一个 选择依据:(1)根路径成本最低 (2)直连网桥ID最小 (3)端口ID最小 选择指定端口(Designated Ports

java之jvm学习笔记六-十二(实践写自己的安全管理器)(jar包的代码认证和签名) (实践对jar包的代码签名) (策略文件)(策略和保护域) (访问控制器) (访问控制器的栈校验机制) (jvm基本结构)

java之jvm学习笔记六(实践写自己的安全管理器) 安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用 AccessController的checkPerssiom方法,访问控制器AccessController的栈检查机制又遍历整个 PerssiomCollection来判断具体拥有什么权限一旦发现栈中一个权限不允许的时候抛出异常否则简单的返回,这个过程实际上比我的描述要复杂 得多,这里我只是简单的一句带过,因为这