在同一个区域内所有路由器的LSDB(Link State DataBase,链路状态数据库)相同

不考虑区域间和不考虑引入的情况下, 每一台开启OSPF的设备设备会产生一个一类LSA, 一个广播网络会存在一个二类LSA, PtoP网络不需要LSA.(这里做简单了解, 下面会详细展开)
所以上图拓扑共有7(5+2)条LSA.

Version: 当前OSPF的版本号;
(message) Type: 报文类型: 1-hello, 2-dd(dbd), 3-lsr, 4-lsu, 5-lsack;
Packet Length: OSPF报文长度;
Router ID(source ospf router): 生成该报文设备(路由器、三层交换机或防火墙)的Router Id;
areaID: 表示该报文需要被通告到的区域;
Checksum: 校验字段, 对整个ospf报文进行校验, 确定报文完整性;
auth-type: 认证类型: 0-不认证, 1-简单明文认证(simple), 2-加密认证(md5);
authentication data: 具体认证信息;
具体的hello报文、dd报文内容;
在wireshark中查看:

这是一条支持ospfv2的hello报文, 长度为52byte, 源设备发出接口ip地址为10.0.3.3, 在区域0被通告, 校验码为0xec86, 认证方式为无认证, 具体认证信息为空.

注意: 根据ospf报文头部和hello报文里的内容, 判断一下ospf邻居建立过程中都对那些信息进行检查.
知识点拾遗: hello报文间隔10s发送一次, 存活时间为40s.
细说一下options字段:

功能: 用于表示ospf某些特征, 比如当前ospf设备是否为特殊区域设备, ospf的特殊防环机制
| 字段名称 | 具体含义 |
|---|---|
| DN | 用于在MPLS VPN场景下的防环 |
| O | 当前ospf开启了不透明LSA(九类 十类 十一类LSA), 常见使用场景: 优雅重启、SR--SegmentRouting |
| DC | 表示按需链路特性(不再周期性发送hello报文, 邻居不老化) |
| EA | 设备支持八类LSA |
| N/P | 只存在在hello报文中使用(DD报文也存在), 1-支持七类LSA, 0-不支持七类LSA; |
| N/P | 只存在LSA中使用, 1-需要进行七类LSA转换成五类LSA, 0-不允许七类LSA转五类LSA |
| MC | 表示是否支持组播数据转发 |
| E | 表示设备是否支持五类LSA功能. 1-所有五类LSA都会有该字段, 非末端区域(Stub区域--ospf的特殊区域, 我下篇博客会提到)会有该标识; 0-该设备的接口具有识别和收发五类LSA功能 |
| MT | 表示ospf的多拓扑特性 |
是不是看的一头雾水? 这里可以先作简单理解, 之后结合之后的内容来记忆.
但是可以先看看几种类型的LSA.
DD报文用于描述LSDB,该报文中携带的是LSDB中LSA的头部数据(也就是并非完整的LSA内容,仅仅是头部数据)

思考:
回顾Master/Slave(主从路由器)选举:
根据Router Id判断: Router ID越大越优先
为什么要决定主从: 是ospf的一种可靠性机制.
DD报文的作用: 用于选择主从路由器, 然后交互设备之间的LSA目录, 最后决定要更新那些LSA信息.
分析:
第一次交互(双方互发dd报文)之后, 则可以确定主从设备, 主从设备会对交互报文的序列号(Seq)进行确认, 序列号以主设备序列号为主, 从设备使用主设备的序列号进行报文发送(为了确保数据传输没有发生丢失, 保证可靠性, 丢失则进行重传).
注意: 这里最开始的两个dd报文是没有任何LSA信息的, 只是为了确认主从关系.
选出主从路由器之后, 则可以开始LSA头部信息交互:
此时主设备发送的dd报文依旧按照第一个dd报文处理, 即I=1 M=1 MS=1 Seq=628: 主设备序列号(没有LSA);
从设备收到该DD报文, 然后进行回复, I=0 M=0(此时M取决于该dd报文是否能将全部LSA头部携带) MS=0 Seq=628(此时会携带LSA头部信息);
之后主设备收到DD回复, 将主机的LSA头部信息放入DD报文进行发送, I=0 M=0(此时M取决于该dd报文是否能将全部LSA头部携带) MS=1 Seq=629;
之后从设备收到DD回复, 此时从设备已经没有LSA需要发送了,所以只是进行简单回复, I=0 M=0 MS=0 Seq=629(没有LSA头部信息);
问: 一次ospf邻居建立中最少会发送几次dd报文?
答: 6次.(如果你的回答是4, 那么你漏掉了最开始的用来确认主从关系的dd报文)
作用: 根据前面交互的DD报文, 决定需要请求那些LSA详情.

