Одна из величайших возможностей операционной системы Linux — ее сетевой стек.
В этой статье исследуется структура сетевого стека Linux с точки зрения его уровней, а также рассматриваются некоторые из основных структур.
странность лора...
когда нечего сказать по сути - доебыватся к граматике...
так обычно делают старые пердуны, а тут вроде достаточно молодой народ тусуеццо...
Говорят, что в свое время Линус так и не осилил написать оригинальную реализацию TCP/IP стека, поэтому весь код линупсоды стянули у Sun или BSD, я уже не помню.
>Говорят, что в свое время Линус так и не осилил написать оригинальную реализацию TCP/IP стека, поэтому весь код линупсоды стянули у Sun или BSD, я уже не помню.
Саныч, это твои ночные фантазии - в TCP/IP стеке ядра Linux нет ни строчки из исходников Sun или BSD. Ни единой. Он несколько раз переписывался и даже в 1.0 ядре был собственный стек.
> Говорят, что в свое время Линус так и не осилил написать оригинальную реализацию TCP/IP стека, поэтому весь код линупсоды стянули у Sun или BSD, я уже не помню.
Говорят, что Sun-ch почти разумная матка африканских муравьев, подключенныя через диоды к новому кластеру Sun.
>Говорят, что в свое время Линус так и не осилил написать оригинальную реализацию TCP/IP стека, поэтому весь код линупсоды стянули у Sun или BSD, я уже не помню.
"Одна из величайших возможностей операционной системы Linux® — ее сетевой стек. Он является производной стека BSD и хорошо оснащен добротным набором интерфейсов" - пишет господин М. Тим Джонс.
А господину Джонсу можно доверять, поскольку в отличие от ЛОРОвских говнаналитиков, он работает инженером-консультантом и пишет статьи по заказу IBM.
>А по какому поводу в свое время было столько воплей? Ведь какой то код они все равно стянули?
Какой? Может NFS у Sun? Или SLAB (написали хоть и сами, но изначально алгоритм появился в sunos).
Но это далеко не TCP/IP. Последняя реализация написана Алексеем Кузнецовым с нуля (хотя сокетные интерфейсы и опции он подсматривал в BSD для совместимости) кода оттуда нет, т.к. очень различные низкоуровневые структуры и драйверные интерфейсы.
>"Одна из величайших возможностей операционной системы Linux® — ее сетевой стек. Он является производной стека BSD и хорошо оснащен добротным набором интерфейсов" - пишет господин М. Тим Джонс.
>А господину Джонсу можно доверять, поскольку в отличие от ЛОРОвских говнаналитиков, он работает инженером-консультантом и пишет статьи по заказу IBM.
Ога, производной... Трижды, я повторяю для манагеров и блондиног: ТРИЖДЫ стек был переписан с нуля!
Какая производная? Даже в 1.0 стек был свой и его через огромные грабли прикручивали.
>Саныч, а ты не думал, что г-н Джонс, хоть и значимая фигура в ИБМ, может попросту не владеть тонкостями.
>Лично я соглашусь с г-ном rtc. В линухе всегда был свой стек... и г-н Кузнецов внес туды неоценимый вклад, практически переписав его.
Возможно Джонс имел в виду не то, что был взят код, а то, что была взята логическая структура...
да враки это все, ну немного sk_buff побыстрее, но для того, чтобы этого добиться весь код надо превратить в сплошной хак. Ничего грамотного не вижу, смещения - зло, и то, сколько вылизывали линаксовый стек это подтверждает.
Смещения для уменьшения использования памяти - добро. mbuf делает несколько аллокаций для одного пакета - когда _одну_ убрали в openbsd (нужна была для PF, вместо этого увеличили первый chunk), производительность возросла в 2 (!) раза.
зачем это надо, если есть замечательная книга Клакса Вейрле, Франка Пэльке, Хартмута Риттера, Даниеля Мюллера, Марка Бехлера "Linux, сетевая архитектура. Структура и реализация сетевых протоколов вядре"?
> "Одна из величайших возможностей операционной системы Linux® — ее сетевой стек. Он является производной стека BSD и хорошо оснащен добротным набором интерфейсов" - пишет господин М. Тим Джонс.
Неправильный перевод - совместим с BSD в смысле сохранил все его интерфейся. Таки это правильно. Berkley socket рулядъ не падеццки
тем не менее, mbuf-like - это стандарт для сетевых стеков, в отличие от sk_buff, который такой я только в линаксе знаю
насчет аллокации - не понял, но судя по описанию это не проблема mbuf, или вы chunk'и аллокациями называете? на мелких пакетах sk_buff даже проигрывает.
> А разве есть стеки, написанные с нуля (не производные от BSD), кроме Линуксового стека?
BeOS вроде бы, но даже если нет это мало что меняет - популярен именно BSD, а не линакс стек. Для embedded sk_buff вообще не годится - из-за отсутствия поддержки фрагментации требует больших буферов, иначе производительность падает катастрофически, кроме этого нет buffer sharing, да и обязательное копирование данных хотя бы раз тоже не конфета для слабых процессоров без DMA каналов