У меня есть роутер linux, который имеет интерфейс 10GBe снаружи и связанный Gigabit Ethernet интерфейс внутри.
В настоящее время у нас есть бюджет на 2 Гбит / с. Если мы превысим этот показатель более чем на 5% в среднем за месяц, то с нас будет взиматься вся пропускная способность 10 Гбит / с. Довольно шаг вверх в долларовом выражении.
Итак, я хочу ограничить это до 2 Гбит / с на интерфейсе 10 ГБе.
Фильтр TBF может быть идеальным, но этот комментарий вызывает беспокойство.
На всех платформах, кроме Alpha, он способен формировать до 1 Мбит / с нормального трафика с идеальной минимальной нагрузкой, отправляя данные точно с настроенными скоростями.
Должен ли я использовать TBF или какой-либо другой фильтр, чтобы применить эту скорость к интерфейсу и как мне это сделать. Я не понимаю приведенный здесь пример: Traffic Control HOWTO
В частности, «Пример 9. Создание TBF 256 кбит / с»
tc qdisc add dev eth0 handle 1:0 root dsmark indices 1 default_index 0
tc qdisc add dev eth0 handle 2:0 parent 1:0 tbf burst 20480 limit 20480 mtu 1514 rate 32000bps
Как рассчитывается скорость 256 Кбит / с? В этом примере 32000 бит / с = 32 Кбайт в секунду. Так как tc использует bps = байт в секунду. Я думаю, что в игру вступают взрыв и лимит, но как бы вы выбрали разумные числа для достижения желаемой скорости?
Это не ошибка. Я проверил это, и он дал скорость, близкую к 256К, но не совсем так.
РЕДАКТИРОВАТЬ
После большого чтения и тестирования я пришел к выводу, что TBF не подходит из-за задействованной пропускной способности. Независимо от настроек, которые я пробовал, я не мог получить TBF для обеспечения пропускной способности> ~ 50 Мбит / с. Согласно lartc.org/lartc.pdf, метод RED лучше подходит для формирования полосы пропускания> 100 Мбит / с, поэтому я попытаюсь использовать это.
Однако, выбирая значение для min (т.е. Средний размер очереди, при котором маркировка становится возможной). Пример приведен так:
Вы должны установить минимальное значение, рассчитав максимально допустимую задержку в очереди, которую вы хотите, и умножить ее на свою пропускную способность. Например, на моем канале ISDN со скоростью 64 кбит / с мне может потребоваться базовая задержка в очереди 200 мс, поэтому я установил минимальное значение 1600 байт.
Как бы вы выбрали максимально допустимую задержку в очереди? Пример для 64 кбит / с.
Что было бы приемлемо для 2Гбит / с?
По моему опыту, qdisc TBF легко может ограничить полосу пропускания до 1 Гбит / с, поэтому я предполагаю, что она также будет масштабироваться до 2 Гбит / с. Тем не менее, вам, вероятно, понадобится реальный процессор для этой работы, а не какой-нибудь пограничный маршрутизатор. Что-то вроде 4 ГГц i3 наверняка будет достаточно.
Попробуйте что-то вроде
где
Обратите внимание, что для использования TBF с низкой задержкой вам может потребоваться запустить ядро PREEMPT (например,
linux-lowlatency-hwe-*
пакет Ubuntu ), иначе система может не обработать все эти пакеты.Смотрите также: https://networkengineering.stackexchange.com/a/54404/36597
источник