Введение в BranchCache. Часть 1. Обзор функций и возможностей BranchCache

Опубликовано: 22 Марта, 2023

Введение

По мере роста бизнеса растет и количество филиалов. Все предприятия начинаются с малого, и со временем растет и их главный офис. По мере того, как они становятся более успешными, им нужно вести больше дел с большим количеством людей в большем количестве мест. Чтобы сблизить своих сотрудников с клиентами и партнерами, успешным предприятиям необходимо открывать филиалы. Филиалы позволяют компании оказывать влияние в сообществах, которое иначе было бы невозможно получить.

Сотрудникам филиалов часто требуется доступ к информации, хранящейся в главном офисе. Эта информация часто размещается на файловых веб-серверах. Чтобы предоставить пользователям филиала доступ к этой информации в главном офисе, ИТ-отделу необходимо обеспечить подключение к сети. Исторически сложилось так, что для этого типа подключения использовались выделенные каналы глобальной сети. Однако из-за высокой стоимости выделенных каналов глобальной сети многие компании перешли на технологию виртуальных частных сетей (VPN), которая использовала относительно низкую стоимость подключения к Интернету для создания VPN типа «сеть-сеть». Виртуальные частные сети типа «сеть-сеть» обеспечивали те же возможности подключения, что и выделенные каналы глобальной сети, но за небольшую часть стоимости.

К сожалению, подключение филиалов к главному офису — это только первая проблема. Независимо от метода, используемого для подключения филиала к главному офису, скорость соединения обычно ограничена. Это создает проблему производительности для сотрудников филиалов. Сотрудникам необходим доступ к информации в главном офисе, чтобы выполнять свою работу, но все сотрудники в филиале должны использовать одну и ту же ограниченную полосу пропускания, доступную для филиала. Если всем работникам одновременно потребуется доступ к файлам в главном офисе, возникнет проблема с пропускной способностью. Даже если всем пользователям не требуется одновременный доступ к главному офису, одному пользователю может потребоваться доступ к большим файлам размером в несколько мегабайт, загрузка которых может занять от нескольких минут до нескольких часов. И если другой пользователь захочет получить доступ к тому же файлу, тому пользователю придется ждать столько же времени для того же файла и забивать интернет-«трубу» на столько же времени, сколько и первым пользователям.

Должен быть лучший способ.

Файловые службы глобальной сети

Ясно, что это неэффективный способ управления филиалом. Для ускорения работы сотрудников филиалов был использован ряд решений. Это группа, известная как «глобальные файловые службы» или решения WAFS. Целью всех этих решений является повышение производительности труда пользователей филиалов за счет ускорения доступа к информации, полученной по относительно медленным каналам глобальной сети.

Большая проблема с большинством решений WAFS заключается в том, что они непомерно дороги и часто очень сложны в установке и настройке. Сочетание высокой стоимости адаптации со значительными затратами, связанными с увеличением ИТ-группы при использовании решения, делает спорным вопрос о том, достаточно ли затраты на решения WAFS повышают производительность, чтобы обеспечить хорошую окупаемость инвестиций.

Что нам действительно нужно, так это экономичное решение, которым легко управлять. Было бы еще лучше, если бы эти технологии были встроены в клиентские и серверные операционные системы, используемые в сети.

BranchCache приходит на помощь

Windows Server 2008 R2 и Windows 7 — это именно те решения, которых вы так долго ждали. Когда вы соединяете клиенты Windows 7 с файловыми и веб-серверами Windows Server 2008 R2, у вас есть возможность воспользоваться преимуществами новой технологии, известной как «BranchCache». BranchCache — это новая технология Microsoft, позволяющая филиалам кэшировать содержимое, которое сотрудники филиалов получают из главного офиса.

Содержимое, полученное с серверов с поддержкой BranchCache (иногда называемых «серверами содержимого» на языке BranchCache), может быть кэшировано на клиентских системах в филиале или на серверах BranchCache в филиале.

Контент может кэшироваться при доступе по одному из трех протоколов:

  • СМБ 2.0
  • HTTP
  • BITS (фоновая интеллектуальная служба передачи)

