OSPF路由协议

随着Internet技术在全球范围的飞速发展,OSPF已成为目前应用最广泛的路由协议之一。OSPF(Open Shortest Path First)路由协议是由IETF(Internet Engineering Task Force)IGP工作组提出的,是一种基于SPF算法的路由协议,目前使用的OSPF协议是其第2版。

OSPF 概述

OSPF的特性及术语

OSPF的特性

OSPF(Open Shortest Path First,开放最短路由优先协议)是一种典型的链路状态路由协议。在 IP 网络上,它通过收集和传递自治系统的链路状态来动态地发现并传播路由。采用OSPF的路由器彼此交换并保存整个网络的链路信息,从而掌握整个网络的拓扑结构,独立计算路由。因为RIP路由协议不能服务于大型网络,所以,IETF的IGP工作组特别开发出链路状态协议——OSPF。OSPF作为一种内部网关协议(Interior Gateway Protocol,IGP),用于在同一个自治系统中的路由器之间交换路由信息。
OSPF的特性如下:
(1)快速收敛;
(2)能够适应大型网络;
(3)能够正确处理错误路由信息;
(4)使用区域,能够减少单个路由器的CPU负担,构成结构化的网络;
(5)是无类别的路由协议,完全支持CIDR和VLSM;
(6)支持多条路径等价负载均衡;
(7)使用组播地址来进行信息互通,减少了非OSPF路由器的负载;
(8)使用路由标签来表示来自外部区域的路由;
(9)支持简单口令和MD5认证;
(10)OSPF路由协议的管理距离是110;
(11)OSPF路由协议采用开销(Cost)作为度量标准。

术语

