- Home /
- Resources /
- Learning center /
- Configuring BGP wi...
Configuring BGP with FRR on an Equinix Metal Server
Establish a robust BGP configuration on your Equinix Metal server using FRR, including setting up network interfaces, installing and configuring FRR software, and ensuring secure and efficient IP address announcement.
On this page
FRRouting (FRR) is a set of open source internet routing protocols, including BGP, which you can use on Equinix Metal. This is a guide for a minimum viable configuration to announce an IP address from your server via BGP.
You'll find some Equinix Metal-created starter scripts in the packethost/network-helpers
GitHub repository that can help you automate the process of pulling the BGP information you need from your server's BGP metadata and writing it into the FRR configuration file.
Getting Started
If you are configuring BGP for the first time, the BGP on Equinix Metal doc contains a high-level overview of enabling and using BGP on the platform.
For the example here, we have set up Local BGP to advertise a public IPv4 address that is reserved to our Equinix Metal project: 10.99.200.138/32
. In this example we configured BGP on Equinix Metal without a password.
Updating the Network Interface
SSH into your server and update the server's network interfaces with a virtual loopback interface.
cat >>/etc/network/interfaces <<EOF
auto lo:0
iface lo:0 inet static
address 10.99.200.138
netmask 255.255.255.255
EOF
Then bring up the interface.
ifup lo:0
Installing FRR and Enabling BGP
Then install FRR.
apt -y update && apt -y install frr
Once installed, we need to enable BGP within FRR's configuration. Open the /etc/frr/daemons
file and change bgpd=no
to bgpd=yes
.
Gathering Your Neighbor Information
FRR comes with a minimal configuration file that we are going to add a few things to in order to get the basic "announce an IP address" functionality going.
The information you need is found in your server's BGP metadata once you have enabled BGP on both your Project and your server, as described in the BGP on Equinix Metal and Local BGP guides.
To get your server's neighbor information, SSH into the server and use cURL to access the metadata endpoint.
curl https://metadata.platformequinix.com/metadata | jq '.bgp_neighbors[0] | { customer_ip: .customer_ip, customer_as: .customer_as, multihop: .multihop, peer_ips: .peer_ips, peer_as: .peer_as }'
This command will return a blob of relevant BGP information.
{
"customer_ip": "10.67.50.3",
"customer_as": 65000,
"multihop": true,
"peer_ips": [
"169.254.255.1",
"169.254.255.2"
],
"peer_as": 65530
}
You will also need to set up static routes in your config, so access the metadata endpoint again for the private IP address of the gateway to the upstream routers.
curl https://metadata.platformequinix.com/metadata | jq -r '.network.addresses[] | select(.public == false and .address_family == 4) | { gateway: .gateway }'
In response, you get your server's IPv4 gateway address.
{
"gateway": "10.67.50.2"
}
Filling Out the FRR Configuration File
Once FRR is installed, its configuration file is found in /etc/frr/frr.conf
. We have an example configuration file for you to start with.
frr defaults traditional
log syslog informational
ipv6 forwarding
service integrated-vtysh-config
!
ip route 169.254.255.1/32 10.67.50.2
ip route 169.254.255.2/32 10.67.50.2
!
router bgp 65000
bgp ebgp-requires-policy
neighbor V4 peer-group
neighbor V4 remote-as 65530
neighbor V4 ebgp-multihop 5
neighbor 169.254.255.1 peer-group V4
neighbor 169.254.255.2 peer-group V4
!
address-family ipv4 unicast
redistribute connected
neighbor V4 route-map IMPORT in
neighbor V4 route-map EXPORT out
exit-address-family
!
route-map EXPORT deny 100
!
route-map EXPORT permit 1
match interface lo
!
route-map IMPORT deny 1
!
line vty
!
The metadata to field mappings are as follows:
frr.conf | metadata | value |
---|---|---|
router bgp | customer_as | 65000 |
neighbor V4 remote-as | peer_as | 65530 |
neighbor V4 ebgp-multihop 5 | multihop | if the metadata shows multihop as true then you need to add multihop to FRR |
neighbor IP peer-group V4 | peer_ips | 169.254.255.1 and 169.254.255.2 |
You also need to set up static routes from your server to Metal's routers, which are the two ip route
lines in the config, using the gateway address pulled from the metadata.
ip route <peer_ips_1>/32 <gateway>
ip route <peer_ips_2>/32 <gateway>
Then tell FRR which network interface to work with:
route-map EXPORT permit 1
match interface lo
Finally, check that the config looks correct, then restart FRR:
systemctl restart frr
Verifying the FRR Configuration
You can verify the BGP session by starting up the vtysh
shell.
vtysh
Then use the show bgp summary
command.
show bgp summary
The results should reflect the information in your configuration file.
IPv4 Unicast Summary (VRF default):
BGP router identifier 147.75.109.216, local AS number 65000 vrf-id 0
BGP table version 3
RIB entries 5, using 920 bytes of memory
Peers 2, using 1446 KiB of memory
Peer groups 1, using 64 bytes of memory
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd PfxSnt Desc
169.254.255.1 4 65530 6 6 0 0 0 00:02:15 0 1 N/A
169.254.255.2 4 65530 8 7 0 0 0 00:03:15 0 1 N/A
Total number of neighbors 2
To see if your server is now reachable at your advertised IP address, you can ping the IP address in a command line. If you are advertising a public IPv4 or IPv6 address, then you should be able to ping from any server. If you are announcing a private IPv4 address, however, you'll have to be connected to the private network so you can only ping from a server in the same project and metro (or just the same project if you have Backend Transfer enabled.)
Wrap-Up
Once you have configured BGP on the host, Equinix Metal provides monitoring for your BGP sessions. More information is on the Monitoring BGP page.
For a different example of the same process, but using BIRD to manage the server's BGP session, we also have a Configuring BGP with BIRD on an Equinix Metal Server guide.
FRR can also be automatically deployed via Docker. See more about deploying FRR with Docker.
You may also like
Dig deeper into similar topics in our archivesConfiguring BGP with BIRD 2 on Equinix Metal
Set up BGP on your Equinix Metal server using BIRD 2, including IP configuration, installation, and neighbor setup to ensure robust routing capabilities between your server and the Equinix M...
Crosscloud VPN with WireGuard
Learn to establish secure VPN connections across cloud environments using WireGuard, including detailed setups for site-to-site tunnels and VPN gateways with NAT on Equinix Metal, enhancing...
Deploy Your First Server
Learn the essentials of deploying your first server with Equinix Metal. Set up your project & SSH keys, provision a server and connect it to the internet.
AWS ECS Anywhere on Equinix Metal
Learn to deploy Amazon ECS Anywhere on Equinix Metal.