BranchCache работает с другими схемами сетевого шифрования, которые у вас уже могут быть. Таким образом, если пользователи в филиале получают доступ к контенту на сайте SSL, размещенном в главном офисе, BranchCache будет работать с этими подключениями без дополнительной настройки или усилий со стороны ИТ-отдела или конечного пользователя. Точно так же, если вы используете IPsec в своей сети, например, в среде изоляции сервера или домена, BranchCache будет работать с защищенными соединениями IPsec.

Вы можете использовать BranchCache в сетях IPv4 или IPv6. Это отличная новость для тех из вас, кто беспокоится о IPv6 из-за DirectAccess. Даже если вы не можете развернуть DirectAccess, потому что вы еще не освоили IPv6 или у вас нет среды IPv6 для поддержки DirectAccess, вы все равно можете запустить BranchCache, поскольку он не зависит от IPv6.

BranchCache должен быть включен как на клиенте, так и на сервере. Когда пользователь пытается получить доступ к информации в файле или на веб-сервере с включенной поддержкой BranchCache, пользователь по-прежнему проходит проверку подлинности точно так же, как пользователь проходил бы проверку подлинности, даже если служба BranchCache не была развернута. После аутентификации пользователя он авторизуется, опять же так же, как если бы BranchCache не был включен.

Размещенный режим BranchCache и распределенный режим

BranchCache можно настроить для работы в одном из двух режимов:

  • Размещенный режим
  • Распределенный режим

Hosted Mode используется, когда у вас более 50 клиентских систем в филиале. В размещенном режиме клиентские компьютеры филиала настраиваются с полным доменным именем машины в филиале, которая настроена как сервер BranchCache.

Когда клиент получает содержимое с веб-сервера или файлового сервера с поддержкой BranchCache в главном офисе, он объявляет это содержимое серверу BranchCache в филиале, и сервер BranchCache загружает это содержимое с клиента и делает его доступным для других клиентов в филиале. когда они запрашивают один и тот же контент из филиала.

Это позволяет клиентским компьютерам филиала получать то же содержимое, что и первый пользователь, получивший доступ к содержимому, но на этот раз с сервера BranchCache по быстрому подключению к локальной сети, а не по медленному каналу глобальной сети.

Распределенный режим можно использовать, если в филиале менее 50 клиентских систем. В этом случае сервер BranchCache отсутствует. Вместо этого клиентские компьютеры с поддержкой BranchCache кэшируют содержимое на своих локальных жестких дисках.

Когда первая машина в филиале получает некоторый контент с веб-сервера или файлового сервера с поддержкой BranchCache в главном офисе, клиент кэширует этот контент на своем локальном жестком диске. По умолчанию 5 % жесткого диска клиента с поддержкой BranchCache зарезервировано для кэша. Когда другой компьютер в сети филиала пытается получить то же содержимое в главном офисе, содержимое возвращается от первого клиента, обратившегося к содержимому, а не из файла главного офиса или веб-сервера.

Распределенный режим использует многоадресный протокол для объявления кэшированного содержимого на клиентах. По этой причине все клиенты в сети филиала должны иметь один и тот же идентификатор сети или, точнее, все в одном диапазоне многоадресной рассылки. Кроме того, компьютеры, находящиеся в спящем режиме или отключенные от сети, не смогут предоставлять кэшированное содержимое другим пользователям. Однако есть указание на то, что компьютеры в спящем режиме могут проснуться, если на них размещен кэшированный контент. В настоящее время я не уверен в этом, но текущая документация предполагает такую возможность.

Следует отметить, что один и тот же клиент не может быть настроен для использования режима Hosted и Distributed. Если клиент настроен на использование размещенного режима, он не будет поддерживать собственный локальный кеш контента. Если клиент настроен на использование распределенного режима, он не будет связываться с локальным сервером BranchCache в размещенном режиме.

Любое приложение, использующее встроенный сетевой стек в Windows 7, получит выгоду от BranchCache при доступе к содержимому на серверах с поддержкой BranchCache с использованием SMB 2.0 или HTTP 1.1. Это означает, что пользователи, получающие доступ к содержимому с помощью Internet Explorer, Windows Explorer, Windows Media Player и других приложений, подключенных к сетевому стеку клиентской ОС, получат преимущества. Однако если у вас есть приложения, которые реализуют собственный HTTP 1.1. или службы SMB, они не получат преимуществ от BranchCache. То есть эти приложения не принесут пользы. Однако другие приложения на том же компьютере выиграют, если они будут использовать собственный стек ОС.

