2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AIX Network Interface Backup (NIB) の基礎

2
Posted at

はじめに

AIX環境において、ネットワークの高可用性を確保することは、システムを安定稼働させるうえで重要な要素です。

本記事では、AIXのネットワーク冗長化手法の一つである Network Interface Backup (NIB) について、その仕組み、安定運用のヒントを記載します。


AIXNIB.jpg


ご参考動画

当記事の内容の動画です。


NIBの基本動作と障害検知の仕組み

NIBは、複数のネットワークアダプターをアクティブ・パッシブ構成で束ねることで、ネットワークの冗長性を確保します。異なる物理スイッチへの接続をサポートしている点が大きな特徴です。

障害検知の2つのアプローチ

NIBでは、主に以下の2つの方法でネットワークの異常を検知し、待機中(Backup)のアダプターへフェイルオーバーを行います。

  • リンク状態監視(瞬時に検知)
    ケーブルの物理的な断線や、直接接続されているスイッチのポート障害など、リンクダウンを伴う障害を即座に検知します。

linkup.png

  • Ping監視(論理的な障害検知)
    スイッチより先にある上位ネットワークの障害はリンク状態では検知できません。そのため、指定したIPアドレス(netaddr)へ定期的にPingを送信し、応答がない場合に論理的な障害として切り替えを行います。

ping監視.png

■ Ping監視(netaddr)を設定しない場合がある理由

Ping監視は有用な機能ですが、環境によってはあえて設定しない選択が取られることがあります。主な理由は以下の3点です。

  1. 誤フェイルオーバーのリスク
    監視対象のIPアドレスがネットワーク障害以外の理由(計画メンテナンスやホスト側の再起動など)で応答を返せない状態になると、経路そのものは正常であってもフェイルオーバーが発生してしまいます。監視先のホストやゲートウェイが停止するたびに切り替えが起きるようでは、Ping監視を導入した意図と逆の結果を招く可能性があります。

  2. ICMPがブロックされている環境
    ファイアウォールのポリシーやスイッチのACL(アクセス制御リスト)によってICMPパケットが制限されている環境では、正常な経路に対してもPingが届かず、常に障害と誤検知されるリスクがあります。このような環境ではPing監視を設定すること自体が困難です。

  3. 適切な監視先IPアドレスの選定が難しい
    Ping監視が有効に機能するためには、「常時稼働していて、かつネットワーク経路の状態を正しく反映する」IPアドレスを選ぶ必要があります。デフォルトゲートウェイや上位ルーターが候補になりますが、環境によっては条件を満たす安定した監視先を確保しにくい場合があります。

これらの事情から、リンク状態監視のみで運用するケースや、Ping監視を使う場合でも監視先の選定と運用ルールを十分に検討したうえで導入することが推奨されます。


Ping監視を設定しないとどうなるのか?

物理障害には対応できる

Ping監視が未設定であっても、NIBのリンク状態監視は引き続き機能します。LANケーブルの抜けや直接接続されたスイッチの電源断など、OS上で「リンクダウン」として認識される障害であれば、フェイルオーバーは正常に動作します。

上位ネットワーク障害では検知できない

問題となるのは、サーバーと直接つながっているスイッチより先(上位)のネットワークで障害が発生したケースです。たとえば、エッジスイッチ自体は正常に動いているが、その先のコアスイッチとの接続が切れてしまった場合、サーバーとエッジスイッチ間の物理リンクは生きているため、AIXのポートは「リンクアップ(正常)」のままです。AIXは異常を検知できず、フェイルオーバーは行われません。結果として、サーバーは障害のある経路へパケットを送り続け、通信が届かないブラックホール状態に陥ります。

まとめ:どちらを選ぶか

構成 検知できる障害 上位ネットワーク障害
リンク状態監視のみ 物理断(リンクダウン) 検知不可(スイッチ側の冗長構成に依存)
Ping監視あわせて設定 物理断+論理的な疎通断 検知可能

異なるスイッチをまたいでNIBを組む構成など、可用性を重視する環境では、Ping監視(netaddr)を設定しておくことが一般的に推奨されます。


GARPによるMACアドレスの更新

アダプターの切り替えが発生した際、AIXサーバーは新しい経路に対して GARP(Gratuitous ARP) を送信します。これにより、ネットワーク上のスイッチのMACアドレステーブルが速やかに更新され、通信のダウンタイムを最小限に抑えます。

■ GARPとは?

NIBにおけるスムーズなフェイルオーバーを支える技術が GARP(Gratuitous Address Resolution Protocol) です。

garp1.png


