安装FRR后,必须完成一些基本配置才能使用。
Crash logs
如果任何守护程序由于某种原因(分段错误、断言失败等)崩溃,它将尝试向位于/var/tmp/frr/<daemon>[-<instance>].<pid>/crashlog中的文件写入回溯。此功能不受任何配置选项的影响。
crashlog文件的目录还包含与名为 /var/tmp/frr/<daemon>[-<instance>].<pid>/logbuf.<tid>
的文件中的 per-thread消息缓冲区相对应的文件。在崩溃的情况下,这些可能包含未写入的缓冲日志消息。若要显示这些缓冲区的内容,请通过tr '\0' '\n'
传递其内容。一个空行标志着有效的未写入数据的结束(由于缓冲区没有被清除,所以它后面通常会跟着被篡改的、较旧的日志消息)
Daemons Configuration File
重新安装后,启动FRR将不起任何作用。这是因为必须通过编辑配置目录中的文件来显式启用守护程序。此文件通常位于/etc/frr/daemons,它确定在通过init或systemd发出服务启动/停止命令时激活哪些守护程序。文件最初看起来如下所示:
zebra=no
bgpd=no
ospfd=no
ospf6d=no
ripd=no
ripngd=no
isisd=no
pimd=no
ldpd=no
nhrpd=no
eigrpd=no
babeld=no
sharpd=no
staticd=no
pbrd=no
bfdd=no
fabricd=no
#
# If this option is set the /etc/init.d/frr script automatically loads
# the config via "vtysh -b" when the servers are started.
# Check /etc/pam.d/frr if you intend to use "vtysh"!
#
vtysh_enable=yes
zebra_options=" -s 90000000 --daemon -A 127.0.0.1"
bgpd_options=" --daemon -A 127.0.0.1"
ospfd_options=" --daemon -A 127.0.0.1"
ospf6d_options=" --daemon -A ::1"
ripd_options=" --daemon -A 127.0.0.1"
ripngd_options=" --daemon -A ::1"
isisd_options=" --daemon -A 127.0.0.1"
pimd_options=" --daemon -A 127.0.0.1"
ldpd_options=" --daemon -A 127.0.0.1"
nhrpd_options=" --daemon -A 127.0.0.1"
eigrpd_options=" --daemon -A 127.0.0.1"
babeld_options=" --daemon -A 127.0.0.1"
sharpd_options=" --daemon -A 127.0.0.1"
staticd_options=" --daemon -A 127.0.0.1"
pbrd_options=" --daemon -A 127.0.0.1"
bfdd_options=" --daemon -A 127.0.0.1"
fabricd_options=" --daemon -A 127.0.0.1"
#MAX_FDS=1024
# The list of daemons to watch is automatically generated by the init script.
#watchfrr_options=""
# for debugging purposes, you can specify a "wrap" command to start instead
# of starting the daemon directly, e.g. to use valgrind on ospfd:
# ospfd_wrap="/usr/bin/valgrind"
# or you can use "all_wrap" for all daemons, e.g. to use perf record:
# all_wrap="/usr/bin/perf record --call-graph -"
# the normal daemon command is added to this at the end.
Breaking this file down:
bgpd=yes
要启用特定的守护进程,只需将相应的“no”更改为“yes”。后续服务重新启动应启动守护进程。
vtysh_enable=yes
正如注释所说,这会导致VTYSH在启动守护进程时应用配置。这对于VTYSH文档中涉及的各种原因都很有用,通常应该启用它。
MAX_FDS=1024
这允许操作员控制允许每个守护进程启动的打开文件描述符的数量。大多数操作系统上的当前假定值是1024。如果运营商计划用几千个对等点运行bgp,那么我们将修改FRR以允许这种情况发生。
zebra_options=" -s 90000000 --daemon -A 127.0.0.1"
bgpd_options=" --daemon -A 127.0.0.1"
...
下一组行控制从服务脚本启动时传递给守护程序的选项。通常守护程序会指定--daemon和-A<address>,以便守护和侦听特定地址上的VTY命令。
关于watchfrr_options 和 *_wrap 设置的其余文件内容通常不需要;如果需要,请参阅注释。
Services
FRR守护进程有自己的终端接口或VTY。安装后,最好设置每个守护进程的端口号以连接到它们。为此,请将以下条目添加到/etc/services。
zebrasrv 2600/tcp # zebra service
zebra 2601/tcp # zebra vty
ripd 2602/tcp # RIPd vty
ripngd 2603/tcp # RIPngd vty
ospfd 2604/tcp # OSPFd vty
bgpd 2605/tcp # BGPd vty
ospf6d 2606/tcp # OSPF6d vty
ospfapi 2607/tcp # ospfapi
isisd 2608/tcp # ISISd vty
babeld 2609/tcp # BABELd vty
nhrpd 2610/tcp # nhrpd vty
pimd 2611/tcp # PIMd vty
ldpd 2612/tcp # LDPd vty
eigprd 2613/tcp # EIGRPd vty
bfdd 2617/tcp # bfdd vty
fabricd 2618/tcp # fabricd vty
vrrpd 2619/tcp # vrrpd vty
如果使用比2.2.8更新的FreeBSD,则上述条目已添加到/etc/services,因此无需添加。如果在启动守护程序时指定端口号,则可能不需要这些条目。
您可能需要更改/etc/frr中的配置文件。
Systemd
虽然从源代码安装时没有安装,但FRR提供了一个服务文件,可与systemd一起使用。它位于 tools/frr.service
在Git存储库中。如果系统控制状态frr.service
指示找不到FRR服务,请将服务文件从Git存储库复制到首选位置。一个好地方通常是/etc/systemd/system/。
在发出systemctl守护进程重载后,您应该能够通过systemctl start frr
启动FRR服务。如果失败,或者没有启动守护程序。检查日志中是否有出错的迹象。
Operations
本节介绍一些常见的操作任务以及如何执行这些任务。
Restarting
重新启动会杀死所有正在运行的FRR守护进程,然后再次启动它们。任何未保存的配置都将丢失。
service frr restart
注意
或者,可以直接调用init脚本:/etc/init.d/frr restart
或者,如果使用systemd:
systemctl restart frr
Reloading
重新加载应用磁盘上配置和正在运行的FRR进程的当前有效配置之间的差异。这包括启动以前停止的守护程序以及对单个或统一守护程序配置文件所做的任何更改。
service frr reload
注意
或者,可以直接调用init脚本:/etc/init.d/frr reload
或者,如果使用systemd:
systemctl reload frr
See FRR-RELOAD for more about the frr-reload.py script.
有关 FRR-RELOAD 的更多信息,请参阅 frr-reload.py script.
Starting a new daemon
假设bgpd and zebra running,您希望启动pimd。在/etc/frr/daemons
以下更改中:
- pimd=no
+ pimd=yes
然后执行重新加载。
目前没有方法停止或重新启动单个守护进程。这是因为FRR的监视程序当前无法区分崩溃/已终止的守护进程与故意停止或重新启动的守护进程。最接近的方法是删除守护进程的所有配置,并将其行设置为/etc/frr/daemons为=no。一旦完成此操作,将在下次重新启动frr时停止守护进程。
Network Namespaces
可以在不同的网络名称空间中运行FRR,以便可以进一步划分(例如,限制到较小的网络子集)。网络命名空间配置可以在默认FRR配置路径空间中使用,也可以在其他路径空间(-N/–pathspace)中使用。
要在默认路径空间中使用FRR network namespace,应在 /etc/frr/daemons
中添加或取消注释 watchfrr_options
行:
- #watchfrr_options="--netns"
+ watchfrr_options="--netns=<network-namespace-name>"
如果要将不同的路径空间与网络命名空间一起使用(推荐的方式),应在/etc/frr/<namespace>/daemons中添加/取消对watchfrr_options
行的注释:
- #watchfrr_options="--netns"
+ #watchfrr_options="--netns=<network-namespace-name>"
+
+ # `--netns` argument is optional and if not provided it will
+ # default to the pathspace name.
+ watchfrr_options="--netns"
要在新的pathspace+网络命名空间中启动FRR,应使用额外参数调用初始化脚本:
/etc/init.d/frr start <pathspace-name>
注意
一些Linux发行版可能不使用FRR附带的默认init脚本,在这种情况下,您可能希望尝试在/usr/lib/FRR中运行捆绑的脚本/frrinit.sh文件.
在systemd上,您可以创建不同的单元或参数化现有的单元。参见手册页:https://www.freedesktop.org/software/systemd/man/systemd.unit.html