用于回复LSR请求,向对方发送详细的LSA信息.

用于回复LSU报文更新, 每个LSA头部长度为20byte.

LSA: 链路状态信息, 用来描述网络拓扑情况.


| 类型 | 名称 | 描述 |
|---|---|---|
| 1 | 路由器LSA(Router LSA) | 每个设备都会产生, 描述链路设备的状态和开销, 该LSA只能在接口所属的区域内泛洪. |
| 2 | 网络LSA(Network LSA) | 由DR产生, 描述该DR接入的MA网络中所有与之形成邻接关系的路由器, 以及DR自己, 该LSA只能在接口所属区域内泛洪. |
| 3 | 网络汇总LSA(Network Summary LSA) | 又ABR产生, 用于描述某个网段内的路由, 该类LSA主要用于区域间路由的传递. |
| 4 | ASBR汇总LSA(ASBR Summary LSA) | 由ABR产生, 描述到ASBR的路由, 通告给除ASBR所在区域的其他相关区域. |
| 5 | AS外部LSA(AS External LSA) | 由ASBR产生, 用于描述到达ospf域外的路由. |
| 7 | 非完全末梢区LSA(NSSA LSA) | 由ASBR产生, 用于描述到达OSPF域外的路由, NSSA LSA与外部LSA功能类似, 但是泛洪范围不同, NSSA LSA只能在始发的NSSA内泛洪, 并且不能直接进入Area0, NSSA的ASBR会将7类LSA转换为5类LSA进入Area0. |
一个一类LSA可以携带多个链路信息, 一台ospf设备通过一个LSA描述自己的链路.

LinkState ID(头部信息): 在一类LSA里面, LinkState ID表示的含义和Advertising Router一模一样, 即表示该LSA始发产生网络的Router ID信息;
Seq: 序列号;
checksum: 校验和;
Length: LSA长度;
Flags:
V(Virtual Link): 1-表示始发路由器是虚链路的某一个端点;
E(External): 1-表示产生1该LSA的设备为ASBR设备;
B(Border): 1-表示产生1该LSA的设备为ABR设备;
Number of Links: 一个LSA描述的设备链路数量, 一台设备会产生一个一类LSA,一个一类LSA里面会有非常多的链路信息.
(下面表格是重点)因为一台设备肯顶有多条链路是属于ospf的, 每一条链路都会通过以下三个内容进行呈现:
| Link Type | 1 | 2 | 3 | 4 |
|---|---|---|---|---|
| 7. Link Type含义 | P2P(点到点)网络 | Transit(transnet)广播网络 | Stubnet末梢网络 | virtual(VLink)虚链路 |
| 8. Link ID | 邻居路由器的router ID | DR路由器的接口IP地址 | 网段信息(IP地址) | 邻居路由器的router ID |
| 9. Link Data | 和网络相连的始发路由器接口的ip地址 | 和网络相连的始发路由器接口的ip地址 | 子网掩码 | 始发路由器的虚链路接口IP地址 |
TOS: 目前在ospfv2中暂不使用
Metric: 链路开销(cost)值, 接口cost值 = (10^8)/接口带宽(100M)=1
P2P网络: 表示串行链路;
Transit(transnet)广播网络: 表示至少两台设备连接在一起的广播网络;
Stubent末梢网络: 表示至少两台设备连接在一起的广播网络, 该链路不存在邻居信息,比如环回口. 就算配置环回接口按照24位掩码配置的,但是OSPF仍然会把环回接口按照32位主机路由进行通告更新,除非把环回接口的链路类型改成点对点;
虚链路(virtual): 当出现非骨干区域无法直接连接到骨干区域时, 可以在某个非骨干区域设置虚链路, 形成跨非骨干区域连接;
注意: P2P网络中,接口IP信息通过type 1来表述, 网络掩码信息会通过type 3表述, 需要将两部分结合才能推断出那部分网络的具体拓扑图.