■ 通常のARPとGARPの違い
通常のARP(Address Resolution Protocol)は、「このIPアドレスを持っている機器のMACアドレスを教えてください」という要求に対して応答する仕組みです。
一方、GARPは誰からも問い合わせられていないのに、自発的に自身のIPアドレスとMACアドレスの対応をネットワーク全体にブロードキャスト(通知)する特殊なARPパケットです。


■ NIBの切り替えでなぜGARPが必要なのか?
NIBでアクティブアダプターに障害が発生し、待機中のバックアップアダプターに処理が引き継がれた際、サーバーが通信に使用する物理スイッチの「ポート」や「経路」が変更されます。
しかし、ネットワーク上のスイッチが持つ「MACアドレステーブル(どのポートの先にどのMACアドレスが存在するかのキャッシュ)」が古い経路を記憶したままだと、外部からの通信が元の障害ポートへ向かい続けてしまい、通信断が長引く原因になります。

そこで、アダプターの切り替えが発生した際に、AIXサーバーは新しい経路から 「現在、このポート(経路)にいます」とGARPを送信 します。
この通知を受け取ったスイッチは、自身のMACアドレステーブルを新しいポート情報に書き換えます。これにより、通信が新しいバックアップアダプターへ正しくルーティングされ、ダウンタイムを抑えることができます。


標準EtherChannelとNIBの主な違い

冗長化技術としてよく比較される「標準EtherChannel(802.3ad)」と「NIB」の違いをまとめました。用途に合わせて適切な方式を選択することが重要です。

項目 標準EtherChannel / 802.3ad Network Interface Backup (NIB)
主な目的 帯域幅の拡大と冗長性 高可用性とスイッチの冗長化
稼働アダプター 複数(最大8つ)による負荷分散 常に1つのみアクティブ(アクティブ・パッシブ)
スイッチ要件 同一、またはスタックされたスイッチ 完全に独立した複数のスイッチが可能

帯域幅を拡張したい場合は標準EtherChannelが適していますが、異なる物理スイッチをまたいで可用性を高めたい場合はNIBが有力な選択肢となります。


安定運用のために理解しておくこと

NIBを本番環境で安定して稼働させるための、重要な設定ポイントを3つ紹介します。

「1パケット」の切り戻しルール(Receive Packet Before Failback)

プライマリアダプターが復旧した際に即座に切り戻し(フェイルバック)を行うと、通信が不安定になる可能性があります。NIBには「最初の1パケットを受信するまで切り戻しを保留する」という仕組みが備わっており、この動作を理解しておくことが重要です。

1paket.png


■ なぜ「すぐに切り戻す」と問題が起きるのか?
物理的なケーブルが接続され、OS上で「Link Up」と認識された場合でも、その先のスイッチやルーターが**「パケットを転送できる状態(フォワーディング状態)」**になっているとは限りません(後述するSTPの計算時間などがこれに該当します)。

転送準備が整っていない状態でAIXがプライマリへ切り戻し、GARPを送信してしまうと、スイッチ側でパケットが破棄され、復旧したはずなのに通信断が発生する(ブラックホール化する) 状態に陥ることがあります。


■ 「1パケット受信」という確認手順
この問題を避けるため、AIXのNIBは物理的にリンクアップした後、「プライマリアダプター経由で外部から何らかのパケットを実際に1つ受信できるか」 を待ちます。

パケットを受信できたということは、スイッチ側の転送準備が整っており、通信が正常に届く状態であることの確認になります。この確認を経てから、AIXは正式にプライマリアダプターへ切り戻しを行い、GARPを送信して経路を元に戻します。


■ 設定値の確認(デフォルト設定)
この機能は、AIXのNIB 設定において Receive Packet Before Failback という項目で管理されています。以前のバージョンのAIXではデフォルトで「無効(no)」でしたが、現在では**デフォルトで「有効(yes)」**になっています。
環境構築の際は、この設定が「yes」になっているかを確認しておくことをお勧めします。


AIX NIB属性値:auto_recovery設定の検討

NIBのauto_recoveryは、プライマリ側の復旧を検知すると自動的に切り戻しを行う設定です。通常は便利な機能ですが、ケーブルの接触不良や光モジュールの劣化といった要因でリンクが短い間隔で上がったり下がったりする「フラッピング」が発生している場合、この切り戻しが繰り返されることがあります。

フラッピングが続く環境で自動切り戻しが有効になっていると、プライマリとバックアップの切り替えが頻発し、その度にGARPが送信されます。結果として、スイッチ側のMACアドレステーブル更新が多発し、パケットロスや遅延の原因となることがあります。

そのため、安定性を重視する環境ではauto_recovery=noとし、障害復旧後の切り戻し操作を手動で行う構成が選択されることがあります。物理的な問題が解消されたことを確認したうえで、安全にプライマリへ戻す運用です。

flapping.png


