diff --git "a/\351\231\266\345\256\227\350\261\252/\347\254\224\350\256\260/20240427-OSPF\345\215\217\350\256\256.md" "b/\351\231\266\345\256\227\350\261\252/\347\254\224\350\256\260/20240427-OSPF\345\215\217\350\256\256.md" new file mode 100644 index 0000000000000000000000000000000000000000..bc6f2d3507d6d4bf4d824554203fdd55b34bb7b1 --- /dev/null +++ "b/\351\231\266\345\256\227\350\261\252/\347\254\224\350\256\260/20240427-OSPF\345\215\217\350\256\256.md" @@ -0,0 +1,38 @@ +# OSPF协议 + +#### OSPF(Open Shortest Path First)是一种广泛使用的内部网关协议(IGP)动态路由协议,它基于链路状态路由算法,适用于单个自治系统(AS)内部的路由选择 + +### OSPF的主要特点包括 + +- 支持无类域间路由(CIDR) +- 采用分层区域划分的设计 +- 快速收敛 +- 支持多路径负载均衡 +- 提供相当丰富的路由选择规则 +- 扩展性强 + +### OSPF工作原理 + +- 发现邻居 +OSPF路由器通过发送Hello报文在同一网段上发现邻居路由器。 + +- 交换链路状态信息 +邻居关系建立后,路由器通过洪泛LSA(链路状态通告)报文向全网络通告自身链路状态。 + +- 构建链路状态数据库 +每台路由器根据收到的LSA报文,构建一个描述全网络拓扑的链路状态数据库。 + +- 计算最短路径树 +利用Dijkstra最短路径优先算法,计算到所有网络的最短路径树。 + +- 生成路由表 +根据最短路径树生成IP路由表,指导数据包转发。 + +### 相关代码 + +```js +route ospf 1 // 启用ospf协议 +network IP 虚拟掩码 area 0 //启用IP网段 +``` +## 怎么样实现两段不同协议的网段的互联? +#### 实现两个不同路由协议网段的互联,需要使用路由器上的路由重分发(route redistribution)功能。路由重分发的作用是将一种路由协议学习到的路由通告给另一种路由协议,从而实现不同协议之间的路由互通。 \ No newline at end of file diff --git "a/\351\231\266\345\256\227\350\261\252/\347\273\203\344\271\240/ospf\345\215\217\350\256\256.pkt" "b/\351\231\266\345\256\227\350\261\252/\347\273\203\344\271\240/ospf\345\215\217\350\256\256.pkt" new file mode 100644 index 0000000000000000000000000000000000000000..f23d9e3b2c2142fee72a5913dfff830135234d20 Binary files /dev/null and "b/\351\231\266\345\256\227\350\261\252/\347\273\203\344\271\240/ospf\345\215\217\350\256\256.pkt" differ