【FRRouting User Guide】(一)概述

    FRR是一个功能齐全、高性能的免费软件IP路由套件。
    FRR实现了所有的标准路由协议,如BGP、RIP、OSPF、IS-IS等(参见功能矩阵),以及它们的许多扩展。
    FRR是一个主要用C语言编写的高性能套件,它可以轻松地处理完整的Internet路由表,并且适用于从廉价sbc(系统基础芯片)到商用级路由器的硬件。它被数百家公司、大学、研究实验室和*积极用于生产。
    FRR是在GPLv2下发布的,其开发是模仿Linux内核的。任何人都可以提供功能、错误修复、工具、文档更新或其他任何内容。
 

如何获取FRR 
     

        FRR官方网站位于https://frrouting.org/并包含更多信息,以及指向其他资源的链接。
        一些发行版为FRR提供了包。检查发行版的存储库以确定是否有合适的版本可用。
       最新的Debian&Redhat软件包可在https://deb.frrouting.org/& https://rpm.frrouting.org/分别。
       有关从源代码安装的说明,请参阅开发人员文档。

 

关于FRR


        FRR提供IP路由服务。它在网络栈中的作用是与其他路由器交换路由信息,做出路由和策略决策,并将这些决策通知其他层。在最常见的场景中,FRR将路由决策安装到OS内核中,允许内核网络堆栈做出相应的转发决策。
        除了动态路由外,FRR还支持全范围的L3配置,包括静态路由、地址、路由器广告等。它还具有一些轻L2功能,但这主要是留给平台的。这使得它适用于从具有静态路由的小型家庭网络到运行完整Internet表的Internet交换的部署。
       FRR在所有现代的*NIX操作系统上运行,包括Linux和BSDs。功能支持因平台而异;请参见功能矩阵。

 

系统架构


        传统的路由软件是作为一个进程程序,提供所有的路由协议功能。FRR采取了不同的方法。FRR是一组守护程序,它们共同构建路由表。每个主要协议都在自己的守护进程中实现,这些守护进程与中间守护进程(zebra)通信,后者负责协调路由决策并与数据平面通信
       这种体系结构允许高弹性,因为一个协议守护进程中的错误、崩溃或漏洞攻击通常不会影响其他协议守护进程。它还具有灵活性和可扩展性,因为模块化使得实现新协议和将它们绑定到套件中变得容易。此外,每个守护进程实现一个插件系统,允许在运行时加载新功能
      下面给出了大规模体系结构的一个例子。

+----+  +----+  +-----+  +----+  +----+  +----+  +-----+
|bgpd|  |ripd|  |ospfd|  |ldpd|  |pbrd|  |pimd|  |.....|
+----+  +----+  +-----+  +----+  +----+  +----+  +-----+
     |       |        |       |       |       |        |
+----v-------v--------v-------v-------v-------v--------v
|                                                      |
|                         Zebra                        |
|                                                      |
+------------------------------------------------------+
       |                    |                   |
       |                    |                   |
+------v------+   +---------v--------+   +------v------+
|             |   |                  |   |             |
| *NIX Kernel |   | Remote dataplane |   | ........... |
|             |   |                  |   |             |
+-------------+   +------------------+   +-------------+

       所有FRR守护进程都可以通过一个名为vtysh集成用户界面shell进行管理。vtysh通过UNIX域套接字连接到每个守护进程,然后作为用户输入的代理。除了统一的前端之外,vtysh还提供了通过集成配置模式使用单个配置文件配置所有守护进程的能力。这避免了为每个守护进程维护单独配置文件的开销。

       FRR目前正在实施一个基于YANG数据模型的新的内部配置系统。当这项工作完成后,FRR将是一个完全可编程的路由栈。

 

支持的平台


        目前FRR支持GNU/Linux和BSD。将FRR移植到其他平台并不太困难,因为依赖于平台的代码应该主要局限于Zebra守护进程。协议守护进程基本上是独立于平台的。如果您能让FRR在以下未列出的平台上运行,请告知我们:

  • GNU/Linux
  • FreeBSD
  • NetBSD
  • OpenBSD

       这些平台的版本从其原始版本开始已经超过2年(对于GNU/Linux,这是因为内核是在上发布的)https://kernel.org/)可能需要一些工作。同样,以下平台可能需要一些努力:

  • MacOS

