@derelict it is a physical setup, not virtual.
I have the core network setup with BGP routing working via FRR.
The 2 BGP legs are on separate subnets, so CARP multicast isn't working...
I've been working hard on this setup and have (via a lot of reading and fustration over the CARP functionality not beinging configurable to something else eg simple ping's and then sync the state over the SYNC interface) have ended up with something like the following:
The two BGP routes are connected to two switches (which are stacked for failover and LAGG/LACP) and then setup LACP on the WAN interfaces on the XG-7100's so they are connected to each BGP and then have a network specialist (I'm dumb when it comes to network equipment) configure the switches for me so LAGG/LACP is isolated to 3 ports and multicast is kept on the ports the WAN ports are located in to avoid network spam.
I hope this will work, but I need to read up on the XG-7100 to setup WAN LACP and find a way to test it without the actual switch(es) to avoid downtime. For some reason Netgate likes to use switches and obscure non ethX naming schemes for everything and not expose information about the physical layer before actually configured PFSense makeing i difficult for a (PFSense/FreeBSD) noob to get up 2 speed.
There is a first time for everything.
Thanks for your updates and sorry for the very long delay in the update - I had to get moving on this project faster than expected and have just finised to the above state where WAN LACP and stacking switch configuration is needed (even our hosting partner had issues with BGP due to PFSense not being Cisco and for some reason FRR had issues with the BGP password causing weired issues and one of the BGP CPE's fail on ARP refresh from time to time, so it has been a fustrating and slow process).