Введение

Протокол компьютерной сети

Протокол общих адресов или CARP — это протокол компьютерной сети, позволяющий нескольким хостам в одной локальной сети совместно использовать набор IP-адресов. Его основное назначение — обеспечение резервирования при отказе, особенно при использовании с межсетевыми экранами и маршрутизаторами. В некоторых конфигурациях CARP также может обеспечивать функциональность балансировки нагрузки. CARP предоставляет функциональность, аналогичную протоколу виртуальной избыточности маршрутизаторов (VRRP) и протоколу резервного маршрутизатора горячей замены (HSRP) от Cisco Systems. Он реализован в нескольких операционных системах на базе BSD и был портирован на Linux (ucarp).

Пример

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

Принцип избыточности

Группа хостов, использующих CARP, называется "группой резервирования". Группа резервирования назначает себе IP-адрес, который совместно используется или распределяется между членами группы. В этой группе один хост назначается "активным/основным". Остальные члены находятся в состоянии "резервного ожидания". Основной хост – это тот, который "получает" IP-адрес. Он отвечает на любой трафик или ARP-запрос, направленный на этот адрес. Каждый хост может принадлежать к нескольким группам резервирования. Каждый хост должен иметь второй уникальный IP-адрес. Распространенное применение CARP – создание группы резервированных межсетевых экранов. Виртуальный IP-адрес, выделенный группе резервирования, указывается как адрес шлюза по умолчанию на компьютерах, находящихся за этой группой межсетевых экранов. Если основной межсетевой экран выходит из строя или отключается от сети, виртуальный IP-адрес будет принят одним из резервных межсетевых экранов, и доступность сервиса не будет прервана.

История

В конце 1990-х годов рабочая группа по инженерным задачам в Интернете (IETF) начала разработку протокола для обеспечения резервирования маршрутизаторов. В 1997 году Cisco уведомила IETF о наличии у неё патентов в этой области, а в 1998 году указала на свой патент на HSRP. Тем не менее, IETF продолжила работу над VRRP. После обсуждения рабочая группа IETF VRRP приняла решение утвердить стандарт, несмотря на его зависимость от запатентованных технологий, при условии, что Cisco предоставит доступ к патенту третьим сторонам на разумных и недискриминационных условиях лицензирования. Cisco уведомила разработчиков OpenBSD о намерении защищать свой патент на HSRP. Позиция Cisco могла быть связана с их судебным разбирательством с Alcatel. Поскольку условия лицензирования Cisco препятствовали созданию VRRP с открытым исходным кодом, разработчики OpenBSD приступили к разработке CARP. OpenBSD уделяет особое внимание безопасности. Они спроектировали CARP с использованием криптографии, что принципиально отличало CARP от VRRP и гарантировало отсутствие нарушения патента Cisco. CARP стал доступен в октябре 2003 года. Впоследствии он был интегрирован в FreeBSD (впервые выпущен в мае 2005 года с FreeBSD 5.4), NetBSD и Linux (ucarp). IANA присвоила протоколу VRRP номер 112 (в 1998 году посредством RFC 2338). Номер протокола 112 по-прежнему используется VRRP. CARP также использует диапазон MAC-адресов Ethernet, которые IEEE присвоила IANA/IETF для протокола VRRP. Несмотря на это совпадение, VRRP и CARP могут использоваться в одном и том же домене широковещания, если идентификатор группы VRRP и идентификатор виртуального хоста CARP различны.