Малышев_Сетевое программирование 19.12.18
.pdf
31
сети Ethernet с широковещательным адресом, в результате эту копию получают оба приемника.
Очевидно, что в случае явной групповой рассылки (в) пропускная способность сети используется наиболее эффективно, так как по каждой нужной линии пересылается всего одна копия дейтаграммы. С другой стороны, для реализации данного метода требуется существенная поддержка со стороны сетевого уровня и маршрутизаторов. Аналогично, реализация групповой рассылки на прикладном уровне (б) может быть более эффективной, чем первый вариант, при котором отправитель сам пересылал копии данных всем получателем путем выборочной рассылки. Но и для этого метода также необходима установка и поддержка специальной инфраструктуры на прикладном уровне.
Рис. 4. Три способа групповой рассылки
32
При групповой рассылке возникает две проблемы: как идентифицировать получателей многоадресной дейтаграммы и как адресовать эту дейтаграмму.
В случае выборочной рассылки (а) IP-адрес получателя содержится в каждой одноадресной IP-дейтаграмме и означает единственного получателя. Но в случае групповой рассылки имеется несколько получателей.
Помещение в каждую групповую дейтаграмму IP-адреса всех получателей, входящих в группу может работать для небольшого количества получателей, оно плохо подходит для случая сотен и тысяч получателей. Объем адресной информации просто займет все место в дейтаграмме, вытеснив из нее всю полезную информацию. Кроме того, чтобы явно указать всех получателей, отправитель должен знать идентификаторы и адреса всех получателей. Далее будет показано, что в некоторых ситуациях такое требование может быть нежелательным.
Рис. 5. Адресованная в группу рассылки дейтаграмма доставляется всем членам группы
В архитектуре Интернета (а также в архитектуре ATM-сети) групповая дейтаграмма адресуется косвенно. То есть для группы получателей ис-
33
пользуется один идентификатор, а копия дейтаграммы, адресованной группе получателей при помощи этого единственного идентификатора, доставляется всем членам этой группы.
В Интернете такой единый идентификатор, соответствующий группе получателей, представляет собой групповой адрес класса D. Группа получателей, ассоциированная с адресом класса D, называется группой рассылки. На рис. 5 четыре компьютера ассоциированы с группой рассылки с IP-адресом 226.17.30.197. Эти компьютеры будут получать все дейтаграммы, направляемые по данному адресу. У каждого компьютера имеется свой уникальный IP-адрес, полностью независимый от адреса группы рассылки, членом которой он является.
Групповые адреса задаются IP-адресами класса D (от 224.0.0.0 до 239.255.255.255) [9]. Многоадресные пакеты могут перемещаться по разным сетям через маршрутизаторы, поэтому их можно применять в сценарии с Интернетом, если провайдер сети поддерживает групповую рассылку. Компьютеры, которым требуется получать определенные групповые сообщения, должны зарегистрироваться через протокол IGMP (Internet Group Management Protocol). При этом групповые сообщения не отправляются в те сети, где нет ни одного компьютера, присоединившегося к группе (см. рис. 5). IP-адреса класса D используются только в группах рассылки, чтобы их можно было отличить от обычных адресов компьютеров, позволяя узлам легко определить, интересует ли их данное сообщение.
Существуют два режима работы сетевых адаптеров при групповой рассылке [10]. В первом выборка пакетов осуществляется аппаратными средствами адаптера, во втором – программными средствами драйвера адаптера. Аппаратная выборка осуществляется быстрее и не загружает центральный процессор компьютера, но её возможности ограничены. В частности, у некоторых старых адаптеров отсутствует аппаратная поддержка IGMP, поэтому они не могут получать групповые пакеты без переключения в режим программной выборки. Более современные сетевые адаптеры способны запоминать несколько (обычно 16 или 32) групповых адресов, и, пока количество групповых адресов не превышает этот предел, могут осуществлять аппаратную выборку групповых пакетов.
При программной выборке число групп адресов больше, чем при аппаратной.
Протокол IP не поддерживает многоадресную рассылку при использовании TCP, только при UDP. Для использования многоадресной рассылки через границы подсетей, маршрутизаторы должны поддерживать передачу многоадресных пакетов.
34
Все сокеты, участвующие в многоадресной рассылке, равноправны. Каждый сокет без каких-либо ограничений может подключиться к многоадресной группе и получать все сообщения, отправленные на групповой адрес. При этом послать сообщение на групповой адрес может любой сокет, в т. ч. и не входящий в группу.
Протокол IGMP позволяет назначить нескольким узлам групповые адреса, можно группе сокетов назначить один IP, и тогда все пакеты на этот адрес будут получать все сокеты, входящие в группу. Номер порта может быть любой или можно указать 0, что позволит стеку TCP/IP назначить произвольный порт.
6.1.МОДЕЛИ ПРИЛОЖЕНИЙ С ГРУППОВОЙ РАССЫЛКОЙ
Существует множество типов приложений, в которых групповая рассылка полезна и целесообразна. Например, в одном из таких сценариев каждой станции в группе нужно, чтобы ее данные отправлялись всем другим станциям этой группы (взаимодействие многих со многими) [9]. При этом ни одной станции не требуется создавать соединение с каждой другой станцией, а нужно просто использовать групповой адрес. Пример: одноранговое приложение интерактивного форума. В этом приложении автор сообщения передает его в сеть один раз, и оно поступает в каждый узел группы:
Интерактивный сервер/клиент
Интерактивный сервер/клиент
Интерактивный сервер/клиент
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Интерактивный |
Интерактивный |
||||||||
сервер/клиент |
сервер/клиент |
||||||||
Рис. 6. Одноранговое приложение интерактивного форума
35
Групповая рассылка важна еще в одном сценарии, в котором одной станции требуется отправлять данные группе станций (взаимодействие одного с многими). Пример: отправка аудио, видео и других объемных типов данных. Сервер отправляет данные только один раз по групповому адресу, а большое число станций может получить его сообщения. Такая же технология используется в локальной сети для одновременной установки приложений на множестве PC, при этом серверу не требуется отправлять большой установочный пакет каждой клиентской станции в отдельности.
Отправитель
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Получатель |
|
Получатель |
Получатель |
Получатель |
||||||||||
Рис. 7. Взаимодействие одного с многими
6.2. ПРОТОКОЛ IGMP
IGMP используется IP-компьютерами, чтобы сообщать о групповом членстве всем непосредственно связанным с ними маршрутизаторам, поддерживающим групповую рассылку [8, 9]. Сообщения IGMP заключены в IP-дейтаграммах с указанием в заголовке номера протокола, равным 2 (1 для ICMP, 6 для TCP и 17 для UDP).
Сообщение IGMP версии 2 состоит из 64 битов и содержит тип сообщения, максимальное время ответа (используемое только для опросов членства), контрольную сумму и групповой адрес.
Тип (8 бит) |
Максимальное время отве- |
Контрольная сумма |
|
та (8 бит) |
(16 бит) |
|
|
|
|
Групповой адрес (32 бита) |
|
|
Рис. 8. Сообщение IGMP |
|
36
Типы сообщений, используемые для взаимодействия между компьютером и маршрутизатором, определены в первых 8 битах заголовков сообщений IGMP версии 2 и описаны в следующей таблице.
|
|
Типы сообщений IGMP [9] |
Таблица 1. |
|
|
|
|
|
|
|
|
|
|
|
Типы со- |
Шестнадца- |
Описание |
Отправитель |
|
обще- |
теричное |
|
|
|
ний |
значение |
|
|
|
Запрос |
0x11 |
Эти сообщения используются маршрути- |
маршрутизатор |
|
членства |
|
затором для определения существования |
|
|
|
|
членов группы. Существует два типа за- |
|
|
|
|
проса членства, которые можно различить |
|
|
|
|
по адресу группы в 32-битном поле груп- |
|
|
|
|
пового адреса. 1) При общем запросе адрес |
|
|
|
|
группы в заголовке IGMP содержит все |
|
|
|
|
нули, тогда запрос касается всех групп, |
|
|
|
|
имеющих члены в присоединенной сети. |
|
|
|
|
2) Запрос по конкретной группе требует |
|
|
|
|
ответить, есть ли в сети члены конкретной |
|
|
|
|
группы, содержит адрес группы |
|
|
|
|
|
|
|
Доклад о |
0x16 |
Когда РС присоединяется к группе рас- |
ПК |
|
членстве |
|
сылки, он отправляет маршрутизатору |
|
|
версии 2 |
|
доклад о членстве, информируя его, что |
|
|
|
|
входящая в сеть система ожидает группо- |
|
|
|
|
вых сообщений. |
|
|
Выход из |
0x17 |
Последний оставшийся РС группы, поки- |
ПК |
|
группы |
|
дая её, должен отправить сообщение о вы- |
|
|
|
|
ходе из группы всем маршрутизаторам |
|
|
|
|
(224.0.0.2). РС может запоминать все ком- |
|
|
|
|
пьютеры, входящие в группу (эту инфор- |
|
|
|
|
мацию он получает в докладах о членстве, |
|
|
|
|
отправленных в ответ на запросы о член- |
|
|
|
|
стве), поэтому он знает, последний ли он в |
|
|
|
|
этой группе. Однако это необязательное |
|
|
|
|
требование. Если члены группы не запо- |
|
|
|
|
минаются РС, то каждый РС, покидая |
|
|
|
|
группу, отправляет сообщение о выходе из |
|
|
|
|
группы. В любом случае маршрутизатор |
|
|
|
|
проверяет, является ли этот РС последним, |
|
|
|
|
и, если это так, перестает направлять в |
|
|
|
|
сеть групповые сообщения. |
|
|
Доклад о |
0x12 |
Этот доклад используется по соображени- |
ПК |
|
Членстве |
|
ям совместимости с IGMP версии 1. |
|
|
версии 1 |
|
|
|
|
|
|
|
|
|
37
6.3. ТИПЫ ГРУППОВЫХ АДРЕСОВ
Групповой адрес класса D начинается с двоичного значения 1110 в первом байте, что составляет диапазон адресов от 224.0.0.0 до
239.255.255.255.
Однако не каждый адрес из этого диапазона доступен для групповой передачи, например, групповые адреса 224.0.0.0 – 224.0.0.255 предназначены для специального использования, и маршрутизаторы не передают их через сети. Если обычные IP-адреса может назначать местное представительство любой страны, то за назначение групповых адресов отвечает только Агентство по выделению имен и уникальных параметров протоко-
лов Интернета (Internet Assigned Numbers Authority – IANA, http://www.iana.org). RFC 3171 определяет использование специальных диапазонов групповых IP-адресов и их назначение.
Для краткой записи диапазона IP-адресов в документе RFC 3171 используются адреса бесклассовой междоменной маршрутизации (Classless InterDomain Routing, или CIDR). CIDR-запись 224.0.0/24 аналогична диа-
пазону адресов в десятичной записи 224.0.0.0 – 224.0.0.255. В CIDR- записи первая часть показывает фиксированный диапазон в десятичной записи, за которой следует число фиксированных битов, таким образом, 232/8 – это CIDR-запись диапазона 232.0.0.0 – 232.255.255.255.
Существует три основных способа выделения групповых адресов
[9]:
-статический;
-динамический;
-связанный с областью действия.
Статические групповые адреса
Статические групповые адреса, необходимые глобально, назначают-
ся агентством IANA. Несколько их примеров
Адреса, начинающиеся с 224.0.0, принадлежат блоку управления локальной сетью (LNCB) и никогда непередаются маршрутизатором дальше.
224.0.0.1– означает отправку сообщения всем системам подсети,
224.0.0.2– отправку сообщения всем маршрутизаторам подсети,
224.0.0.12– сервер DHCP,
224.0.1.1– для сетевого протокола времени – NTP (Network Time
Protocol).
Статические адреса, используемые для протоколов, которым нужны известные адреса, могут жестко кодироваться в приложениях и устройствах.
38
Полный перечень зарезервированных в настоящее время групповых адресов и их владельцев, определенных RFC 3171, можно найти на Web-
сайте IANA на странице http://www.iana.org/ossignments/multicast-addresses.
Web-сайт IANA также предлагает форму, позволяющую запросить групповые адреса для приложений, которым нужны глобально уникальные IP-адреса. Ее можно найти на странице http://www.iana.org/cgibin/muiticast.pl.
Для разрабатываемых программ лучше использовать адреса с
225.0.0.0.
Динамические групповые адреса
Часто динамический групповой адрес целесообразнее использовать, чем фиксированный адрес. Это выделяемые по требованию адреса, которые имеют определенное время жизни. Запросы динамических групповых адресов в принципе аналогичны запросам DHCP (Dynamic Host Configuration Protocol), но используют протокол MADCAP (Multicast Address Dynamic Client Allocation Protocol).
Используя протокол MADCAP, клиент, запрашивающий групповой адрес, отправляет однонаправленное или групповое сообщение серверу MADCAP. Сервер отвечает адресом, выдавая его в аренду.
Протокол MADCAP определен в RFC 2730.
Сервер MADCAP поставляется с Windows 2000 Server; при помощи конфигурирования его можно сделать частью служб сервера DHCP.
Групповые адреса, связанные с областью действия
Групповые адреса, связанные с Областью действия, – это такие групповые адреса, которые используются только внутри локальной группы или организации.
Диапазон адресов от 239.0.0.0 до 239.255.255.255 зарезервирован для так называемых административных адресов, которые могут совместно использоваться несколькими локальными группами. Маршрутизаторы обычно снабжаются фильтрами, не выпускающими трафик групповой рассылки в этом адресном диапазоне из локальной сети.
Административные адреса, связанные с областью действия, определены в документе RFC 2365.
Еще один способ определения области действия групповых адресов заключается в задании TTL (время жизни).
Установка области действия
Область действия групповой рассылки определяет, сколько раз групповые сообщения переправляются маршрутизаторами.
39
Когда клиент отправляет доклад о членстве, желая присоединиться к группе рассылки, он определяет значение TTL, посылаемое в IP-пакете. Значение TTL определяет, сколько "прыжков" должен выполнить доклад о членстве.
Значение TTL, равное 1, означает, что этот доклад так и не покинет локальной сети.
Каждый маршрутизатор, получив доклад о членстве, уменьшает значение TTL на единицу и отбрасывает пакет, когда значение TTL достигает нуля.
При определении точного числа "прыжков" до отправителя возникает проблема, связанная с тем, что разные маршруты требуют разного числа прыжков, и поэтому административные групповые адреса (начинающиеся на 239), связанные с областью действия, имеют в данном случае некоторое преимущество.
6.4.ГРУППОВАЯ МАРШРУТИЗАЦИЯ
Протокол IGMP (Internet Group Management Protocol – межсетевой протокол управления группами) версии 2, определенный в RFC 2236, работает только между компьютером и соединенным с ним ближайшим маршрутизатором (этот маршрутизатор можно рассматривать как первый маршрутизатор на пути следования входящих дейтаграмм или последний маршрутизатор на пути следования исходящих дейтаграмм) [11]. На рис. 9 изображены три локальных сети и три групповых маршрутизатора, каждый из которых соединен с парой компьютеров через локальный интерфейс. Несколько компьютеров каждой локальной сети как правило являются членами той или иной группы рассылки.
По протоколу IGMP компьютер информирует соединенный с ним маршрутизатор о том, что работающее на компьютере приложение желает присоединиться к определенной группе рассылки. Учитывая ограниченность сферы действия протокола IGMP компьютером и ближайшим маршрутизатором, для координирования работы с другими групповыми маршрутизаторами (включая присоединенные маршрутизаторы) в Интернете необходимы другие протоколы. Эту задачу решают протоколы групповой маршрутизации сетевого уровня, такие как PIM, DVMRP и MOSPF. Таким образом, групповая рассылка на сетевом уровне в Интернете состоит из двух взаимодополняющих компонентов: протокола IGMP и протокола групповой маршрутизации.
40
Рис. 9. Две состовляющие групповой рассылки сетевого уровня
Хотя протокол IGMP называют «протоколом членства в группах», в действительности единого протокола сетевого уровня, управляющего членством в группах рассылки и функционирующего на всех интернеткомпьютерах группы, не существует. Также не существует единого протокола сетевого уровня, позволяющего компьютеру определить идентификаторы всех остальных компьютеров группы.
Введение в Интернете возможностей групповой рассылки было непростой задачей [9, 10]. Когда протокол групповой рассылки был определен, изготовители маршрутизаторов не сразу реализовали функциональность групповой рассылки, пока не выяснилось, что их потребителям действительно нужна технология групповой рассылки. И тогда оказалось, что реализовать эту технологию сразу нельзя, поскольку ее было невозможно применить в Интернете. Чтобы разрешить эту дилемму, в 1992 г. была создана магистраль групповой рассылки МВоnе (Multicast backbone).
МВоnе начиналась с 40 подсетей в четырех различных странах, а теперь она охватывает более 3400 подсетей в более чем 25 странах.
МВоnе соединяет изолированные подсети, способные обмениваться сообщениями групповой рассылки через туннели, как можно видеть на рисунке 10.
Чтобы соединить несколько изолированных участков через Интернет, в котором не поддерживается групповая рассылка, групповые сообщения направляются через туннели с использованием однонаправленного соединения между конечными точками туннелей.
