一、被动接口
1. 特性概述
![](https://tc.sfwww.cn/i/2023/02/03/63dc1484aadbf.png)
在上图所示的拓扑中,R1、R2运行OSPF,R2在其FE0/0及FE1/0接口上都激活了OSPF。FE1/0接口一旦激活OSPF,便开始周期性地发送Hello报文试图在该链路上发现邻居,但是在该链路上并没有邻居(只有终端用户),因此这些Hello报文只是增加PC的额外负担而已。
针对上面的问题,我们可以将路由器上的FE1/0口设置为passive-interface,如此一来,这个接口将不再收发Hello报文。既然不收发Hello报文,自然就不会在这个接口上形成邻接关系,但是FE1/0接口依然会被R2的Type-1 LSA描述,因此R1依然可以通过OSPF学习到192.168.1.254/24网段的路由。
2. 相关要点
RIP、EIGRP、OSPF、ISIS协议均支持passive-interface(也被称为被动接口)特性,但是该特性在每个协议上不尽相同,区别如下:
![](https://tc.sfwww.cn/i/2023/02/03/63dc14851c298.png)
当然,我们在路由协议中将某个接口设置为passive-interface的前提是使用network关键字宣告了这个接口的网段,否则passive-interface就没有意义了。passive-interface特性通常被用于某个接口的网段路由需要被其他路由器学习到,但是这个接口本身可能连接着一个末梢网络(只有主机,没有其他的路由器)的场景。
3. 配置实现
将某个接口配置为被动接口:
Router(config-router)# passive-interface int-type int-num
将所有接口配置为被动接口,并手动激活特定接口:
Router(config-router)# passive-interface default
Router(config-router)# no passive-interface int-type int-num
典型配置示例:
![](https://tc.sfwww.cn/i/2023/02/03/63dc1488c5fcd.png)
这是一个非常典型的场景,GS_SW是汇聚层交换机,与核心交换机之间跑个OSPF。GS_SW需要通告设备上VLAN所对应的网段,以便核心交换机能够获知相关的路由。然后一旦GS_SW在OSPF进程中宣告这些VLAN对应的网段,相应的SVI接口就会向VLAN中去泛洪OSPF Hello报文,而这些报文,实际上是多余的,因为下面都是主机或终端。因此我们可以做如下配置:
interface vlan 10
ip address 192.168.10.254 255.255.255.0
interface vlan 20
ip address 192.168.20.254 255.255.255.0
router ospf 1
network 192.168.10.0 0.0.0.255 area 1
network 192.168.20.0 0.0.0.255 area 1
network 192.168.254.0 0.0.0.255 area 0
passive-interface defualt
no passive-interface fastethernet 0/24
由于实际部署的时候,GS_SW上的VLAN可能比较多,SVI口也就非常多,如果一个个的去配置 passive-interface的话工作量可就大了,因此可以选择先使用passive-interface defaut命令将所有接口全部passive掉,然后再使用no passive-interface配置需要激活的接口,例如FE0/24口,这是用于和CO_SW对接OSPF的,因此需要no passive-interface该接口。
二、单播更新
1. 配置RIP单播更新:
![](https://tc.sfwww.cn/i/2023/02/03/63dc148918c1b.png)
上图所示的环境中,R1、R2和PC同处一个广播域中,可能是连接在同一台二层交换机上,当R1及R2的接口激活RIP时,他们就会开始泛洪RIP报文,由于RIPv2是基于组播发送协议报文的,这就意味着PC也会源源不断地收到R1及R2周期性发送的RIP报文,而这实际上是白白增加PC的负担,因为它压根就不需要这些报文。这里就可以使用到单播更新这个特性。
R1的关键性配置如下:
R1(config) router rip
R1(config-router)# network 192.168.123.0
R1(config-router)# passive-interface fastethernet 0/0
R1(config-router)# neighbor 192.168.123.2