Метаданные BranchCache

Чтобы обеспечить доставку правильного содержимого клиентам, запрашивающим его, серверы с поддержкой BranchCache используют схему хеширования для идентификации содержимого. Когда пользователь пытается получить доступ к содержимому на веб-сервере или файловом сервере с поддержкой BranchCache, сервер возвращает пользователю хэш-значение SHA 256 содержимого вместо самого содержимого. Это значительно уменьшает объем данных, передаваемых по WAN-каналу, поскольку метаданные примерно в 2000 раз меньше фактического содержания.

Примечание:
Пользователь должен быть аутентифицирован и авторизован для доступа к этому контенту, прежде чем метаданные будут отправлены пользователю.

BranchCache вычисляет два хеш-значения:

  • Контент разбивается на блоки, и каждому блоку присваивается хеш-значение.
  • Наборы блоков определены и помечены как «сегменты». Каждому сегменту присваивается хэш-значение

Хэш-значения сегментов используются для идентификации контента, а хэш-значения блоков используются для загрузки контента. Если значения хеш-функции в сегментах изменились, это указывает на то, что содержимое изменилось, и файл необходимо будет получить либо из другого кэша с обновленным содержимым, либо с исходного веб-сервера или файлового сервера.

Содержимое шифруется при перемещении между одноранговыми узлами (в распределенном режиме) или между клиентом и сервером (в размещенном режиме). Содержимое расшифровывается с использованием идентификатора, предоставленного исходным сервером, с которого было получено содержимое. Идентификатор предоставляется только пользователям, успешно прошедшим аутентификацию на веб-сервере или файловом сервере с поддержкой BranchCache, и только после того, как они подтвердят право доступа к этому содержимому. Это препятствует тому, чтобы пользователи, не авторизованные для получения контента, получали его из кэшированных источников.

Как работает BranchCache в распределенном режиме?

BranchCache работает по-разному в зависимости от того, используете ли вы размещенный режим или распределенный режим.

Для распределенного режима последовательность событий работает следующим образом:

  1. Клиент в филиале запрашивает файл на веб-сервере или файловом сервере с поддержкой BranchCache в главном офисе. Это может быть через SMB 2.0, HTTP 1.1 или BITS. Клиент сообщает серверу с поддержкой BranchCache, что поддерживает BranchCache, используя ряд полей, сообщений или заголовков, которые являются частью протокола с поддержкой BranchCache, используемого сетевым стеком клиента Windows 7.
  2. Сервер с поддержкой BranchCache отвечает и предоставляет клиенту набор идентификаторов, определяющих содержимое, которое хочет клиент. Эта информация передается с использованием установленного соединения между клиентом и сервером с использованием протокола, используемого для установления исходного соединения (SMB, HTTP 1.1 или BITS).
  3. Клиент пытается найти локальный компьютер, на котором уже есть содержимое, на основе идентификаторов, предоставленных сервером с поддержкой BranchCache. Клиент Windows 7 использует новый протокол BranchCache Discovery Protocol, который использует WS-Discovery для многоадресной рассылки запроса всем компьютерам с тем же сетевым идентификатором, что и клиентская система, которой требуется содержимое. В этом примере клиент является первым клиентом в сети филиала, запрашивающим контент, и в филиале нет кэшированной копии контента.
  4. Поскольку клиент не может получить кэшированную копию содержимого в филиале, он отправляет еще один запрос на сервер с поддержкой BranchCache. На этот раз клиент указывает серверу с включенным BranchCache, что клиент не поддерживает BranchCache, а это означает, что клиент пытался найти содержимое в BranchCache в филиале, но не смог. Сервер отвечает, предоставляя фактические данные клиенту, а клиент помещает их в свой локальный кэш на своем локальном жестком диске.
  5. Теперь второму компьютеру в филиале нужен доступ к той же информации. Он подключается к серверу с поддержкой BranchCache в главном офисе и загружает идентификаторы запрошенной информации после аутентификации и авторизации для получения этого содержимого.
  6. Затем вторая машина использует протокол обнаружения BranchCache для многоадресной рассылки запроса на эти данные на машины в филиале. Первый клиент получает многоадресный запрос от второго клиента и обнаруживает, что у него есть запрошенная информация в его локальном кэше, и отправляет ответ второму клиенту.
  7. Затем второй клиент отвечает запросом содержимого от первого клиента. Это соединение использует протокол извлечения BranchCache, который использует HTTP. Первый клиент отправляет содержимое второму клиенту по протоколу HTTP. Обратите внимание, что этот контент зашифрован с использованием идентификаторов, отправленных контент-сервером, поэтому эту информацию нельзя перехватить во время передачи по сети. Второй клиент сверяет содержимое с имеющимися у него идентификаторами (полученными с сервера содержимого). Если проверка подтверждена, запрашивающее приложение открывает содержимое.

