In order to port FRR to our firewall/router platform, two things need to be differ from the current FRR paradigm. One is that we have a data plane and hardware forwarding. The other one is that we have an interface manager for interface configurations and their up/down status update.
For the first one, we are able to use FPM mechanism and successfully redirect FIB from Zebra to our data plane.
Zebra(FIB via. FPM) --- routed --- data plane
For interfaces, we are developing the API from “routed(IFM) to Zebra”. I would like to start the discussion here, such that our development can be aligned with FRR and can be contributed back to FRR.
A. A TCP connection between Routed and Zebra, that handle bidirectional communications about request (from Zebra) and reply (from routed)
B. At Zebra start/restart, requests to Routed about interfaces (interfaces, IP addresses, interface up/down status)
C. Routed IFM (interface manager) reply to the requests with all interface information requested (formatted same as if it comes from kernel)
D. If Routed restart (IFM), once the TCP connection re-established, routed will resend all configured interfaces to Zebra
This is what we are planning to handle the interface are not in the kernel case.
Please share your thought, any comments, questions, caveat, or suggestions? I remember Donald have investigated some a while back, anything we should watch for?
Thanks,
Jay