(1)链路(Link):链路就是路由器用来连接网络的接口。
(2)链路状态(Link State):用来描述路由器接口及其与邻居路由器的关系。所有链路状态信息构成链路状态数据库。
(3)最短路径优先(SPF)算法:SPF算法是OSPF路由协议的基础。SPF算法有时也被称为Diikstra算法,这是因为最短路径优先算法是Dijkstra发明的。利用SPF,路由器独立地计算出到达任意目的地的最佳路由。
(4)区域(Area):指有相同的区域标志的一组路由器和网络的集合。在同一个区域内的路由器有相同的拓扑结构数据库。
(5)自治系统(Autonomous System):采用同一种路由协议交换路由信息的路由器及其网络构成一个自治系统。
(6)成本(Cost):也称为链路开销,用来描述从接口发送数据包所需要花费的代价带宽越大,开销越小。成本的计算公式为: 1 0 8 / 带宽( b p s ) 10^8/带宽(bps) 108/带宽(bps,带宽是接口下使用bandwidth命令设置的值。例如,默认情况下,快速以太网的带宽为100Mbps,所以开销是1。
如结果出现小数,会舍弃小数部分取整(如果整数部分为0,则Cost记为1)
(7)邻接(Adjacencies):路由器之间以交换路由信息为目的而建立起来的一种关系。
(8)链路状态数据库(Link State Database):代表网络的拓扑结构,其中包含了网络中所有的路由器的链路状态信息。在一个区域内的所有的路由器有着相同的链路状态数据库。
(9)拓扑结构数据库(Topological Database):也叫链路状态数据库。
(10)转发数据库(Forwarding Database)/路由表(Routing Table):每个路由器对自己的拓扑结构数据库运行SPF算法得出的路由条目,每台路由器的路由表是不相同的。

邻居及邻接关系

OSPF网络类型

根据路由器所连接的物理网络不同,OSPF将网络主要划分为四种类型:广播多路访问(Broadcast Multi Access,BMA)型、非广播多路访问(None Broadcast Multi Access,NBMA)型、点到点型(Point-to-Point)、点到多点型(Point-to-MultiPoint)。

网络类型确定性特性是否选举DRHello间隔/sDead间隔/s
广播多路访问Ethernet1040
非广播多路访问Frame Relay、X.2530120
点到点PPP、HDLC1040
点到多点管理员配置30120

Hello协议

在网络中,OSPF路由器可以周期性发送Hello包来建立和维持邻接关系。管理OSPF的Hello包交换的规则称为Hello协议(Hello Protocol)。Hello包的发送周期与OSPF网络类型有关。当Hello包中的几个字段的内容互相一致时,相邻的OSPF路由器才有可能形成Neighbor关系,Neighbor保存在 Neighbor表里。Hello协议的目的如下:
(1)用来发现OSPF Neighbor;
(2)Hello包包含了多个需要OSPF路由器协商的参数,以形成Neighbor的关系;
(3)可以用来维持邻接关系;
(4)用来确定DRBDR路由器的选择。尽管Hello包比较小,但它含有OSPF的报头。

各个字段的含义如下:
(1)版本:定义所采用的OSPF路由协议的版本。
(2)类型:定义OSPF报文类型,OSPF数据包共有五种。
(3)包长度:定义整个数据包的长度。
(4)路由器ID:路由器的32位长的一个惟一标识符,以IP地址来表示。
(5)区域ID:用于区分OSPF数据包属于的区域号,所有的OSPF数据包都属于个特定的OSPF区域。
(6)校验和:用于标记数据包在传递时有无错误。
(7)身份认证类型:定义OSPF认证类型。OSPF认证类型有如下3种:
0 表示不进行认证,是默认的类型;
1 表示采用简单口令认证;
2 表示采用MD5认证
(8)身份认证:包含OSPF认证信息,长为8个字节。
(9)网络掩码:指发送接口的网络掩码,必须与接收接口的网络掩码相同,以确保它
们位于同一个网段中。
(10)Hello间隔:邻居路由器发送Hello包的周期。
(11)路由器优先级:在选择DR和BDR时使用,优先级越高,被选为DR或BDR的可能性越大。每个接口上都会有优先级,如果优先级为0时,表示不参加DR、BDR选举。
(12)失效间隔:路由器在认为其邻居路由器失效之前等待接收来自邻居Hello包的时间。默认是Hello间隔的4倍。
(13)指定路由器(DR)和备用指定路由器(BDR):在多路访问网络上可能存在多个路由器,为了避免路由器之间建立完全邻接关系而引起的大量开销,OSPF要求在区域中选举一个
DR,每个路由器都与之建立完全邻接关系。DR负责收集所有的链路状态信息,并发布给其他路由。选举DR的同时也选举出一个BDR,在DR失效的时候,BDR 担负起DR的职责,而且所有其他路由器只与DR和BDR建立邻接关系,出于这个原因,DR和BDR有它们自己的组播地址 224.0.0.6。当DR和BDR需要发送一个链路状态更新(Link State Update,LSU)时,它会将更新发送给组播地址 224.0.0.5(对应所由路由器),而非DR/BDR路由器将它们的链路状态更新发送到地址224.0.0.6。
(14)邻居:是与之交换更新以同步数据库的另一台路由器。

OSPF状态

OSPF路由协议依靠5种不同的数据包来识别它们的邻居,并更新链路状态信息。

类型描述
Type 1:HelloOSPF使用Hello分组建立和维护邻接关系。在一个路由器能够给其他路由器分发它的邻居信息前,必须先问候它的邻居们。
Type 2:数据库描述(Database Description,DBD)分组DBD分组不包含完整的“链路状态数据库”信息,只包含数据库中每个条目的概要。当一个路由器首次连入网络,或者刚刚从故障中恢复时,它需要完整的“链路状态数据库”信息。此时,该路由器首先通过hello分组与邻居们建立双向通信关系,然后将会收到每个邻居反馈的DBD分组。新连入的这个路由器会检查所有概要,然后发送一个或多个链路状态请求分组,取回完整的条目信息。
Type 3:链路状态请求(Link State Request,LSR)分组LSR分组用来请求邻居发送其链路状态数据库中某些条目的详细信息。当一个路由器与邻居交换了数据库描述分组后,如果发现它的链路状态数据库缺少某些条目或某些条目已过期,就使用LSR分组来取得邻居链路状态数据库中较新的部分。
Type 4:链路状态更新(Link State Update,LSU)分组LSU分组被用来应答链路状态请求分组,也可以在链路状态发生变化时实现洪泛(flooding)。在网络运行过程中,只要一个路由器的链路状态发生变化,该路由器就要使用LSU,用洪泛法向全网更新链路状态。
Type 5:链路状态确认(Link State Acknowledgment,LSAck)分组LSAck分组被用来应答链路状态更新分组,对其进行确认,从而使得链路状态更新分组采用的洪泛法变得可靠。

在OSPF邻接关系建立的过程中,接口可以处于下面7种状态之一,并且从Down状态到FullAdiacency状态,逐步进行。
(1)Down
没有收到任何Hello包的时候,或是在DeadInterval中,没有收到Hello包。
(2)Init
收到第一个Hello包,就进入Init状态。路由器在建立任何关系之前必须先从一个邻居路由器那里收到一个 Hello包。
(3)Two-Way
当路由器看到自己的路由器ID在邻居发来的Hello包里,就宣布与对方进入Two-Way状态。如果是多路访问型网络,就进入DR与BDR选举的过程。

(4)Exstart
Exstart状态是用DBD(Database Description,数据库描述)数据包建立的,两台路由器通过DBD数据来决定Master/Slave关系,并利用DBD数据包来交换数据库信息。
(5)Exchange
邻居路由器使用DBD数据包来相互发送它们的链路状态信息。
(6)Loading
在相互描述各自的链路状态数据库后,路由器用LSR数据包来请求更新完整的信息。当路由器收到一个LSR数据包后,它会用LSU进行回应,LSU数据包需要LSAck进行确认。
(7)Full Adiacency
完成了LSA的交换,路由器进入Full Adjacency状态。每台路由器都维护着一张邻居路由器列表。

OSPF协议配置

  • OSPF在有组播发送能力的链路层上以组播地址发送协议报文,既达到了广播的作用,又最大程度地减少了对其他网络设备的干扰。
  • OSPF可以划分区域,路由更新信息只在本区域内传播,不同域间不交换路由信息,以减少路由存储和维护的信息量。其中,区域是在逻辑上将路由器划分为不同的区域,不同的区域间通过ABR(边界路由器)来传递路由信息。划分区域给OSPF协议的处理带来了很大的变化。每一个网段必须属于一个区域,或者说每个运行OSPF协议的接口必须指明属于某一特定的区域,每个区域用区域号(Area ID)来标识。区域号是一个32位的无符号整数,范围0~4 294 967 295,其中区域ID为0(也可以表示为0.0.0.0)时表示的是主干区域。

OSPF基本配置命令说明

  1. router ospf:该命令用来启动OSPF进程,命令格式为“router ospf <Process ID>”,其中Process ID(PID)是OSPF的进程号,它的范围是 1~65 535,process ID可以在指定范围内随意设置,它只对本地路由器内部有意义,不同的路由器PID可以相同,也可以不同。
  2. network ip:该命令用来定义参与OSPF的子网地址,它的命令的格式为“network ip <子网号> <子网掩码的反码 > area <区城号>”,在单个IP地址参与OSPF时也使用此命令。
  3. range:该命令用于定义某一特定范围子网的聚合,它的命令格式为“area <区域号> range <子网地址> <子网掩码 >”。
  4. passive-interface:该命令用来配置OSPF的被动接口。
  5. distribute-list:该命令用来配置路由器的过滤功能。OSPF可以引入其他路由协议产生的路由,引入后,还可以作为自己的外部路由在整个自治系统内传播。OSPF可以引入的外部路由有多种,包括静态路由、RIP 等内部网关协议和BGP外部网关协议的路由信息。OSPF路由过滤功能与RIP完全相同,配置方法也基本一致。
  6. distance:该命令用来配置或改变OSPF的管理距离。

以下3个命令用来配置引入外部路由到OSPF时的参数
7. redistribute metric:该命令用来配置引入外部路由的花费值(metric)。metric值范围为0~16 777 214。
8. redistribute tag:该命令用来配置引入外部路由时默认的标记值。标记能告诉OSPF,外部路由来源于什么路由协议。标记值为一个32位的数值,范围为0~4 294 967 295。
9. redistribute connected metric-type:该命令用来设置引入外部路由时默认的外部路由类型,OSPF中外部路由类型有类型1和类型2两种,分别对应两种不同的路由花费值的计算方式,默认情况下使用类型2,可通过命令“redistribute connected metric-type”修改外部路由类型。

配置命令的使用

  1. 配置参与OSPF的网络地址

router-test ( config) #router ospf 10
router-test ( config-router) #network 192.168.1.0 0.0.0.255 area 0
router-test ( config-router) exit
router-test ( config) # exit
Router-test#

  1. 配置单个IP地址参与OSPF

router-test ( config )# router ospf 10
Router-test( config-router) network 192. 168. 1.1 0. 0. 0. 0 area 0
router-test ( config-router) #exit
router-test ( config) # exit
Router-test#

  1. 使用area range命令定义参与OSPF的子网地址。

router-test ( config )# router ospf 10
router-test ( config-router) # area 0 range 212. 37. 123. 0 255. 255. 255. 0
router-test ( config-router) #exit
router-test ( config) # exit
Router-test#

  1. 配置被动接口。

路由器的配置命令:
router-test ( config )# router ospf 10
router-test ( config-router) #passive-interface ethernet0
router-test ( config-router) #exit
router-test ( config) # exit
Router-test#
另外,第三层交换机的配置命令如下:
router-test( config )#router ospf 60
router-test( config-router)#passive-interface vlan10
router-test( config-router) #end
router-test#

  1. 配置路由过滤

router-test ( config )#access-list 12 deny any
router-test ( config )# router ospf 10
router-test ( config-router) #distribute-list 10 out serial 0
router-test ( config-router) #end (end 直接退回到用户特权模式)
Router-test#

  1. 配置管理距离

router-test ( config )# router ospf 10
router-test ( config-router) # distance 100
router-test ( config-router) #end
Router-test#

  1. 配置引入外部路由的花费值

router-test ( config )# router ospf 10
router-test ( config-router) # redistribute metric 200
router-test ( config-router) #end
Router-test#

  1. 配置引入外部路由时默认的标记值

router-test ( config )# router ospf 10
router-test ( config-router) # redistribute tag 100
router-test ( config-router) #end
Router-test#

  1. 配置引入外部路由时默认的外部路由类型。

router-test ( config )# router ospf 10
router-test ( config-router) #redistribute connected metric-type 1 subnets
router-test ( config-router) #end
Router-test#

配置案例



路由器R1的配置

Router>enable
Router#configure terminal
Router(config)#hostname R1
R1(config)#interface FastEthernet0/0
R1(config-if)#ip address 10.1.1.1 255.255.255.0
R1(config-if)#no shutdown
R1(config-if)#exit
R1(config)#interface FastEthernet0/1
R1(config-if)#ip address 12.12.12.1 255.255.255.0
R1(config-if)#no shutdown
R1(config-if)#exit
R1(config)#interface loopback 0
R1(config-if)#ip address 1.1.1.1 255.255.255.0
R1(config-if)#no shutdown
R1(config-if)#exit
R1(config)#router ospf 1
R1(config-router)#network 10.1.1.0 0.0.0.255 area 0
R1(config-router)#network 12.12.12.0 0.0.0.255 area 0

路由器R2的配置

Router>enable
Router#configure terminal
Router(config)#hostname R2
R2(config)#interface FastEthernet0/0
R2(config-if)#ip address 12.12.12.2 255.255.255.0
R2(config-if)#no shutdown
R2(config-if)#exit
R2(config)#interface FastEthernet0/1
R2(config-if)#ip address 23.23.23.2 255.255.255.0
R2(config-if)#no shutdown
R2(config-if)#exit
R2(config)#interface loopback 0
R2(config-if)#ip address 2.2.2.2 255.255.255.0
R2(config-if)#no shutdown
R2(config-if)#exit
R2(config)#router ospf 1
R2(config-router)#network 23.23.23.0 0.0.0.255 area 0
R2(config-router)#network 12.12.12.0 0.0.0.255 area 0

路由器R3的配置

Router>enable
Router#configure terminal
Router(config)#hostname R3
R3(config)#interface FastEthernet0/0
R3(config-if)#ip address 23.23.23.3 255.255.255.0
R3(config-if)#no shutdown
R3(config-if)#exit
R3(config)#interface FastEthernet0/1
R3(config-if)#ip address 192.168.1.3 255.255.255.0
R3(config-if)#no shutdown
R3(config-if)#exit
R3(config)#interface loopback 0
R3(config-if)#ip address 3.3.3.3 255.255.255.0
R3(config-if)#no shutdown
R3(config-if)#exit
R3(config)#router ospf 1
R3(config-router)#network 23.23.23.0 0.0.0.255 area 0
R3(config-router)#network 192.168.1.0 0.0.0.255 area 0

  • show ip route
    该命令用来查看路由表

  • show ip protocols
    该命令显示路由器上启动的IP路由协议,并对每种协议有用的信息给出一个汇总

  • show ip ospf
    该命令显示OSPF进程及其细节,如路由器运行SPF算法的次数

  • show ip ospf neighbor
    该命令用来查看OSPF邻居及其状态

  • show ip ospf interface f0/0
    该命令可以查看运行OSPF所有或特定接口的情况。如果该命令后面跟路由器的具体接口,那么只显示特定接口的信息,否则显示所有运行OSPF协议的接口信息。

  • show ip ospf database
    该命令用来查看OSPF链路状态数据库

理论习题

  1. OSPF是一种典型的链路状路由协议
  2. OSPF路由协议的管理距离是110
  3. OSPF路由协议利用开销为度量标准
  4. OSPF路由器利用最短路径优先算法,独立地计算出到达任意目的地的路由。
  5. 默认情况下,快速以太网的开销是1
  6. OSPF将网络划分为四种类型:BMA(广播多路访问型)、NBMA(非广播多路访问型)、Point-to-Point(点到点型)、点到多点
  7. Ethernet的Hello Interval为10秒,Dead Interval为40秒。
  8. NBMA网络的Hello Interval为30秒,Dead Interval为120秒
  9. OSPF路由器可以周期性发送Hello包来建立和维持邻接关系
  10. 当DR和BDR需要发送一个 LSU时,它会将更新发送给组播地址224.0.0.5
  11. OSPF接口优先级的范围是0~255。
  12. OSPF路由进程process-id必须指定范围在1~65535
  13. 网络区域为0的区域称为主于区域。
  14. show ip ospf neighbor用来查看邻居及其状态
  15. OSPF通过简单口令认证和信息摘要(MD5)认证两种方法启用认证功能
  16. OSPF路由器的类型分为内部路路由器、主干路由器、ABR、ASBR
  17. OSPF区域类型包括标准区域、主干区域、末节区域、完全末节区域、NSSA
  18. ABR区域负责把LSA Type 7转换成LSA Type 5
  19. OSPF 路由汇总的两种类型包括区城间路由汇总、外部路由汇总
  20. 如何确定路由器ID?

(1)如果在OSPF进程中指定了路由器ID,那么这是最优先的。
(2)如果没有在OSPF进程中指定路由器ID,那么选择IP地址最大的Loopback接口的IP地址为路由器ID;如果只有一个Loopback接口,那么路由器ID就是这个Loopback的地址
(3)如果没有Loopback接口,就选择最大的活动的物理接口的IP地址为路由器ID。

  1. OSPF的特性包括哪些?

(1)快速收敛;
(2)能够适应大型网络;
(3)能够正确处理错误路由信息;
(4)使用区域,能够减少单个路由器的CPU负担,构成结构化的网络;
(5)支持无类路由,完全支持超网、可变长子网等无类特性;
(6)支持多条路径等价负载均衡;
(7) 使用组播地址来进行信息互通,减少了非OSPF路由器的负载;
(8) 使用路由标签来表示来自外部区域的路由;
(9)支持简单口令和MD5认证;
(10)OSPF路由协议的管理距离是110;
(11)OSPF路由协议采用Cost作为度量标准

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/213038.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JS 云服务 Deno Depoly 宣布,推出定时运行功能 Deno Cron

如果需要定时执行 JS 脚本&#xff0c;以后多一个选项。 Web 构建日益复杂。编写现代软件包括利用云基础设施、剖析模板代码和管理复杂的配置&#xff0c;而开发人员只想专注于编写业务逻辑。 Deno 旨在通过删除配置和不必要的模板&#xff0c;从根本上简化 Web 开发。我们将无…

网络攻击(三)--攻击阶段

5. 威胁建模阶段 目标 了解威胁建模阶段的工作内容 工作内容 威胁建模主要使用在情报搜集阶段所获取到的信息&#xff0c;来标识出目标系统上可能存在的安全漏洞与弱点。 在进行威胁建模时&#xff0c;确定最为高效的攻击方法、所需要进一步获取到的信息&#xff0c;以及从…

【前端】CSS浮动(学习笔记)

一、浮动 1、传统网页布局 网页布局的本质&#xff1a;用 CSS 来摆放盒子&#xff0c;把盒子摆放到相应位置。 CSS 提供了三种传统布局方式&#xff08;盒子如何进行排列顺序&#xff09; 普通流&#xff08;标准流&#xff09;浮动定位 实际开发中&#xff0c;一个页面基…

Tomcat头上有个叉叉

问题原因&#xff1a; 这是因为它就是个空的tomcat,并没有导入项目运行 解决方案&#xff1a; war模式&#xff1a;发布模式&#xff0c;正式发布时用&#xff0c;将WEB工程以war包的形式上传到服务器 war exploded模式&#xff1a;开发时用&#xff0c;将WEB工程的文件夹直接…

【网络协议】LACP(Link Aggregation Control Protocol,链路聚合控制协议)

文章目录 LACP名词解释LACP工作原理互发LACPDU报文确定主动端确定活动链路链路切换 LACP和PAgP有什么区别&#xff1f;LACP与LAG的关系LACP模式更优于手动模式LACP模式对数据传输更加稳定和可靠LACP模式对聚合链路组的故障检测更加准确和有效 推荐阅读 LACP名词解释 LACP&…

智能外呼有什么好处?

智能外呼是一种自动化的电话营销方式&#xff0c;利用AI智能外呼技术和大量数据分析&#xff0c;帮助企业实现与客户之间的高效、精准、个性化的客户沟通&#xff0c;还可以在客户服务、市场营销和销售等方面带来助力。那么&#xff0c;智能外呼有什么好处呢&#xff1f; 1. 提…

通过生成模拟释放无限数据以实现机器人自动化学习

该工作推出RoboGen&#xff0c;这是一种生成机器人代理&#xff0c;可以通过生成模拟自动大规模学习各种机器人技能。 RoboGen 利用基础模型和生成模型的最新进展。该工作不直接使用或调整这些模型来产生策略或低级动作&#xff0c;而是提倡一种生成方案&#xff0c;该方案使用…

simulink MATLABFunction模块中实时函数调用函数的使用

样例 function Predyy matlabceshi(input, Time_s) input1 input; Time_s1 Time_s; Predyy ee(input1) mm(Time_s1); end 上面是主要部分&#xff0c;下面是被调用部分 function A ee(input1) A input1 * 100; end function B mm(Time_s1) B Time_s1 * 100; end 模型…

Linux(ubuntu)利用ffmpeg+qt设计rtsp_rtmp流媒体播放器(完全从0开始搭建环境进行开发)

一、前言 从0开始搭建Linux下Qt、ffmpeg开发环境。 从安装虚拟机开始、安装Linux(Ubuntu)系统、安装Qt开发环境、编译ffmpeg源码、配置ffmpeg环境、编写ffmpeg项目代码、完成项目开发。 完全从0开始搭建环境进行开发 完全从0开始搭建环境进行开发 完全从0开始搭建环境进行开…

公务员国考省考小白需知

文章目录&#xff1a; 一&#xff1a;分类 1.国考 2.省考 二&#xff1a;必备途径 1.相关网站 1.1 官网 1.1.1 必须知道的 1.1.2 比较好用的 1.1.3 事业单位的 1.2 机构 ​​1.3 时事 ​​1.4 资源 1.5 题库 1.6 真题 ​2.相关公主号 3.应用 4.群聊如何找 三…

【TwinCAT学习笔记 1】TwinCAT开发环境搭建

写在前面 作为技术开发人员&#xff0c;开启任何一项开发工作之前&#xff0c;首先都要搭建好开发环境&#xff0c;所谓磨刀不误砍材工&#xff0c;一定要有耐心&#xff0c;一次不行卸载再装。我曾遇到过一个学生&#xff0c;仅搭建环境就用了两周&#xff0c;这个过程也是一…

SSD数据在写入NAND之前为何要随机化?-part2

接part1介绍&#xff1a; 如何达到这个目的&#xff1f;业内常用的是对写入数据的数据进行随机化处理&#xff0c;这部分主要在SSD控制器中通过硬件实现。 上图b/c&#xff1a;在控制器芯片通过硬件方式实现随机化的读写流程&#xff0c;这个也是业内通常做法。随机化处理是在写…

【K8S in Action】服务:让客户端发现pod 并与之通信(1)

服务是一种为一组功能相同的 pod 提供单一不变的接入点的资源。当服务存在时&#xff0c;它的 IP 地址和端口不会改变。 客户端通过 IP 地址和端口号建立连接&#xff0c; 这些连接会被路由到提供该服务的任意一个 pod 上。 pod 是短暂&#xff0c;会删除增加&#xff0c;调度…

Android 13 Settings蓝牙列表卡顿问题排查及优化过程

一.背景 此问题是蓝牙列表界面息屏后再点击亮屏蓝牙界面卡住,划不动也不能返回,在人多的时候(附近开启的蓝牙设备过多的时候)会卡住大概四五秒才能滑动. 优化前效果见资源: 二.查找耗时点 根据Android Studio的Profiler工具进行排查,查找主线程时间线比较长的方法,如下:…

IDEA远程调试与JDWP调试端口RCE漏洞

文章目录 前言Docker远程调试Java调试原理远程调试实践 JDWP端口RCE调试端口探测调试端口利用 总结 前言 在对一些 Java CVE 漏洞的调试分析过程中&#xff0c;少不了需要搭建漏洞环境的场景&#xff0c;但是本地 IDEA 搭建的话既麻烦&#xff08;通过 pom.xml 导入各种漏洞组…

Zookeeper系统性学习-应用场景以及单机、集群安装

Zookeeper 是什么&#xff1f; Zookeeper 为分布式应用提供高效且可靠的分布式协调服务&#xff0c;提供了诸如统一命名服务、配置管理和分布式锁等分布式的基础服务。在解决分布式数据一致性方面&#xff0c;ZooKeeper 并没有直接采用 Paxos 算法&#xff0c;而是采用了名为 …

Android Studio Gradle下载慢解决方法

Android Studio Gradle下载慢解决方法 最近在练习模型部署&#xff0c;主要是在手机端部署&#xff0c;所以使用到了Android Studio&#xff0c;但是在创建项目的时候&#xff0c;一致在下载gradle&#xff0c;而且网速还很慢&#xff0c;不对&#xff0c;是极慢哪种&#xff0…

MQTT发布、订阅和取消订阅

在本文中&#xff0c;我们将深入了解MQTT发布、订阅和取消订阅相关的内容。如果你刚接触发布/订阅模型&#xff0c;建议阅读本专栏之前的文章。 什么是MQTT发布消息 在MQTT中&#xff0c;一个客户端连接到代理&#xff08;broker&#xff09;之后可以立即发布消息。这些消息依…

NetSuite预算管理实践

NetSuite预算相关的原生功能有两个&#xff1a; 一个是Expense Commitments And Budget Validation这个SuiteApp&#xff0c;我们在一年前写过一篇文章介绍过。它强调预算的过程控制&#xff0c;但由于功能很有限&#xff0c;没有实际用处。 NetSuite Budget功能包_netsuite …

Vue3 pinia的基本使用

pinia的使用跟vuex很像&#xff0c;去除了很多没用的api&#xff0c;写法有两种&#xff0c;一种老式的选项式api还有一种组合式api&#xff0c;用哪种根据自己喜好来&#xff0c;以下示例为组合式api 更多教程参考官网&#xff1a;pinia官网https://pinia.vuejs.org/zh/ 安装…