■ ネットワークの「フラッピング」とは?
フラッピングとは、ネットワークケーブルの接触不良や、スイッチ側の光トランシーバ(SFPモジュール)の劣化などが原因で、短時間の間に「リンクアップ(復旧)」と「リンクダウン(障害)」を断続的に繰り返す不安定な状態を指します。完全に断線していればただの「障害」ですが、中途半端に接続と切断が繰り返されるのがフラッピングの厄介な点です。


■ 手動切り戻し
ミッションクリティカルなシステムでは、あえてauto_recovery=noに設定することがあります。

障害発生時は、安定しているバックアップ経路のまま稼働を続けさせ、その後ケーブル交換やスイッチ側のログ調査を行います。「物理障害が解消され、リンクが安定した」と確認できてから、手動で安全にプライマリへ切り戻します。


ネットワーク・スイッチとAIX NIB設定について

AIXのNIB構成を安定して運用するには、サーバーが接続されるスイッチポートの設定も重要です。特に、STP(Spanning Tree Protocol)のPortFast設定は、フェイルオーバー時の通信断を短縮するうえで有効です。

STPのPortFastについて

STP.jpg

STPはループ構成を防止するための仕組みで、リンクアップ時には「Listening」「Learning」などの状態を経て、最終的に転送(Forwarding)状態になります。この遷移には30〜50秒程度かかる場合があり、サーバー接続ポートで同じ動作が発生するとフェイルオーバー時の復旧が遅れることがあります。

PortFastは、サーバーのような単一ホストが接続されるポートに対して、これらの状態遷移を省略して即時に転送可能な状態へ移行させる設定です。NIBのフェイルオーバーでは、バックアップ側アダプタのリンクアップに応じてGARP送信が行われますが、PortFastが設定されていないポートでは、このGARPがSTPの遷移中に破棄されることがあります。その結果、NIBの切り替え自体は正常に完了していても、スイッチ側の準備待ちが原因で通信復旧が遅れるケースが発生します。

このような理由から、サーバーが接続されるポートにはPortFast(または同等のエッジポート設定)を適用することが推奨されます。


特定環境でプライマリにフェイルバックしない問題

AIX EtherChannel(NIB)が特定環境でプライマリにフェイルバックしない問題についてのTechnoteが公開されています。

図1.png

現象

フェイルオーバー(プライマリ→バックアップへの切り替え)は正常に動作するが、プライマリへのフェイルバック(切り戻し)が完了しない状態が続く。

発生する環境

Cisco ACI(Application Centric Infrastructure)などのSDNスイッチを使用している環境。

原因

「1パケット受信ルール」が関係しています。NIBがプライマリへ切り戻すには、プライマリアダプターで少なくとも1つのパケットを受信することが条件です。

ところがACI環境では、ARPブロードキャストをファブリック全体にフラッディング(一斉送信)せず、対象エンドポイントへユニキャストとして直接転送する仕組みになっています。これはブロードキャストによるネットワーク負荷を減らすためのACIの設計上の動作です。

この動作が問題となるのは、バックアップアダプターが稼働中にプライマリ側のポートへブロードキャストを含む一切のパケットが届かなくなるためです。結果として「1パケット受信」の条件が満たされず、フェイルバックが保留状態のまま続きます。ケーブルを抜き差しした場合はフェイルオーバーが発生しますが、NICが非アクティブの状態ではパケットが届かないため、フェイルバックのトリガーが永続的に起きません。

解決方法

対象のブリッジドメインに対して、unknown unicastフラッディングおよびARPフラッディングを有効化するよう、ネットワーク担当者に設定を依頼します。これにより、プライマリアダプター側にもパケットが届くようになり、フェイルバックが正常に完了するようになります。

AIX側の問題ではなく、接続先スイッチの設定が原因となるケースの一例として、NIB環境の構築・運用時にはネットワーク担当者との連携も重要です。


まとめ

  • 障害検知:リンク状態監視とPing監視の2つのアプローチで、物理・論理の両方の障害に対応する
  • GARP:フェイルオーバー時にスイッチのMACアドレステーブルを更新し、ダウンタイムを短縮する
  • 1パケット受信ルール:リンクアップ直後の早まった切り戻しを防ぎ、ブラックホール化を避ける
  • PortFast:スイッチポートへの適用でSTPの遷移待ちによる遅延を解消する
  • auto_recovery:フラッピングが懸念される環境ではnoに設定し、手動切り戻しで安全性を高める

他にも詳細な属性や挙動があると思いますが、AIX NIB の基礎として記載させていただきました。

AIX NIB の設計、安定運用の一助になれば幸いです。





もし記事の内容に誤りなどがあればご連絡いただければ助かります。

2
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?