Convert Figma logo to code with AI

FRRouting logofrr

The FRRouting Protocol Suite

4,125
1,503
4,125
730

Top Related Projects

4,048

BGP implemented in the Go Programming Language

Quick Overview

FRRouting (FRR) is an open-source routing software suite that provides implementations of various routing protocols, including OSPF, BGP, IS-IS, and more. It is designed to be a highly scalable and flexible routing solution for a wide range of network environments, from small home networks to large-scale enterprise and service provider networks.

Pros

  • Comprehensive Routing Protocols: FRR supports a wide range of routing protocols, allowing network administrators to choose the most appropriate protocols for their specific network requirements.
  • Scalability and Performance: FRR is designed to be highly scalable, capable of handling large and complex network topologies without compromising performance.
  • Flexibility and Customization: FRR provides a modular architecture, allowing users to enable or disable specific routing protocols and features based on their needs.
  • Active Community and Development: FRR has a large and active community of contributors, ensuring regular updates, bug fixes, and feature enhancements.

Cons

  • Steep Learning Curve: Configuring and managing FRR may require a significant amount of expertise and experience in network administration and routing protocols.
  • Dependency on Linux: FRR is primarily designed for Linux-based operating systems, which may limit its adoption in environments where other operating systems are preferred.
  • Limited GUI Support: FRR primarily relies on command-line interfaces and configuration files, which may be less user-friendly for network administrators who prefer graphical user interfaces (GUIs).
  • Potential Compatibility Issues: As an open-source project, FRR may occasionally encounter compatibility issues with certain hardware or software components, requiring additional troubleshooting and configuration.

Code Examples

N/A (FRRouting is not a code library)

Getting Started

N/A (FRRouting is not a code library)

Competitor Comparisons

4,048

BGP implemented in the Go Programming Language

Pros of GoBGP

  • Written in Go, offering better performance and easier deployment
  • Lightweight and modular design, suitable for embedding in other applications
  • Supports gRPC API for programmatic control and integration

Cons of GoBGP

  • Limited routing protocol support (primarily focused on BGP)
  • Smaller community and ecosystem compared to FRR
  • Less extensive documentation and fewer enterprise-grade features

Code Comparison

GoBGP example (configuring a BGP peer):

peer := &api.Peer{
    Conf: &api.PeerConf{
        NeighborAddress: "192.168.1.1",
        PeerAs:          65001,
    },
}
s.AddPeer(context.Background(), &api.AddPeerRequest{Peer: peer})

FRR example (configuring a BGP peer):

router bgp 65000
 neighbor 192.168.1.1 remote-as 65001
 neighbor 192.168.1.1 activate

GoBGP focuses on programmatic configuration using Go code and gRPC, while FRR uses a more traditional CLI-based configuration approach. FRR offers a wider range of routing protocols and features, making it suitable for complex network environments. GoBGP excels in scenarios requiring lightweight BGP implementations or integration into custom applications.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Icon

FRRouting

github-ci Documentation Status

FRR is free software that implements and manages various IPv4 and IPv6 routing protocols. It runs on nearly all distributions of Linux and BSD and supports all modern CPU architectures. The project website is frrouting.org.

FRR currently supports the following protocols:

  • BGP
  • OSPFv2
  • OSPFv3
  • RIPv1
  • RIPv2
  • RIPng
  • IS-IS
  • PIM (SM, DM, SSM, MSDP)
  • LDP
  • BFD
  • Babel
  • PBR
  • OpenFabric
  • VRRP
  • EIGRP (alpha)
  • NHRP (alpha)

Not every protocol or feature is available on every platform; see the feature matrix in the user guide.

Centralized FRR configuration (work in progress): the mgmtd daemon applies YANG configuration to the routing protocol daemons through the northbound API (instead of each daemon only having its own legacy configuration path). Not all daemons are migrated yet; expect ongoing changes. See mgmtd in the user guide.

Installation & Use

For source tarballs, see the releases page.

Pre-built packages: APT for Debian and derivatives (deb.frrouting.org), and RPM for RHEL, Fedora, and related distributions (rpm.frrouting.org).

Instructions on building and installing from source for supported platforms may be found in the developer docs.

Once installed, please refer to the user guide for instructions on use.

Community

See lists.frrouting.org for the list index, subscription, and archives. The public lists include:

TopicList
Developmentdev@lists.frrouting.org
Users & Operatorsfrog@lists.frrouting.org
Announcementsannounce@lists.frrouting.org

For chat, we use Slack. New members can join via the invite link on the community page.

Contributing

See submitting patches and enhancements and the commit guidelines when contributing. FRR maintains developer's documentation with the full project workflow and contributor expectations; technical documentation on internals is also available.

We welcome and appreciate all contributions, no matter how small!

License

Per-file licenses use SPDX identifiers; see COPYING and doc/licenses/. The combined work is generally understood to be distributable under GNU General Public License version 2 or later (GPLv2+); see COPYING for details. FRR's documentation uses a separate custom permissive license (see COPYING for background).

Security

To report security issues, please use our security mailing list:

security [at] lists.frrouting.org