RFC: 3027
Оригинал: Protocol Complications with the IP Network Address Translator
Категория: Информационный
Дата публикации:
Авторы: ,
Перевод: Мельников Дмитрий Анатольевич

5. Протоколы, разработанные специально для функционирования с NAT-модулем

5.1. Компьтерные игры компании «Activision»

Компьтерные игры американской компании «Activision» разработаны специально для совместного функционирования с NAT-модулями, и поэтому они не требуют использования специализированного ALG-субмодуля, который бы обеспечивал прозрачную доставку игрового трафика через классический NAT-модуль. Участники игры, расположенные внутри корпоративной сети, могут играть с другими пользователями, расположенными в этой же сети и во внешеней сети общего. Игровой протокол компании «Activision» запатентован и основан UDP-протоколе. Игровой IP-сервер использует UDP-порт с номером «21157» и предполагается, что он расположен в глобальной адресной зоне.

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

Теперь, клиенты могут устанавливать прямые соединения с другими клиентами, либо они могут устанавливать соединения с другими клиентами через игровой сервер. Сущность игрового протокола заключается в том, что он позволяет повторно использовать ту же самую адресную информацию (глобальный IP-адрес с назначенным UDP-портом), которая использовалась при установлении первичного соединения с игровым сервером, при всех последующих соединениях с клиентом. Активный игрок определяется либо одним (корпоративный IP-адрес и корпоративный номер UDP-порта) или всеми (глобальный IP-адрес с назначенным UDP-портом) другими активными игроками. Таким образом, привязка адресных блоков (адрес/порт), хранящаяся в NAT-модуле, должна оставаться неизменной, причем на протяжении всего сеанса связи между участником игры и одним другим игроком или несколькими другими игроками.

Процедура установления соединения с корпоративного IP-узла с игровым сервером не вызывает проблем. Все NAT-модули, которые могут быть использованы, должны обеспечивать прозрачную маршрутизацию и хранить одну и ту же привязку адресных блоков (адрес/порт) для отображения корпоративного блока в глобальный (и наоброт) в течении, как минимум, одного игрового сеанса связи с внешним IP-узлом. Но NAPT-модуль должен быть настроен для обслуживания нескольких одновременных UDP-сеансов связи с использованием одного и того же глобального IP-адрес с назначенным UDP-портом.

Однако, такая система применения NAT-модулей может столкнуться с несколькими проблемами. Например, клиент мог попытаться установить соединение с другим клиентом с помощью корпоративного IP-адреса, но такой корпоративный IP-адрес мог использоваться локально и в другой корпоративной сетевой зоне, то есть один и тот же корпоративный IP-адрес используется локально в нескольких корпоративных сетях. Если IP-узел, с которым было установлено ошибочное соединение, относится к системе другой прикладной службы или UDP-порт его службы является не зарегистрированным, то тогда все сообщения протокола компании «Activision», предназначенные для установления соединения, будут просто уничтожаться. И если все-таки, что мало вероятно, прикладной процесс зарегистрированной прикладной службы примет на обработку сообщение протокола компании «Activision», то тогда результаты такой обработки будут просто не предсказуемые.

2007 - 2017 © Русские переводы RFC, IETF, ISOC.