FBOSS는 네트워크 스위치를 제어하고 관리하기 위한 Facebook의 소프트웨어 스택입니다.
FBOSS는 다양한 사용자 공간 애플리케이션, 라이브러리 및 유틸리티로 구성됩니다.
FBOSS의 초기 오픈 소스 릴리스는 주로 에이전트 데몬으로 구성되어 있지만 추가 부분과 기능도 릴리스하기 위해 노력하고 있습니다.
FBOSS의 핵심 부분 중 하나는 각 스위치에서 실행되고 하드웨어 포워딩 ASIC를 제어하는 에이전트 데몬입니다. 에이전트 데몬은 하드웨어에 전달 정보를 보내고 ARP 및 NDP와 같은 일부 제어 평면 프로토콜을 구현합니다. 에이전트는 외부 라우팅 제어 프로세스가 라우팅 정보를 하드웨어 전달 테이블에 프로그래밍할 수 있도록 경로 관리용 절약 API를 제공합니다.
에이전트 코드는 fboss/agent에서 찾을 수 있습니다.
에이전트에는 포트 및 VLAN 구성을 지정하기 위한 JSON 구성 파일이 필요합니다. 일부 샘플 구성 파일은 fboss/agent/configs에서 찾을 수 있습니다. 이러한 파일은 실제로 인간이 소비할 목적으로 만들어진 것이 아닙니다. Facebook에는 이러한 파일을 생성하는 도구가 있습니다.
FBOSS 에이전트는 하드웨어 ASIC의 전달 테이블을 관리하지만 중고품 API를 통해 현재 경로에 대한 정보를 받아야 합니다.
초기 오픈 소스 릴리스에는 아직 에이전트와 통신할 수 있는 라우팅 프로토콜 데몬이 포함되어 있지 않습니다. Facebook에서 사용하는 라우팅 프로토콜 데몬은 우리 환경에 특정하며 오픈 소스 커뮤니티에는 유용하지 않을 것 같습니다. Facebook 외부에서 보다 일반적으로 사용하려면 기존 오픈 소스 라우팅 도구를 수정하여 FBOSS 에이전트와 통신할 수 있어야 하지만 아직 이를 구현하지 않았습니다. 그동안 우리는 경로를 수동으로 추가하고 제거할 수 있는 작은 샘플 Python 스크립트를 fboss/agent/tools에 포함시켰습니다.
FBOSS 에이전트와 상호 작용하고, 상태를 보고하고, 구성 파일을 생성하고, 문제를 디버깅하려면 추가 도구와 유틸리티가 필요합니다.
현재로서는 오픈 소스 릴리스에 사용할 수 있는 도구가 많지 않지만 앞으로 몇 주 안에 더 많은 도구를 사용할 수 있게 되기를 바랍니다. 그동안 중고품 컴파일러는 에이전트의 다양한 중고품 인터페이스를 수동으로 호출할 수 있도록 python-remote 스크립트를 자동으로 생성할 수 있습니다.
FBOSS를 빌드하는 방법에 대한 지침은 BUILD.md 문서를 참조하세요.
FBOSS는 Facebook 데이터 센터 네트워크의 요구 사항을 처리하도록 특별히 설계되었지만 더 넓은 커뮤니티에도 유용할 수 있기를 바랍니다. 그러나 FBOSS의 초기 릴리스에는 Facebook에서 사용하는 기능 이상의 다른 네트워크 구성을 지원하기 위해 수정 및 추가 개발이 필요할 수 있습니다. FBOSS가 더 성숙해지기 전까지는 FBOSS를 턴키 솔루션으로 사용하려는 네트워크 관리자보다는 네트워크 소프트웨어 개발자의 관심을 끌 가능성이 높습니다.
우리는 커뮤니티로부터 피드백을 받기를 기대하며 FBOSS가 네트워크 스위치를 프로그래밍하려는 다른 사용자에게 출발점이 되기를 바랍니다.
FBOSS 개발은 Facebook에서 진행 중이며 기존 도구에 대한 더 많은 구성 요소, 추가 기능 및 개선 사항을 계속 출시할 계획입니다.
라이센스를 참조하세요.