The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

1,9| FAQ по считанию траффика


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Date: Thu, 21 Jun 2001 15:15:07 +0000 (UTC)
From: is@stack.net
Subject: 1,9| Re: FAQ по считанию траффика

Stepan Koltsov <yozh@niit.ru> wrote:

> is@stack.net wrote:
>>>>> divert надо использовать тогда, когда считание траффика -- первоочередная
>>>>> задача, поскольку если ipacctd не запущен, инет на работает, в противном
>>>>> случае -- tee.
>>> 
>>>> И еще нужно учесть такой минус, что на каждый пакет будет происходит
>>>> два контекст свитча, которых нет в двух предыдущих схемах.
>>> 
>>> Не понял.
> 
>> ipfw работает в kernel mode, а divert делается в user mode.
> 
>> То есть, работает какой-нибудь софт, типа апача. Тут в эзернет
>> пришёл пакет, произошёл интеррапт - управление перешло к ядру,
>> драйвер карты пакет вытащил из карточки и передал его файрволлу.
>> Файрволл посмотрел правила и дивертнул пакет ipacctd.
>> В процессе диверта произошло переключение в user mode.
>> Поскольку предыдущий процесс в юзер моде был апач, то нужно
>> установить другие page tables == сбросить tlb.
>> Пакет обрабатывается ipacctd и возвращается взад в ядро.
>> Ядро обработало пакет совсем и возвращается в апач.
>> Опять меняем page tables == сбрасываем tlb.
> 
>> Ну и по ходу дела, сохраняем/восстанавливаем все регистры,
>> переключаемся из ринга 3 в ринг 0 и обратно,
>> частями или полностью теряем закэшированное в L1 и L2 кэшах.
> 
>> Вот что такое контекст-свитч.
> 
> Я почти понял :) Поэтому через tee работает быстрее, так? А trafd вообще не
> читает весь пакет, а только заголовок, вот оно что...

С tee быстрее, потому что оно просто копирует пакет в порт.
А уж потом этот пакет будет считан ipacсtd. В этом случае
ipacctd получает тайм слайс как обычный процесс и может обработать
несколько пакетов в течение его, хотя для каждого придется делать read().

Что касается bpf/trafd, то bpf накапливает пакеты, которые
trafd потом будет читать, то есть, схема работы как у tee/ipacctd.

-- 
Игорь Сысоев

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру