ループバック
ループバック(loopback、loop-back)は、電子信号、デジタルデータ、あるいは情報ストリームが、意図的な処理や変更を受けずに送信元へ回送される仕組みを指します。これは主に、通信インフラや関連機器の試験・診断のために利用されます。
この技術には多岐にわたる応用例があります。例えば、終端が一つしかない通信路では、送信されたメッセージは即座に同じ経路で受信されます。
電気通信分野では、ループバック装置を用いることで、サービス対象
端末側の人的支援を必要とせずに、交換局から加入者アクセス網の
伝送試験を行うことができます。また、必ずしも隣接していない局間で行われる
ループアラウンド試験では、二本の通信線を使用し、一方の局から送られた試験信号が遠隔の局で二本の線を経由して折り返され、最初の局で受信されます。パッチケーブルなども、手動・自動、あるいはローカル・リモートでのループバックとして機能し、試験を容易にします。
信号の送信と受信の間にアナログ・デジタル変換を含むシステム(
モデムなど)では、アナログ信号をそのまま送信元に戻す
アナログループバックと、デジタル変換後に再度アナログ信号に変換して戻す
デジタルループバックが存在します。
電気通信におけるループバック
電気通信分野におけるループバック(または単に
ループ)は、受信した信号やデータを送信元へ送り返す、ハードウェアまたはソフトウェアによる手法です。これは物理的な接続問題の解析に特に有効です。多くのデータ通信機器では、機能試験のために特定のパターンをインターフェースから送信し、同じポートでその信号が受信できるかを確認する
ループバック試験が可能です。これは
モデムやトランシーバで、自身の出力を入力に接続することで実施できます。異なる二地点間の回線は、一方の地点から試験信号を送り、もう一方の地点のネットワーク機器で信号を折り返すことで試験可能です。自身が送った信号を正確に受信できれば、回線が正常に機能していることを示します。
ハードウェアループは、受信チャネルと送信チャネルを物理的に接続する単純なデバイスです。例えば、X.21のようなネットワーク終端コネクタでは、ピンを相互に接続することで実現されます。光ファイバーや
同軸ケーブルのように送信と受信が別の媒体を使用する場合でも、一本のケーブルでループさせることが可能です。
モデムは、対向
モデムまたはローカル
端末からの着信信号を折り返すように設定できます。これは
ソフトウェアループと呼ばれます。
シリアルインターフェースでの応用
シリアル通信で使用されるトランシーバは、その機能確認のためにループバックを利用できます。例えば、デバイスの送信ピンを受信ピンに物理的に接続すると、自身が送った信号を正確に受信することを確認できます。この接続をケーブルの遠端に移せばケーブル自体が、
モデムリンクの遠端に移せばリンク全体が試験対象となります。これは一般的なトラブルシューティング手法であり、特定のパターンを送信し、返ってくるエラーを数える専用試験装置(
符号誤り率試験)と組み合わせて使用されることもあります。一部のデバイスには、組み込みのループバック機能が含まれています。
簡単なシリアルインターフェースのループバック試験に
「ペーパークリップ試験」があります。これは、コンピュータのシリアルポートを識別し、動作を確認するために使われることがあります。ターミナルエミュレータで
フロー制御を無効にし、文字をシリアルポートへ送信し、ループバックで受信します。通常、RS-232インターフェースのDE-9またはDB-25コネクタにおいて、受信ピン(Pin 2)と送信ピン(Pin 3)をペーパー
クリップなどで短絡させて行われます。
仮想ループバックインターフェース
インターネットプロトコルスイートの実装には、同じコンピューター上で動作するネットワークアプリケーション同士が通信するための
仮想ネットワークインターフェースが含まれています。これは
オペレーティングシステムのネットワークソフトウェア内に実装されており、パケットは実際のネットワークインターフェースカード(NIC)には送られません。プログラムがループバックIPアドレス宛てに送信したデータは、あたかも外部デバイスから受信したかのようにネットワークソフトウェアスタックへ折り返されます。
Unix系のシステムでは、このループバックインターフェースには通常 `lo` または `lo0` といった名前が付けられます。
Internet Engineering Task Force (IETF) 標準では、IPv4アドレスブロック `127.0.0.0/8` (CIDR表記)と
IPv6アドレス `::1` がこの目的のために予約されています。最も一般的に使用されるIPv4アドレスは `127.0.0.1` です。これらのループバックアドレスは通常、自
端末のホスト名、`localhost`、`loopback` といった名称にマッピングされます。
MPLSでの特殊な利用
IPv4アドレス `127.0.0.0/8` を使用する際の例外の一つに、
Multi-Protocol Label Switching (MPLS) におけるトレースルートのエラー検出があります。ループバックアドレスの「ルーティングされない」という特性を利用し、障害のあるパケットがエンドユーザーに配信されるのを防ぐ手段として活用されます。
Martianパケット
送信元または宛先アドレスがループバックアドレスに設定されたIP
データグラムは、自身のホストの外へルーティングされるべきではありません。インターフェース上で受信された、宛先がループバックアドレスになっているパケットは破棄される必要があります。そのようなパケットは
Martianパケット(火星人パケット)と呼ばれます。他の異常なパケットと同様に悪意がある可能性があり、Bogonフィルタリングを適用することで回避できます。
安定したアドレスを持つインターフェースとしての利用
一部のコンピュータネットワーク機器では、安定したIPアドレスを設定できる仮想インターフェースに対して「ループバック」という用語が使用されています。これは前述の仮想ループバックインターフェースとは異なり、自身との通信のためではなく、インターフェースではなくネットワーク機器そのものにアドレスを与えるために使用されます。この種のループバックデバイスは、実際の物理インターフェースとは異なり、設定で明示的に無効にしない限り、関連する物理ポートに障害が発生してもアクティブな状態を維持するという特性があります。
このようなインターフェースには、ネットワーク経由で管理システムからアクセスできるアドレスが割り当てられますが、機器上のどの物理インターフェースにも直接割り当てられるアドレスとは異なります。機器自身が発生させるアラートなどの管理用
データグラムの送信元アドレスとしても使用されます。この仮想インターフェースが特別なのは、それを利用するアプリケーションが、通信に使用する物理インターフェースのアドレスではなく、仮想インターフェースに割り当てられたアドレスを使用して通信を行う点です。
ループバックインターフェースにアドレスを設定する具体的なユースケースとしては、以下のような例があります。
ルーティングプロトコルからの要求: OSPFやBGPといった大規模ネットワーク向けの
ルーティングプロトコルでは、ルーターを一意に識別するIDが必要です。多くの実装では、有効なインターフェースのIPv4アドレスがルーターIDとして使用されます。ルーターIDが不用意に変更されると、
ルーティングプロトコルの再起動が必要となり、ネットワークの安定性が損なわれる可能性があるため、安定したルーターIDを確保するためにループバックインターフェースが用いられます。
BGPピアリング: BGP運用では、他のルーターとのピアリング(通信相手として関係を築くこと)にループバックインターフェースのアドレスを使用することが推奨されています。これにより、特定の物理インターフェースを経由したピアへの接続が途絶した場合でも、別の経路探索プロトコル(IGPなど)を利用して新しい経路を見つけることで、BGP接続を維持・復旧させることが可能になります。
*
ポイント・ツー・ポイント接続におけるunnumberedインターフェース: ルーターが
ポイント・ツー・ポイント接続のインターフェースへパケットを送信する場合、パケットのネクストホップが対向であることが明確なため、パケット転送のみを考慮すれば、このようなインターフェースに個別のIPアドレスを割り当てる必要はありません。一方で、ルーター自身が送受信するパケットがこの接続を経由する場合には、インターフェースに何らかのアドレスが必要となります。この場合、
ポイント・ツー・ポイント接続インターフェースに直接アドレスを設定する代わりに、ループバックインターフェースに設定したアドレスを「借用」する手法があり、「unnumberedインターフェース」などと呼ばれます。この手法は、ルーターが管理する
ポイント・ツー・ポイント接続数が増加しても、ルーター側のインターフェースに多くのIPアドレスを割り当てる必要がないという利点があり、PPPやVPNトンネルの終端装置などでしばしば採用されています。
その他の応用
音声処理システムであるOpen Sound System (OSS)、Advanced Linux Sound Architecture (ALSA)、
PulseAudioなどには、試験目的でアプリケーションの音声出力を記録するためのループバックモジュールが存在します。物理的なループバックとは異なり、これはデジタル領域で行われ、アナログ・デジタル変換を含まず、ハードウェアの誤動作による影響を受けません。