tpye为1(PTP), 这是一个p2p网络中的LSA, 邻居路由器的Router ID为10.0.3.3, 宣告该LSA设备的接口IP为10.0.35.5, TOS不管他, 链路开销值为48.

tpye为2(transit), 这是一个广播网络中的LSA, DR接口IP为10.1.234.3, 宣告该LSA设备的接口IP为为10.0.234.3, TOS不管他, 链路开销值为1.

tpye为3(Stubnet), 这是一个末梢网络中的LSA, 网段IP为10.1.234.0, 该网段子网掩码为255.255.255.0, TOS不管他, 链路开销值为1.
一个二类LSA能携带一个网段的掩码信息和多个邻居信息.
P2P网络中根据一类LSA可以判断整个网络结构. 但广播网络中只能简单判断结构, 需要二类LSA协助.
结合到二类LSA, 可以判断完全的广播网络结构
思考: 在抓包过程中, 会发现某些LSU报文中并不是自己的内容, 为什么?
解答: 所有设备将LSA泛洪给DR, 之后由DR进行广播网络的LSDB同步, 所以DR会发送不属于自己的LSU.

ospf网络中每一台设备都会以自己为根节点, 计算SPF算法
以自己为根节点, 查看自己产生的一类LSA, 根据一类LSA信息, 可以判断邻居有哪些, 比如DR、设备, 包括当前设备的路由信息有哪些.
以上信息罗列出来后, 根据最短开销原则, 选择最优的下一跳进行下一步计算, 其他补上最优的信息做一个保留.
根据下一跳:
如果是DR, 则查看DR产生的二类LSA(当前DR连接着哪些设备、DR连接到点的这些设备的接口开销值在SPF算法中看做0[原本是1]);
如果是设备, 则查看该设备产生的一类LSA.
SPF计算完成后, 会把计算过程中的路由信息计入到OSPF路由表
题解示例:







ospf路由表查看:
display ospf routing
ospf路由表为ospf算出的最优路由表, 但并不是实际使用的路由表
全局路由表查看:
display ip routing-table
全局路由表才是实际使用的路由表
注意: ospf路由表的最优路由, 并不一定加入到全局路由表
一类二类LSA只会在区域内泛洪, 通过区域内划分在一定程度上降低网络设备内存和cpu损耗.
划分区域后, 路由器可以分为两种角色:
注: 官方定义的ABR: 该设备至少有一个接口连接着骨干区域, 有其他接口连接着其他常规区域., 但平时口述通常会将连接不同区域的区域间设备称为ABR.
到这里可能你会有一个疑问, 多区域ospf的非骨干区域不是只能和骨干区域连接吗? 这就涉及到上面小小提过一嘴的虚链路,这个会在下面详细展开聊.
一条三类LSA只能描述一条网段路由信息, 一个区域内有多个网段就需要发送多个三类LSA.
Link State ID(头部信息): 表示通告的网段信息(网段ip)
network mask: 表示通告网段的子网掩码信息;
通过以上两条信息, 就能知道三类LSA表示的路由信息.
metric: 表示当前生成三类LSA设备去往目标网段的开销值;
Adv router: ABR的RouterID.

R4设备在Area1里如何向Area2传递路由信息?
R4设备会根据链路信息, 生成一类/二类LSA, 传递的信息称之为链路状态信息而非路由信息;
R2设备作为ABR从area1收到R4的LSA, 先把LSA做一次SPF算法后得到最短路径和路由信息, 由于R2为ABR且连接Area0, 所以R2会将路由信息转换为三类LSA(Network Summary LSA)再传递给Area0;
R4设备传递一类/二类LSA给R2之后, R2计算SPF计算路由, 就可以知道R2去往目标网段的开销值信息.
计算完成路由信息, 需要生成三类LSA:
Area0的设备根据三类LSA可以生成去往R4方向的路由信息;
R3设备收到三类LSA也是先计算路由信息, 计算过程如下:
该三类LSA的路由信息先获取(192.168.1.0/24);
当前设备去往ABR的开销值是多少(2);
因为三类LSA的Adv Router是ABR, 所以当前设备根据Adv Router和本区域的一类二类LSA结合, 最后计算出来去往该ABR的开销值信息;
区域内的开销值计算完成之后, 将区域内开销值和三类LSA里面的开销值累加, 就得到了当前设备去往目标网段的开销值(3).
R3设备作为ABR从area0学习到三类LSA, 先将三类LSA计算为路由信息, 再将该路由信息重新生成为三类LSA并传递给Area2.
现在R3去往目标网段开销值为3, R3生成d三类LSA:
最后R5计算出R4-R5之间的路由信息.
区域间路由计算结果验证

