专题十四:动态路由——OSPF
一、OSPF简介
开放式最短路径优先OSPF(Open Shortest Path First)是IETF组织开发的一个基于链路状态的内部网关协议(Interior Gateway Protocol),采用DIjkstra算法,协议号是89。用于自治系统(AS)内部的路由决策。其核心特点包括快速收敛、无环路、支持分层网络设计以及VLSM(可变长子网掩码)。
目前针对IPv4协议使用的是OSPF V2版本;针对IPv6协议使用OSPF V3版本。
二、OSPF工作原理
1、邻接关系:路由器通过发送 Hello 报文来发现邻居,当双方的 Hello 报文中的一些参数(如区域 ID、认证方式等)匹配时,就可以建立邻居关系。
2、链路状态信息同步:邻邻居建立后,路由器会通过 LSA(链路状态通告)来交换链路状态信息。如 Router LSA(Type 1)描述路由器自身链路状态;Network LSA(Type 2)描述广播或 NBMA 网络情况。
3、路由计算:每台路由器根据收到的 LSA 构建链路状态数据库,然后使用 Dijkstra 算法计算出到达各个网络的最短路径,进而生成路由表。
三、OSPF报文类型
OSPF直接运行在IP协议之上,使用IP协议号89。
运行OPSF协议的路由器通过5种报文的交互从邻居状态达到邻接状态,完成LSA的泛洪,使网络的路由器LSDB达到一致,每个路由器按照自己LSDB根据SPF算法计算路径,生成最优路由加入路由表。
1、Hello报文
最常用的一种报文,用于发现、维护邻居关系。
在广播和NBMA(None-Broadcast Multi-Access)类型的网络中选举指定路由器DR(Designated Router)和备份指定路由器BDR(Backup Designated Router)。
2、DD报文
两台路由器进行LSDB数据库同步时,用DD报文来描述自己的LSDB。
DD报文的内容包括LSDB中每一条LSA的头部(LSA的头部可以唯一标识一条LSA)。LSA头部只占一条LSA的整个数据量的一小部分,所以,这样就可以减少路由器之间的协议报文流量。
3、LSR报文
两台路由器互相交换过DD报文之后,知道对端的路由器有哪些LSA是本地LSDB所缺少的,这时需要发送LSR报文向对方请求缺少的LSA,LSR只包含了所需要的LSA的摘要信息。
4、LSU报文
用来向对端路由器发送所需要的LSA。
5、LSACK报文
用来对接收到的LSU报文进行确认。
四、OSPF网络类型
OSPF协议支持四种网络类型,分别是点到点网络,广播型网络,NBMA网络和点到多点网络。
1、点到点网络是指只把两台路由器直接相连的网络。一个运行PPP的64K串行线路就是一个点到点网络的例子。
2、广播型网络是指支持两台以上路由器,并且具有广播能力的网络。一个含有三台路由器的以太网就是一个广播型网络的例子。
OSPF可以在不支持广播的多路访问网络上运行,此类网络包括在hub-spoke拓扑上运行的帧中继(FR)和异步传输模式(ATM)网络,这些网络的通信依赖于虚电路。
OSPF定义了两种支持多路访问的网络类型:非广播多路访问网络(NBMA)和点到多点网络(Point To Multi-Points)。
3、NBMA:在NBMA网络上,OSPF模拟在广播型网络上的操作,但是每个路由器的邻居需要手动配置。NBMA方式要求网络中的路由器组成全连接。
缺省情况下,OSPF认为帧中继、 ATM的网络类型是NBMA。
4、P2MP:将整个网络看成是一组点到点网络。对于不能组成全连接的网络应当使用点到多点方式。
注意:
现网中遇到的大部分属于点到点网络和广播型网络,因为帧中继、 ATM网络基本已经淘汰了。
网络类型 | Hello时间(s) | Dead时间(s) | 备注 |
P2P | 10 | 40 | PPP/HDLC |
Broadcast | 10 | 40 | 典型的是以太网 |
NBMA | 30 | 120 | 帧中继FR |
P2MP | 30 | 120 | 不支持组播,手动指定OSPF邻居 |
五、DR、BDR选举
为减小广播型网络和NBMA网络中OSPF流量,OSPF会选择一个指定路由器(DR)和一个备份指定路由器(BDR)。
DR(Designated Router):指定路由器
BDR(Backup Designated Router):备份指定路由器
DROther:DR和BDR之外的路由器
1.选举DR和BDR的原因:
1、DR和BDR可以减少邻接关系的数量,从而减少链路状态信息以及路由信息的交换次数,这样可以节省带宽,降低对路由器处理能力的压力。
2、一个既不是DR也不是BDR的路由器只与DR和BDR形成邻接关系并交换链路状态信息以及路由信息,这样就大大减少了大型广播型网络和NBMA网络中的邻接关系数量。
2.选举DR和BDR的条件
每一个含有至少两个路由器的广播型网络和NBMA网络都有一个DR和BDR。在点到点网络和P2MP不需要选举DR&BDR。
3.DR、BDR的工作原理
1、当指定了DR后,所有的路由器都与DR建立起邻接关系,DR成为该广播网络上的中心点;
2、BDR在DR发生故障时接管业务,一个广播网络上所有路由器都必须同BDR建立邻接关系。
4.DR/BDR选举规则:
DR优先级是0-255,默认优先级是1。
(1)先选择DR优先级最高的作为DR,次高的作为BDR。DR优先级为0的路由器只能成为DR Other;
(2)如果优先级相同,则优先选择Router ID较大的路由器成为DR,次大的成为BDR,其余路由器成为DR Other。
5.Route-ID选举规则:
(1)OSPF进程手工配置的router-id具有最高优先级。
(2)在全局模式下配置的公用router-id的优先级仅次于直接给OSPF进程手工配置router-id,即它具有第二优先级。
①在没有手工配置的前提下,优选loopback接口地址中最大的地址作为router-id。
②在没有配置loopback接口地址的前提下,优选普通接口的IP地址中选择最大的地址作为router-id (不考虑接口的Up/Down状态)。
eg:在没有DR的广播网络上,邻接关系的数量可以根据公式n(n-1)/2计算出,n代表参与OSPF的路由器接口的数量。
如图所示,所有路由器之间有6个邻接关系。本例中使用DR和BDR将邻接关系从6减少到了5,RTA和RTB都只需要同DR和BDR建立邻接关系,RTA和RTB之间建立的是邻居关系。
此例中,邻接关系数量的减少效果并不明显。但是,当网络上部署了大量路由器时,比如100台,那么情况就大不一样了。
六、OSPF区域
OSPF路由器类型:
OSPF路由器分为骨干路由器、内部路由器、边界路由器、自治系统边界路由器。
路由类型 | 含义 |
区域内路由器(Internal Router) | 该类路由器的所有接口都属于同一个OSPF区域。 |
区域边界路由器ABR(Area Border Router) | 该类路由器可以同时属于两个以上的区域,但其中一个必须是骨干区域。 ABR用来连接骨干区域和非骨干区域,它与骨干区域之间既可以是物理连接,也可以是逻辑上的连接。 |
骨干路由器(Backbone Router) | 该类路由器至少有一个接口属于骨干区域。 所有的ABR和位于骨干区域的内部路由器都是骨干路由器。 |
自治系统边界路由器ASBR(AS Boundary Router | 与其他AS交换路由信息的路由器称为ASBR。 ASBR并不一定位于AS的边界,它可能是区域内路由器,也可能是ABR。 |
在OSPF中,区域是指将网络中的路由器逻辑上划分为不同的部分,每个部分称为一个区域。区域通过区域号来标识,以便于路由器之间的区域边界划分和路由信息的交换。
OSPF区域分为普通区域、Stub区域、NSSA区域。
区域类型 | 作用 | 说明 |
普通区域 | 缺省情况下,OSPF区域被定义为普通区域。普通区域包括: 骨干区域:连接所有其他OSPF区域的中央区域,通常用Area0表示,骨干区域负责区域之间的路由,非骨干区域之间的路由信息必须通过骨干区域来转发。 | 骨干区域自身必须保持连通 所有非骨干区域必须与骨干区域保持连通。 |
Stub区域 | Stub区域是特定的区域,Stub区域不允许自治系统外部的路由在区域内传播,因此这些区域中路由器的路由表规模以及路由信息传递的数量都会大大减少。一般情况下,Stub区域位于自治系统的边界,是只有一个ABR的非骨干区域,为保证到自治系统外的路由依旧可达,Stub区域的ABR将生成一条缺省路中,并发布给Stub区域中的其他非ABR路由器,Totally Stub区域允许ABR发布的Type3缺省路由,不允许发布自治系统外部路由和区域间的路由,只允许发布区域内路由。 | 骨干区域不能配置成Stub区域. Stub区域内不能存在ASBR,因此自治系统外 部的路由不能在本区域内传播。 虚连接不能穿过Stub区域。 |
NSSA(Not-So-Stubby Area)区域 | NSSA是Stub区域的一个变形,它和Stub区域有许多相似的地方。NSSA区域允许引入少量通过本区域的ASBR到达的自治系统外部路由(缺省路由除外),但不允许其他区域的外部路由在区域内传播。 NSSA区域允许引入自治系统外部路由,携带这些外部路由信息的LSA由NSSA的ASBR产生,仅在本NSSA内传播。 To崧须成頑飘团忝灮措郓銖汁犎冂躬入无N缍³势鳴砕怪A薮誣杷陶域不允许发布自治系统外部路由和区域间的路由,只允许发布区域内路电。 | NSSA区域的ABR会发布Type7 LSA缺省路由传播到本区域内。 所有域间路由都必须通过ABR才能发布, 虚连接不能穿过NSSA区域. |
普通区域:包括标准区域和骨干区域。骨干区域是连接其他OSPF区域的中央区域,使用Area 0表示。标准区域是普通的区域类型,所有区域必须跟骨干区域(Area0 )相连,如果没有相连,可以通过虚链路方式连接。
Stub区域:是一种特殊的区域类型,其ABR不传播自治系统外部路由,从而减少路由表规模和路由信息传递的数量。Totally Stub区域是Stub区域的子类型,ABR只发布Type3缺省路由,不发布自治系统外部路由和区域间的路由。骨干区域不能配置成Stub区域,Stub区域内不能存在ASBR。
NSSA(Not So Stubby Area)区域是Stub区域的一种变形,允许引入自治系统外部路由。携带自治系统外部路由信息的Type7 LSA由NSSA的ASBR产生,仅在本NSSA内传播。
七、OSPF LSA
OSPF中对路由信息的描述都是封装在链路状态通告LSA(Link State Advertisement)中发布出去的,常用的LSA如表所示:
LSA类型 | LSA作用 |
Router-LSA (Type1) | 每个路由器都会产生,描述了路由器的链路状态和开销,在发布路由器所属的区域内传播。 |
Network-LSA(Type2) | 由DR产生,描述本网段的链路状态,在DR所属的区域内传播。 |
Network-Summary-LSA(Type3) | 由ABR产生,描述区域内某个网段的路由,并通告给其他区域(除了Totally Stub和Totally NSSA区域)。例如:ABR同时属于Area0和Area1,Area0内存在网段10.1.1.0,Area1内存在网段10.2.1.0,ABR为Area0生成到网段10.2.1.0的Type3 LSA:ABR为Area1生成到网段10.1.1.0的Type3 LSA。 |
ASBR-Summary-LSA(Type4) | 由ABR产生,描述本区域到其他区域中的ASBR的路由,通告给除ASBR所在区域的其他区域(除了Stub区域Totally Stub、NSSA区域和Totally NSSA区域)。 |
AS-external-LSA(Type5) | 由ASBR产生,描述到AS外部的路由,通告到所有的区域(除了Stub区域、Totally Stub、NSSA区域和TotalvNSSA区域)。 |
NSSA LSA (Type7) | 仅在NSSA区域内传播。 由ASBR产生,描述到AS外部的路由。 如果骨干区域中存在Full状态的邻居和Up状态的接口,ABR会自动产生一条缺首的NSSA LSA。 |
Opaque LSA (Type9/Type10/Type11) | Opaque LSA提供用于OSPF的扩展的通用机制。其中: Type9 LSA仅在接口所在网段范围内传播。用于支持GR的Grace LSA就是Type9 LSA的一种 Type10 LSA在区域内传播。用于支持TE的LSA就是Type10 LSA的一种:TyPe11 LSA在自治域内传播。用于支持OSPF引|入路由环路检测功能的LSA就是Type11LSA的一种 |
八、OSPF的配置
1.OSPF基础配置命令
1.启动OSPF进程,进入OSPF视图。
[Huawei] ospf [ process-id | Router ID Router ID ]
2.创建并进入OSPF区域视图
[Huawei-ospf-1] area area-id
3.在OSPF区域中使能OSPF
[Huawei-ospf-1-area-0.0.0.0] network network-address wildcard-mask
执行该命令配置区域所包含的网段。设备的接口IP地址掩码长度≥network命令指定的掩码长度,且接口的主IP地址必须在network命令指定的网段范围内,此时该接口才会在相应的区域内激活OSPF。
4.接口视图下使能OSPF
[Huawei-GigabitEthernet1/0/0] ospf enable process-id area area-id
ospf enable命令用来在接口上使能OSPF,优先级高于network命令。
5.接口视图下,设置选取DR时的优先级
[Huawei-GigabitEthernet1/0/0] ospf dr-priority priority
缺省情况下,优先级为1。
6.接口视图下,设置Hello报文发送的时间间隔
[Huawei-GigabitEthernet1/0/0] ospf timer Hello interval
缺省情况下,P2P、Broadcast类型接口发送Hello报文的时间间隔的值为10秒,且同一接口上邻居失效时间是Hello间隔时间的4倍
7.接口视图下,配置网络类型
[Huawei-GigabitEthernet1/0/0] ospf network-type { broadcast | nbma | p2mp | p2p }
缺省情况下,接口的网络类型根据物理接口而定。以太网接口的网络类型为广播,串口和POS口(封装PPP协议或HDLC协议时)网络类型为P2P。
2.OSPF基础功能配置
网络中有三台交换机。现在需要实现三台交换机之间能够互通,且以后能依据SwitchA和SwitchB为主要的业务设备来继续扩展整个网络。
配置思路:
采用如下的思路配置OSPF基本功能:
在各交换机的VLANIF接口上配置IP地址并配置各接口所属VLAN,实现网段内的互通。
在各交换机上配置OSPF基本功能,并且以SwitchA为ABR将OSPF网络划分为Area0和Area1两个区域,实现后续以SwitchA和SwitchB所在区域为骨干区域来扩展整个OSPF网络。
操作步骤:
(1)配置各接口所属的VLAN
# 配置SwitchA。SwitchB和SwitchC的配置与SwitchA类似。
<HUAWEI> system-view
[HUAWEI] sysname SwitchA
[SwitchA] vlan batch 10 20
[SwitchA] interface gigabitethernet 1/0/1
[SwitchA-GigabitEthernet1/0/1] port link-type access
[SwitchA-GigabitEthernet1/0/1] port default vlan 10
[SwitchA-GigabitEthernet1/0/1] quit
[SwitchA] interface gigabitethernet 1/0/2
[SwitchA-GigabitEthernet1/0/2] port link-type access
[SwitchA-GigabitEthernet1/0/2] port default vlan 20
[SwitchA-GigabitEthernet1/0/2] quit
(2)配置各VLANIF接口的IP地址
# 配置SwitchA。SwitchB和SwitchC的配置与SwitchA类似。
[SwitchA] interface vlanif 10
[SwitchA-Vlanif10] ip address 192.168.0.1 24
[SwitchA-Vlanif10] quit
[SwitchA] interface vlanif 20
[SwitchA-Vlanif20] ip address 192.168.1.1 24
[SwitchA-Vlanif20] quit
(3)配置OSPF基本功能
[SwitchA] ospf 1 router-id 10.1.1.1 //ospf进程1,routeid手动配置
[SwitchA-ospf-1] area 0 //区域0
[SwitchA-ospf-1-area-0.0.0.0] network 192.168.0.0 0.0.0.255 //宣告网络
[SwitchA-ospf-1-area-0.0.0.0] quit
[SwitchA-ospf-1] area 1
[SwitchA-ospf-1-area-0.0.0.1] network 192.168.1.0 0.0.0.255
[SwitchA-ospf-1-area-0.0.0.1]quit
# 配置SwitchB。
[SwitchB] ospf 1 router-id 10.2.2.2
[SwitchB-ospf-1] area 0
[SwitchB-ospf-1-area-0.0.0.0] network 192.168.0.0 0.0.0.255
[SwitchB-ospf-1-area-0.0.0.0] quit
# 配置SwitchC。
[SwitchC] ospf 1 router-id 10.3.3.3
[SwitchC-ospf-1] area 1
[SwitchC-ospf-1-area-0.0.0.1] network 192.168.1.0 0.0.0.255
[SwitchC-ospf-1-area-0.0.0.1] quit
(4)验证配置结果
# 查看的OSPF邻居。
<SwitchA> display ospf peer
# 查看的OSPF路由信息。
<SwitchB> display ospf routing
3.OSPF虚链路配置
Area2没有与骨干区域直接相连。Area1被用作传输区域(Transit Area)来连接Area2和Area0。RouterA和RouterB之间配置一条虚连接。
配置思路:
采用如下的思路配置OSPF虚连接:
(1)在各路由器上配置OSPF基本功能。
(2)在RouterA和RouterB上配置虚连接,使非骨干区域与骨干区域连通。
操作步骤:
(1)配置各路由器接口的IP地址
# 配置RouterA。
Huawei> system-view
[Huawei] sysname RouterA
[RouterA] interface gigabitethernet 1/0/0
[RouterA-GigabitEthernet1/0/0] ip address 192.168.1.1 24
[RouterA-GigabitEthernet1/0/0] quit
[RouterA] interface gigabitethernet 2/0/0
[RouterA-GigabitEthernet2/0/0] ip address 10.1.1.1 8
[RouterA-GigabitEthernet2/0/0] quit
RouterB、RouterC和RouterD的配置与RouterA一致(略)
(2)配置OSPF基本功能
# 配置RouterA。
[RouterA] ospf 1 router-id 1.1.1.1
[RouterA-ospf-1] area 0
[RouterA-ospf-1-area-0.0.0.0] network 10.0.0.0 0.255.255.255
[RouterA-ospf-1-area-0.0.0.0] quit
[RouterA-ospf-1] area 1
[RouterA-ospf-1-area-0.0.0.1] network 192.168.1.0 0.0.0.255
[RouterA-ospf-1-area-0.0.0.1] quit
# 配置RouterB。
[RouterB] ospf 1 router-id 2.2.2.2
[RouterB-ospf-1] area 1
[RouterB-ospf-1-area-0.0.0.1] network 192.168.1.0 0.0.0.255
[RouterB-ospf-1-area-0.0.0.1] quit
[RouterB-ospf-1] area 2
[RouterB–ospf-1-area-0.0.0.2] network 172.16.0.0 0.0.255.255
[RouterB–ospf-1-area-0.0.0.2] quit
# 配置RouterC。
[RouterC] ospf 1 router-id 3.3.3.3
[RouterC-ospf-1] area 0
[RouterC-ospf-1-area-0.0.0.0] network 10.0.0.0 0.255.255.255
[RouterC-ospf-1-area-0.0.0.0] quit
# 配置RouterD。
[RouterD] ospf 1 router-id 4.4.4.4
[RouterD-ospf-1] area 2
[RouterD-ospf-1-area-0.0.0.2] network 172.16.0.0 0.0.255.255
[RouterD-ospf-1-area-0.0.0.2] quit
# 查看RouterA的OSPF路由表。
[RouterA] display ospf routing
由于Area2没有与Area0直接相连,所以RouterA的路由表中没有Area2中的路由。
(3)配置虚链路
# 配置RouterA。
[RouterA] ospf 1
[RouterA-ospf-1] area 1
[RouterA-ospf-1-area-0.0.0.1] vlink-peer 2.2.2.2 //虚链路指向对端routeb
[RouterA-ospf-1-area-0.0.0.1] quit
[RouterA-ospf-1] quit
# 配置RouterB。
[RouterB] ospf 1
[RouterB-ospf-1] area 1
[RouterB-ospf-1-area-0.0.0.1] vlink-peer 1.1.1.1
[RouterB-ospf-1-area-0.0.0.1] quit
[RouterB-ospf-1] quit
(4)验证配置结果
# 查看RouterA的OSPF路由表。
[RouterA] display ospf routing
4.OSPF DR选举配置
RouterA的优先级为100,它是网络上的最高优先级,所以RouterA被选为DR;RouterC是优先级第二高的,被选为BDR;RouterB的优先级为0,这意味着它将无法成为DR或BDR;RouterD没有配置优先级,取缺省值1。
配置思路:
采用如下的思路配置OSPF的DR选择:
(1)配置各路由器上router id,使能OSPF,指定网段。
(2)在缺省优先级情况下,查看各路由器DR/BDR状态。
(3)配置接口上的DR优先级,查看DR/BDR状态。
配置步骤:
(1)配置各接口的IP地址
# 配置RouterA的各接口的IP地址。
<Huawei> system-view
[Huawei] sysname RouterA
[RouterA] interface gigabitethernet 1/0/0
[RouterA-GigabitEthernet1/0/0] ip address 192.168.1.1 255.255.255.0
[RouterA-GigabitEthernet1/0/0] quit
RouterB、RouterC和RouterD的配置同RouterA此处略。
(2)配置OSPF基本功能
# 配置RouterA。
[RouterA] router id 1.1.1.1
[RouterA] ospf
[RouterA-ospf-1] area 0
[RouterA-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255
[RouterA-ospf-1-area-0.0.0.0] quit
[RouterA-ospf-1] quit
# 配置RouterB。
[RouterB] router id 2.2.2.2
[RouterB] ospf
[RouterB-ospf-1] area 0
[RouterB-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255
[RouterB-ospf-1-area-0.0.0.0] quit
[RouterB-ospf-1] quit
# 配置RouterC。
[RouterC] router id 3.3.3.3
[RouterC] ospf
[RouterC-ospf-1] area 0
[RouterC-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255
[RouterC-ospf-1-area-0.0.0.0] quit
[RouterC-ospf-1] quit
# 配置RouterD。
[RouterD] router id 4.4.4.4
[RouterD] ospf
[RouterD-ospf-1] area 0
[RouterD-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255
[RouterD-ospf-1-area-0.0.0.0] quit
[RouterD-ospf-1] quit
(3)配置接口上的DR优先级
# 配置RouterA。
[RouterA] interface gigabitethernet 1/0/0
[RouterA-GigabitEthernet1/0/0] ospf dr-priority 100 //配置dr优先级
[RouterA-GigabitEthernet1/0/0] quit
# 配置RouterB。
[RouterB] interface gigabitethernet 1/0/0
[RouterB-GigabitEthernet1/0/0] ospf dr-priority 0
[RouterB-GigabitEthernet1/0/0] quit
# 配置RouterC。
[RouterC] interface gigabitethernet 1/0/0
[RouterC-GigabitEthernet1/0/0] ospf dr-priority 2
[RouterC-GigabitEthernet1/0/0] quit
(4)重启OSPF进程
在各路由器的用户视图下,同时执行命令reset ospf 1 process,以重启OSPF进程。
(5)验证配置结果
# 查看OSPF邻居状态。
[RouterD] display ospf peer
5.OSPF Stub区域配置
Stub区域简介:
OSPF划分区域可以减少网络中LSA的数量。对于位于自治系统边界的非骨干区域,为了更多的缩减其路由表规模和降低LSA的数量,可以将它们配置为Stub区域。
Stub区域是一种可选的配置属性。通常来说,Stub区域位于自治系统的边界,例如,只有一个ABR的非骨干区域。在这些区域中,设备的路由表规模以及路由信息传递的数量都会大量减少。
所有的路由器都运行OSPF,整个自治系统划分为3个区域。其中RouterA和RouterB作为ABR来转发区域之间的路由,RouterD作为ASBR引入了外部路由(静态路由)。
要求将Area1配置为Stub区域,减少通告到此区域内的LSA数量,但不影响路由的可达性。
配置思路:
采用如下的思路配置OSPF的Stub区域:
在各路由器上使能OSPF,配置OSPF基本功能。
在RouterD上配置静态路由,并在OSPF中引入。
配置Area1为Stub区域(需要在Area1内所有的路由器上配置Stub命令),在RouterC上查看OSPF路由信息。
在RouterA上配置禁止向Stub区域通告Type3 LSA,在RouterC上查看OSPF路由信息。
配置步骤:
(1)配置各路由器接口的IP地址
# 配置RouterA。
<Huawei> system-view
[Huawei] sysname RouterA
[RouterA] interface gigabitethernet 1/0/0
[RouterA-GigabitEthernet1/0/0] ip address 192.168.0.1 24
[RouterA-GigabitEthernet1/0/0] quit
[RouterA] interface gigabitethernet 2/0/0
[RouterA-GigabitEthernet2/0/0] ip address 192.168.1.1 24
[RouterA-GigabitEthernet2/0/0] quit
RouterB、RouterC、RouterD、RouterE和RouterF的配置与RouterA一致(略)
(2)配置OSPF基本功能
# 配置RouterA。
[RouterA] router id 1.1.1.1
[RouterA] ospf
[RouterA-ospf-1] area 0
[RouterA-ospf-1-area-0.0.0.0] network 192.168.0.0 0.0.0.255
[RouterA-ospf-1-area-0.0.0.0] quit
[RouterA-ospf-1] area 1
[RouterA-ospf-1-area-0.0.0.1] network 192.168.1.0 0.0.0.255
[RouterA-ospf-1-area-0.0.0.1] quit
[RouterA-ospf-1] quit
# 配置RouterB。
[RouterB] router id 2.2.2.2
[RouterB] ospf
[RouterB-ospf-1] area 0
[RouterB-ospf-1-area-0.0.0.0] network 192.168.0.0 0.0.0.255
[RouterB-ospf-1-area-0.0.0.0] quit
[RouterB-ospf-1] area 2
[RouterB-ospf-1-area-0.0.0.2] network 192.168.2.0 0.0.0.255
[RouterB-ospf-1-area-0.0.0.2] quit
[RouterB-ospf-1] quit
# 配置RouterC。
[RouterC] router id 3.3.3.3
[RouterC] ospf
[RouterC-ospf-1] area 1
[RouterC-ospf-1-area-0.0.0.1] network 192.168.1.0 0.0.0.255
[RouterC-ospf-1-area-0.0.0.1] network 172.16.1.0 0.0.0.255
[RouterC-ospf-1-area-0.0.0.1] quit
[RouterC-ospf-1] quit
# 配置RouterD。
[RouterD] router id 4.4.4.4
[RouterD] ospf
[RouterD-ospf-1] area 2
[RouterD-ospf-1-area-0.0.0.2] network 192.168.2.0 0.0.0.255
[RouterD-ospf-1-area-0.0.0.2] network 172.17.1.0 0.0.0.255
[RouterD-ospf-1-area-0.0.0.2] quit
[RouterD-ospf-1] quit
# 配置RouterE。
[RouterE] router id 5.5.5.5
[RouterE] ospf
[RouterE-ospf-1] area 1
[RouterE-ospf-1-area-0.0.0.1] network 172.16.1.0 0.0.0.255
[RouterE-ospf-1-area-0.0.0.1] quit
[RouterE-ospf-1] quit
# 配置RouterF。
[RouterF] router id 6.6.6.6
[RouterF] ospf
[RouterF-ospf-1] area 2
[RouterF-ospf-1-area-0.0.0.2] network 172.17.1.0 0.0.0.255
[RouterF-ospf-1-area-0.0.0.2] quit
[RouterF-ospf-1] quit
(3)配置RouterD引入静态路由
[RouterD] ip route-static 200.0.0.0 8 null 0
[RouterD] ospf
[RouterD-ospf-1] import-route static type 1 //引入静态路由type为1
[RouterD-ospf-1] quit
# 查看RouterC的ABR/ASBR信息。
[RouterC] display ospf abr-asbr //查看abr/asbr信息
(4)配置Area1为Stub区域
# 配置RouterA。
[RouterA] ospf
[RouterA-ospf-1] area 1
[RouterA-ospf-1-area-0.0.0.1] stub //配置stub信息
[RouterA-ospf-1-area-0.0.0.1] quit
[RouterA-ospf-1] quit
# 配置RouterC。
[RouterC] ospf
[RouterC-ospf-1] area 1
[RouterC-ospf-1-area-0.0.0.1] stub
[RouterC-ospf-1-area-0.0.0.1] quit
[RouterC-ospf-1] quit
# 配置RouterE。
[RouterE] ospf
[RouterE-ospf-1] area 1
[RouterE-ospf-1-area-0.0.0.1] stub
[RouterE-ospf-1-area-0.0.0.1] quit
[RouterE-ospf-1] quit
# 显示RouterC的路由表。
当把RouterC所在区域配置为Stub区域时,已经看不到AS外部的路由,取而代之的是一条缺省路由。
[RouterC] display ospf routing
6.OSPF NSSA区域配置
OSPF NSSA(Not-So-Stubby Area)区域是OSPF特殊的区域类型。NSSA区域与STUB区域有许多相似的地方,两者都不传播来自OSPF网络其他区域的外部路由。差别在于STUB区域是不能引入外部路由,NSSA区域能够将自治域外部路由引入并传播到整个OSPF自治域中。
由于OSPF规定STUB区域不能引入外部路由,对于既需要引入外部路由又需要避免外部路由带来的资源消耗的场景,STUB区域就不能满足要求了,此时,可以将这些区域配置成NSSA区域。NSSA区域可以满足既需要引入外部路由又要避免外部路由过多带来的资源消耗的场景。
在NSSA区域中使用Type-7 LSA描述引入的外部路由信息。Type-7 LSA由NSSA区域的自治域边界路由器(ASBR)产生,其扩散范围仅限于边界路由器所在的NSSA区域。NSSA区域的区域边界路由器(ABR)收到Type-7 LSA时,会有选择地将其转化为Type-5 LSA,以便将外部路由信息通告到OSPF网络的其他区域。
所有的设备都运行OSPF,整个自治系统划分为两个区域。其中DeviceA和DeviceB作为ABR来转发区域间的路由,DeviceD作为ASBR引入了外部静态路由10.0.0.0/8。此时,在不影响路由可达的前提下,达到减少通告到Area1内的LSA数量,但引入自治系统外部路由的目的。需要将Area1配置为NSSA区域,并配置NSSA区域中的DeviceA为转换器。
配置思路:
采用如下的思路配置OSPF的NSSA区域:
(1)在各设备上使能OSPF,配置OSPF基本功能,实现OSPF协议互连。
(2)配置Area1为NSSA区域。
(3)在DeviceD上配置引入静态路由10.0.0.0/8。
(4)配置NSSA区域中的DeviceA为转换器。
操作步骤:
(1)配置各接口的IP地址。
参考实验拓扑,配置各接口的IP地址,具体配置过程请参考配置脚本。
(2)配置OSPF基本功能。
(3)配置Area1区域为NSSA区域。
# 配置DeviceA。
[DeviceA] ospf
[DeviceA-ospf-1] area 1
[DeviceA-ospf-1-area-0.0.0.1] nssa
[DeviceA-ospf-1-area-0.0.0.1] quit
[DeviceA-ospf-1] quit
# 配置DeviceB。
[DeviceB] ospf
[DeviceB-ospf-1] area 1
[DeviceB-ospf-1-area-0.0.0.1] nssa
[DeviceB-ospf-1-area-0.0.0.1] quit
[DeviceB-ospf-1] quit
# 配置DeviceD。
[DeviceD] ospf
[DeviceD-ospf-1] area 1
[DeviceD-ospf-1-area-0.0.0.1] nssa
[DeviceD-ospf-1-area-0.0.0.1] quit
[DeviceD-ospf-1] quit
(4)配置DeviceD引入静态路由10.0.0.0/8。
[DeviceD] ip route-static 10.0.0.0 8 null 0
[DeviceD] ospf
[DeviceD-ospf-1] import-route static
[DeviceD-ospf-1] quit
# 查看DeviceC的OSPF路由表。
[DeviceC] display ospf routing
NSSA区域引入AS外部路由的发布设备的Router ID为2.2.2.2,即DeviceB为转换器。这是因为OSPF会选举Router ID较大的ABR作为转换器。
(5)配置DeviceA为转换器。
[
DeviceA] ospf
[DeviceA-ospf-1] area 1
[DeviceA-ospf-1-area-0.0.0.1] nssa default-route-advertise no-summary translator-always
[DeviceA-ospf-1-area-0.0.0.1] quit
[DeviceA-ospf-1] quit
检查配置结果
# 查看DeviceC的OSPF路由表。
[DeviceC] display ospf routing
DeviceC引入了一条AS外部的路由,并且,引入的外部路由的发布设备的Router ID变为1.1.1.1,即DeviceA成为了转换器。
7.OSPF安全性配置
区域验证:
使用区域验证时,一个区域中所有的路由器在该区域下的验证模式和口令必须一致。
配置方式:
(1)进入OSPF区域视图,
(2)authentication-mode simple [ plain plain-text | [ cipher ] cipher-text ],配置OSPF区域的验证模式(简单验证)。
plain表示明文口令类型。
cipher表示密文口令类型。对于MD5/HMAC-MD5验证模式,当此参数缺省时,默认为cipher类型。
接口验证:
接口验证方式用于在相邻的路由器之间设置验证模式和口令,优先级高于区域验证方式。
配置方式:
(1)进入运行OSPF的接口视图
(2)ospf authentication-mode simple [ plain plain-text | [ cipher ] cipher-text ],配置OSPF接口的验证模式(简单验证)。
simple表示使用简单验证模式。
plain表示明文口令类型。对于简单验证模式,当此参数缺省时,默认为plain类型。
cipher表示密文口令类型。对于MD5或者HMAC-MD5验证模式,当此参数缺省时,默认为cipher类型。
静默接口:
如果要使OSPF路由信息不被其他网络中的设备获得,并且使本地设备不接收网络中其他设备发布的路由更新信息,可使用silent-interface命令禁止此接口接收和发送OSPF报文。
禁止接口接收和发送OSPF报文,是预防路由环路的一种方法。
配置方式:
# 禁止接口VLANIF200收发OSPF报文。
<HUAWEI> system-view
[HUAWEI] ospf 1
[HUAWEI-ospf-1] silent-interface XXXX
相关文章:
专题十四:动态路由——OSPF
一、OSPF简介 开放式最短路径优先OSPF(Open Shortest Path First)是IETF组织开发的一个基于链路状态的内部网关协议(Interior Gateway Protocol),采用DIjkstra算法,协议号是89。用于自治系统(A…...
【蓝桥杯】第十六届蓝桥杯 JAVA B组记录
试题 A: 逃离高塔 很简单,签到题,但是需要注意精度,用int会有溢出风险 答案:202 package lanqiao.t1;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWrit…...
一个项目的架构演进
1,单体架构 垂直升级:4核16GB -> 8核64G 水平扩展:一台服务器扩展成多台 存在以下几个问题 1,提升的性能是有限的 2,更新,维护成本非常高,对于系统中要修改或增加的功能,整个发…...
创建虚拟环境无法加载到pycharm当conda环境,只能为python环境
conda create -n myenv python3.8 然后,在pycharm中,点击 ..." 按钮并浏览到您的 Conda 环境路径。通常,Conda 环境路径位于 ~/.conda/envs/<Your Environment Name> 或 ~/miniconda3/envs/<Your Environment Name> 或 ~/an…...
暴雨打造智能化时代源动力
当清晨的智能管家为您调节室温、日间数字员工自动生成会议纪要、深夜AI外教仍在纠正发音……这不是科幻片,2025年的世界正被智能体悄然重塑。这些能听会想的数智化助理,正在医疗会诊、工业质检、金融风控等多个领域创造着价值。 那么,智能体…...
【ROS2】行为树:BehaviorTree
1、简介 与状态机不同,行为树强调执行动作,而不是状态之间的转换。 行为树是可组合的。可以重复使用简单的行为来构建复杂的行为。 在游戏领域,行为树已经比较流行了。主要用于维护游戏角色的各种动作和状态。 ROS2的导航框架Navigation2中引入了行为树来组织机器人的工作流…...
【HTTP】:应用层协议HTTP(1)
1.HTTP协议 虽然我们说,应用层协议是我们程序猿自己定的.但实际上,已经有大佬们定义了一些现成的,又非常好用的应用层协议,供我们直接参考使用.HTTP(超文本传输协议)就是其中之一。 在互联网世界中,HTTP(HyperTextTransfer Protocol,超文本…...
Boost Graph Library (BGL) 介绍与使用示例
Boost Graph Library (BGL) 介绍与使用示例 Boost Graph Library (BGL) 是 Boost 库中用于图论计算的模块,提供了处理图数据结构的通用接口和多种图算法实现。 BGL 主要特性 提供多种图表示方式:邻接表、邻接矩阵等包含常用图算法:DFS、BF…...
数据结构--线性表
单链表的基本操作 1.清空单链表 链表仍然存在,但链表中无元素,成为空链表(头指针和头链表仍存在)算法思路:依次释放所有结点,并将头结点指针设置为空 2.返回表长 3.取值–取单链表中第i个元素 因为存储…...
电商用户购物行为分析:基于K-Means聚类与分类验证的完整流程
随着电商行业的快速发展,用户行为分析成为企业优化营销策略、提升用户体验的重要手段。通过分析用户的购物行为数据,企业可以挖掘出用户群体的消费特征和行为模式,从而制定更加精准的营销策略。本文将详细介绍一个基于Python实现的电商用户购物行为分析系统,涵盖数据预处理…...
《车辆人机工程-汽车驾驶显示装置》实验报告
汽思考题 汽车显示装置有哪些? 汽车显示装置是车辆与驾驶员、乘客交互的重要界面,主要用于信息展示、功能控制和安全辅助。以下是常见的汽车显示装置分类及具体类型: 一、驾驶舱核心显示装置 1. 仪表盘(Instrument Cluster&am…...
三维点云投影二维图像的原理及实现
转自个人博客:三维点云投影二维图像的原理及实现 1. 概述 1.1 原理概述 三维点云模型是由深度相机采集深度信息和RGB信息进行生成的,深度相机能直接获取到深度图和二维RGB图像,也就是说利用相机原本的关系就可以把深度信息投影回二维图像&a…...
使用Golang打包jar应用
文章目录 背景Go 的 go:embed 功能介绍与打包 JAR 文件示例1. go:embed 基础介绍基本特性基本语法 2. 嵌入 JAR 文件示例项目结构代码实现 3. 高级用法:嵌入多个文件或目录4. 使用注意事项5. 实际应用场景6. 完整示例:运行嵌入的JAR 背景 想把自己的一个…...
MySQL数据过滤、转换与标准化
数据处理是数据库操作的重要组成部分,尤其是在大量数据中查找、转换和规范化目标信息的过程中。为了确保数据的有效性与一致性,MySQL提供了一系列数据过滤、转换与标准化的功能。 本教程将深入探讨数据过滤和转换的基本方法及应用,内容涵盖数…...
Linux中安装sentinel
拉取镜像 #我默认拉取最新的 sentinel 镜像 docker pull bladex/sentinel-dashboard 创建容器 docker run --name sentinel -d -p 8858:8858 bladex/sentinel-dashboard 检查是否成功 docker ps 浏览器访问 默认账号密码是 sentinel/sentinel 成功了 开放sentinel端口或者关…...
大模型压缩训练(知识蒸馏)
AI的计算结果不是一个数值,而是一个趋势 一、模型压缩简介 1、深度学习(Deep Learning)因其计算复杂度或参数冗余,在一些场景和设备上限制了相应的模型部署,需要借助模型压缩、优化加速、异构计算等方法突破瓶颈。 …...
Matlab绘制函数方程图形
Matlab绘制函数方程图形: 多项式计算: polyval 函数 Values of Polynomials: polyval ( ) 绘制方程式图形: 代码如下: >> a[9,-5,3,7]; x-2:0.01:5; fpolyval(a,x); plot(x,f,LineWidth,2); xlabel(x); ylabel(f(x))…...
dify windos,linux下载安装部署,提供百度云盘地址
dify下载安装 dify1.0.1 windos安装包百度云盘地址 通过网盘分享的文件:dify-1.0.1.zip 链接: 百度网盘 请输入提取码 提取码: 1234 dify安装包 linux安装包百度云盘地址 通过网盘分享的文件:dify-1.0.1.tar.gz 链接: 百度网盘 请输入提取码 提取码…...
优化方法介绍(一)
优化方法介绍(一) 本博客是一个系列博客,主要是介绍各种优化方法,使用 matlab 实现,包括方法介绍,公式推导和优化过程可视化 1 失败案例介绍 本文在编写最速下降法的时候使用了经典的求解函数框架,并使用了自适应步长(alpha)机制,即加入参数flag,当出现梯度下降的情…...
Centos7.9 升级内核,安装RTX5880驱动
系统镜像下载 https://vault.centos.org/7.9.2009/isos/x86_64/CentOS-7-x86_64-DVD-2009.iso 系统安装步骤省略 开始安装显卡驱动 远程登录查看内核 [root192 ~]# uname -a Linux 192.168.119.166 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x8…...
计算轴承|滚动轴承故障频率
一、轴承故障频率概述 在旋转机械故障诊断中,轴承故障频率(BPFO、BPFI、BSF、FTF)是重要的分析依据。通过计算这些特征频率,可以帮助工程师: 识别轴承故障类型(内圈/外圈/滚动体故障)制定振动…...
Python 数据分析01 环境搭建教程
Python 数据分析01 环境搭建教程 一、安装 Python 环境 访问 Python 官方网站 Python 官网,选择适合你操作系统的 Python 版本进行下载。下载完成后,运行安装程序。在安装过程中,建议选择“Add Python to PATH”选项,这样可以在…...
程序化广告行业(80/89):近年发展动态与技术标准演进
程序化广告行业(80/89):近年发展动态与技术标准演进 大家好!在技术领域探索的过程中,我深刻认识到知识分享的力量,它能让我们在学习的道路上加速前行。写这篇博客,就是希望能和大家一起深入剖析…...
Node.js cluster模块详解
Node.js cluster 模块详解 cluster 模块允许你轻松创建共享同一服务器端口的子进程(worker),充分利用多核 CPU 的性能。它是 Node.js 实现高并发的重要工具。 核心概念 主进程(Master):负责管理工作进程…...
2025年认证杯数学建模C题完整分析论文(共39页)(含模型、可运行代码)
2025年认证杯数学建模竞赛C题完整分析论文 目录 摘要 一、问题重述 二、问题分析 三、模型假设 四、 模型建立与求解 4.1问题1 4.1.1问题1解析 4.1.2问题1模型建立 4.1.3问题1求解代码 4.1.4问题1求解结果 4.2问题2 4.2.1问题2解析 4.2.2问题2模型建…...
PostgreSQL 的 COPY 命令
PostgreSQL 的 COPY 命令 PostgreSQL 的 COPY 命令是高效数据导入导出的核心工具,性能远超常规 INSERT 语句。以下是 COPY 命令的深度解析: 一 COPY 命令基础 1.1 基本语法对比 命令类型语法示例执行位置文件访问权限服务器端COPYCOPY table FROM /p…...
MySQL进阶-存储引擎索引
目录 一:存储引擎 MySQL体系结构 存储引擎介绍 存储引擎特点 InnoDB MyISAM Memory 区别及特点 存储引擎选择 索引 索引概述 介绍 演示 特点 索引结构 概述 二叉树 B-Tree BTree Hash 索引分类 索引分类 聚集索引&二级索引 一࿱…...
为什么需要Refresh Token?
后端服务性能 一种方案是在服务器端保存 Token 状态,用户每次操作都会自动刷新(推迟) Token 的过期时间——Session 就是采用这种策略来保持用户登录状态的。然而仍然存在这样一个问题,在前后端分离、单页 App 这些情况下&#x…...
基于3A4000及CentOS的银河麒麟V10离线源码编译安装VLC
碰到过的一个具体问题: 源码安装vlc-3.0.x版本,需要注意的是,不要安装ffmpeg-5及以上的版本,即只支持ffmpeg-4的版本,因此,要安装vlc-3.0版本,一个重要的依赖时就会ffmpeg-4。报错没有revision…...
Windows for Redis 后台服务运行
下载 redis 安装包 地址:https://github.com/tporadowski/redis/releases 解压zip压缩包,执行 redis-server.exe 即可以窗口模式运行(窗口关闭则服务关闭) 运行窗口可以看到,端口是 6379 我这里使用 nvaicat 客服端测…...
前端工程化-包管理NPM-package.json 和 package-lock.json 详解
package.json 和 package-lock.json 详解 1.package.json 基本概念 package.json 是 Node.js 项目的核心配置文件,它定义了项目的基本信息、依赖项、脚本命令等。 主要字段 基本信息字段 name: 项目名称(必填) version: 项目版本…...
如何在 Linux 中彻底终止被 `Ctrl+Z` 挂起的进程?
问题场景 在 Linux 终端操作时,你是否曾遇到过这样的情况? 当运行一个命令(如 ping www.baidu.com)时,不小心按下了 CtrlZ,屏幕上显示类似以下内容: ^Z [2] 已停止 ping www.b…...
人工智能100问☞第3问:深度学习的核心原理是什么?
目录 一、通俗解释 二、专业解析 三、权威参考 深度学习的核心原理是通过构建多层神经网络结构,逐层自动提取并组合数据特征,利用反向传播算法优化参数,从而实现对复杂数据的高层次抽象和精准预测。 一、通俗解释 深度学习的核心原理,就像是教计算机像婴儿…...
基于若依和elementui实现文件上传(导入Excel表)
基于若依和elementui实现文件上传(导入Excel表) 前端部分: 若依封装了Apache的poi功能,实现文件的上传和下载 若依使用的是JS语法,需要改造为JS语法才能使用 若依如何解决跨域的问题: 在前端的配置文件中…...
2025年第十六届蓝桥杯省赛真题解析 Java B组(简单经验分享)
之前一年拿了国二后,基本就没刷过题了,实力掉了好多,这次参赛只是为了学校的加分水水而已,希望能拿个省三吧 >_< 目录 1. 逃离高塔思路代码 2. 消失的蓝宝思路代码 3. 电池分组思路代码 4. 魔法科考试思路代码 5. 爆破思路…...
OpenHarmony人才认证证书
OpenHarmony人才认证体系目前支持初级工程师认证,要求了解OpenHarmony开源项目、生态进展及系统移植等基础知识,熟练掌握OpenHarmony的ArkUI、分布式软总线、分布式硬件、分布式数据管理等基础能力使用,具备基础的开发能力。 考试流程可参考O…...
Docker--利用dockerfile搭建mysql主从集群和redis集群
Docker镜像制作的命令 链接 Docker 镜像制作的注意事项 链接 搭建mysql主从集群 mysql主从同步的原理 MySQL主从同步(Replication)是一种实现数据冗余和高可用性的技术,通过将主数据库(Master)的变更操作同步到一个…...
LLaMA-Factory双卡4090微调DeepSeek-R1-Distill-Qwen-14B医学领域
unsloth单卡4090微调DeepSeek-R1-Distill-Qwen-14B医学领域后,跑通一下多卡微调。 1,准备2卡RTX 4090 2,准备数据集 医学领域 pip install -U huggingface_hub export HF_ENDPOINThttps://hf-mirror.com huggingface-cli download --resum…...
使用ZSH美化Windows系统Git Bash
此前,我们讲解了一种借助 Windows Subsystem for Linux(WSL)让用户在 Windows 操作系统中运用 Linux Shell 命令,进而高效地实现文件访问、编译等开发工作。 Windows系统命令行的最佳实践 | 听到微笑的博客 这种借助 Windows Su…...
如何使用PyCharm自动化测试
如何使用PyCharm自动化测试 1.打开PyCharm右击文件,点击新建项目 按照如图配置,然后点击创建 2.创建好后,点击文件,然后点击设置 按照如图步骤,查看selenium和webdriver-manager是否存在 3.以上都完成后按照如图创…...
56.评论日记
2025年4月12日22:06:08 小米事故下的众生相_哔哩哔哩_bilibili...
EMI滤波器和ESD保护等效参数汇总
EMI 共模抑制与ESD设计参考用,特别是工业和机器人,伺服器类产品,特别关注,提高产品稳定性 基带接口 通道数 线性小信号等效参数 数字端口时钟频率 备注 Rline Cline 电池反接 1 — 240Pf — 过压和电池反接保护 …...
java -jar与java -cp的区别
java -jar与java -cp 1、情景描述2、情景分析3、两者区别 通常情况下,我们会看到以下两种命令启动的Java程序: java -jar xxx.jar [args] java -cp xxx.jar mainclass [args]这两种用法有什么区别呢? 1、情景描述 1)Java打包单个…...
蓝桥杯嵌入式十五届模拟三(串口、双ADC)
一.LED 先配置LED的八个引脚为GPIO_OutPut,锁存器PD2也是,然后都设置为起始高电平,生成代码时还要去解决引脚冲突问题 二.按键 按键配置,由原理图按键所对引脚要GPIO_Input 生成代码,在文件夹中添加code文件夹&#…...
04-算法打卡-数组-二分查找-leetcode(69)-第四天
1 题目地址 69. x 的平方根 - 力扣(LeetCode)69. x 的平方根 - 给你一个非负整数 x ,计算并返回 x 的 算术平方根 。由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。注意:不允许使用任何内…...
SpringBoot项目:部门管理系统
文章目录 1、工程搭建1.1 创建项目1.2 创建数据库1.3 准备基础代码1.4 准备mapper接口1.5 准备service层1.6 准备controller层2、接口开发2.1 查询部门2.1.1 接口开发1、工程搭建 1.1 创建项目 主要内容: 创建Springboot工程引入web开发起步依赖、mybatis、mysql驱动、lombok…...
MyBatis-Plus 扩展功能
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 逻辑删除一、配置逻辑删除字段方式一:全局配置(推荐)方式二:实体类注解配置 二、逻辑删除流程三、完整代码示例1. 实…...
service和endpoints是如何关联的?
在Kubernetes中,Service 和 Endpoints 是两个密切关联的对象,它们共同实现了服务发现和负载均衡的功能。以下是它们之间的关联和工作原理: 1. Service 的定义 Service 是一种抽象,定义了一组逻辑上相关的 Pod,以及用…...
MyBatis-plus 快速入门
提示:MyBatis-Plus(MP)是一个 MyBatis的增强版 文章目录 前言使用MybatisPlus的基本步骤1、引入MybatisPlus依赖代替Mybatis依赖2、定义Mapper接口并继承BaseMapper他是怎么知道哪张表,哪些字段呢 3、实体类注解4、根据需要添加配…...
【PySpark大数据分析概述】03 PySpark大数据分析
【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PySpark大数据分析与应用 ⌋ ⌋ ⌋ PySpark作为Apache Spark的Python API,融合Python易用性与Spark分布式计算能力,专为大规模数据处理设计。支持批处理、流计算、机器学习 (MLlib) 和图计算 (GraphX)&am…...