Многие организации рано или поздно сталкиваются с проблемой нехватки пропускной способности канала доступа в интернет. Очевидным решением является его расширение, однако это решение далеко не всегда является правильным. Дело в том, что для принятия правильного решения необходимо провести анализ причин перегрузки существующего канала. Вполне возможно, что проще (и, главное, дешевле) будет устранить причины перегрузок, чем расширять канал, тем более, что во многих случаях последнее может не помочь в решении проблемы.
Анализ загрузки канала будет полезен еще и тем компаниям, которые хотят более эффективно использовать свой канал, но пока не испытывают проблем с его пропускной способностью. Например, сбалансировав нагрузку на канал, можно значительно сократить время загрузки веб-страниц, тем самым существенно повысив комфортность веб-серфинга.
Сетевой трафик делится на пульсирующий (burst traffic) и постоянный. Пульсирующий трафик генерируют сеансовые сетевые приложения, такие, как веб-браузеры и почтовые клиенты. Постоянный трафик генерируют загрузки файлов и мультимедиа-приложения.
Суть пульсаций трафика заключается в том, что сеанс по передаче данных в таких приложениях существует довольно ограниченное время, чаще всего, только в процессе активной передачи, затем сеанс закрывается и обмен трафиком прекращается. Например, веб-серфер загрузил страницу из интернета и просматривает ее, в этот момент он не взаимодействует с сетью, поскольку страница уже загружена. Такое состояние продлится до того момента, пока серфер не "щелкнет" по следующей ссылке и не начнет загружать следующую страницу, при этом он снова породит пульс трафика. Аналогично дело обстоит и с почтовыми клиентами - они загружают сеть только в момент получения почты.
Постоянный трафик генерируют загрузки файлов из интернета и мультимедийные приложения, обменивающиеся данными в режиме реального времени. Именно этот тип трафика, как правило, загружает канал и имеет минимальную ценность для организации.
Пульсирующий трафик более эффективно использует канал, поскольку возникает на ограниченные промежутки времени, тем самым один и тот же канал могут использовать несколько десятков веб-серферов, ведь вероятность того, что они все разом в какой-то момент времени начнут загружать страницы, довольно мала. Поэтому пульсирующий трафик веб-серфинга часто гармонично распределяется по времени, загружая канал довольно равномерно.
Зависимость загрузки канала от количества веб-серферов теоретически установить довольно сложно, поскольку конечный результат в значительной степени зависит от типа активности последних, который, в свою очередь, зависит от профиля деятельности организации. Поэтому намного проще и надежнее проанализировать загрузку существующего канала и получить данные о том, требуется ли его расширение, и если требуется, то насколько.
Постоянный трафик, напротив, занимает часть канала на длительное время и не позволяет использовать эту часть канала никому. Соответственно, чем больше присутствует постоянных, активно использующих канал сеансов, например, загрузок файлов, тем меньшая полоса пропускания остается для веб-серферов. Фактически, одна сессия по закачке файла по использованию канала равноценна нескольким работающим веб-серферам, а веб-серферы - это работники компании. Получается, что, уменьшая количество сеансов с постоянным потоком трафика, можно увеличивать число подключенных к интернету работников, не прибегая к расширению канала. Именно это дает повод говорить о том, что постоянный трафик использует канал менее эффективно, чем пульсирующий.
Вопрос эффективности использования канала, скорее, даже не технический, а организационный. Каждая организация должна решить, что является для нее эффективным использованием канала. Например, если прибыль компании напрямую зависит от комфортности веб-серфинга, как это может иметь место в интернет-кафе, то администратор этой компании должен максимально освободить канал для веб-трафика и контролировать объем пропускной способности канала, занимаемой загрузками файлов. Это пример того, как организация может улучшить качество веб-серфинга, не прибегая к расширению канала, а значит, избегая дополнительных финансовых затрат.
Некоторые администраторы считают канал, загруженный на 100%, использующимся с максимальной эффективностью, тем не менее, это не так. Канал, загруженный на 100%, является перегруженным, а не использующимся эффективно. Однако канал, загруженный на 80%, в большинстве случаев тоже нельзя считать использующимся эффективно, причина проста - чем меньшую пропускную способность канал способен предоставить для спонтанно возникшего импульса трафика (например, загрузки веб-страницы), тем дольше будет время этой загрузки. Вспомнив, что основной потребитель пульсирующего трафика - это веб-серферы, можно сделать вывод, что чем уже свободная полоса в канале, тем больше будет время загрузки веб-страниц, а значит, меньше комфорта для пользователей.
Баланс между обычно загруженной частью канала и свободной является вопросом, который каждая организация должна решить для себя сама. Руководствоваться следует соображением того, что чем больше свободная полоса, тем быстрее будут загружаться веб-страницы, но тем больше полосы канала останется "незадействованной".
К счастью, протокол TCP, который используется HTTP-протоколом (Web) как транспорт, имеет встроенный механизм регулировки скорости передачи пакетов. Механизм этот был встроен в протокол TCP для того, чтобы обходить так называемые "бутылочные горлышки" (bottlenecks). Это "узкие" места на пути трафика, когда невозможно передать все пакеты. В случае перегрузки одного из транзитных каналов пакеты, которые невозможно передать, просто сбрасываются (уничтожаются). Протокол TCP следит за последовательностью пакетов и, если обнаруживает потери, делает вывод, что на пути трафика есть "узкое место", через которое не проходит весь поток. В этом случае протокол TCP снижает скорость посылки пакетов и перепосылает потерянные пакеты снова, делать он это будет до тех пор, пока не начнут проходить все посланные пакеты, т.е. прекратятся их потери. С помощью этого механизма протокол TCP подстраивается под полосу пропускания, которая реально доступна. Причем это позволяет не только обходить "узкие" места, но и использовать канал максимально эффективно, расширяя поток, пока протокол TCP займет всю доступную ему полосу. Именно поэтому увеличение пропускной способности канала не всегда решает проблему с ее нехваткой.
Этот механизм протокола TCP можно использовать для управления скоростью потока пакетов внутри TCP-сессии. Достаточно просто сбросить несколько пакетов до того, как они достигнут получателя, и передающая сторона (сервер) начнет снижать скорость посылки пакетов. Таким образом, можно с ощутимой эффективностью регулировать полосу, которую занимает отдельно взятая TCP-сессия.
В основном, загрузки файлов из интернета производятся по HTTP- и FTP-протоколам. Оба эти протокола используют TCP-протокол как транспорт, а значит, и подчиняются его механизмам регулировки скорости посылки пакетов. Механизм такой регулировки потока TCP-пакетов поддерживает прокси-сервер Squid, рассчитанный на обслуживание протоколов HTTP и FTP.
Для того, чтобы контролировать полосу, занимаемую загрузками файлов из интернета, достаточно установить прокси-сервер Squid, настроить его на ограничение скорости определенных типов трафика и построить сеть так, чтобы пользователи могли получить доступ по HTTP- и FTP-протоколам только через прокси-сервер. Последнее реализуется с помощью одной из технологий: прозрачное проксирование (transparent proxying) HTTP-трафика или простой запрет доступа по HTTP и FTP напрямую (минуя прокси-сервер).
В свою очередь, на HTTP-прокси настраивается ограничение скорости загрузок файлов. Обычно выбирается средняя скорость модемного соединения, т.е. 3-4 килобайта в секунду. Какую выбрать скорость для ограничения, определяется величиной имеющегося канала доступа в интернет. Решив, какую полосу канала вы готовы отдать под загрузки файлов, и разделив полученное значение на количество обычно присутствующих загрузок, вы получите значение скорости для каждой загрузки.
Squid может ограничивать скорость трафика для каждого IP-адреса, т.е. сколько бы сеансов ни открыл со своей машины пользователь, в сумме он получит только ту полосу, которую вы ему позволите.
Метод "торможения" загрузок файлов называется (в Squid) delay-pools, он позволит вам использовать канал доступа максимально эффективно, освобождая полосу для трафика, который в этом нуждается, и урезая ее для трафика, который к этому некритичен.
© 2002 Алексей ГРЕЧАНИНОВ
Комментарии