Ne pas utiliser PF, utiliser un Debian/FreeBSD, avec BIRD ou FRR.
Et tu peux ensuite router des préfixes vers PFSense si tu le souhaites, mais PF en soi est vraiment naze naze en routage dynamique
PF c'est un firewall. C'est le pendant bsd d'iptables/netfilter.
Pour le bgp il faut en effet utiliser un daemon qui cause bgp, donc frr ou bird (qui font tout les deux plus que juste du bgp), ou openbgpd.
Personnellement je n'aime pas trop la syntaxe bird, je préfère soit frr sous linux (cli & conf cisco-like) soit openbgpd sous openbsd (conf bgp très simple et cli via bgpctl très simple également).
Attention à la version d'openbgpd car pendant longtemps (10 ans - entre 4.6 et 6.5) la version dite "portable" (qui tourne sur les autres OS qu'openbsd) n'était pas maintenue, mais continuait d'être présente en tant que package dans beaucoup de distributions. Donc partir avec la 6.6p0 est bien mieux. openbgpd est dispo sur tous
les mirroirs OpenBSD.
Après, c'est un choix personnel, en fonction de ce que tu préfères. Aujourd'hui ces trois daemons fonctionnent aussi bien les uns que les autres. Il ne faut plus utiliser zebra, et encore moins quagga, qui ne sont plus maintenus.