Facebook Dynamic TFTP Server Framework Fbtftp Appears On GitHub
Fbtftp, Facebook’s implementation of a dynamic TFTP server framework, is now on GitHub. The offering lets you create custom TFTP servers and wrap your own logic into it.
The company currently uses fbtftp, and it’s deployed across its data centers. It was created by Facebook Engineering production engineer Angelo Failla at Facebook Ireland.
“We love to use existing open source software and to contribute upstream, but sometimes it’s just not enough at our scale. We ended up writing our own tftp framework and decided to open source it,” Faceobook says on GitHub. “fbtftp was born from the need of having an easy-to-configure and easy-to-expand TFTP server, that would work at large scale. The standard in.tftpd is a 20+ years old piece of software written in C that is very difficult to extend.”
Facebook uses it to stream static files from its http repositories, generate grub2 per-machine configuration dynamically, and publish per-server and per-connection stats to internal monitoring systems. They say the primary focus is flexibility and scalability rather than speed, but that it’s fast enough at its data center scale.
“It is well-suited for large installations where scalability and custom features are needed,” Facebook says.
Fbtftp is written in python3, and requires Linux or any system that supports epoll. The framework implements RFC 1350, RFC 2347, RFC 2348, and RFC 2349. More details here.