---
title: "Whiteboxy: Linux, ASIC i FIB"
summary: "Linux steruje routerem, ASIC przekazuje pakiety. Gdzie w tym wszystkim jest nasz kod?"
tags: [networking, sprzet]
---

# Whiteboxy: Linux, ASIC i FIB

*`Whitebox`* to sprzęt sieciowy, do którego dobierasz zgodny system operacyjny
(*`NOS`*). Router z systemem dostawcy to trochę MacBook, whitebox — PC z Linuksem.
W Akamai rozwijamy własny NOS: **Destiny**.

## Dlaczego nie sam CPU?

Przy 400 Gb/s przesłanie samych 1500 bajtów zajmuje 30 ns, bez narzutu Ethernetu.
To 90 cykli CPU 3 GHz — na jeden port. *`ASIC`*, wyspecjalizowany układ,
przetwarza pakiety jak linia produkcyjna; CPU przypomina kucharza wykonującego
kolejne instrukcje. Tablice sprzętowe mają ograniczoną pojemność;
*`TCAM`* to jeden z rodzajów pamięci używanych do dopasowywania reguł.

## A gdzie Linux?

NOS oparty na Linuksie obsługuje procesy routingu, wentylatory i wkładki optyczne.
W uproszczeniu: [[speaker-bgp|BGP speaker]] poznaje trasy, oprogramowanie wybiera
je w [[rib-vs-fib|RIB]], a warstwa sterująca programuje sprzętowy **FIB**.
Tablica Linuksa i tablica ASIC-a muszą być ze sobą uzgodnione.

W naszym fabricu FIB nie pomieści tras do wszystkich VM; pozostają one
w [[overlay|overlayu]]. **Co się stanie, gdy Linux zna trasę, ale ASIC jej nie ma?**

Chcesz zajrzeć do otwartego NOS-a? Zobacz [architekturę SONiC](https://github.com/sonic-net/SONiC/wiki/Architecture)
i [FAQ projektu](https://github.com/sonic-net/SONiC/wiki/FAQ).
