There's a quick walkthrough on the FRRouting github page:
https://github.com/FRRouting/frr/wiki/Alternate-forwarding-planes:-VPP
This has been on the back of my mind for a while, and if you limit it to 'routing only', it would be a relatively simple change to set an interface to be 'fast-path' (or whatever) which then binds it to VPP (which also removes it from the kernel visibility)
FRR and VPP talk together without any problems, as per that wiki page.
I think stage 1 should totally ignore firewalling/filtering totally, and once an interface is in fast-path mode, no filtering can be done against it.
After the proof-of-concept of stage 1, we could switch to using veth interfaces, which VPP can also talk to (but not as efficiently as totally removing the entire NIC from the kernel), and then use network namespaces to route traffic to kernel iptables filtering if needed.
I'm putting this here, as this may be a project I do over the xmas break if I get around to it!