type
status
date
slug
summary
tags
category
icon
password
官方文档: FRR
架构
可以看出和Quagga基本类似,毕竟FRR就是从Quagga fork出来的,但支持更多的协议功能,同时架构图中省略了一个关键服务就是watchfrr,该服务用来监控其他服务的运行状态还有配置文件的更新。
FRR is currently implementing a new internal configuration system based on YANG data models. When this work is completed, FRR will be a fully programmable routing stack
FRR 目前正基于YANG 数据模型的发开一种新的配置模式。完成后,FRR 将是一个完全可编程的路由。
安装
前面两种方式比较简单,这里主要列出通过源码编译
- 编译libyang
- 编译frr
安装后需要注意
- 当使用 Linux 作为路由器时,有几个内核参数会影响 FRR 的整体操作。通常,这些参数应该在 sysctl 相关的配置文件中设置,例如, Ubuntu 的系统
/etc/sysctl.conf和Centos 的系统/etc/sysctl.d/90-routing-sysctl.conf文件中。net.ipv4.conf.all.forwarding=1net.ipv6.conf.all.forwarding=1
- 在使用ripd或ospfd时需要保证是开启了IP多播的,因为这些协议使用到了多播
CONFIG_IP_MULTICAST = yes
配置说明
系统日志
如果任何守护进程由于某种原因崩溃,它将写入位于
/var/tmp/frr/<daemon>[-<instance>].<pid>/crashlog目录下,该路径暂时不能通过配置文件进行修改。配置文件
在/etc/frr目录下存在三个配置文件,分别是
- daemon : 配置各个服务启动和启动参数的文件
- frr.conf: 配置每个服务具体的参数值
- vtysh.conf: 配置使用vtysh命令工具的
daemon文件
该配置文件就是用来负责配置开启哪些服务,以及每个服务的配置参数的设置。例如需要启动rip和bgp则修改配置文件
重启服务
重新启动会杀死所有正在运行的 FRR 守护程序并重新启动它们
重加载服务
重新加载应用磁盘配置和当前运行 FRR 进程的有效配置之间的差异, 当修改了某一个服务的配置文件可以通过该命令使其生效。
目前没有办法停止或重新启动单个守护程序。这是因为 FRR 的监控程序目前无法区分崩溃/终止的守护程序与故意停止或重新启动的守护程序。只有将需要停止的服务设置/etc/frr/daemons为no,然后重新启动服务。
frr.conf
使用过Quagga的应该知道,每个服务有对应的配置文件,默认的配置文件名是:守护进程名称 .conf。比如zebra 的默认配置文件是
zebra.conf,ospf的默认配置文件是ospf.conf。由于这样会创建大量的配置文件,因此frr使用一个文件为
/etc/frr/frr.conf来配置所有的服务。 当使用 init 脚本或 systemd 启动 FRR 时,vtysh会调用它来读取配置文件并将适当的部分仅发送给对它们感兴趣的守护进程,如果需要为每个服务指定配置,可以在daemon中通过配置参数-f 或者 --config_file进行指定。vtysh.conf
配置vtysh工具
service integrated-vtysh-config
该命令表示,当在vtysh里面执行
write命令时,配置写入到什么地方去。- service integrated-vtysh-config:
- vtysh将始终写入frr.conf文件中
- no service integrated-vtysh-config:
- vtysh永远不会写frr.conf文件,它会要求守护进程编写它们各自的配置文件。
- Neither option present (default):
- vtysh会检查是否frr.conf文件存在。如果是这样,配置写入将更新该文件。否则,将通过各个守护程序执行写入
vtysh
vtysh是一个cli工具,可用于为所有 FRR 守护进程提供前端服务的。它在构建时默认启用,但可以通过
--disable-vtysh配置脚本的选项禁用。FRR守护进程中,有一个watchfrr服务负责收集和写入各个服务的配置信息。使用vtysh进行相关服务的配置时,实际上是与watchfrr服务进行通信,通过watchfrr尝试配置写入,由于_watchfrr_以超级用户身份运行, 因此 vtysh能够确保对
write integrated frr.conf。如果watchfrr没有运行或者配置写入失败,vtysh会尝试直接写入文件。在启动时,所有守护程序都会检查启动时是否存在frr.conf,如果存在,则不会加载各个配置文件。调用vtysh -b来处理frr.conf并将其设置应用于单个守护进程。
配置实例
实际上和quagga的配置方式几乎一样,这里将演示通过vtysh和配置文件的方式进行配置测试
OSPF
添加一个虚拟网卡并配置地址
保存以后会写入/etc/frr/frr.conf
另一台机器类似的操作。然后就可以通过查看
route -n 查看路由,可以发现多了一条路由规则,就是通过ospf协议学习得到的。BGP
在使用bgp时,绝大部分配置和quagga是一样的,但是frr需要添加一条配置项
no bgp ebgp-requires-policy,才能正常的获取到路由。- 作者:Ryan Wu
- 链接:https://hexo.fridaylab.top/article/a326ec81-d727-4707-b3ca-d7d5556e1a59
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。