WAN-оптимизация «творит чудеса» главным образом за счет уменьшения числа битов, передаваемых по WAN-каналу. Большое значение для такого уменьшения имеет оптимизация TCP-трафика, осуществляемая в основном путем регулирования размера окна приема и более быстрого реагирования на перегрузку канала на стороне передатчика. Работа корпоративных приложений и протоколов, в том числе Exchange MAPI и SMB/CIFS, оптимизируется посредством кеширования объектов данных и группирования пакетов.
Однако наибольший эффект дает функция редукции данных, которая очень похожа на их сжатие, но отличается от последнего использованием специализированных словарей большего объема. Средства сжатия заменяют фиксированные блоки битов меньшими их группами, выступающими в качестве, так сказать, «представителей» этих блоков. Использование функции сжатия приводит к сокращению числа передаваемых по каналу битов, как правило, в 2–4 раза, коэффициент сжатия зависит от типа пересылаемого файла. Например, текстовые файлы и файлы растровых изображений сжимаются хорошо, а двоичные и видеофайлы — гораздо хуже. Это связано с тем, что в аудио- и видеофайлах встречается мало повторяющихся сегментов данных и объемы словарей, использующихся в алгоритмах сжатия, являются сравнительно небольшими.
В случае редукции данных словарь формируется на основе вашей же собственной информации. Объем словаря может достигать сотен мегабайтов или гигабайтов, причем он может меняется с изменением характера деятельности компании. Идея редукции данных базируется на том факте, что во многих организациях по WAN-каналам неоднократно передается одна и та же информация. Это происходит, в частности, когда множество сотрудников обращаются к одному и тому же файлу или когда сотрудник загрузил с удаленного сервера файл, внес в него небольшие исправления и отослал обратно (при этом оставшаяся неизменной большая часть файла передается повторно).
Оптимизаторы начинают работать вообще без словаря. При первой передаче файла по WAN-соединению два оптимизатора (на обоих концах этого соединения) независимо один от другого анализируют данный файл и создают идентичные индексы относящихся к нему блоков данных. При повторном обращении пользователя к тому же самому файлу ближний к серверу оптимизатор, «просмотрев» запрошенный файл, отправляет только ссылки на конкретные блоки. Ближний к пользовательскому компьютеру оптимизатор воссоздает этот файл и пересылает его на компьютер пользователя. Со временем эффективность работы оптимизаторов повышается, поскольку, чем больше данных проходит через них, тем больше становится их словарь и тем чаще им удается использовать блоки из одного файла для оптимизации передачи другого.
Если у вас возникла мысль: «Да это же обычное кеширование!», то вы ошибаетесь. Кеширующее устройство работает по принципу локального сохранения копий файлов как отдельных объектов. Когда пользователь сети запрашивает некий файл, устройство проверяет, изменился ли он, и, если нет, выдает его пользователю. При записи отредактированного файла на удаленный сервер этот файл пересылается по WAN-каналу целиком. Таким образом, обычное кеширующее устройство ускоряет считывание данных, но не их запись.
Осуществляющие редукцию данных устройства тоже передают файлы по WAN-каналу, но не все их биты, заменяя ранее передававшиеся блоки данных ссылками на них. Итак, при сохранении отредактированного файла на удаленном файловом сервере по WAN-каналу пересылаются только измененные блоки и ссылки на неизмененные. Удаленный оптимизатор восстанавливает файл, заменяя ссылки соответствующими данными, и отправляет его в ЛВС.
Существуют три ключевых отличия оптимизатора от кеширующего устройства. Во-первых, это поддержка связи по принципу клиент–сервер, при которой, если пользователь не имеет прав на чтение или запись данных, он и не сможет прочитать или записать их. (Кроме того, в случае когда файл заблокирован, открыть его не удастся.) Во-вторых, блоки данных заменяются ссылками вне зависимости от формата файла, важно только, чтобы не изменялась их битовая комбинация. В-третьих, данные хранятся не как файлы, а как блоки. Отредактированный файл будет иметь измененные блоки, они индексируются, но исходные блоки при этом тоже сохраняются. И если файл вернуть в первоначальный вид, на эффективности WAN-оптимизации это никак не отразится.