我正在尝试在 Juniper MX80 和 Quagga 路由器之间设置 OSPF 区域。Quagga 路由器已配置 OSPF,并在 hello 数据包中通告了网络 199.192.100.0/28。但 Juniper MX80 拒绝了它并出现以下错误:
1 月 22 日 04:14:38.371296 OSPF 数据包被忽略:intf ae0.0 区域 0.0.0.0 上的 199.192.100.2 子网不匹配 1 月 22 日 04:14:38.371515 OSPF rcvd Hello 199.192.100.2 -> 224.0.0.5 (ae0.0 IFL 336 区域 0.0.0.0) 1 月 22 日 04:14:38.371538 版本 2,长度 44,ID 10.10.90.4,区域 0.0.0.0 1 月 22 日 04:14:38.371559 校验和 0x0,授权类型 0 1 月 22 日 04:14:38.371581 掩码 255.255.255.240,hello_ivl 10,opts 0x2,prio 1 1 月 22 日 04:14:38.371602 dead_ivl 40,DR 199.192.100.2,BDR 0.0.0.0
配置的相关部分是:
瞻博网络 MX80:
ashinn@mx2# 显示接口 ae0 聚合以太选项 { 乳酸菌 积极的; } } 单元 0 { 家庭网络 { 地址 199.192.100.253/30; } } ashinn@mx2# 显示 ospf 协议 出口再分配连接; 区域 0.0.0.0 { 区域范围199.192.100.0/28; 接口xe-0/0/1.0; 接口 ae0.0 { 接口类型p2p; } }
接口 ae0.0 是面向 Quagga 路由器 bond0 接口的接口:
! 接口 bond0 ip ospf 成本 50 ipv6 nd 抑制-ra ! 路由器ospf 对数邻接变化 重新分配内核 重新分配连接 网络 199.192.100.0/28 区域 0.0.0.0 邻居 199.192.100.253 !
Quagga 的 bond0 接口如下:
[ashinn@lb2 ~]$ ip addr show dev bond0 8:bond0:mtu 1500 qdisc 无队列状态 UP 链接/以太 00:25:90:27:8a:be brd ff:ff:ff:ff:ff:ff inet 199.192.100.254/30 brd 199.192.100.255 范围全局 bond0 inet 199.192.100.2/28 范围全局 bond0 inet6 fe80::225:90ff:fe27:8abe/64 范围链接 valid_lft 永远 preferred_lft 永远
我尝试过neighbor statement
在 Quagga 中不使用,也尝试过ip ospf network point-to-point
在 Quagga 中设置。两种方法似乎都没有什么区别。
我找到了这篇文章http://kb.juniper.net/InfoCenter/index?page=content&id=KB23533&cat=T1600_1&actp=LIST&showDraft=false这似乎解释了同样的问题。但它只建议纠正子网掩码不匹配。这种不匹配可能在哪里?如果它与 /30 点对点接口子网冲突,那么为什么?
答案1
问题在于你在 Quagga 的 OSPF 中配置了错误的子网。你需要 /30 作为网络语句:
network 199.192.100.252/30 area 0.0.0.0
network 语句告诉 Quagga 在哪个接口上启用 OSPF。每个具有该子网 IP 的接口都将启用 OSPF。
同样,199.192.100.2/28 可能不在该 bond0 设备上。尝试将其放在 lo 接口上,并告诉该接口为被动接口。
像这样:
!
interface bond0
ip ospf cost 50
ipv6 nd suppress-ra
!
router ospf
log-adjacency-changes
redistribute kernel
redistribute connected
network 199.192.100.252/30 area 0.0.0.0
network 199.192.100.0/28 area 0.0.0.0
passive-interface lo
neighbor 199.192.100.253
!
另外,我建议将 MX80 和 Quagga 之间的 OSPF 接口模式设置为点对点。这将加快收敛时间。
答案2
OSPF 邻居所在的 /30 范围部分尝试在为 OSPF 启用的 /28 之外形成邻接关系...这就是子网掩码不匹配的原因。调试输出会告诉您修复它所需的所有信息。 OSPF rcvd Hello
应该匹配另一侧。如果掩码不匹配,则永远不会形成邻接关系。
最好在 MX80 + Quagga 路由器之间建立不同的连接,或者至少在三者之间建立一个专用于 OSPF 的网络段(尽管在这种情况下,您需要关闭它interface-type p2p
,因为您需要进行 DR 选举)。您首先遇到此问题的原因是 Quagga 试图使用来自错误子网/配置的 IP 的 Hello 数据包建立 OSPF 邻接关系。
如果没有完整的配置,很难知道还有什么问题,但我会非常小心,考虑当前配置,以及这些重新分配命令可能发生的情况;)
答案3
我知道这有点晚了,但需要澄清的是,OSPF 要形成邻居关系,必须满足几个条件。这些条件包括区域编号、接口类型(点对点或广播)问候计时器、死计时器和形成邻居的接口的子网掩码。MX 正在寻找与本地 MX 接口完全相同的子网掩码的邻居。