以下编译器的最新版本经过了很好的测试:

  • GNU’s GCC
  • LLVM’s Clang
  • Intel’s ICC

 

不支持的平台

        一般来说,如果上面没有列出您尝试使用的平台,那么FRR不支持在该平台上运行。这里唯一需要注意的是,Solaris 7.5及之前的版本受到了有限的支持。

 

特征矩阵


       下表列出了所有交叉引用到所有至少具有CI构建测试的操作系统的协议。注意,对于功能,这里只包含系统依赖项的功能;如果您没有看到您感兴趣的特性,则应在平台上支持该功能。

Daemon / Feature Linux OpenBSD FreeBSD NetBSD
FRR Core        
zebra Y Y Y Y
VRF ≥4.8 N N N
MPLS ≥4.5 Y N N
pbrd (Policy Routing) Y N N N
WAN / Carrier protocols        
bgpd (BGP) Y Y Y Y
VRF / L3VPN ≥4.8†4.3 CP CP CP
EVPN ≥4.18†4.9 CP CP CP
VNC (Virtual Network Control) CP CP CP CP
Flowspec CP CP CP CP
ldpd (LDP) ≥4.5 Y N N
VPWS / PW N ≥5.8 N N
VPLS N ≥5.8 N N
nhrpd (NHRP) Y N N N
Link-State Routing        
ospfd (OSPFv2) Y Y Y Y
Segment Routing ≥4.12 N N N
ospf6d (OSPFv3) Y Y Y Y
isisd (IS-IS) Y Y Y Y
Distance-Vector Routing        
ripd (RIPv2) Y Y Y Y
ripngd (RIPng) Y Y Y Y
babeld (BABEL) Y Y Y Y
eigrpd (EIGRP) Y Y Y Y
Multicast Routing        
pimd (PIM) ≥4.18 N Y Y
SSM (Source Specific) Y N Y Y
ASM (Any Source) Y N N N
EVPN BUM Forwarding ≥5.0 N N N
vrrpd (VRRP) ≥5.1 N N N

标志具有以下语义:

  • Y - daemon/feature fully functional
  • ≥X.X - fully functional with kernel version X.X or newer
  • †X.X -内核版本X.X或更新版本的功能受限或性能受损
  • CP - 仅控制平面(即BGP路由服务器/路由反射器)
  • N - daemon/feature not supported by operating system

 

Known Kernel Issues

  • Linux < 4.11

    v6路由替换-4.11之前的Linux内核在内核中安装了ECMP路由时可能会导致v6路由删除问题。如果路由正在从一个ECMP路径转换到另一个ECMP路径,这一点尤其明显。

 

支持的RFC


        FRR实施以下RFC:

注意,此列表不完整。

