FRR编译安装打包及配置

  本文基于官方文档进行编译安装,采用CentOS7操作系统,其中部分爬坑过程在此记录一下,本文最新状态可点击查看源站文章链接

  • frr源码打包

  如果需要给frr打包rpm,可以参看官方文档Packaging Red Hat

  • frr二进制包直接安装

  如果读者需要直接采用rpm包安装,可以参看frr Release地址,直接下载rpm包,或者通过添加源来安装。

1. 编译安装问题排查

  1. 本文采用CentOS7 默认Git版本为1.8,版本过早,导致编译之前一些依赖无法安装,报错如下图和代码。解决方法是升级Git版本。升级方法可参看文章https://turbock79.cn/?p=165


此时用make/make install,出现如下报错;

  1. 需要安装libjson-c

  如果报错如下

  解决方法

  • 读者可以尝试yum install libjson-c-devel json-c-devel.x86_64解决问题

  • 本文采用源码安装,读者可参看文章https://turbock79.cn/?p=1923.

  读者可以参考该篇文章error while loading shared libraries: xxx.so.x"错误的原因和解决办法

  1. systemd以及readline开发环境依赖

  1. 需要安装libyang库

  FRR依赖libyang库提供YANG/NETCONF的支持。用户可以采用rpm包安装和源码安装两种方式安装libyang;读者可在官方安装文档中根据不同操作系统搜索libyang,然后寻找相应的安装包建议。例如centos的rpm包下载路径是https://ci1.netdef.org/browse/LIBYANG-LY1REL-CENTOS7AMD64-4/artifact

  1. 官方文档http://docs.frrouting.org/projects/dev-guide/en/latest/building-frr-for-centos7.html ,其中可能安装frr服务和初始化文件存在问题。无法找到路径redhat/frr.service中文件,现在已转移到tools目录下面。同时没有frr.init文件生成,此处可忽略。

  2. 启动服务后,可以动态启动其中插件

  修改文件/etc/frr/daemons。例如启动bgpd则修改如下图,然后通过命令service frr reload热加载配置。通过netstat -tunlp| grep bgpd可以查看是否开启bgp守护进程。

2. FRR下载编译及安装

  整篇安装文章可以参看官方文档http://docs.frrouting.org/en/latest/setup.html

  • 构建

  在编译的过程中,configure.ac定义了检查当前系统环境,并配置各种(包含第三方)依赖项检查和相关函数,通过./bootstrap.sh运行autoreconf,并将根据configure.ac参数生成configure脚本文件;然后运行该脚本文件configure,并结合makefile.am生成我们熟知的Makefile文件。在makefile里面定义了编译当前项目需要的源码文件以及各种依赖头文件,编译输出等等。
参考文档http://docs.frrouting.org/projects/dev-guide/en/latest/building-frr-for-centos7.html#install-required-packages

  • 打包

3. FRR配置文件及权限

4. 配置文件及修改

  创建frr默认配置文件/etc/frr/daemon,修改相关配置如下。判断是否开启zebra、bgp等功能;设置watchfrr_enable=... 和zebra=...为yes。查看官方文档http://docs.frrouting.org/en/latest/basic.html#common-invocation-options

  修改/etc/frr/daemons配置文件,本文将bgp开启,并启动FD最大数量。

5. 开启IP转发和frr服务

  • 启动IP转发

创建文件/etc/sysctl.d/90-routing-sysctl.conf,并写入如下内容

载入修改的systemctl到系统:

  • 启动frr服务

  启动服务frr(systemctl start frr)后,通过修改配置文件,修改配置。通过命令systemctl reload frr热加载配置。配置文件都在/etc/frr目录中通过命令vtysh进入frr操作界面。

6. frr热重载和重启

参见官方文档

6.1 热重载

在不重启进程的情况下,热加载新配置内容到当前进程,确保链接不断开。

  1. 重载frr所有进程

如果报错,一般是因为缺少集成文件/etc/frr/frr.conf。在frr中可以设置集成配置文件,可以通过如下命令自动生成该集成文件。如果默认配置文件目录/etc/frr中有该集成文件frr.conf,则会将所有守护进程配置存于frr.conf中。默认情况下,是各自进程配置文件存于各自配置文件中,例如bgpd.conf。

  1. 热重载指定进程的配置

这里执行指定进程加载指定文件的方式实现。如此,仅需编写指定守护进程的配置文件,即可热加载该配置内容,同时不会影响其他已建立连接,该配置文件可位于任意位置。编写配置文件的内容格式,同已有的***.conf文件的格式一样。

6.2 重启

  1. 重启frr所有进程

  1. 重启frr中指定守护进程

因为frr中已有守护进程watchfrr,所以仅需要杀掉指定进程,它即可自动拉起并启动指定守护进程。

若发生意外,对于单独指定进程重启,可以直接删除,然后重启。

赞赏

微信赞赏支付宝赞赏

发表评论

邮箱地址不会被公开。 必填项已用*标注