1. 项目概述当OSPF进程在神州设备上“分家”时搞网络的朋友对OSPF肯定不陌生作为最主流的动态路由协议之一它几乎是每个网络工程师的必修课。但常规的OSPF配置比如单进程、多区域大家可能都玩得挺溜了。今天咱们聊一个稍微进阶一点但在实际网络割接、多业务隔离或网络融合场景下又特别实用的技术点在同一台神州路由器或交换机上配置多个不同的OSPF进程并让它们之间能够交换路由信息。这个场景听起来有点“精神分裂”——一台设备自己跟自己跑两个OSPF进程还要让它们互通。但这恰恰是解决某些网络设计难题的优雅方案。想象一下你公司收购了另一家公司两边的网络都跑OSPF但自治系统号、区域设计甚至路由策略都完全不同短期内无法统一。最简单的办法可能就是在边界设备上同时运行两个OSPF进程一个对接原网络一个对接新网络然后在这台设备上完成路由的相互引入。再比如你需要在一台核心设备上严格隔离生产业务流量和办公业务流量为它们分配不同的OSPF进程也是常见的做法。所以“神州设备不同OSPF进程之间互连”这个项目核心就是利用神州数码DCN网络设备的路由重分发Redistribution功能实现同一设备上多个OSPF路由进程域之间的路由信息交换。这不仅仅是敲几条命令更涉及到对OSPF进程独立性的理解、路由重分发原理的掌握以及如何避免引入路由环路、次优路径等“坑”。接下来我就结合自己的实操经验把这套玩法的设计思路、配置细节和避坑指南掰开揉碎了讲清楚。2. 核心设计思路与原理拆解在动手配置之前我们必须先搞清楚几个关键问题为什么需要多个OSPF进程它们和OSPF多区域有什么区别路由是怎么在两个进程间“流动”的2.1 多OSPF进程 vs. 多OSPF区域这是最容易混淆的概念。很多人会问我搞多个区域Area不行吗为什么非要弄多个进程OSPF多区域属于同一个OSPF进程Process。所有区域共享同一个进程号骨干区域Area 0是必须的用于连接其他非骨干区域。区域间的路由通过ABR区域边界路由器以3类LSASummary LSA传递。它的主要目的是分层设计减少LSDB的规模优化SPF计算。OSPF多进程是完全独立的OSPF实例。每个进程有自己的进程号比如OSPF 1和OSPF 10各自维护独立的邻居关系、独立的LSDB链路状态数据库、独立执行SPF计算。进程之间默认是完全隔离的就像两个不同的路由协议比如OSPF和RIP一样彼此不知道对方的路由。简单类比多区域像一个公司里的不同部门市场部、技术部都在同一个公司体系一个OSPF进程下运作通过管理层Area 0协调。而多进程则像是两家独立的公司各自有完整的组织架构它们之间如果需要合作就需要建立正式的商务合作渠道路由重分发。因此选择多进程的场景通常是网络隔离与策略控制需要绝对的路由隔离例如隔离测试网络和生产网络。网络合并与迁移在并购或网络升级时临时并存两套OSPF网络。与厂商设备对接的特殊性有时为了规避不同厂商OSPF实现细节的差异采用多进程作为“缓冲”。2.2 路由重分发进程互连的桥梁既然多个OSPF进程彼此独立要让它们互通就必须引入“翻译官”——路由重分发。重分发的基本原理是将从一个路由协议或进程学习到的路由转换成另一种路由协议或进程可以理解的形式并注入进去。在神州设备上这个过程主要涉及两个方向的操作将OSPF进程A的路由重分发进入OSPF进程B。将OSPF进程B的路由重分发进入OSPF进程A。这听起来像是“左右互搏”但关键在于控制。重分发不是简单的复制粘贴它允许你精细地控制引入哪些路由可以通过ACL访问控制列表、前缀列表Prefix-list或路由映射Route-map过滤只引入需要的路由。路由的度量值Cost可以为所有被重分发的路由设置一个统一的种子度量值Seed Metric这个值在OSPF中表现为Type 2 External路由的代价。路由的类型重分发进OSPF的路由默认是Type 2 External (E2)路由。E2路由的特点是其度量值在OSPF域内传播时保持不变。你也可以手动指定为Type 1 External (E1)E1路由的度量值会在传播过程中累加沿途链路的开销。通常如果你希望OSPF域内的路由器能根据内部拓扑选择到外部路由的最佳出口就用E1如果希望外部路由的代价固定就用E2。注意路由重分发是一个强大的工具但也是一个危险的来源。如果配置不当极易引起路由环路、次优路径甚至路由震荡。最常见的环路场景是从进程A学到路由重分发到进程B又从进程B学回同一条路由可能度量值更优再被重分发回进程A形成环路。因此配合使用路由标签Tag和过滤策略是重中之重。3. 实验环境搭建与基础配置光说不练假把式我们用一个典型的实验拓扑来演示。这个拓扑模拟了一个简单的网络合并场景。3.1 实验拓扑与IP规划假设我们有三台神州三层交换机或路由器分别命名为DCR-1 DCR-2 DCR-3。DCR-1 和 DCR-2 属于“原公司网络”运行 OSPF 进程 1。DCR-2 和 DCR-3 属于“新合并网络”运行 OSPF 进程 10。DCR-2 作为边界设备同时运行 OSPF 进程 1 和 进程 10并负责两者间的路由互连。设备接口与IP地址规划设备接口IP地址/掩码描述DCR-1G1/0/110.1.12.1/24连接DCR-2 (OSPF 1)Loopback01.1.1.1/32模拟原网络业务网段DCR-2G1/0/110.1.12.2/24连接DCR-1 (OSPF 1)G1/0/210.1.23.2/24连接DCR-3 (OSPF 10)Loopback02.2.2.2/32边界设备管理地址DCR-3G1/0/110.1.23.3/24连接DCR-2 (OSPF 10)Loopback03.3.3.3/32模拟新网络业务网段目标实现全网互通即 DCR-1 能 Ping 通 3.3.3.3 DCR-3 能 Ping 通 1.1.1.1。3.2 基础OSPF进程配置首先我们在三台设备上配置基础的OSPF确保两个独立的网络内部是通的。在DCR-1上配置仅OSPF进程1system-view sysname DCR-1 interface GigabitEthernet 1/0/1 ip address 10.1.12.1 255.255.255.0 quit interface LoopBack 0 ip address 1.1.1.1 255.255.255.255 quit ospf 1 router-id 1.1.1.1 area 0 network 10.1.12.0 0.0.0.255 network 1.1.1.1 0.0.0.0这里我们指定了Router-ID为1.1.1.1并将直连接口和环回口宣告进OSPF进程1的骨干区域0。在DCR-3上配置仅OSPF进程10system-view sysname DCR-3 interface GigabitEthernet 1/0/1 ip address 10.1.23.3 255.255.255.0 quit interface LoopBack 0 ip address 3.3.3.3 255.255.255.255 quit ospf 10 router-id 3.3.3.3 area 0 network 10.1.23.0 0.0.0.255 network 3.3.3.3 0.0.0.0DCR-3的配置与DCR-1类似只是进程号是10Router-ID是3.3.3.3。在DCR-2上配置双OSPF进程这是关键配置。DCR-2需要创建两个OSPF进程并将对应的接口宣告到各自的进程中。system-view sysname DCR-2 ! 配置接口IP interface GigabitEthernet 1/0/1 ip address 10.1.12.2 255.255.255.0 quit interface GigabitEthernet 1/0/2 ip address 10.1.23.2 255.255.255.0 quit interface LoopBack 0 ip address 2.2.2.2 255.255.255.255 quit ! 配置OSPF进程1与DCR-1通信 ospf 1 router-id 2.2.2.2 area 0 network 10.1.12.0 0.0.0.255 ! 注意Loopback0通常不宣告进OSPF进程除非需要被其他设备路由到。这里我们先不宣告。 ! 配置OSPF进程10与DCR-3通信 ospf 10 router-id 22.22.22.22 ! 注意同一设备不同进程的Router-ID必须不同 area 0 network 10.1.23.0 0.0.0.255实操心得1Router-ID冲突是常见坑点。神州设备的OSPF进程虽然独立但默认会尝试使用全局Router-ID或接口IP。如果两个进程的Router-ID相同邻居关系可能无法正常建立或者出现不可预知的问题。最稳妥的做法是在每个ospf [process-id]模式下显式地用router-id x.x.x.x命令指定一个唯一的ID。这里我给进程10指定了22.22.22.22。配置完成后检查邻居关系 在DCR-2上执行display ospf 1 peer brief # 查看与DCR-1的邻居状态应为Full display ospf 10 peer brief # 查看与DCR-3的邻居状态应为Full此时DCR-1的路由表里只有1.1.1.1和10.1.12.0/24OSPF路由。DCR-3的路由表里只有3.3.3.3和10.1.23.0/24OSPF路由。它们彼此不知道对方环回口的存在。4. 核心环节配置双向路由重分发现在两个孤岛已经建成我们需要在DCR-2上架起桥梁。我们将配置双向重分发。4.1 基础重分发配置在DCR-2的OSPF配置模式下使用import-route命令进行重分发。步骤一将OSPF进程10的路由引入到OSPF进程1。ospf 1 import-route ospf 10这条命令告诉OSPF进程1“去把OSPF进程10路由表里所有通过OSPF学到的路由都拿过来变成我的外部路由默认E2类型发布出去。”步骤二将OSPF进程1的路由引入到OSPF进程10。ospf 10 import-route ospf 1配置完成后等待几秒再次查看DCR-1和DCR-3的路由表。在DCR-1上查看路由display ip routing-table你应该能看到一条类似这样的路由Destination/Mask Proto Pre Cost NextHop Interface 3.3.3.3/32 O_ASE2 150 1 10.1.12.2 GE1/0/1O_ASE2表示这是一条OSPF Type 2 External路由。Pre 150OSPF外部路由的默认优先级是150内部路由是10。Cost 1这是重分发时设置的种子度量值Seed Metric默认是1。在DCR-3上查看路由同样会看到一条到1.1.1.1/32的O_ASE2路由下一跳是10.1.23.2。此时从DCR-1 Ping 3.3.3.3应该就能通了。双向互通的基本目标已经实现。4.2 精细化控制与防环设计然而上面的基础配置存在风险也不够精细。我们来做优化。问题1路由环路隐患。假设DCR-1上有一条默认路由0.0.0.0/0通过OSPF进程1发布。DCR-2将其重分发进进程10DCR-3学到后可能会把去往其他未知网络比如互联网的流量都发给DCR-2。如果配置不当可能形成环路。更典型的环路是如果未来网络扩展存在多条重分发路径就极易产生环路。解决方案使用路由标签Tag。路由标签是一个附加在路由条目上的标记一个整数可以在重分发过程中进行匹配和过滤。防环的经典思路是为从进程A重分发到进程B的路由打上一个标签并在进程B重分发回进程A时过滤掉带有这个标签的路由。优化配置示例我们在DCR-2上使用路由映射Route-map来实现带标签的重分发和过滤。创建ACL和Route-map! 创建ACL匹配需要打标签或过滤的路由。这里为了演示我们先允许所有。 acl basic 2000 rule permit source any quit ! 创建Route-map用于OSPF 1重分发OSPF 10时打标签 route-map RM_10_TO_1 permit 10 match ip address acl 2000 set tag 100 ! 为来自进程10的路由设置标签100 quit ! 创建Route-map用于OSPF 10重分发OSPF 1时打标签 route-map RM_1_TO_10 permit 10 match ip address acl 2000 set tag 200 ! 为来自进程1的路由设置标签200 quit ! 创建Route-map用于OSPF 1重分发时拒绝带标签200的路由防止回馈 route-map RM_1_IMPORT deny 10 match tag 200 quit route-map RM_1_IMPORT permit 20 match ip address acl 2000 quit ! 创建Route-map用于OSPF 10重分发时拒绝带标签100的路由防止回馈 route-map RM_10_IMPORT deny 10 match tag 100 quit route-map RM_10_IMPORT permit 20 match ip address acl 2000 quit应用精细化的重分发! 在OSPF进程1中应用重分发和过滤 ospf 1 import-route ospf 10 route-map RM_10_TO_1 ! 引入时打标签100 import-route direct route-map RM_1_IMPORT ! 假设也重分发直连路由并过滤标签200 ! 注意import-route ospf 10 本身不能直接过滤回馈路由需要依靠进程10引入时打上的标签。 ! 更常见的做法是在 import-route ospf 时通过route-map匹配tag来拒绝。 ! 在OSPF进程10中应用重分发和过滤 ospf 10 import-route ospf 1 route-map RM_1_TO_10 ! 引入时打标签200 import-route direct route-map RM_10_IMPORT ! 过滤标签100实操心得2理解重分发过滤的生效点。import-route命令中的route-map主要用于在引入路由时设置属性如tag、metric、type或进行过滤。而防止回馈的关键在于对端进程在引入路由时能根据标签将其过滤掉。因此双向都需要配置。上述配置中RM_1_IMPORT和RM_10_IMPORT就是用于过滤从对方进程学回的路由。这是一种非常有效的防环机制。问题2次优路径与度量值控制。默认的种子度量值是1Type 2且所有外部路由的cost都是1。这可能掩盖了真实的链路开销。例如从DCR-1到DCR-3实际路径是DCR-1 - DCR-2 - DCR-3。但在DCR-1上看到3.3.3.3的cost就是1无法体现中间经过的跳数。如果网络中存在多条边界路径就可能选择次优路径。解决方案调整种子度量值和路由类型。route-map RM_10_TO_1 permit 10 match ip address acl 2000 set tag 100 set metric 10 ! 设置种子度量值为10 set metric-type type1 ! 设置为E1路由代价会累加 quit将路由类型改为E1后DCR-1计算到3.3.3.3的路由代价就会是“种子度量值10 DCR-2到DCR-1的链路开销”。这更能反映真实路径成本有利于路径选择。5. 验证、排错与深度优化配置完成后全面的验证和排错是必不可少的。5.1 关键验证命令验证邻居关系display ospf [process-id] peer brief。确保所有期望的邻居状态都是Full。验证路由表display ip routing-table。重点查看目标路由如1.1.1.1和3.3.3.3是否存在协议类型是否为O_ASE1或O_ASE2下一跳是否正确。验证OSPF LSDBdisplay ospf [process-id] lsdb。在DCR-1上你应该能看到由DCR-2作为ASBR生成的Type 5 External LSA描述了3.3.3.3这条外部路由。在DCR-3上同理能看到1.1.1.1的Type 5 LSA。验证重分发结果display ospf [process-id] routing。这个命令可以查看OSPF进程自身的路由表区分内部路由和通过重分发引入的外部路由。连通性测试ping -a 1.1.1.1 3.3.3.3。使用源地址ping确保往返流量路径正确。5.2 常见问题排查实录问题配置了重分发但对端设备学不到路由。排查思路1检查重分发命令是否生效。在DCR-2上执行display ospf 1 routing查看是否有从进程10引入的路由标记为O_ASE。如果没有说明重分发配置未生效或进程10本身没有路由。排查思路2检查路由是否被过滤。检查应用的ACL或Route-map逻辑是否正确。特别是deny规则是否意外阻止了路由。可以用display route-map [name]查看匹配计数。排查思路3检查OSPF进程的Router-ID和接口状态。确保运行不同进程的接口物理和协议状态都是UP的且进程的Router-ID唯一。排查思路4查看LSDB中的Type 5 LSA。在DCR-2上display ospf 1 lsdb ase看是否生成了对应的外部LSA。如果没有可能是重分发配置问题如果有但DCR-1没有可能是区域间传播问题但本例都在Area 0通常没问题。问题出现路由环路导致网络不稳定。现象路由表抖动ping包时通时断traceroute路径显示循环。应急处理立即在DCR-2上移除重分发配置undo import-route ospf。根因与解决这几乎都是因为缺少双向路由过滤。严格按照4.2节的方法配置基于标签的路由过滤。在复杂网络中还可以结合使用分发列表distribute-list或前缀列表prefix-list进行更精确的控制只重分发必要的业务网段而不是全部路由。5.3 性能与扩展性考量路由数量无限制的重分发会导致外部路由泛滥增加所有OSPF路由器的LSDB和路由表大小消耗CPU和内存。务必使用前缀列表等工具只引入必要的路由。进程资源每个OSPF进程都会独立维护邻居表、LSDB并运行SPF算法。在性能较低的设备上运行多个进程需评估资源消耗。管理复杂度多进程增加了配置和排错的复杂度。必须有清晰的文档记录每个进程对应的网络范围、重分发策略和标签规划。6. 高级应用场景与变体思考掌握了基础的多进程互连后我们可以在更复杂的场景中应用它。场景一多业务隔离与策略路由结合在一台核心交换机上为数据中心业务、办公业务、物联网业务分别创建OSPF进程100 200 300。每个进程只与对应的接入交换机建立邻居。在核心交换机上配置重分发实现业务间有限制的互通。同时可以结合策略路由PBR根据源IP地址属于哪个业务来决定其访问其他业务或出口的路径实现更灵活的流量调度。场景二作为路由策略的“缓冲带”在与友商设备进行OSPF互联时有时会因为LSA处理、默认路由生成等细节差异导致问题。可以在边界的神州设备上创建一个独立的OSPF进程例如进程99与友商对接再在进程99与内部核心进程例如进程1之间做重分发。这样所有与友商的交互都被限制在进程99内你可以在重分发时进行充分的路由过滤、度量值修改和路由打标避免外部路由策略对内部网络造成冲击。场景三模拟多自治系统AS互联在一些认证考试如H3CSE、CCNP或实验环境中单台设备模拟多台路由器是常见需求。利用多OSPF进程可以很好地模拟多个AS之间的互联。每个进程模拟一个AS的内部IGP进程间的重分发则模拟AS间通过BGP或静态路由进行的路由交换。这是一种低成本、高效率的练习方式。最后我个人在实际操作中的体会是多OSPF进程互连就像在设备内部搭建了一个“路由交换中心”。它的强大之处在于提供了极高的灵活性和控制力但随之而来的也是复杂的策略管理和排错挑战。在实施前一定要在实验环境中画好拓扑、规划好IP、设计好重分发策略特别是过滤规则和标签规划并做充分的连通性和故障模拟测试。记住“先过滤后放行”是配置重分发时的黄金法则宁严勿松这能帮你避开大多数令人头疼的环路问题。当你清晰地掌控了路由在多个进程间流动的每一个环节时这项技术就会成为你解决复杂网络融合问题的利器。