假设非骨干区域之间可以互相传递信息

区域间防环机制: 非骨干区域之间不能直接传递LSA信息, 只能通过骨干区间中转;
三类LSA防环机制(水平分割): ABR不会将到达某个区域内网段路由的三类LSA再注入回该区域;
原理:
ABR从非骨干区域收到的三类LSA, 不进行路由信息计算
ospf要求骨干区域与非骨干区域必须是连续的, 但是不要求物理上连续 ,可以使用虚连接使骨干区域和非骨干区域在逻辑上连续. 虚连接可以在任意两个ABR上建立, 但是要求这两个ABR都有端口连接到相同的非骨干区域.

虚连接可以在osfp骨干区域断开的情况下, 进行骨干区域虚拟连接, 但是这种方式会打破了ospf的一些防环机制, 会产生环路, 只能作为临时解决方案.
配置命令为:
ospf ospf-process
area area-id
vlink-peer route-id
查看虚链路情况:
display ospf vlink
如果建立虚连接的两台设备有多个物理接口可以进行vlink建立, 则此时会选择IP地址较大的端口进行数据传输, 因为link-peer命令是指定RID, 没有指定IP地址, 因此设备需要自行选择IP地址较大的端口进行两端的通信.
这里Area 2要和Area 1通信

过程:
至此, area1学习到了area2里面的路由信息, 实现了两个非骨干区域通过虚链路(area2-->R4-->R2-(R3)->R1-->area1)进行数据通信.
虚链路带来的环路: R1访问R5的时候: R1-R2-R3, 抓包会看到大量ICMP报文, TTL值会一直减少至0后被丢弃
有时间去看看虚链路环路实验
最后再强调一遍, 虚链路是对于问题网络规划的一种临时解决方案, 现实出现这种情况还是要对网络进行重新规划部署, 使非骨干区域都与骨干区域物理上相连.
网络中存在部分链路未开启ospf协议如:

将其他路由协议的路由信息转换成当前路由协议可以识别的信息(五类LSA)然后进行传递.

进行了引入操作的设备, 在ospf里面称之为ASBR(AS Boundary Router, 自治系统边界路由器), ASBR将外部路由信息以AS-external LSA(五类LSA)的形式再ospf网络内泛洪.
配置命令
ospf ospf-id
import-route xxx
xxx: static rip isis bgp direct...
一个五类LSA只能携带一个路由信息
Link State ID(头部信息): 通告的网段信息;
network mask: 掩码信息;
E-type: 外部路由使用的度量(开销)类型, ospf将外部路由开销值类型分为两个type:
type 1: 需要进行开销值累加(总开销值=内部开销值+外部开销值);
type 2: 固定开销值为AS外部开销值.
metric: 表示外部路由的开销值(ASBR去往外部路由的开销值)
Forwarding Address: 转发地址, 表示去往目标网段的下一跳转发地址(大部分情况下为0.0.0.0)
External Route Tag: 标记
五类LSA的含义: 大部分情况下, 表示有设备希望去往该外部路由的网段, 则将设备信息发送给ASBR.
存在问题:
跨区域之后ASBR的Router ID信息无法得知;
五类LSA传递信息全程不改变直接传递, 计算路由又是根据Router ID计算, 所以与ASBR不在同区域无法计算路由.
因此ospf在五类LSA之上, 增加了一个四类LSA, 用于辅助计算去往ASBR的路径. ABR在传递五类LSA的同时会生成一个四类LSA.
ABR在传递五类LSA的同时会生成一个四类LSA.
包含信息:
在五类LSA中E-type为1时, 进行路由计算. (type 2时不用计算, 开销固定为外部开销值)
根据以上信息, 就可以知道当前设备学到的路由信息和总开销值(内部开销值+外部开销值).

细说: 收到五类LSA的设备, 首先计算当前网络内去往ASBR的内部开销值, 然后看一下五类LSA的信息(开销值, 开销值类型), 如果开销类型为2(固定开销值)直接以五类LSA的metric值进行计算, 如果开销类型为1(累加), 则内部开销+五类开销;

