How not to design a BGP daemon: zebra cooperative threads central event queue critical events like keepalives starve session drops re-establishing makes it even busier rinse & repeat almost no documentation big share in japanese