И так, как я понял, структура вашей сети такова:
Шлюз (FreeBSD) <=> Сервер (DHCP + Samba, Ubuntu) <=> 1 СВИЧ <=>
2 СВИЧ <=> (1, 2 этажи)
3 СВИЧ <=> (3 этаж)
4 СВИЧ <=> (4 этаж)
И вас интересует, что будет за 1 свичем, если добавить ещё 3-4 свича (СВИЧ 5, 6, 7, 8 )?
Пользователь решил продолжить мысль 11 Декабря 2011, 22:14:24:
Думаю, так понятней будет будет.
Что мы видим?
У нас 1 подсеть (если я правильно отличаю свич от роутера), состоящая из 3 коммутаторов.
Трафик на шлюзе - внешний + внутренний. Причём, внутренний суммарный = внешний + локальный (nfs, другие протоколы).
Для облегчения возьмём
переменные обозначения:
Шлюз:
eth0 - внешний интерфейс
eth1 - внутренний интерфейс
Клиенты:
local - интерфейс клиентских машин
Network - сумма трафика всех машин за одним из коммутаторов
Client2Client - трафик между клиентами
Интересует нагрузка (пусть в %) на каждый из коммутаторов. Хорошо.
1. Что мы можем легко отследить? Мы можем отследить трафик из системы клиент-сервер-клиент.
2. Что мы можем отследить? Трафик клиент-клиент.
В первом случае:
Пакет от клиента попадает на сервер и передаётся другому клиенту - объём данных удваивается . То есть
трафик = eth1(приём) + eth1(передача).
Во втором случае:
1. Пакет от клиента передаётся к другому клиенту на
данном свиче:
трафик = local1 (передача) + local1 (полученного) = local1 (передача) * 2
Нагрузка только на этот свич.2. 1. Пакет от клиента передаётся к другому клиенту на
другом свиче:
трафик = local1 (передача) + local2 (приём)
Нагрузка на 2 свича.
Вопрос #1: как рассчитать?Общий локальный трафик типа клиент-клиент получаем по формуле:
Client2Client = (local1 + local2+ local
N) - eth1 - eth0; (соответственно, всё, что не проходило через сервер - "внутреннее общение" клиентов)
И так, у нас 3 свича. Мы знаем общий трафик всех машин за
каждым из свичей.
Получаем процентное соотношение: Network / (eth1 + Client2Client) * 100%
Теперь, имея пропускную способность свича, можно сказать, на сколько загружен тот или иной свич. (пропускная способность * %) Отсюда пляшем.
Теперь разберёмся с первым коммутатором. Если я правильно понял его функцию, то процент его загрузки = eth1 / пропускная способность * 100%
(Последнее, наверное, глупо, так как и так понятно, что через него не ходит трафик вида Client2Client)
Теперь о сборе данных:
На каждой машине, как предложил
fisher74, следует использовать какой-нибудь агент для слива трафика из ifconfig'a на сервер. Я бы сделал его на Bash'e. Но это вам решать. Думаю, 40 лишних запросов к БД или ещё куда не сильно увеличат нагрузку.
На сервере, либо в режиме реального времени строить график, либо склодировать куда-нибудь в БД и хранить. А дальше по обыкновению y(t) = x и вперёд.
И напоследок, мои знания в области постройки сетей сводятся к созданию точки доступа WiFi и настройки LTSP в виртуалке, по-этому сильно уж не пинайте, пожалуйста.