当ospf进行外部路由引入时, 发现邻居的IP地址和当前收到的外部路由下一跳地址是同一个网段.如上图所示, RTB引入外部路由192.168.3.0/24, 通过五类LSA发送给RTA学习, 但RTA、RTB、RTC相连的端口处于同一个网段(中间存在二层设备, 图里没画), RTB去往RTC的下一跳是10.1.123.3, 此时如果没有设置FA地址, 则RTB发送给RTA的五类LSA会告知RTA要前往192.168.3.0/24的下一跳是RTB, 但是从拓扑结构上来看(不考虑开销差异)RTA->RTB->RTC是次优路径.
此时RTB设备为了避免次优路径, 于是在五类LSA的FA地址(Forwarding Address)字段写入了RTC的IP地址, 告诉RTA可以直接将数据转发给RTC来前往外部路由.
注: 路由传递才需要考虑协议, 数据转发是根据已经生成好的路由信息转发, 无需考虑协议类别问题.
FA被写入的基本条件:
一类二类生成的ospf路由称为区域内路由
三类生成的ospf路由称为区域间路由
五类(五类+四类)生成的路由称为外部路由(根据开销值类型(type)可以细分为两类: 一类外部路由、二类外部路由)
优先级: 区域内>区域间>一类外部>二类外部