BGP

  • RFC 1771 A Border Gateway Protocol 4 (BGP-4). Y. Rekhter & T. Li. March 1995.
  • RFC 1965 Autonomous System Confederations for BGP. P. Traina. June 1996.
  • RFC 1997 BGP Communities Attribute. R. Chandra, P. Traina & T. Li. August 1996.
  • RFC 2439 BGP Route Flap Damping. C. Villamizar, R. Chandra, R. Govindan. November 1998.
  • RFC 2545 Use of BGP-4 Multiprotocol Extensions for IPv6 Inter-Domain Routing. P. Marques, F. Dupont. March 1999.
  • RFC 2796 BGP Route Reflection An alternative to full mesh IBGP. T. Bates & R. Chandrasekeran. June 1996.
  • RFC 2842 Capabilities Advertisement with BGP-4. R. Chandra, J. Scudder. May 2000.
  • RFC 2858 Multiprotocol Extensions for BGP-4. T. Bates, Y. Rekhter, R. Chandra, D.
  • RFC 3107 Carrying Label Information in BGP-4. Y. Rekhter & E. Rosen. May 2001.
  • RFC 3765 NOPEER Community for Border Gateway Protocol (BGP) Route Scope Control. G.Huston, April 2001.
  • RFC 4271 A Border Gateway Protocol 4 (BGP-4). Updates RFC1771. Y. Rekhter, T. Li & S. Hares. January 2006.
  • RFC 4364 BGP/MPLS IP Virtual Private Networks (VPNs). Y. Rekhter. Feb 2006.
  • RFC 4486 Subcodes for BGP Cease Notification Message. E. Chen, V. Gillet. April 2006.
  • RFC 4659 BGP-MPLS IP Virtual Private Network (VPN) Extension for IPv6 VPN. J. De Clercq, D. Ooms, M. Carugi, F. Le Faucheur. September 2006.
  • RFC 4893 BGP Support for Four-octet AS Number Space. Q. Vohra, E. Chen May 2007.
  • RFC 5004 Avoid BGP Best Path Transitions from One External to Another. E. Chen & S. Sangli. September 2007 (Partial support).
  • RFC 5082 The Generalized TTL Security Mechanism (GTSM). V. Gill, J. Heasley, D. Meyer, P. Savola, C. Pingnataro. October 2007.
  • RFC 5575 Dissemination of Flow Specification Rules. P. Marques, N. Sheth, R. Raszuk, B. Greene, J. Mauch, D. McPherson. August 2009
  • RFC 6286 Autonomous-System-Wide Unique BGP Identifier for BGP-4. E. Chen, J. Yuan, June 2011.
  • RFC 6608 Subcodes for BGP Finite State Machine Error. J. Dong, M. Chen, Huawei Technologies, A. Suryanarayana, Cisco Systems. May 2012.
  • RFC 6810 The Resource Public Key Infrastructure (RPKI) to Router Protocol. R. Bush, R. Austein. January 2013.
  • RFC 6811 BGP Prefix Origin Validation. P. Mohapatra, J. Scudder, D. Ward, R. Bush, R. Austein. January 2013.
  • RFC 7313 Enhanced Route Refresh Capability for BGP-4. K. Patel, E. Chen, B. Venkatachalapathy. July 2014.
  • RFC 7606 Revised Error Handling for BGP UPDATE Messages. E. Chen, J. Scudder, P. Mohapatra, K. Patel. August 2015.
  • RFC 7607 Codification of AS 0 Processing. W. Kumari, R. Bush, H. Schiller, K. Patel. August 2015.
  • RFC 7611 BGP ACCEPT_OWN Community Attribute. J. Uttaro, P. Mohapatra, D. Smith, R. Raszuk, J. Scudder. August 2015.
  • RFC 7999 BLACKHOLE Community. T. King, C. Dietzel, J. Snijders, G. Doering, G. Hankins. Oct 2016.
  • RFC 8092 BGP Large Communities Attribute. J. Heitz, Ed., J. Snijders, Ed, K. Patel, I. Bagdonas, N. Hilliard. February 2017
  • RFC 8195 Use of BGP Large Communities. J. Snijders, J. Heasley, M. Schmidt, June 2017
  • RFC 8203 BGP Administrative Shutdown Communication. J. Snijders, J. Heitz, J. Scudder. July 2017.
  • RFC 8212 Default External BGP (EBGP) Route Propagation Behavior without Policies. J. Mauch, J. Snijders, G. Hankins. July 2017
  • RFC 8277 Using BGP to Bind MPLS Labels to Address Prefixes. E. Rosen. October 2017
  • RFC 8654 Extended Message Support for BGP. R. Bush, K. Patel, D. Ward. October 2019

OSPF

  • RFC 2328 OSPF Version 2. J. Moy. April 1998.
  • RFC 2370 The OSPF Opaque LSA Option R. Coltun. July 1998.
  • RFC 3101 The OSPF Not-So-Stubby Area (NSSA) Option P. Murphy. January 2003.
  • RFC 2740 OSPF for IPv6. R. Coltun, D. Ferguson, J. Moy. December 1999.
  • RFC 3137 OSPF Stub Router Advertisement, A. Retana, L. Nguyen, R. White, A. Zinin, D. McPherson. June 2001

