- Be as secure as possible. Code carefully, do strict validity checks
especially in the network input path, and use bounded buffer operations.
Use privilege separation to mitigate the effects of possible security bugs.
- Reliability is extremely important, as bgpd exiting usually means losing
all routes and thus reachability.
- Provide a lean implementation, sufficient for a majority.
Don't try to support each and every obscure usage case, but cover the
typical ones.
- Provide a powerful and easy to understand configuration language.
- Be very fast, and very memory efficient. As bgpd carries tables with
hundreds of thousands of entries, these have to be designed carefully with
regard to their memory requirements.