Common Address Redundancy Protocol (一般アドレス冗長化プロトコル・以下CARPと略す) は、ローカルネットワーク内で複数のサーバがIPアドレスの設定を共有することを可能とするプロトコルである。

概要 主な目的は、(ファイアウォールルーターの使用時においては特に)フェイルオーバーの冗長性を確保する為である。CARPの構成では、VRRPとHSRPの両方に似たサーバロードバランスの機能がある。CARPは、BSD系のOSに実装され、Linuxにも移植されている。その作者は、(シスコシステムズ社がHSRPで取得した)の特許に抵触していないと主張している。

例 もしパケットフィルタを実行している1台のコンピュータがダウンしてしまった場合、パケットフィルタの片側のネットワークはもはや通信できないか、パケットフィルタ無しで通信する。しかし、2台のコンピュータがCARPでIPアドレスを共有している状態でパケットフィルタを実行していて、障害が発生した場合、バックアップ用パケットフィルタに引き継がれ、障害に合わずに残った方のパケットフィルタのコンピュータは、障害を認識することなく、操作は通常通り続行される。新しいパケットフィルタが古いものと同様の動作の実行を確実にする為に、pfsyncdプロトコルがパケットフィルタの状態を同期させるために使用される。

冗長性の原理 CARPを利用しているホストのグループは、「冗長グループ」と呼ばれている。冗長グループは、グループのメンバー間で共有または分割されたIPアドレスを自身に割り当てる。 グループ内部は、1つのホストが「master(マスター)」に指名され、 残りは「slave(スレーブ)」と呼ばれる。 マスターホストは、目下、共有IPアドレスを「take(所持)」しているホストで; そのIPに対するあらゆるトラフィックやARP要求に応答する。各ホストは複数の冗長グループに所属することも出来る。各ホストは2つ目の固有IPアドレスを持っている必要がある。

CARPの一般的な使用方法は、冗長ファイアウォールのグループを作ることである。冗長グループに割り当てられた仮想IPアドレスはデフォルトのゲートウェイとしてクライアント機に設定される。もし、マスターファイアウォールが故障したりネットワークと繋がらなくなった場合、仮想IPアドレスはスレーブファイアウォールの1つが引き継ぎ、サービスは 中断なく利用できる。

歴史 1990年代後半に、IETFは、共有IPの問題の解決策に取り組み始めた。1997年には、シスコシステムズ(以下、シスコと呼ぶ)は、共有IPについて、シスコの特許でカバーされたことをIETFに伝えた。1998年に、シスコはHSRPの特許でカバーしたことを伝えた。それにもかかわらず、IETFはVRRPの作業を続けた。数度の議論を経た後、IETFのVRRPワーキンググループは、RANDライセンス(合理的なかつ非差別)ライセンス条件の下でサードパーティーが利用できるように公開される標準規格の特許の資料に相応しいと決定した。VRRPはHSRPプロトコルに関する問題を修正していた為、シスコはまだHSRPの特許を主張しながらも、代わりとしてVRRPの使用を始めたIETF source。

シスコはOpenBSDの開発者達にHSRPの特許を施行することを知らせた。これはアルカテルとの訴訟が関連している可能性がある。したがって、VRRPのフリーな実装を作れなかった。OpenBSDの開発者は、「合理的かつ非差別的」ライセンスの条項は必ずオープンソースでの実装を除外するものとして、特許を取得したVRRPの代わりとしてCARPを作り始めた。HSRPの特許に抵触しないように、彼らは、CARPのアイデアを根本的に異なるようにしてアイデアを守った。OpenBSDのセキュリティに焦点をあてた開発の為に、CARPはセキュリティを考慮して暗号化の技術を取り入れられて設計された。2003年10月に、完全に特許フリーな形で利用可能になった。2005年5月には、FreeBSD5.4でFreeBSDに統合されて最初にリリースされたFreeBSD 5.4 i386 release notes, retrieved 2010-01-06。以降、NetBSDに統合された。

公式なインターネットプロトコル番号の不存在 OpenBSD.orgより引用:

この要求が行われた時点では、IPプロトコル番号はの規則すなわち「IESGの承認」や「標準的な行動」のプロセス(と、この要求には適用されなかった第3の意見である「専門家の批評」)に従ってIANAによって割り当てられていた。これらのプロセスの両方は、CARPには無かった、要求されていたプロトコル番号の為に原文の仕様書が記述されたプロトコルを必要としていた。技術的な仕様は、CARPのために提出されず、IANAは固有なプロトコル番号の割り当ての要求を断った。

IANA標準規格との非互換性 IPプロトコル112は、1998年 にIANAによってVRRP用プロトコルとして以前に割り当てられていたものでhttp://www.iana.org/assignments/protocol-numbers、それから継続してこのプロトコルが使用されている。

CARPは、以前にVRRPプロトコル用にIANAによって割り当てられていたイーサネットのMACアドレスの配列を使用しているhttp://www.iana.org/assignments/ethernet-numbers。同一のVRRPグループIDをCARPの仮想ホストIDとして同一ネットワーク上でVRRPとCARPを実行することは、MACアドレスの競合する為できないhttp://www.brentrjones.com/2009/11/11/openbsd-carp-and-vrrp-conflicts/。

関連項目 Virtual Router Redundancy Protocol(VRRP) RFC3768定義の標準化されたデフォルトゲートウェイの冗長性プロトコル Hot Standby Router Protocol(HSRP)シスコシステムズ社製のルータ冗長ソリューション Gateway Load Balancing Protocol(GLBP)シスコシステムズ社製のルータ冗長兼ロードバランシングソリューション Routed Split Multilink Trunking(RSMT)ノテル・ネットワークス社製のルータ冗長ソリューション PF (ファイアウォール) ネットワークアドレス変換 通信プロトコル

脚注・出典

外部リンク OpenBSD's carp(4) man page FreeBSD's carp(4) man page Firewall Failover with pfsync and CARP UCARP: userland CARP implementation NetBSD port of CARP The OpenBSD song 3.5: "CARP License" and "Redundancy must be free" メディアの報道