FRRouting
Cumulus Linux 使用 FRR 提供动态路由的路由协议,并支持以下路由协议
- 开放最短路径优先 (v2 和 v3)
- 边界网关协议 (BGP)
- 协议无关组播 (PIM)
- 基于策略的路由 (PBR)
架构

FRR 套件由各种特定于协议的守护进程和一个名为 zebra 的独立于协议的守护进程组成。每个特定于协议的守护进程都负责运行相关协议并根据交换的信息构建路由表。
同时运行多个协议守护进程并不少见。例如,在企业边缘,企业内部协议(如 OSPF)与将企业连接到世界其他地方的协议(如 BGP)一起运行。
zebra
是解析多种协议(包括您指定的静态路由)提供的路由,并使用 netlink
(在 Linux 中)在 Linux 内核中编程这些路由的守护进程。《FRRouting 文档》将 zebra
定义为 FRR 的 IP 路由管理器,它提供内核路由表更新、接口查找以及不同路由协议之间的路由再分发。
配置 FRR
如果您使用 NVUE 配置交换机,则本节中的信息不适用。NVUE 自动管理 FRR 守护进程和配置。这些说明仅适用于通过 linux 扁平文件配置直接管理 FRR 的用户。
如果您未使用 NVUE 配置系统,则默认情况下 Cumulus Linux 中不会启动 FRR。在运行 FRR 之前,请确保已在 /etc/frr/daemons
文件中启用您打算使用的相关守护进程(bgpd
、ospfd
、ospf6d
、pimd
或 pbrd
)。
NVIDIA 尚未测试 RIP、RIPv6、IS-IS 或 Babel。
默认情况下,Cumulus Linux 启用 zebra
守护进程。您可以根据您计划路由网络的方式启用其他守护进程。
在启动 FRR 之前,编辑 /etc/frr/daemons
文件以启用您要使用的每个守护进程。例如,要启用 BGP,请将 bgpd
设置为 yes
。
...
bgpd=yes
ospfd=no
ospf6d=no
ripd=no
ripngd=no
isisd=no
fabricd=no
pimd=no
ldpd=no
nhrpd=no
eigrpd=no
babeld=no
sharpd=no
pbrd=no
vrrpd=no
...
启用并启动 FRR
如果您使用 NVUE 配置交换机,则本节中的信息不适用。NVUE 自动管理 FRR 守护进程和配置。这些说明仅适用于通过 linux 扁平文件配置直接管理 FRR 的用户。
启用相应的守护进程后,启用并启动 FRR 服务。
cumulus@switch:~$ sudo systemctl enable frr.service
cumulus@switch:~$ sudo systemctl start frr.service
- 所有路由协议守护进程(
bgpd
、ospfd
、ospf6d
、ripd
、ripngd
、isisd
和pimd
)都依赖于zebra
。当您启动 FRR 时,systemd
确定zebra
是否正在运行;如果zebra
未运行,则systemd
启动zebra
,然后启动依赖服务,例如bgpd
。 - 如果您重启服务,其依赖服务也会重启。例如,运行
systemctl restart frr.service
会重启任何已启用的正在运行的路由协议守护进程。 - 有关
systemctl
命令和更改守护进程状态的更多信息,请参阅 Cumulus Linux 中的服务和守护进程。
恢复默认配置
如果您使用 NVUE 配置交换机,则本节中的信息不适用。NVUE 自动管理 FRR 守护进程和配置。这些说明仅适用于使用 linux 扁平文件配置直接管理 FRR 的用户。
如果您需要将 FRR 配置恢复为默认运行配置,请删除 frr.conf
文件并重启 frr
服务。
在继续操作之前,备份 frr.conf
(或您要删除的任何配置文件)。
确认
service integrated-vtysh-config
正在运行。删除
/etc/frr/frr.conf
cumulus@switch:~$ sudo rm /etc/frr/frr.conf
使用此命令重启 FRR
cumulus@switch:~$ sudo systemctl restart frr.service
重启 FRR 会重启您启用且正在运行的所有路由协议守护进程。NVIDIA 建议您重启交换机而不是重启 FRR 服务,以在使用 MLAG 的冗余交换机存在时最大限度地减少流量影响。
接口 IP 地址和 VRF
FRR 从 /etc/network/interfaces
文件继承网络接口的 IP 地址和任何关联的路由表。这是定义地址的推荐方法;请勿使用 FRR 创建接口。有关更多信息,请参阅配置 IP 地址和虚拟路由和转发 - VRF。
vtysh 模态 CLI
FRR 提供一个名为 vtysh 的命令行界面 (CLI),用于配置和显示协议状态。要启动 CLI,请运行 sudo vtysh
命令。
cumulus@switch:~$ sudo vtysh
Hello, this is FRRouting (version 8.4.3).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
switch#
FRR 为 CLI 提供不同的模式,某些命令仅在特定模式下可用。配置可通过 configure terminal
命令获得。
switch# configure terminal
switch(config)#
提示符显示当前的 CLI 模式。例如,当您运行特定于接口的命令时,提示符会更改为
switch(config)# interface swp1
switch(config-if)#
当您运行特定于路由协议的命令时,提示符会更改
switch(config)# router ospf
switch(config-router)#
?
显示可用顶级命令的列表
switch(config-if)# ?
bandwidth Set bandwidth informational parameter
description Interface specific description
end End current mode and change to enable mode
exit Exit current mode and down to previous mode
ip IP Information
ipv6 IPv6 Information
isis IS-IS commands
link-detect Enable link detection on interface
list Print command list
mpls-te MPLS-TE specific commands
multicast Set multicast flag to interface
no Negate a command or set its defaults
ptm-enable Enable neighbor check with specified topology
quit Exit current mode and down to previous mode
shutdown Shutdown the selected interface
基于 ?
的补全也可用,以查看命令采用的参数
switch(config-if)# bandwidth ?
<1-10000000> Bandwidth in kilobits
switch(config-if)# ip ?
address Set the IP address of an interface
irdp Alter ICMP Router discovery preference this interface
ospf OSPF interface commands
rip Routing Information Protocol
router IP router interface commands
除了基于 ?
的补全之外,您还可以使用 Tab 键补全来获得有关有效关键字或选项的帮助,当您输入命令时。例如,将 Tab 键补全与 `router ospf` 一起使用会显示命令的可能选项,并将您返回到命令提示符以完成命令。
switch(config)# router ospf vrf<<press tab>>
BLUE RED default mgmt
switch(config)# router ospf vrf
要搜索特定的 vtysh 命令,以便您可以识别要使用的正确语法,请运行 sudo vtysh -c 'find <term>'
命令。例如,要仅显示包含 mlag
的命令
cumulus@leaf01:mgmt:~$ sudo vtysh -c 'find mlag'
(view) show ip pim [mlag] vrf all interface [detail|WORD] [json]
(view) show ip pim [vrf NAME] interface [mlag] [detail|WORD] [json]
(view) show ip pim [vrf NAME] mlag upstream [A.B.C.D [A.B.C.D]] [json]
(view) show ip pim mlag summary [json]
(view) show ip pim vrf all mlag upstream [json]
(view) show zebra mlag
(enable) [no$no] debug zebra mlag
(enable) debug pim mlag
(enable) no debug pim mlag
(enable) test zebra mlag <none$none|primary$primary|secondary$secondary>
(enable) show ip pim [mlag] vrf all interface [detail|WORD] [json]
(enable) show ip pim [vrf NAME] interface [mlag] [detail|WORD] [json]
(enable) show ip pim [vrf NAME] mlag upstream [A.B.C.D [A.B.C.D]] [json]
(enable) show ip pim mlag summary [json]
(enable) show ip pim vrf all mlag upstream [json]
(enable) show zebra mlag
(config) [no$no] debug zebra mlag
(config) debug pim mlag
(config) ip pim mlag INTERFACE role [primary|secondary] state [up|down] addr A.B.C.D
(config) no debug pim mlag
(config) no ip pim mlag
您可以显示任何级别的状态,包括顶层。例如,要查看 zebra
看到的路由表
switch# show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP,
O - OSPF, I - IS-IS, B - BGP, T - Table,
> - selected route, * - FIB route
B>* 0.0.0.0/0 [20/0] via fe80::4638:39ff:fe00:c, swp29, 00:11:57
* via fe80::4638:39ff:fe00:52, swp30, 00:11:57
B>* 10.0.0.1/32 [20/0] via fe80::4638:39ff:fe00:c, swp29, 00:11:57
* via fe80::4638:39ff:fe00:52, swp30, 00:11:57
B>* 10.0.0.11/32 [20/0] via fe80::4638:39ff:fe00:5b, swp1, 00:11:57
B>* 10.0.0.12/32 [20/0] via fe80::4638:39ff:fe00:2e, swp2, 00:11:58
B>* 10.0.0.13/32 [20/0] via fe80::4638:39ff:fe00:57, swp3, 00:11:59
B>* 10.0.0.14/32 [20/0] via fe80::4638:39ff:fe00:43, swp4, 00:11:59
C>* 10.0.0.21/32 is directly connected, lo
B>* 10.0.0.51/32 [20/0] via fe80::4638:39ff:fe00:c, swp29, 00:11:57
* via fe80::4638:39ff:fe00:52, swp30, 00:11:57
B>* 172.16.1.0/24 [20/0] via fe80::4638:39ff:fe00:5b, swp1, 00:11:57
* via fe80::4638:39ff:fe00:2e, swp2, 00:11:57
B>* 172.16.3.0/24 [20/0] via fe80::4638:39ff:fe00:57, swp3, 00:11:59
* via fe80::4638:39ff:fe00:43, swp4, 00:11:59
要在配置级别运行相同的命令,请在前面加上 do
switch(config-router)# do show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP,
O - OSPF, I - IS-IS, B - BGP, T - Table,
> - selected route, * - FIB route
B>* 0.0.0.0/0 [20/0] via fe80::4638:39ff:fe00:c, swp29, 00:05:17
* via fe80::4638:39ff:fe00:52, swp30, 00:05:17
B>* 10.0.0.1/32 [20/0] via fe80::4638:39ff:fe00:c, swp29, 00:05:17
* via fe80::4638:39ff:fe00:52, swp30, 00:05:17
B>* 10.0.0.11/32 [20/0] via fe80::4638:39ff:fe00:5b, swp1, 00:05:17
B>* 10.0.0.12/32 [20/0] via fe80::4638:39ff:fe00:2e, swp2, 00:05:18
B>* 10.0.0.13/32 [20/0] via fe80::4638:39ff:fe00:57, swp3, 00:05:18
B>* 10.0.0.14/32 [20/0] via fe80::4638:39ff:fe00:43, swp4, 00:05:18
C>* 10.0.0.21/32 is directly connected, lo
B>* 10.0.0.51/32 [20/0] via fe80::4638:39ff:fe00:c, swp29, 00:05:17
* via fe80::4638:39ff:fe00:52, swp30, 00:05:17
B>* 172.16.1.0/24 [20/0] via fe80::4638:39ff:fe00:5b, swp1, 00:05:17
* via fe80::4638:39ff:fe00:2e, swp2, 00:05:17
B>* 172.16.3.0/24 [20/0] via fe80::4638:39ff:fe00:57, swp3, 00:05:18
* via fe80::4638:39ff:fe00:43, swp4, 00:05:18
要使用 vtysh 运行单个命令,请使用 -c
选项
cumulus@switch:~$ sudo vtysh -c 'sh ip route'
Codes: K - kernel route, C - connected, S - static, R - RIP,
O - OSPF, I - IS-IS, B - BGP, A - Babel,
> - selected route, * - FIB route
K>* 0.0.0.0/0 via 192.168.0.2, eth0
C>* 192.0.2.11/24 is directly connected, swp1
C>* 192.0.2.12/24 is directly connected, swp2
B>* 203.0.113.30/24 [200/0] via 192.0.2.2, swp1, 11:05:10
B>* 203.0.113.31/24 [200/0] via 192.0.2.2, swp1, 11:05:10
B>* 203.0.113.32/24 [200/0] via 192.0.2.2, swp1, 11:05:10
C>* 127.0.0.0/8 is directly connected, lo
C>* 192.168.0.0/24 is directly connected, eth0
要向下运行多个级别的命令
cumulus@switch:~$ sudo vtysh -c 'configure terminal' -c 'router ospf' -c 'area 0.0.0.1 range 10.10.10.0/24'
命令也接受部分命令名称(例如,sh ip route
),只要部分命令名称未被别名化
cumulus@switch:~$ sudo vtysh -c 'sh ip r'
% Ambiguous command.
要禁用 FRR 中的命令或功能,请在命令前加上 no
。例如
cumulus@switch:~$ sudo vtysh
switch# configure terminal
switch(config)# router ospf
switch(config-router)# no area 0.0.0.1 range 10.10.10.0/24
switch(config-router)# exit
switch(config)# exit
switch# write memory
switch# exit
cumulus@switch:~$
要查看配置的当前状态,请运行 show running-config
命令
如果您尝试配置未运行的路由协议,则 vtysh 会忽略这些命令。
NVUE Show 命令和 vtysh 输出
NVUE 为某些 NVUE show 命令提供 --output raw
选项,以显示 vtysh 本地输出。
在路由表中显示路由
要显示路由表中的所有路由,请运行 nv show vrf <vrf> router rib <address-family> route
命令
cumulus@switch:~$ nv show vrf default router rib ipv4 route
Flags - * - selected, q - queued, o - offloaded, i - installed, S - fib-
selected, x - failed
Route Protocol Distance Uptime NHGId Metric Flags
--------------- --------- -------- -------------------- ----- ------ -----
10.0.1.12/32 connected 0 2024-10-22T18:36:01Z 15 0 *Sio
10.0.1.34/32 bgp 20 2024-10-22T18:42:22Z 125 0 *Si
10.0.1.255/32 bgp 20 2024-10-22T18:36:05Z 125 0 *Si
10.10.10.1/32 connected 0 2024-10-22T18:35:54Z 15 0 *Sio
10.10.10.2/32 bgp 20 2024-10-22T18:35:58Z 62 0 *Si
10.10.10.3/32 bgp 20 2024-10-22T18:42:16Z 125 0 *Si
10.10.10.4/32 bgp 20 2024-10-22T18:42:16Z 125 0 *Si
10.10.10.63/32 bgp 20 2024-10-22T18:36:05Z 125 0 *Si
10.10.10.64/32 bgp 20 2024-10-22T18:36:05Z 125 0 *Si
10.10.10.101/32 bgp 20 2024-10-22T18:36:05Z 115 0 *Si
10.10.10.102/32 bgp 20 2024-10-22T18:36:04Z 107 0 *Si
要显示有关特定路由的信息,请运行 nv show vrf <vrf> router rib <address-family> route <prefix>
命令
cumulus@switch:~$ nv show vrf default router rib ipv4 route 10.0.1.34/32
route-entry
==============
Protocol - Protocol name, TblId - Table Id, NHGId - Nexthop group Id, Flags - u
- unreachable, r - recursive, o - onlink, i - installed, d - duplicate, c -
connected, A - active
EntryIdx Protocol TblId NHGId Distance Metric ResolvedVia ResolvedViaIntf Weight Flags
-------- -------- ----- ----- -------- ------ ------------------------- --------------- ------ -----
1 bgp 254 125 20 0 fe80::4ab0:2dff:fe32:2a3f swp52 1 iA
fe80::4ab0:2dff:fe41:6b79 swp51 1 iA
要显示路由表中的路由总数,请运行 nv show vrf <vrf> router rib <address-family> route-count
命令
cumulus@switch:~$ nv show vrf default router rib ipv4 route-count
operational
------------ -----------
total-routes 34
[protocol] bgp
[protocol] connected
对于 IPv6,运行 nv show vrf <vrf> router rib ipv6 route-count
命令。
要显示路由表中每个协议的路由总数,请运行 nv show vrf <vrf> router rib <address-family> route-count protocol
命令
cumulus@switch:~$ nv show vrf default router rib ipv4 route-count protocol
Protocol Total
--------- -----
bgp 6
connected 3
ospf 8
static 3
对于 IPv6,运行 nv show vrf <vrf> router rib ipv6 route-count protocol
命令。
查找目标的路由
要在路由表中查找特定目标的路由,请运行 nv action lookup vrf <vrf-id> router fib <address-family> <ip-address>
命令。
以下示例在路由表中查找 IPv4 地址为 10.10.10.3 的目标的路由
cumulus@switch:~$ nv action lookup vrf default router fib ipv4 10.10.10.3
Action executing ...
dst: 10.10.10.4
nhid: 106
protocol: bgp
metric: 20
flags: []
id: 106
group: 62,102
protocol: zebra
flags: []
id: 62
gateway: fe80::4ab0:2dff:feff:6ac0
dev: swp52
scope: link
protocol: zebra
flags: []
id: 102
gateway: fe80::4ab0:2dff:fe8b:d6bf
dev: swp51
scope: link
protocol: zebra
flags: []
Action succeeded
以下示例显示路由表中 IPv6 地址为 228:35::5 的目标的路由
cumulus@switch:~$ nv action lookup vrf default router fib ipv6 fe80::4ab0:2dff:fe8b:d6bf
Action executing ...
dst: fe80::/64
dev: br_default
protocol: kernel
metric: 256
flags: []
pref: medium
Action succeeded
下一跳跟踪
路由守护进程通过来自 zebra
守护进程的通知跟踪下一跳的有效性。例如,当 bgpd
在 zebra
删除连接路由后收到下一跳跟踪 (NHT) 通知时,如果关联的接口关闭,FRR 会卸载解析为 zebra
中连接路由上的下一跳的 BGP 路由。
默认情况下,zebra
守护进程不认为解析为默认路由的下一跳有效。您可以配置 NHT 以考虑最长前缀匹配查找,用于解析为默认路由的下一跳地址作为有效的下一跳。以下示例配置默认路由对于默认 VRF 中的 NHT 有效
cumulus@leaf01:~$ nv set vrf default router nexthop-tracking ipv4 resolved-via-default on
cumulus@leaf01:~$ nv config apply
cumulus@leaf01:~$ sudo vtysh
leaf01# configure terminal
leaf01(config)# ip nht resolve-via-default
leaf01(config)# end
leaf01# write memory
leaf01# exit
cumulus@leaf01:~$
您可以将路由映射应用于特定路由守护进程的 NHT,以允许或拒绝将路由视为有效的下一跳。以下示例将 ROUTEMAP1
应用于 BGP,阻止 NHT 考虑解析为默认 VRF 中 10.0.0.0/8 的下一跳为有效
cumulus@leaf01:~$ nv set router policy prefix-list PREFIX1 type ipv4
cumulus@leaf01:~$ nv set router policy prefix-list PREFIX1 rule 1 match 10.0.0.0/8
cumulus@leaf01:~$ nv set router policy prefix-list PREFIX1 rule 1 action permit
cumulus@leaf01:~$ nv set router policy route-map ROUTEMAP1 rule 1 match ip-prefix-list PREFIX1
cumulus@leaf01:~$ nv set router policy route-map ROUTEMAP1 rule 1 action deny
cumulus@leaf01:~$ nv set router policy route-map ROUTEMAP1 rule 2 action permit
cumulus@leaf01:~$ nv set vrf default router nexthop-tracking ipv4 route-map ROUTEMAP1 protocol bgp
cumulus@leaf01:~$ nv config apply
cumulus@leaf01:~$ sudo vtysh
leaf02# configure terminal
leaf02(config)# ip prefix-list PREFIX1 seq 1 permit 10.0.0.0/8
leaf02(config)# route-map ROUTEMAP1 deny 1
leaf02(config-route-map)# match ip address prefix-list PREFIX1
leaf02(config-route-map)# route-map ROUTEMAP1 permit 2
leaf02(config-route-map)# ip nht bgp route-map ROUTEMAP1
leaf02(config)# end
leaf01# write memory
leaf01# exit
cumulus@leaf01:~$
您可以使用以下 NVUE 命令显示跟踪的下一跳
nv show vrf <vrf> router nexthop-tracking ipv4
nv show vrf <vrf> router nexthop-tracking ipv4 <ip-address>
nv show vrf <vrf> router nexthop-tracking ipv6
nv show vrf <vrf> router nexthop-tracking ipv6 <ip-address>
cumulus@leaf01:~$ nv show vrf default router nexthop-tracking ipv4
operational applied pending
-------------------- ----------- ------- -------
resolved-via-default on
route-map
============
No Data
ip-address
=============
DirectlyConnected - Indicates if nexthop is directly connected or not,
ResolvedProtocol - Resolved via protocol, Interface - Resolved via interface,
ProtocolFiltered - Indicates whether protocol filtered or not, Flags - o -
onlink, c - directly-connected, A - active
IPAddress DirectlyConnected ResolvedProtocol Interface VRF Weight ProtocolFiltered Flags
----------- ----------------- ---------------- ------------- ------- ------ ---------------- -----
10.0.1.34 off bgp swp52 default 1 off A
swp53 default 1 A
swp54 default 1 A
swp51 default 1 A
10.10.10.2 off bgp peerlink.4094 default 1 off A
10.10.10.3 off bgp swp52 default 1 off A
swp53 default 1 A
swp54 default 1 A
swp51 default 1 A
10.10.10.4 off bgp swp52 default 1 off A
swp53 default 1 A
swp54 default 1 A
swp51 default 1 A
10.10.10.63 off bgp swp52 default 1 off A
swp53 default 1 A
swp54 default 1 A
swp51 default 1 A
10.10.10.64 off bgp swp52 default 1 off A
swp53 default 1 A
swp54 default 1 A
swp51 default 1 A
您还可以运行 vtysh show ip nht vrf <vrf> <ip-address>
命令。
重新加载 FRR 配置
如果您使用 NVUE 配置交换机,则本节中的信息不适用。NVUE 自动管理 FRR 守护进程和配置。这些说明仅适用于通过 linux 扁平文件配置直接管理 FRR 的用户。
如果您对路由配置进行了更改,则需要重新加载 FRR,以便您的更改生效。FRR 重新加载使您能够仅应用您对 FRR 配置所做的修改,从而将其运行状态与 /etc/frr/frr.conf
中的配置同步。这对于优化环境中的 FRR 自动化或应用在运行时所做的更改非常有用。
在修改 /etc/frr/frr.conf
后重新加载 FRR 配置,请运行
cumulus@switch:~$ sudo systemctl reload frr.service
检查运行配置并验证其是否与 /etc/frr/frr.conf
中的配置匹配。
如果运行配置不是您期望的,请提交支持请求并提供以下信息
- 当前运行配置(运行
show running-config
并将内容输出到文件) /etc/frr/frr.conf
的内容/var/log/frr/frr-reload.log
的内容
FRR 日志记录
如果您使用 NVUE 配置交换机,则本节中的信息不适用。NVUE 自动管理 FRR 守护进程和配置。这些说明仅适用于通过 linux 扁平文件配置直接管理 FRR 的用户。
默认情况下,Cumulus Linux 将 FFR 配置为 syslog 严重级别 6(信息性)。日志输出写入 /var/log/frr/frr.log
文件。
要将调试消息写入日志文件,您必须运行 log syslog debug
命令将 FRR 配置为 syslog 严重级别 7(调试);否则,当您发出调试命令(例如 debug bgp neighbor-events
)时,不会有输出转到 /var/log/frr/frr.log
。但是,当您使用 log file /var/log/frr/debug.log
命令手动定义日志目标时,FRR 会自动默认为严重级别 7(调试)日志记录,并且输出会记录到 /var/log/frr/debug.log
。
注意事项
重复的主机名
交换机在 FRR 配置中可以有两个主机名。例如
cumulus@spine01:~$ sudo vtysh...
spine01# configure terminal
spine01(config)# hostname spine01-1
spine01-1(config)# do sh run
Building configuration...
Current configuration:
!
frr version 7.0+cl4u3
frr defaults datacenter
hostname spine01
hostname spine01-1
...
如果您使用 neighbor x.x.x.x
和 neighbor swp# interface
命令配置相同的编号 BGP 邻居,则配置中会存在同一 IP 地址的两个邻居条目。要纠正此问题,请更新配置并重启 FRR 服务。
TCP 套接字和 BGP 对等会话
FRR 启动配置包括允许的最大打开文件数的设置。对于 BGP,打开的文件包括 BGP 连接使用的 TCP 套接字。任何一个 BGP 说话者几乎都可以同时启动 BGP 对等;因此,对于单个 BGP 对等方,您可能有两个 TCP 套接字。这两个套接字一直存在,直到 BGP 协议确定要使用的套接字,然后另一个套接字关闭。
1024 个打开文件的默认设置最多支持 512 个 BGP 对等会话。如果您预计您的网络部署将有更多 BGP 对等会话,则需要更新此设置。
NVIDIA 建议您将该值设置为至少是您预期最大 BGP 对等会话数的两倍。
要更新打开文件设置
编辑
/lib/systemd/system/frr.service
文件并更改LimitNOFILE
参数。以下示例将LimitNOFILE
参数设置为 4096。cumulus@switch:~$ sudo cat /lib/systemd/system/frr.service [Unit] Description=FRRouting Documentation=https://frrouting.readthedocs.io/en/latest/setup.html After=networking.service csmgrd.service [Service] Nice=-5 Type=forking NotifyAccess=all StartLimitInterval=3m StartLimitBurst=3 TimeoutSec=2m WatchdogSec=60s RestartSec=5 Restart=on-abnormal LimitNOFILE=4096 ...
重启 FRR 服务。
cumulus@switch:~$ sudo systemctl restart frr.service