Как BranchCache работает в размещенном режиме?

BranchCache в размещенном режиме работает немного по-другому, используя другой набор сетевых протоколов для поддержки решения:

  1. Клиент в филиале запрашивает файл на веб-сервере или файловом сервере с поддержкой BranchCache в главном офисе. Это может быть через SMB 2.0, HTTP 1.1 или BITS. Клиент сообщает серверу с поддержкой BranchCache, что поддерживает BranchCache, используя ряд полей, сообщений или заголовков, которые являются частью протокола с поддержкой BranchCache, используемого сетевым стеком клиента Windows 7.
  2. Затем клиент отправляет запрос содержимого с сервера BranchCache в режиме размещения в сети филиала. с использованием протокола извлечения BranchCache или MS-PCCRD, который использует HTTP с эфемерной исходной почтой на клиенте и TCP 80 на сервере BranchCache Hosted Mode. Сервер Hosted Mode сообщает клиенту, что у него нет содержимого.
  3. Клиент отправляет еще один запрос на сервер с поддержкой BranchCache в главном офисе, на этот раз информируя сервер о том, что он не поддерживает BranchCache. В этом случае сервер отправляет данные клиенту.
  4. Затем клиент сообщает серверу BranchCache Hosted Mode в филиале, что у него есть новый контент для кэширования. Для этого используется протокол размещенного кэша BranchCache или MS-PCHC. Это делается через HTTPS с эфемерным исходным портом на клиенте и конечным портом на сервере TCP 443.
  5. Затем сервер BranchCache в размещенном режиме подключается к клиенту через HTTP-соединение, используя протокол извлечения BranchCache, MS-PCCRD, который использует эфемерный исходный порт на сервере и порт назначения для клиента TCP-порта 80.
  6. Клиент отправляет содержимое на сервер BranchCache в режиме размещения в филиале.
  7. Второй клиент отправляет запрос тех же данных на веб-сервер или файловый сервер с поддержкой BranchCache в главном офисе. Клиент получает идентификаторы с сервера главного офиса. Затем клиент отправляет запрос на это содержимое с сервера BranchCache в режиме размещения филиала по протоколу извлечения BranchCache. Сервер BranchCache Hosted Mode отправляет зашифрованное содержимое.
  8. Клиент проверяет содержимое и после проверки открывает его в запрашивающем приложении.

Резюме

По мере роста организаций возрастает потребность в филиалах. Сотрудникам филиалов необходим доступ к информации, содержащейся на веб- и файловых серверах главного офиса. Проблема в том, что каналы WAN относительно медленные по сравнению со скоростями LAN. Чтобы повысить производительность и продуктивность сотрудников, можно использовать глобальные файловые службы для ускорения доступа к удаленному контенту. В Windows Server 2008 R2 и Windows 7 появилась новая опция — BranchCache. BranchCache позволяет клиентам Windows 7 получать содержимое главного офиса, кэшированное в сети филиала. BranchCache работает в одном из двух режимов: распределенный или размещенный. Распределенный позволяет клиентам запрашивать кэшированное содержимое друг у друга, в то время как размещенный режим централизует кэш на сервере BranchCache. Распределенный режим следует использовать, когда в сети филиала менее 50 клиентов. BranchCache соблюдает требования аутентификации и авторизации на веб-серверах и файловых серверах, поэтому доступ не отличается от сценария без BranchCache. Содержимое BranchCache, передаваемое по сети, шифруется, чтобы его нельзя было перехватить во время передачи.