FreeBSD зберігає мережеві дані в mbuf clusters, розмір кожного 2Кб, але з
них використовується тільки близько 1500 байт (за розміром Ethernet пакету).
Для кожного mbuf кластера потрібен "mbuf", який має розмір 256 байт і
потрібен для організації зв'язку ланцюжків з mbuf кластерів. У mbuf можна помістити
корисну інформацію в районі 100 байт, але це не завжди використовується.
Якщо в машині 1Гб і більше пам'яті, то за замовчуванням буде створено 25 тис. Mbuf кластерів,
що не завжди достатньо ...
--------
Давайте подивимося, як в реальності пакети проходять через хост. Прийняті з мережі дані спочатку накопичуються в невеликому внутрішньому буфері мережевого адаптера. Коли він заповнюється, мережева карта генерує переривання, що змушує її драйвер скопіювати пакет (и) в мережевий буфер ядра (т.зв. mbufs). Пакети передаються стеку TCP / IP в тому вигляді, в якому вони знаходяться в mbufs. Коли пакет потрапляє в буфер ядра, більшість операцій, вироблених з ним, не залежать від його розміру, тому що для них має значення тільки заголовки, а не деяка загальне навантаження. Це також вірно і для пакетного фільтра, через який проходить пакет в одиницю часу, і який приймає рішення, заблокувати або пропустити даний пакет. Якщо пакет слід перенаправити (forwarding), стек TCP / IP передасть його мережевої карти, яка, в свою чергу отримає пакет з mbufs і передасть назад в лінію зв'язку.