BGP Config

This guide assumes you already have VyOS setup with basic connectivity, and will show you how to configure IPv6 BGP on VyOS over a Wireguard tunnel to Route48/Route64.


Prefix List

First we need to create a prefix list that will only allow our prefixs to be announced. (On route48 you can only announce prefixes they have assigned to you!) In this example I used my AS number for the prefix list name, you can name it whatever you want.
configure
set policy prefix-list6 AS23428 rule 1 action permit
set policy prefix-list6 AS23428 rule 1 prefix 2a06:a005:a17::/48
set policy prefix-list6 AS23428 rule 2 action permit
set policy prefix-list6 AS23428 rule 2 prefix 2a06:a005:d20::/48
commit

Wireguard Tunnel

After we have the prefix list configured we need to setup the tunnel. The tunnel must be named wgN, I'm naming it wg1 but you can use whatever number you like. You can get the config details by clicking the config button on Route48 or by selecting action and show configuration on Route64.
set interfaces wireguard wg1 address '2a06:a004:c069::2/48'
set interfaces wireguard wg1 peer R48 address '170.39.224.166'
set interfaces wireguard wg1 peer R48 allowed-ips '::/1'
set interfaces wireguard wg1 peer R48 allowed-ips '8000::/1'
set interfaces wireguard wg1 peer R48 persistent-keepalive '60'
set interfaces wireguard wg1 peer R48 port '51875'
set interfaces wireguard wg1 peer R48 public-key 'W0pI832mL5u7JzJjiE68dyS95mIGBDqGgSxSZromEGY='
set interfaces wireguard wg1 private-key 'REDACTED'
commit

We should now have a working tunnel. You should be able to ping both your local tunnel IP and then the remote endpoint of the tunnel.
vyos@vyos-demo.serverforge.org# ping 2a06:a004:c069::2
PING 2a06:a004:c069::2(2a06:a004:c069::2) 56 data bytes
64 bytes from 2a06:a004:c069::2: icmp_seq=1 ttl=64 time=0.044 ms
64 bytes from 2a06:a004:c069::2: icmp_seq=2 ttl=64 time=0.088 ms
64 bytes from 2a06:a004:c069::2: icmp_seq=3 ttl=64 time=0.072 ms
^C
--- 2a06:a004:c069::2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2075ms
rtt min/avg/max/mdev = 0.044/0.068/0.088/0.018 ms

vyos@vyos-demo.serverforge.org# ping 2a06:a004:c069::1
PING 2a06:a004:c069::1(2a06:a004:c069::1) 56 data bytes
64 bytes from 2a06:a004:c069::1: icmp_seq=1 ttl=64 time=34.2 ms
64 bytes from 2a06:a004:c069::1: icmp_seq=2 ttl=64 time=35.1 ms
64 bytes from 2a06:a004:c069::1: icmp_seq=3 ttl=64 time=35.4 ms
^C
--- 2a06:a004:c069::1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 34.227/34.888/35.374/0.484 ms

BGP

Now we can configure BGP, You will need to replace the local-as value with your own AS, and remote-as with the AS of your peer, and the prefix-list with the name of the prefix you created at the start of this guide.
set protocols bgp local-as '23428'
set protocols bgp neighbor 2a06:a004:c069::1 address-family ipv6-unicast prefix-list export 'AS23428'
set protocols bgp neighbor 2a06:a004:c069::1 remote-as '44570'
commit

You should now have an active BGP session, you can run "run show bgp summary" to show an overview of your BGP peers and their status.

vyos@vyos-demo.serverforge.org# run show bgp summary 

IPv6 Unicast Summary (VRF default):
BGP router identifier 23.136.232.29, local AS number 23428 vrf-id 0
BGP table version 146907
RIB entries 278309, using 49 MiB of memory
Peers 1, using 723 KiB of memory

Neighbor          V         AS   MsgRcvd   MsgSent   TblVer  InQ OutQ  Up/Down State/PfxRcd   PfxSnt Desc
2a06:a004:c069::1 4      44570     48941         9        0    0    0 00:00:54       146541        0 N/A

Once you verify your session is up you need to advertise your prefixes. The smallest IPv6 prefix that can be advertised in a /48.
set protocols bgp address-family ipv6-unicast network 2a06:a005:a17::/48
set protocols bgp address-family ipv6-unicast network 2a06:a005:d20::/48
commit

you should now be able to show the BGP summary again and see the number of prefixes advertised under the "PfxSnt" column.
vyos@vyos-demo.serverforge.org# run show bgp summary 

IPv6 Unicast Summary (VRF default):
BGP router identifier 23.136.232.29, local AS number 23428 vrf-id 0
BGP table version 151026
RIB entries 278350, using 49 MiB of memory
Peers 1, using 723 KiB of memory

Neighbor          V         AS   MsgRcvd   MsgSent   TblVer  InQ OutQ  Up/Down State/PfxRcd   PfxSnt Desc
2a06:a004:c069::1 4      44570     51689        19        0    0    0 00:10:53       146562        2 N/A

Total number of neighbors 1

Your prefixes should now be announced globaly and you can start assigning them out on your local network.