ISIS

RIP

  • RFC 1058 Routing Information Protocol. C.L. Hedrick. Jun-01-1988.
  • RFC 2082 RIP-2 MD5 Authentication. F. Baker, R. Atkinson. January 1997.
  • RFC 2453 RIP Version 2. G. Malkin. November 1998.
  • RFC 2080 RIPng for IPv6. G. Malkin, R. Minnear. January 1997.

PIM

BFD

  • RFC 5880 Bidirectional Forwarding Detection (BFD), D. Katz, D. Ward. June 2010
  • RFC 5881 Bidirectional Forwarding Detection (BFD) for IPv4 and IPv6 (Single Hop), D. Katz, D. Ward. June 2010
  • RFC 5883 Bidirectional Forwarding Detection (BFD) for Multihop Paths, D. Katz, D. Ward. June 2010

MPLS

  • RFC 2858 Multiprotocol Extensions for BGP-4. T. Bates, Y. Rekhter, R. Chandra, D. Katz. June 2000.
  • RFC 4364 BGP/MPLS IP Virtual Private Networks (VPNs). Y. Rekhter. Feb 2006.
  • RFC 4447 Pseudowire Setup and Maintenance Using the Label Distribution Protocol (LDP), L. Martini, E. Rosen, N. El-Aawar, T. Smith, and G. Heron. April 2006.
  • RFC 4659 BGP-MPLS IP Virtual Private Network (VPN) Extension for IPv6 VPN. J. De Clercq, D. Ooms, M. Carugi, F. Le Faucheur. September 2006
  • RFC 4762 Virtual Private LAN Service (VPLS) Using Label Distribution Protocol (LDP) Signaling, M. Lasserre and V. Kompella. January 2007.
  • RFC 5036 LDP Specification, L. Andersson, I. Minei, and B. Thomas. October 2007.
  • RFC 5561 LDP Capabilities, B. Thomas, K. Raza, S. Aggarwal, R. Aggarwal, and JL. Le Roux. July 2009.
  • RFC 5918 Label Distribution Protocol (LDP) ‘Typed Wildcard’ Forward Equivalence Class (FEC), R. Asati, I. Minei, and B. Thomas. August 2010.
  • RFC 5919 Signaling LDP Label Advertisement Completion, R. Asati, P. Mohapatra, E. Chen, and B. Thomas. August 2010.
  • RFC 6667 LDP ‘Typed Wildcard’ Forwarding Equivalence Class (FEC) for PWid and Generalized PWid FEC Elements, K. Raza, S. Boutros, and C. Pignataro. July 2012.
  • RFC 6720 The Generalized TTL Security Mechanism (GTSM) for the Label Distribution Protocol (LDP), C. Pignataro and R. Asati. August 2012.
  • RFC 7552 Updates to LDP for IPv6, R. Asati, C. Pignataro, K. Raza, V. Manral, and R. Papneja. June 2015.

VRRP

  • RFC 3768 Virtual Router Redundancy Protocol (VRRP). R. Hinden. April 2004.
  • RFC 5798 Virtual Router Redundancy Protocol (VRRP) Version 3 for IPv4 and IPv6. S. Nadas. June 2000.

SNMP

When SNMP support is enabled, the following RFCs are also supported:

  • RFC 1227 SNMP MUX protocol and MIB. M.T. Rose. May-01-1991.
  • RFC 1657 Definitions of Managed Objects for the Fourth Version of the Border Gateway Protocol (BGP-4) using SMIv2. S. Willis, J. Burruss, J. Chu, Editor. July 1994.
  • RFC 1724 RIP Version 2 MIB Extension. G. Malkin & F. Baker. November 1994.
  • RFC 1850 OSPF Version 2 Management Information Base. F. Baker, R. Coltun. November 1995.
  • RFC 2741 Agent Extensibility (AgentX) Protocol. M. Daniele, B. Wijnen. January 2000.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

上一篇:数据库安全:入侵Oracle数据库常用操作命令


下一篇:BGP中next-hop-self的作用