OSPF多区域设置的时候,通过报文如何判断ABR设备?
----一类LSA的Flag字段
P2P网络和广播网络对于OSPF的差别?
----(是否需要选举DR)
----LSA里面的Link Type不一样
----P2P只需要一类LSA、广播需要一类+二类
一个网络里面只有一个区域10,是否可以正常工作?
----如果整个网络里面只有单区域,则无论该区域是什么编号(不管是不是骨干区域),都可以正常工作。
----如果该网络中出现多个不同区域(这些区域间也需要通信),那么必须要村子骨干区域,实现非骨干区域之间的互访。
在一个P2P网络里面,OSPF已经进入稳定邻居状态(FULL),拓扑稳定无变动运行了7小时之后,期间网络中交互哪些OSPF报文?
----此时OSPF邻接关系建立完成,且是FULL(拓扑稳定无变动)
----Hello报文(Hello默认10秒发送一次)
----LSU(OSPF的周期性更新1800秒)
----LSAck(对收到的LSU做确认)
常用的查看ospf lsdb中几类LSA报文的命令
display ospf lsdb [router/network/summary/asbr/ase] [router-id/self]
个人7k字纯手打学习随笔, 如有错字纰漏, 还望指正.
?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------
@作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors 1、什么是behaviors 2、behaviors的工作方式 3、创建behavior 4、导入并使用behavior 5、behavior中所有可用的节点 6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors 1、什么是behaviorsbehaviors是小程序中,用于实现
目录H2数据库入门以及实际开发时的使用1.H2数据库的初识1.1H2数据库介绍1.2为什么要使用嵌入式数据库?1.3嵌入式数据库对比1.3.1性能对比1.4技术选型思考2.H2数据库实战2.1H2数据库下载搭建以及部署2.1.1H2数据库的下载2.1.2数据库启动2.1.2.1windows系统可以在bin目录下执行h2.bat2.1.2.2同理可以通过cmd直接使用命令进行启动:2.1.2.3启动后控制台页面:2.1.3spring整合H2数据库2.1.3.1引入依赖文件2.1.4数据库通过file模式实际保存数据的位置2.2H2数据库操作2.2.1Mysql兼容模式2.2.2Mysql模式
最近在工作中,看到一些新手测试同学,对接口测试存在很多疑问,甚至包括一些从事软件测试3,5年的同学,在聊到接口时,也是一知半解;今天借着这个机会,对接口测试做个实战教学,顺便总结一下经验,分享给大家。计划拆分成4个模块跟大家做一个分享,(接口测试、接口基础知识、接口自动化、接口进阶)感兴趣的小伙伴记得关注,希望对你的日常工作和求职面试,带来一些帮助。注:文章较长有5000多字,希望小伙伴们认真看完,当然有些内容对小白同学不是太友好,如果你需要详细了解其中的一些概念或者名词,请在文章之后留言,后续我将针对大家的疑问,整理输出一些大家感兴趣的文章。随着开发模式的迭代更新,前后端分离已不是新的概念,
目录FIFO一.自定义同步FIFO1.1代码设计1.2Testbech1.3行为仿真***学习位宽计算函数$clog2()***$clog2()系统函数使用,可以不关注***分布式资源或者BLOCKBRAM二.异步FIFO2.1在FIFO判满的时候有两种方式:2.2异步FIFO为什么要使用格雷码2.2.1介绍格雷码2.2.2格雷码在异步FIFO中的应用2.2.2格雷码判满2.4二进制与格雷码之间的转换2.4.1二进制码转换为格雷码的方法2.4.2格雷码转换为二进制码的方法2.3实现框图2.5实现及仿真代码2.6仿真图验证2.7结论FIFO 这篇更多的是记录FIFO学习,参考了众多优秀的文章,
运行有问题或需要源码请点赞关注收藏后评论区留言一、利用ContentResolver读写联系人在实际开发中,普通App很少会开放数据接口给其他应用访问。内容组件能够派上用场的情况往往是App想要访问系统应用的通讯数据,比如查看联系人,短信,通话记录等等,以及对这些通讯数据及逆行增删改查。首先要给AndroidMaifest.xml中添加响应的权限配置 下面是往手机通讯录添加联系人信息的例子效果如下分成三个步骤先查出联系人的基本信息,然后查询联系人号码,再查询联系人邮箱代码 ContactAddActivity类packagecom.example.chapter07;importandroid
为什么需要服务网关传统的单体架构中只需要开放一个服务给客户端调用,但是微服务架构中是将一个系统拆分成多个微服务,如果没有网关,客户端只能在本地记录每个微服务的调用地址,当需要调用的微服务数量很多时,它需要了解每个服务的接口,这个工作量很大。有了网关之后,网关作为系统的唯一流量入口,封装内部系统的架构,所有请求都先经过网关,由网关将请求路由到合适的微服务。使用网关的好处1)简化客户端的工作。网关将微服务封装起来后,客户端只需同网关交互,而不必调用各个不同服务;(2)降低函数间的耦合度。一旦服务接口修改,只需修改网关的路由策略,不必修改每个调用该函数的客户端,从而减少了程序间的耦合性(3)解放开发
📝学技术、更要掌握学习的方法,一起学习,让进步发生👩🏻作者:一只IT攻城狮。💐学习建议:1、养成习惯,学习java的任何一个技术,都可以先去官网先看看,更准确、更专业。💐学习建议:2、然后记住每个技术最关键的特性(通常一句话或者几个字),从主线入手,由浅入深学习。❤️《SpringCloud入门实战系列》解锁SpringCloud主流组件入门应用及关键特性。带你了解SpringCloud主流组件,是如何一战解决微服务诸多难题的。项目demo:源码地址👉🏻SpringCloud入门实战系列不迷路👈🏻:SpringCloud入门实战(一)什么是SpringCloud?SpringCloud入门实战
我发现python的细节自动完成很好RubyonRails有类似的方法描述吗? 最佳答案 有篇不错的文章"UsingVIMasacompleteRubyonRailsIDE"其中引用rails.vim.这似乎是RailsforVIM的实际标准。(不过,我还没有使用过它,但很快就会尝试。)这允许你做很多与Rails相关的任务,但对自动完成没有帮助。还有一篇"RubyAutocompleteinVim"(遗憾的是不再可用)这就是您要搜索的内容。我不知道,理解Rails的所有插件魔法和元编程的东西是否足够聪明。它至少在vim的配置中提到了
文章目录实验要求实验思路IP地址规划路由实验配置R1上配置R2上配置R3上配置R4上配置R5上配置R6上配置R7上配置R8上配置R9上配置R10上配置R11上配置R12上配置实验测试R10pingR4的环回R10pingR12的环回R10pingR1实验要求R4为ISP,其只能配置IP地址;R4与其他所有直连设备间均使用公有IP;R3-R5/6/7为MGRE环境,R3为中心站点;整个OSPF环境IP基于172.16.0.0/16划分;所有设备均可访问R4的环回;减少LSA的更新量,加快收敛,保障更新安全;全网可达实验思路IP地址规划公网IP随便配置,这里我R3-R4的网段为34.1.1.0/2