OSPF 概述
1. LSA的泛洪
2. LSDB的组建
3. SPF计算
4. 维护路由表
OSPF 基本概念
Router-ID
Cost
报文类型
OSPF的三张表
OSPF邻居关系建立过程
OSPF网络类型
DR、BDR
OSPF 区域(Area)的概念
OSPF 的基础配置
基础配置
示例(单区域)
示例(单区域综合实验)
示例(多区域)
查看及验证
OSPF 概述
OSPF是典型的链路状态路由协议,也是目前使用得最为广泛的动态路由协议之一。下面我们先简略地了解一下OSPF的基本工作过程:
1. LSA的泛洪
![508d4bb13143b69cf7d3603649136b4e.png](https://i-blog.csdnimg.cn/blog_migrate/da1b2ecdd544be53bcad40dae87f73f0.png)
运行链路状态路由协议的路由器之间首先会基于路由协议建立邻居关系,之后彼此之间开始交互LSA(Link State Advertisement
,链路状态通告),注意这里交互的不是路由信息,而是链路状态通告,这些LSA有助于路由器还原网络的拓扑结构、网段信息,并依据这些信息计算最佳路由。
2. LSDB的组建
每台路由器都会产生LSA,路由器将网络中所泛洪的LSA搜集起来、放入自己的LSDB(Link StateDataBase
,链路状态数据库),有了LSDB,路由器也就清楚了全网的拓扑。
3. SPF计算
接下来,每台路由器基于LSDB、使用SPF(最短路径算法
)进行计算。SPF是OSPF路由协议的一个核心算法,用来在一个复杂的网络中做出路由优选的决策。经过SPF算法的计算后,每台路由器都计算出一棵以自己为根的、无环的、拥有最短路径的“树”。有了这棵“树”,事实上路由器就已经知道了到达网络各个角落的最优路径
。
![def3bed8e6254097d1736f1164c57e84.png](https://i-blog.csdnimg.cn/blog_migrate/10f7c8b770e0b2f1694fef7d83ebb30b.png)
4. 维护路由表
![ee3b86d05f943c03db9d333526f14bf6.png](https://i-blog.csdnimg.cn/blog_migrate/d70c93536118a5f173a8cd6640df9355.png)
最后,路由器将计算出来的最优路径,加载进自己的路由表。
OSPF(Open Shortest Path First
)开放最短路径优先协议,是一种链路状态路由协议,也是目前业内使用得最为广泛的IGP。OSPF中的字母O意为Open,也就是开放、公有。
与距离矢量路由协议直接交互路由器的路由表不同,OSPF作为链路状态路由协议,路由器之间交互的是LSA,路由器将网络中泛洪的LSA搜集到自己的LSDB中,这有助于OSPF理解整张网络拓扑,并在此基础上通过SPF算法计算出以自己为根的、到达网络各个角落的、无环的树,最终,路由器将计算出来的路由装载进路由表中。
OSPF 基本概念
Router-ID
OSPF Router-ID用于在OSPF域中唯一地标识一台OSPF路由器,从OSPF网络设计的角度,我们要求全OSPF域内,禁止出现两台路由器拥有相同RouterID的情况。
Router-ID的格式与IPv4地址的格式相同,例如192.168.1.1。Router-ID的设定可以通过手工配置的方式进行,或者通过协议自动选取的方式进行。当然,在实际网络部署中,强烈建议网络管理员手工配置OSPF的Router-ID,因为这关系到协议的稳定性。一般情况下,我们会将路由器的Router-ID指定为该设备上的某个Loopback接口地址。
Cost
OSPF使用开销(Cost
)作为路由度量值。首先,每一个激活OSPF的接口都有一个接口的Cost值。OSPF接口Cost=100M / 接口带宽,其中100M为OSPF的参考带宽(Reference-Bandwidth
)。换句话说,接口的带宽越高,该接口的OSPF Cost越小。一条OSPF路由的Cost由该路由从路由的起源一路到达本地的所有入接口Cost值的总和。
![b99c8c4c95df5b7d0780569d9c2bfea4.png](https://i-blog.csdnimg.cn/blog_migrate/ee012326bed7aa78487f8bc935858bd3.png)
在上图中,对于R2而言,其到达R1的直连网络1.1.1.0/24的OSPF路由的Cost值为R1-GE0/0/0接口的Cost加上R2-S4/0/0接口的Cost,也就是1+50=51。相对的,R3如果通过OSPF学习到1.1.1.0/24路由,该路由的Cost值就是1+50+1=52。
另外,由于默认的参考带宽是100M,这意味着更高带宽的传输介质(高于100M)在OSPF协议中将会计算出一个小于1的分数,这在OSPF协议中是不允许的(会被四舍五入为1)。而现今网络设备满地都是大于100M带宽的接口,这时候路由COST的计算其实就不精确了。所以可以使用bandwidth-reference
命令修改,但是这条命令要谨慎使用,一旦要配置,则建议全网OSPF路由器都配置。
报文类型
OSPF一共有五种报文,各有各的用途:
![4796d817512469a8b21d3322c9dd4bc4.png](https://i-blog.csdnimg.cn/blog_migrate/f907abf9cfd5d7e74ae5d3341f2013ae.png)
OSPF的三张表
1. 邻居表(Peer table):
路由器的OSPF邻居表里存放的是该路由器发现的、直连链路上的OSPF邻居。只有直连的路由器之间才能够建立OSPF邻居关系。OSPF通过Hello报文发现直连链路上的邻居。
2. 链路状态数据库LSDB(Link-state Database):
OSPF用LSA来描述网络拓扑信息
、网段信息或路由信息。路由器用LSDB来存储网络中的LSA。OSPF将自己产生的以及邻居通告的LSA搜集并存储在LSDB中,然后基于这些数据,运行SPF算法并最终得到一棵无环的树。掌握LSDB的查看以及对LSA的深入分析才能够深入理解OSPF。
3. OSPF路由表(Routing table):
基于LSDB进行SPF计算后得出的OSPF路由被加载到OSPF路由表中。
OSPF邻居关系建立过程
![0e9a15c25f799faf4bc060af46e0d061.png](https://i-blog.csdnimg.cn/blog_migrate/aa7cb5a31c1d817a472b1fbba685e148.png)
OSPF邻居关系的建立过程是我们在学习OSPF过程中的一个重点,而且非常具有研究价值,就OSPF的实际部署而言,掌握这里头的机制也是很有必要的,因为邻居关系的建立是OSPF工作的基本,如果连邻居关系都建立不起来,就别谈其他的了。在实际业务部署中,可能会碰到各种问题导致OSPF邻居关系无法正常建立,因此这个内容非常值得推敲。
今天描述数据通信基础性知识,因此更加深入的内容暂不涉及。
OSPF网络类型
一旦我们在路由器的某个接口上激活了OSPF,那么路由器将会根据这个接口的数据链路层封装协议,选择对应的OSPF网络类型并进行工作,注意,针对不同的网络类型,OSPF在接口上的操作将有所不同。因此简单地说,OSPF网络类型实际上是OSPF的一个接口级别的属性,它将影响OSPF在该接口上的操作。
OSPF支持的网络类型:
- 点到点网络(Point-To-Point Network)
- 广播型多路访问网络(Broadcast Multiple Access Network)
- 非广播型多路访问网路(Non-Broadcast Multiple Access Network)
- 点到多点网络(Point-To- MultiplePoint Network)
常见数据链路层协议对应的默认网络类型:
A.广播类型
当链路层协议是Ethernet、FDDI时,缺省情况下,OSPF认为网络类型是Broadcast。在该类型的网络中:
- 通常以组播形式发送Hello报文、LSU报文和LSAck报文。其中,224.0.0.5的组播地址为OSPF设备的预留IP组播地址;224.0.0.6的组播地址为OSPF DR/BDR的预留IP组播地址。
- 以单播形式发送DD报文和LSR报文。
B.NBMA类型
当链路层协议是帧中继、X.25时,缺省情况下,OSPF认为网络类型是NBMA。
在该类型的网络中,以单播形式发送协议报文(Hello报文、DD报文、LSR报文、LSU报文、LSAck报文)。
C.点到多点P2MP类型
没有一种链路层协议会被缺省的认为是Point-to-Multipoint类型。点到多点必须是由其他的网络类型强制更改的。常用做法是将非全连通的NBMA改为点到多点的网络。
在该类型的网络中:
- 以组播形式(224.0.0.5)发送Hello报文。
- 以单播形式发送其他协议报文(DD报文、LSR报文、LSU报文、LSAck报文)。
D.点到点P2P类型
当链路层协议是PPP、HDLC和LAPB时,缺省情况下,OSPF认为网络类型是P2P。
在该类型的网络中,以组播形式(224.0.0.5)发送协议报文(Hello报文、DD报文、LSR报文、LSU报文、LSAck报文)。
如果一个接口是以太网接口,那么该接口激活OSPF后,其缺省的OSPF网络类型为Broadcast,也就是广播型。而如果一个接口是Serial接口,二层封装为HDLC或者PPP,那么激活OSPF后,其缺省的OSPF网络类型就是P2P(Point-to-Point,点对点)。接口的OSPF网络类型是可以通过命令修改的。
DR、BDR
![0608d233b9c088be32b0488e699fa563.png](https://i-blog.csdnimg.cn/blog_migrate/cf08dd98f49e9d2670227426fa80aa29.png)
MA(Multi-Access
,多路访问)网络指的是一个可以同时接入多个节点的网络,在这个环境中,任何一个节点都能通过这个网络访问其他节点。MA网络可以分为BMA(Broadcast Multi-Access
,广播型多路访问)网络和NBMA(Non-Broadcast Multiple Access
,非广播型多路访问)网络。对于BMA网络,典型的代表是以太网,而对于NBMA,典型的代表是帧中继。
我们以以太网为例,例如上图所示,所有的路由器都连接在同一台以太网二层交换机上(图片中并没有绘制出交换机),并且属于相同的VLAN,而且规划相同的IP网段,在这个环境中,任何一台路由器都能通过接入该交换机的接口访问其他路由器,这就是多路访问网络的体现。此外这个网络还支持广播。在这个网络中,如果将所有路由器的接口都激活OSPF并且这些接口两两建立OSPF邻居关系,那么这就意味着网络中共有:
n(n-1)/2
这么多个OSPF邻居关系,维护如此多的邻居关系不仅会对设备性能造成影响,更增加了网络中LSA的泛洪数量,如图所示。
![e8e2abcae5bfea4c8244d4a12a5faa6e.png](https://i-blog.csdnimg.cn/blog_migrate/cdb26a1c1214f64db2500f639f564c4c.png)
为减少MA网络中的OSPF流量、优化OSPF邻居关系结构,OSPF会在每一个MA网络中选举一个指定路由器 (DR) 和一个备用指定路由器 (BDR)。
1. DR选举规则:
在一个MA网络中,最高OSPF接口优先级的拥有者被选作DR,如果优先级相等(默认值为1),则具有最高的OSPF Router-ID的路由器被选举成DR。DR具有非抢占性,也就是说如果该MA网络中已经选举出了DR,那么后续即使有具备更高优先级的设备加入,也不会影响当前DR的角色。
2. 指定路由器 (DR):
DR负责侦听MA网络中的拓扑变更信息并将变更信息通知给其他路由器,同时负责代表该MA网络发送Type-2 LSA。在一个MA网络中,所有的OSPF路由器都与DR(以及BDR)建立全毗邻的OSPF邻接关系。
3. 备用指定路由器 (BDR):
BDR会监控DR的状态,并在当前DR发生故障时接替其角色。
注意:DR及BDR的身份状态是基于OSPF接口的,所以如果我们说:“这台路由器是DR”,那么这种说法是不严谨的,严格的说,应该是:“这台路由器的这个接口,在这个MA网络上是DR”。
- 在一个MA网络中,所有的DRother路由器(既非DR,又非BDR)均只与DR和BDR建立全毗邻的邻接关系,DRother间不建立邻接关系,如此一来,该MA网络中的设备需要维护的OSPF邻居关系数量大幅减小:
M= (n-2)×2+1
,设备性能也会得到优化。 - OSPF在Broadcast及NBMA网络中都会选举DR,但是在P2P或P2MP网络中则不会。
接下去看看在MA网络中,有了DR、BDR之后,LSA的泛洪过程:
![679b144731f979392c7e47ea3111dad4.png](https://i-blog.csdnimg.cn/blog_migrate/df17893589e9cbe6503cd58704445c98.png)
- 假设网络已经完成了OSPF收敛,现在突然R3下挂的一个网络发生了故障;
- 路由器R3用224.0.0.6(即R3以该组播地址为目的IP地址,发送OSPF报文)通知DR及BDR;
- DR、BDR监听224.0.0.6这一组播地址,获知了该更新;
- DR向组播地址224.0.0.5发送更新以通知其它路由器;
- 所有的OSPF路由器监听224.0.0.5这一组播地址;
- 路由器收到包含变化后的LSA的更新后,刷新自己的LSDB,过一段时间(SPF延迟),对更新的链路状态数据库执行SPF算法,必要时更新路由表。
OSPF使用两个知名的组播地址:224.0.0.5
及224.0.0.6
,这是一个常识,需熟记。所有的OSPF路由器(的接口)都会侦听发向224.0.0.5的报文,在此基础之上,DR/BDR会侦听224.0.0.6。
OSPF 区域(Area)的概念
1. 单区域存在的问题:
![6f25e95d876c690f47790a71a0b66551.png](https://i-blog.csdnimg.cn/blog_migrate/5954bfd8b3b6534f4341a7e07111a45c.png)
设想一下,如果OSPF没有多区域的概念,或者整个OSPF网络就是一个区域,那么会有什么问题?在一个区域内,LSA会被泛洪到整个区域,每一台路由器都会收到区域内的LSA并且存储在自己的LSDB中,OSPF规定同属于一个区域的路由器必须有统一的LSDB,因为只有这样才能够让OSPF进行准确的计算。
如果网络规模特别大,容纳的路由器数量特别多,则区域内泛洪的LSA数量就会特别多,那么所有的路由器将不得不维护一个庞大的LSDB,显然这增加了路由器的资源消耗。另外,一旦网络中发生拓扑变更,则又将引发大量的LSA泛洪,同时所有的路由器又要重新的进行SPF计算。同时,每台路由器都需要维护的路由表越来越大,因为单区域内路由无法实施汇总。
2. OSPF多区域:
![1bea06a632c7ae7df4138d1d080715cf.png](https://i-blog.csdnimg.cn/blog_migrate/4f7525ee3eb3bc072812b5a0543a4a34.png)
基于上述原因,OSPF设计了区域(Area
)的概念,每个区域都使用area-ID进行标识,通常area-ID采用十进制
形式标识,例如area 0,area 1等,也可采用点分十进制的形式(与IPv4地址格式相同)来标识,例如area 0.0.0.0(等同于area 0)。当然,为了简便起见,我们通常采用前面一种形式。
- 多区域的设计减小了LSA洪泛的范围,有效地把拓扑变化控制在区域内,达到网络优化的目的;
- 在区域边界可以做路由汇总,减小了路由表规模;
- 充分利用OSPF特殊区域的特性,进一步减少LSA泛洪,从而优化路由;
- 多区域特性提高了网络的可扩展性,有利于组建大规模的OSPF网络。
3. OSPF区域中的骨干区域area0:
![7f100398a117dfa426a19c7b8fcf1030.png](https://i-blog.csdnimg.cn/blog_migrate/d7833633da01fe673d8496db929c666b.png)
在部署OSPF时,如果存在多区域,则要求OSPF域内必须有且只能有一个area0。Area 0为OSPF的骨干区域,骨干区域负责在非骨干区域之间发布由区域边界路由器汇集的路由信息,从而实现区域之间的互通。为避免区域间的路由环路,非骨干区域之间不允许直接相互发布区域间路由。因此,每个非骨干区域都必须连接到骨干区域。
4. OSPF路由器的角色
![b3caa53faf8854634e300fb562a1e43a.png](https://i-blog.csdnimg.cn/blog_migrate/29dedb00e730eabff189eff647484528.png)
OSPF路由器的角色:
- 区域内路由器(Internal Router)
- 区域边界路由器(Area Border Router)
- 骨干路由器(Backbone Router)
- AS边界路由器(AS Boundary Router)
OSPF 的基础配置
基础配置
1. 创建一个OSPF进程,并指定OSPF进程号及Router-ID
[Router] ospf [ process-id | router-id router-id ]
其中process-id
为进程号。另外Router-ID
关键字指定的是本台路由器在该OSPF进程中使用的Router-ID,建议在创建OSPF进程时采用该方法手工配置Router-ID。如果在创建OSPF进程时,没有手工指定Router-ID,则路由器会自动为该进程指定一个Router-ID。
说明:
- OSPF进程号的取值范围是1-65535,用于标识OSPF在本路由器的一个进程,这个进程号只是本地有效。在一台路由器上可以同时运行多个OSPF进程,这些进程必须使用不同的进程号以作区分。它们之间互不影响,彼此独立。不同OSPF进程之间的路由交互相当于不同路由协议之间的路由交互。
- 进程号本地有效,因此不同的路由器之间进行OSPF对接时,OSPF进程号可以不同,这是不会有任何问题的,但是为了保证网络配置的规范性和标准化,除非有特殊的需求,否则建议还是采用统一的进程号。
2. 进入OSPF区域视图,将特定的接口激活OSPF
[Router-ospf] area area-id
[Router-ospf-area] network ip-address wildcard-mask
上面的network命令用于在特定接口上激活OSPF。在激活某个接口的OSPF功能时,必须先进入特定的OSPF区域配置视图。在network关键字后,紧跟着的是IP地址,然后是通配符掩码,这两者是息息相关的,它们在一起的运算决定了本设备哪些接口会激活OSPF。
通配符掩码Wildcard-mask:
通配符掩码是一个用于决定IP地址中哪些比特位该严格匹配
(为0的比特位代表需严格匹配)、哪些比特位无需匹配(为1的比特位)的32bit数值。通配符掩码也常用于处理访问控制列表(ACL)。下面看一下网络掩码netmask和通配符掩码wildcard-mask的区别:
![97f61a2bedb18941b3ebda5253168b7d.png](https://i-blog.csdnimg.cn/blog_migrate/71441e139e7930cf4b95c37d2fdd3a23.png)
接下去看几个例子:
![a21077bd70bfeb8bd44d7eec8ddc140d.png](https://i-blog.csdnimg.cn/blog_migrate/894a374e8f99709f2234dbda287d98cc.png)
在上面的例子中,如果我们在路由器上采用如下配置:
[Router] ospf 1 router-id 1.1.1.1
[Router-ospf-1] area 0
[Router-ospf-1-area-0.0.0.0] network 172.16.1.0 0.0.0.255
注意:我们在network命令后关联的IP地址是172.16.1.0,通配符掩码是0.0.0.255,将这两个数都转成二进制,然后将各个比特位一一对应(如图所示),通配符为0的比特位,必须严格匹配,为1的位则无所谓。现在,我们看路由器的接口IP地址,将这些IP地址拿去做对应,如果能匹配上,那么接口就激活OSPF,否则就不激活。例如路由器配置了172.16.1.1这个IP地址的接口,由于该IP地址满足要求——前3个八位组与172.16.1.0的前3个八位组相同,最后一个八位组无需相同,因此该接口会激活OSPF。而另外两个接口不满足条件,因此不激活OSPF。
再看下面的例子:
![4845c6e97d746154030b90c865cad8c8.png](https://i-blog.csdnimg.cn/blog_migrate/f033b2cc85eff2c01155477c3ebe1e90.png)
由于network命令使用的IP地址和通配符掩码是172.16.0.0 0.0.255.255,也就是最后两个八位组无所谓,前两个八位组必须是172.16,因此如上图所示,路由器将有两个接口激活OSPF。当然,如果还是以上图为例,假设我们想只激活172.16.3.1/24这个接口,而且要求尽可能精确,那么network命令完全可以这么写:network 172.16.3.1 0.0.0.0。
通常,我们在配置OSPF时,如果想要在某个接口上激活OSPF,例如该接口的IP地址为192.168.1.1/24,那么一般会使用命令network 192.168.1.0 0.0.0.255,留意到接口地址的网络掩码是255.255.255.0,而用于激活OSPF的命令中,通配符是0.0.0.255,这实际上是用255.255.255.255与网络掩码255.255.255.0做“减法”,从而得到0.0.0.255,因此,我们经常将通配符掩码称为“反掩码”。
![067c6a789a89d02012fbaa165dc23904.png](https://i-blog.csdnimg.cn/blog_migrate/50c9de01ea19fa5c16e1a55f08d1833d.png)
示例(单区域)
![9f95b3f7fcf5abb3fda593bd5df2b4af.png](https://i-blog.csdnimg.cn/blog_migrate/715c45c64334a08b18f4fe46c459be32.png)
网络拓扑中包含三台路由器及两台PC;每台路由器使用x.x.x.x的地址作为OSPF的RouterID,其中x为设备编号,例如R1的RouterID为1.1.1.1,设备的接口编号及IP编址如图所示。
R1的配置如下:
#完成接口IP的配置
[R1] interface GigabitEthernet 0/0/0
[R1-GigabitEthernet0/0/0] ip address 192.168.12.1 24
[R1] interface GigabitEthernet 0/0/1
[R1-GigabitEthernet0/0/1] ip address 192.168.1.254 24
#创建OSPF进程1,并且设置router-ID为1.1.1.1;在R1的GE0/0/0及GE0/0/1口上激活OSPF:
[R1] ospf 1 router-id 1.1.1.1
[R1-ospf-1] area 0
[R1-ospf-1-area-0.0.0.0] network 192.168.12.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255
R2的配置如下:
#完成接口IP的配置
[R2] interface GigabitEthernet 0/0/0
[R2-GigabitEthernet0/0/0] ip address 192.168.12.2 24
[R2] interface GigabitEthernet 0/0/1
[R2-GigabitEthernet0/0/1] ip address 192.168.23.2 24
#创建OSPF进程1,并且设置router-ID为2.2.2.2;在R2的GE0/0/0及GE0/0/1口上激活OSPF:
[R2] ospf 1 router-id 2.2.2.2
[R2-ospf-1] area 0
[R2-ospf-1-area-0.0.0.0] network 192.168.12.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0] network 192.168.23.0 0.0.0.255
R3的配置如下:
#完成接口IP的配置
[R3] interface GigabitEthernet 0/0/0
[R3-GigabitEthernet0/0/0] ip address 192.168.23.3 24
[R3] interface GigabitEthernet 0/0/1
[R3-GigabitEthernet0/0/1] ip address 192.168.2.254 24
#创建OSPF进程1,并且设置router-ID为3.3.3.3;在R3的GE0/0/0及GE0/0/1口上激活OSPF
[R3] ospf 1 router-id 3.3.3.3
[R3-ospf-1] area 0
[R3-ospf-1-area-0.0.0.0] network 192.168.2.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0] network 192.168.23.0 0.0.0.255
完成配置后我们来做一下查看及验证,首先看一下OSPF的邻居关系,这是OSPF路由收敛的基础,如果邻居关系的状态不正确,那么路由肯定是无法正常获悉的,首先看一下R1的邻居表:
[R1] display ospf peer
OSPF Process 1 with Router ID 1.1.1.1
Neighbors
#以下是R1的G0/0/0口的OSPF邻居
Area 0.0.0.0 interface 192.168.12.1(GigabitEthernet0/0/0)'s neighbors
Router ID: 2.2.2.2 Address: 192.168.12.2
State: Full Mode:Nbr is Master Priority: 1
DR: 192.168.12.2 BDR: 192.168.12.1 MTU: 0
Dead timer due in 34 sec
Retrans timer interval: 5
Neighbor is up for 01:53:16
Authentication Sequence: [ 0 ]
使用display ospf peer
命令能查看OSPF邻居关系,上面的输出就是R1的OSPF邻居表,我们看到R1发现了一个OSPF邻居,这个OSPF邻居是连接在R1的GE0/0/0口上,且其Router-ID为2.2.2.2,接口IP为192.168.12.2,最重要的是状态为Full,表示R1与R2的OSPF邻居关系已经为全毗邻状态。一般来讲,两台设备如果正常地建立了邻接关系,那么状态必须为Full。
同理在R2上应该能看到两个OSPF邻居,而在R3上能看到一个OSPF邻居。
接下去看看路由表。
[R1] display ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 12 Routes : 12
Destination/Mask Proto Pre Cost Flags NextHop Interface
192.168.1.0/24 Direct 0 0 D 192.168.1.254 GigabitEthernet0/0/1
192.168.1.254/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/1
192.168.1.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/1
192.168.2.0/24 OSPF 10 3 D 192.168.12.2 GigabitEthernet0/0/0
192.168.12.0/24 Direct 0 0 D 192.168.12.1 GigabitEthernet0/0/0
192.168.12.1/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0
192.168.12.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0
192.168.23.0/24 OSPF 10 2 D 192.168.12.2 GigabitEthernet0/0/0
255.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0
在上述输出中,我们看到R1已经学习到两条OSPF路由,分别是192.168.2.0/24及192.168.23.0/24;同理在R2就R3上也能看到相应的OSPF路由。现在PC1及PC2就能够互相通信了。
示例(单区域综合实验)
![12a7eb03ab5fa0cb84f837d3e4fbfcd8.png](https://i-blog.csdnimg.cn/blog_migrate/057aa317333285d29e363edbbdec6241.png)
在上图中,PC1及PC2分别属于VLAN10及VLAN20,它们的网关都在核心交换机Core-SW上。Access-SW是接入层交换机,只做二层透传。路由器Router连接着PC3,并且与核心交换机对接。要求在网络中部署OSPF,使得PC1及PC2能够与PC3互通。
Access-SW的配置如下:
[Access-SW] vlan batch 10 20
[Access-SW] interface GigabitEthernet 0/0/1
[Access-SW-GigabitEthernet0/0/1] port link-type access
[Access-SW-GigabitEthernet0/0/1] port default vlan 10
[Access-SW] interface GigabitEthernet 0/0/2
[Access-SW-GigabitEthernet0/0/2] port link-type access
[Access-SW-GigabitEthernet0/0/2] port default vlan 20
[Access-SW] interface GigabitEthernet 0/0/24
[Access-SW-GigabitEthernet0/0/24] port link-type trunk
[Access-SW-GigabitEthernet0/0/24] port trunk allow-pass vlan 10 20
Core-SW的配置如下:
[Core-SW] vlan batch 10 20 99
[Core-SW] interface GigabitEthernet 0/0/24
[Core-SW-GigabitEthernet0/0/24] port link-type trunk
[Core-SW-GigabitEthernet0/0/24] port trunk allow-pass vlan 10 20
[Core-SW] interface GigabitEthernet 0/0/20
[Core-SW-GigabitEthernet0/0/20] port link-type access
[Core-SW-GigabitEthernet0/0/20] port default vlan 99
[Core-SW] interface Vlanif 10
[Core-SW-Vlanif10] ip address 192.168.10.254 24
[Core-SW] interface Vlanif 20
[Core-SW-Vlanif20] ip address 192.168.20.254 24
[Core-SW] interface Vlanif 99
[Core-SW-Vlanif99] ip address 192.168.99.1 30
#配置OSPF:
[Core-SW] ospf 1 router-id 1.1.1.1
[Core-SW-ospf-1] area 0
[Core-SW-ospf-1-area-0.0.0.0] network 192.168.10.0 0.0.0.255
[Core-SW-ospf-1-area-0.0.0.0] network 192.168.20.0 0.0.0.255
[Core-SW-ospf-1-area-0.0.0.0] network 192.168.99.0 0.0.0.3
[Core-SW-ospf-1-area-0.0.0.0] quit
[Core-SW-ospf-1] silent-interface Vlanif 10
[Core-SW-ospf-1] silent-interface Vlanif 20
说明:在核心交换机的配置中,silent-interface是可选命令。当我们在核心交换机的vlanif10及vlanif20接口上激活OSPF后,Core-SW将通过OSPF向Router描述这两个VLAN的网段信息,从而使得Router能够通过OSPF学习到去往这两个网段的路由。与此同时,由于激活了OSPF,因此Core-SW会在VLAN10及VLAN20内周期性地泛洪组播OSPF Hello报文,试图发现邻居,然而在这两个VLAN中并没有任何其他OSPF设备,因此这些报文是没有意义的,使用silent-interface,能将这两个接口配置为静默接口,设备将不会再从这两个接口发送Hello报文,也不会从这两个接口接收Hello报文。
Router的配置如下:
[Router] interface GigabitEthernet 0/0/0
[Router-GigabitEthernet0/0/0] ip address 192.168.99.2 30
[Router] interface GigabitEthernet 0/0/1
[Router-GigabitEthernet0/0/1] ip address 8.8.8.254 24
[Router] ospf 1 router-id 2.2.2.2
[Router-ospf-1] area 0
[Router-ospf-1-area-0.0.0.0] network 192.168.99.0 0.0.0.3
[Router-ospf-1-area-0.0.0.0] network 8.8.8.0 0.0.0.255
[Router-ospf-1-area-0.0.0.0] quit
[Router-ospf-1] silent-interface GigabitEthernet 0/0/1
完成上述配置后,来做一下相关验证,首先查看Core-SW的OSPF邻居表:
[Core-SW] display ospf peer
OSPF Process 1 with Router ID 1.1.1.1
Neighbors
Area 0.0.0.0 interface 192.168.99.1(Vlanif99)'s neighbors
Router ID: 2.2.2.2 Address: 192.168.99.2
State: Full Mode:Nbr is Master Priority: 1
DR: 192.168.99.1 BDR: 192.168.99.2 MTU: 0
Dead timer due in 34 sec
Retrans timer interval: 5
Neighbor is up for 00:03:15
Authentication Sequence: [ 0 ]
从输出中可以看出,它已经于Router建立了全毗邻的邻接关系。再看看它的路由表中的OSPF路由:
[Core-SW] display ip routing-table protocol ospf
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Public routing table : OSPF
Destinations : 1 Routes : 1
OSPF routing table status :
Destinations : 1 Routes : 1
Destination/Mask Proto Pre Cost Flags NextHop Interface
8.8.8.0/24 OSPF 10 2 D 192.168.99.2 Vlanif99
OSPF routing table status :
Destinations : 0 Routes : 0
我们看到Core-SW已经学习到了8.8.8.0/24路由。同样在Router上查看路由表,也会发现其已经学习到192.168.10.0/24及192.168.20.0/24路由,如此一来,PC1/PC2即可与PC3实现相互通信。
示例(多区域)
![32009c50d3f34671ce5ce0f657bd2b25.png](https://i-blog.csdnimg.cn/blog_migrate/571a590a42ad98e964614a4d9a831551.png)
网络中包含三台路由器及两台PC;每台路由器使用x.x.x.x的地址作为OSPF的RouterID,其中x为设备编号,例如R1的RouterID为1.1.1.1;OSPF区域的规划如图所示;
设备的接口编号及IP编址如图所示。注意到我们在网络中规划了两个OSPF区域。值得注意的是,路由器的接口必须在正确的区域中激活。两台直连的设备要建立OSPF邻接关系,那么直连的两个接口需在相同的区域中激活OSPF。例如R1的GE0/0/0及R2的GE0/0/0接口,都必须在area0中激活,而R2的GE0/0/1及R3的GE0/0/0接口必须在area1中激活OSPF。
R1的配置如下:
#完成接口IP的配置
[R1] interface GigabitEthernet 0/0/0
[R1-GigabitEthernet0/0/0] ip address 192.168.12.1 24
[R1] interface GigabitEthernet 0/0/1
[R1-GigabitEthernet0/0/1] ip address 192.168.1.254 24
#在R1的GE0/0/0及GE0/0/1口上激活OSPF
[R1] ospf 1 router-id 1.1.1.1
[R1-ospf-1] area 0
[R1-ospf-1-area-0.0.0.0] network 192.168.12.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255
R2的配置如下:
#完成接口IP的配置
[R2] interface GigabitEthernet 0/0/0
[R2-GigabitEthernet0/0/0] ip address 192.168.12.2 24
[R2] interface GigabitEthernet 0/0/1
[R2-GigabitEthernet0/0/1] ip address 192.168.23.2 24
#在R2的GE0/0/0及GE0/0/1口上激活OSPF,需留意,R2是ABR,因此要注意激活的OSPF接口所在的区域。
[R2] ospf 1 router-id 2.2.2.2
[R2-ospf-1] area 0
[R2-ospf-1-area-0.0.0.0] network 192.168.12.0 0.0.0.255
[R2-ospf-1] area 1
[R2-ospf-1-area-0.0.0.1] network 192.168.23.0 0.0.0.255
R3的配置如下:
#完成接口IP的配置
[R3] interface GigabitEthernet 0/0/0
[R3-GigabitEthernet0/0/0] ip address 192.168.23.3 24
[R3] interface GigabitEthernet 0/0/1
[R3-GigabitEthernet0/0/1] ip address 192.168.2.254 24
#在R3的GE0/0/0及GE0/0/1口上激活OSPF
[R3] ospf 1 router-id 3.3.3.3
[R3-ospf-1] area 1
[R3-ospf-1-area-0.0.0.1] network 192.168.2.0 0.0.0.255
[R3-ospf-1-area-0.0.0.1] network 192.168.23.0 0.0.0.255
完成配置后,PC1与PC2即可互相ping通。
查看及验证
- 查看OSPF协议相关运行参数:
display ospf brief
- 查看OSPF邻居表:
display ospf peer
- 查看LSDB表:
display ospf lsdb
- 查看OSPF路由:
display ospf routing
好了,今天就介绍到这里,大家先消化一下吧,明天讲一下OSPF LSA及特殊区域、OSPF高级。
![3f496a4851555cb65d6d6d7d0d836ff7.png](https://i-blog.csdnimg.cn/blog_migrate/9aba5a495eb392ff5158ea9d433c89a4.jpeg)
今日咱们来聊聊交换安全--端口镜像、端口隔离
![6dd9d418fdcbe5d08e10231180e5961a.png](https://i-blog.csdnimg.cn/blog_migrate/fe2693e824e269d59f46c964d6b28138.jpeg)
网工必知必会 —— 链路聚合