FRR简介
是FRRouting的简称,是一个开源的路由交换软件套件。其作者源自老牌项目quaga的成员,也可以算是的新版本。
使用时一般查看此文档:
FRR支持的协议众多,也有较为完备的北向接口。
FRR的安装方式多种多样,如仅仅把它当做工具使用,使用docker运行FRR是一个不错的选择。
docker方式运行frr时需要注意:较新版本FRR的docker仓库由quay.io维护,并没有在dockerhub中。
使用时拉一下对应的版本即可,如:
frrouting+ospf快速组网
frr应用范围广泛,如:
- 虚拟路由器/交换机
- 路由交换套件开发/学习,sonic组件
- frr组网,openwrt
- 交换机路由器模拟器
- ……
这里以FRR+OSPF为例,演示一下FRR+OSPF组网的丝滑过程。
ospf简单回顾
OSPF,全称为Open Shortest Path First,开放最短路径优先。
在笔者以前的文章《使用mininet快速入门ONOS路由交换技术与原理-路由篇》中有提到,OSPF属于IGP,是一种基于链路状态的动态路由协议,与RIP、ISIS协议相比具有快速收敛、简单易用的特点。
目前使用到的OSPF有OSPF-V2与OSPF-V3两个版本,OSPF-V2主要用于IPV4,OSPF-V3主要用于IPV6。
OSPF中常见术语有:
- LSA,链路状态通告
- LSDB,链路状态数据库
- Router ID,唯一标识一个OSPF路由器
- OSPF Area,标识一个OSPF区域
- Area ID,OSPF区域号
- Cost,路由度量值,默认算法为=100 Mbit/s/接口带宽
- OSPF邻居,由OSPF Hello报文建立的邻居关系
- OSPF DR/BDR,OSPF指定路由器/备份指定路由器
OSPF中的路由表项由SPF算法生成,底层使用Dijkstra算法(狄克斯特拉)。OSPF通过交换链路状态信息构建全网拓扑图,并使用计算每个路由器到其他路由器的最短路径,以生成高效且一致的路由表。
OSPF更多介绍,可移步
实验拓扑
拓扑图如上,由3个不同网段的路由器组成,R1和R3使用R2间接连起来,且R1与R3位于不同的两个网段。
环境准备
路由器搭建
使用FRR模拟3台路由器
查看网络信息
上面使用的net为none,默认没有网卡信息,后续再手动配置网络拓扑。显示如下:
启动ospf
进入每个容器,开启R1、R2、R3中的ospf
或用字符串替换:
sed -i ‘s/ospfd=no/ospfd=yes/g’ /etc/frr/daemons
配置文件修改好后再重启FRR服务:
#重启 FRR 服务
/etc/init.d/frr restart
输入ps -ef|grep ospf 验证一下
ovs安装与验证
上面使用frr镜像仅完成了3台路由器容器的搭建,但还未配置网卡信息。为了实验方便,使用完成容器网络搭建。
安装ovs
参考ovs官网链接:
以ubuntu系统为例,执行如下命令进行安装
sudo apt-get install openvswitch-switch
验证ovs
绑定容器网络
frr容器与ovs就绪后,便可以将容器与ovs交换机连接起来了。
创建一个ovs网桥,命名为brConn
ovs-vsctl add-br brConn
如需删除执行此命令: ovs-vsctl del-br brConn
创建好后输入如下命令进行验证:
ovs-vsctl show
Bridge成功显示后,便可以让3台路由器进行连线了,让其全连到同一个交换机(brConn)中。使用到的工具为ovs中自带的ovs-docker命令
ovs-docker add-port brConn eth1 frr-01 --ipaddress=11.11.0.2/24
ovs-docker add-port brConn eth1 frr-02 --ipaddress=11.11.0.3/24
ovs-docker add-port brConn eth2 frr-02 --ipaddress=12.12.0.2/24
ovs-docker add-port brConn eth1 frr-03 --ipaddress=12.12.0.3/24
上面的ovs-docker命令执行好后,再次查看网桥信息
ovs-vsctl show
可以看到添加了3个口,每个口和前面创建的frr容器进行了连接。
未学到路由前网络验证
进入容器,尝试让R1与R2、R3进行通信
R1 ping R2
R1到R2的同网段ip可达,R1到R3不可达,因为处于不同网段且无路由记录。
R2 ping R3
R2作为中间节点,到R1和R3均可达
进入frr-01控制台查看接口信息
进入frr-02查看路由器信息
ospf配置
依次进入R1、R2、R3容器,输入vtysh进入frrouting控制台进行ospf配置,详细配置如下:
R1
R2
R3
配置完毕后可以随时使用如下命令进行验证
网络连通性验证
R1
ping 11.11.0.3
ping 12.12.0.2
ping 12.12.0.3
R2
ping 11.11.0.2
ping 12.12.0.3
R3
ping 11.11.0.2
ping 12.12.0.2
通信成功,自动添加路由记录