メトリックによるルーティング制御で、高速なネットワークインタフェースを自動的に選ぶ【Windows OS】Tech TIPS

無線LANとイーサネットなど、PCに複数のインタフェースを装備している場合には、常に高速な方を優先して利用できると便利である。ネットワークインタフェースのメトリック値を設定すると、このような使い分けが可能になる。ただしイーサネットケーブルを抜き差しすると現在通信中のアプリケーションがエラーを起こすので、タイミングには注意が必要である。

» 2003年05月17日 05時00分 公開
「Tech TIPS」のインデックス

連載目次

メトリックによるルーティング制御で、高速なネットワークインタフェースを自動的に選ぶ

対象OS:Windows 2000 Professional/Windows XP Professional/Windows XP Home Edition、Windows 2000 Server/Windows 2000 Advanced Server


ノートPCではイーサネットと無線LANの両方が利用できる時代に

 最近のノートPCには、標準で10/100BASE-TXイーサネットインタフェースが標準搭載されるようになった。これによりノートPCユーザーは、ネットワークケーブルを接続するだけで、ネットワークに参加できる。

 しかしその一方で、安価になった無線LAN製品も広く普及しつつある。ひと昔前、会議に必要な資料は紙に印刷して、それを参加者に配布するのが常だった。しかし最近では、会議室までノートPCを持ち込んで、資料はコンピュータディスプレイで参照するという人も多いようだ。

 この際、会議室から無線LANのアクセスポイントに接続できるようになっていると、あらかじめハードディスクにファイルをコピーしなくても、普段自分のデスクにいるときと同様にして、会議室からファイルサーバにアクセスして必要なファイルを取り出したり、最寄りのプリンタからドキュメントを印刷してほかのメンバーに配布したりできるようになる(あまり大声ではいえないが、退屈な会議なら、こっそりWebニュースをのぞいたり、メールをチェックしたりもできる)。

速いイーサネットと、どこでも使える無線LANをうまく使い分けたい

 より高速な無線LAN規格も出始めているが、現時点で最も普及している無線LAN技術はIEEE 802.11bだろう。IEEE 802.11bは、2.4GHz帯の無線電波を利用して、最大11Mbit/sの転送レートを実現する無線LAN規格である。ただし11Mbit/sというのはあくまで理論上の最大値で、電波状態などの環境にもよるが、実効レートはおおよそ4〜5Mbit/s程度といったところだ。100BASE-TX(最大100Mbit/s程度)と比較するとかなり遅いが、メールの送受信や一般的なWebページの参照程度なら、これでも問題なく使える。このため人によっては、会議などの移動時だけでなく、自分のデスクにいるときでも、無線LANを使っているというケースもあるようだ。

 しかし、場面によっては、どうしても高速な100BASE-TXを使いたいと思うときがある。最も典型的なケースは、大量のデータをバックアップする場合である。例えばノートPCで電子メールを受信しているなら、定期的に受信メールのバックアップをとりたいと考えるだろう。添付ファイルなどもあるので、受信ボックスはすぐに数百Mbytes級のサイズになってしまう。これを遅い無線LANでバックアップするのは厄介だ。

 10/100BASE-TXインタフェースが別にあるなら、大量のデータをバックアップするなどの場合だけ、これにケーブルをつないで、高速な100BASE-TXでファイルを転送すればよい。バックアップが完了したら、ケーブルを抜いて、無線LANを使用するいつもの状態に戻る。

 ところでこの際でも、無線LANインタフェースは有効なまま(接続状態のまま)で操作できると非常に便利である。つまり、100BASE-TXインタフェースにケーブルが接続されていないときは無線LANを使い、ケーブルを接続すると自動的に100BASE-TX側を(優先して)使い、再度ケーブルを抜くと自動的に無線LANを使うようになるということだ。2つのインタフェースが利用可能な場合には、高速な方を優先して使わせたいということである。

Windows OSのネットワークインタフェースの「メトリック」とは

 Windowsでは、ネットワークインタフェースのメトリック値をうまく設定することでこれが可能になる。

 ここでいうメトリック(metric=「距離」とか「計量」の意味)とは、ネットワークインタフェースのルート(経路)に割り当てられる値で、そのルートを使用する場合の「通信コスト」を表す。具体的には、リンクスピード(データ転送速度)やホップ数、遅延時間などからそのルートのコストが計測される。メトリック値が小さいルートほど、通信にかかるコストが小さいということを意味している。

 実際にはTCP/IPのプロトコルスタックは、ルーティングテーブル上に利用可能なルートが複数存在する場合には、このメトリックの小さなルート(インタフェース)を優先的に使用するようになっている。ルーティングとメトリックの関係などについてはTech TIPS「ルーティングテーブルを操作する」などを参照していただきたい。

 つまり今回のような場合、100BASE-TXインタフェースに対して、無線LANインタフェースよりも小さいメトリック値が割り当てられるようになっていれば、100BASE-TXが使える場合にはそちらを、使えない場合は無線LANを使うようになる。

ネットワークインタフェースのメトリックを確認する

 現在使用しているインタフェースのメトリック値を確認するには、コマンドラインから「netstat -r」を実行して、IPのルーティングテーブルを表示すればよい。

●Windows 2000のメトリック

 Windows 2000で「netstat -r」を実行すると、以下のようになる。一番右端に表示されているのがメトリック値である。

C:\>netstat -r

Route Table
================================================================================
Interface List
0x1 ........................... MS TCP Loopback interface
0x1000005 ...00 80 45 12 0a 89 ...... Intel 8255x-based Integrated Fast Ethernet
================================================================================
================================================================================
Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric ……メトリック
          0.0.0.0          0.0.0.0     192.168.0.56   192.168.0.102       1
        127.0.0.0        255.0.0.0        127.0.0.1       127.0.0.1       1
      192.168.0.0    255.255.255.0    192.168.0.102   192.168.0.102       1
    192.168.0.102  255.255.255.255        127.0.0.1       127.0.0.1       1
    192.168.0.255  255.255.255.255    192.168.0.102   192.168.0.102       1
        224.0.0.0        224.0.0.0    192.168.0.102   192.168.0.102       1
  255.255.255.255  255.255.255.255    192.168.0.102               2       1
Default Gateway:      192.168.0.56
================================================================================
Persistent Routes:
  None



 上記の例では、すべてが1になっている。Windows 2000では、手動で設定しないかぎり、インタフェースのメトリック値としてはすべて1が割り当てられる。

●Windows XPのメトリック

 これに対しWindows XPでは、各ルートに対して自動的にメトリック値が割り当てられる機能が追加された。具体的には、インタフェースのリンクスピード(物理的な通信速度)に応じて、以下のメトリック値が割り当てられる。

リンクスピード メトリック値
200Mbit/sより高速 10
20Mbit/s超〜200Mbit/s以下 20
4Mbit/s超〜20Mbit/s以下 30
500Kbit/s超〜4Mbit/s以下 40
500Kbit/s以下 50
(内部ループバック) 1
リンクスピードとメトリック値の関係
Windows XPでは、デフォルトではこのようにネットワークインタフェースのリンクスピードに応じてメトリック値が決定される。メトリック値が小さい方が優先度が高い(通信コストが少ない)とされる。数値の絶対値にはあまり意味はなく、大小関係だけに基づいて判断される。ただしここでいうリンクスピードとは、各インタフェースが本来持っている(はずの)物理的な最高速度のことである。無線LANのように、通信状態によって時々刻々と変わる現在の実効通信速度を反映したものではないし、途中で変動したりもしない。

 つまり100BASE-TXインタフェースにはメトリック値20が、IEEE 802.11b無線LANインタフェース(11Mbit/s)にはメトリック値30がそれぞれ自動的に割り当てられることになる。これによりWindows XPでは、この自動メトリック機能により、何の設定を行うことなく、今回の目的を達成できる。

 Windows XPにIEEE 802.11b無線LANカードと100BASE-TXイーサネットを接続し、netstat -rコマンドを実行すると次のようになった。

C:\>netstat -r

Route Table
================================================================================
Interface List
0x1 ........................... MS TCP Loopback interface
0xf0004 ...00 07 40 0f 82 1b ...... BUFFALO WLI-CF-S11G Wireless LAN Adapter
パケット スケジューラ ミニポート ……IEEE 802.11b無線LANインタフェース
0x120002 ...00 09 6b 8d 0a db ...... Intel(R) PRO/100 VE Network Connection
ケット スケジューラ ミニポート ……100BASE-TXインタフェース
================================================================================
================================================================================
Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0     192.168.0.56   192.168.0.104       30 ……無線LAN
          0.0.0.0          0.0.0.0     192.168.0.56   192.168.0.119       20 ……イーサネット
        127.0.0.0        255.0.0.0        127.0.0.1       127.0.0.1       1
      192.168.0.0    255.255.255.0    192.168.0.104   192.168.0.104       30
      192.168.0.0    255.255.255.0    192.168.0.119   192.168.0.119       20
    192.168.0.104  255.255.255.255        127.0.0.1       127.0.0.1       30
    192.168.0.119  255.255.255.255        127.0.0.1       127.0.0.1       20
    192.168.0.255  255.255.255.255    192.168.0.104   192.168.0.104       30
    192.168.0.255  255.255.255.255    192.168.0.119   192.168.0.119       20
        224.0.0.0        240.0.0.0    192.168.0.104   192.168.0.104       30
        224.0.0.0        240.0.0.0    192.168.0.119   192.168.0.119       20
  255.255.255.255  255.255.255.255    192.168.0.104   192.168.0.104       1
  255.255.255.255  255.255.255.255    192.168.0.119   192.168.0.119       1
Default Gateway:      192.168.0.56
=================================================================================
Persistent Routes:
  None



 デフォルトのルートが2つあるが(いずれも同じゲートウェイを指している)、上側のメトリックが30の方が無線LAN、下側のメトリックが20の方が100BASE-TXのイーサネットである。このようにWindows XPでは、各インタフェースの持つリンクスピードに応じて、メトリック値が自動的に変わるようになっている。

 しかし手元で実験したところでは、最大11Mbit/sのIEEE 802.11b無線LANインタフェースでありながら、メトリック値として100BASE-TXと同じ20が割り当てられる場合があった(詳細は不明だが、より高速な無線LAN規格も存在するので、それらとまとめて同じように扱われているのかもしれない)。このような場合には、インタフェースのメトリック値をマニュアルで指定すればよい。また前述のとおり、Windows 2000にはメトリックの自動割り当て機能はないが、マニュアルで指定すれば、今回の目的を達成できる。

インタフェースのメトリック値をマニュアル設定する

 ネットワークインタフェースのメトリック値を設定するには、まず以下の手順で設定画面を開く。

  1. コントロールパネルの[ネットワーク接続](Windows XP)または[ネットワークとダイヤルアップ接続](Windows 2000)をクリック
  2. ネットワークインタフェースの一覧から対象のもののプロパティを開く
  3. コンポーネント一覧から「インターネット プロトコル(TCP/IP)」を選択して[プロパティ]ボタンをクリック
  4. インターネット プロトコル(TCP/IP)のプロパティ]ダイアログの[全般]タブにある[詳細設定]ボタンをクリック
  5. TCP/IP 詳細設定]ダイアログの[IP設定]タブを選択
[TCP/IP 詳細設定]ダイアログ [TCP/IP 詳細設定]ダイアログ
画面はWindows XPでのもの。メトリック値をマニュアル設定するには、チェックボックスをオフにし、任意の値を入力する。
  (1)マニュアル設定を行うには、このチェックボックスをオフにする。すると、下のエディットコントロールが有効化され、値を入力可能になる。Windows 2000の場合にはこのチェックボックスは存在しない。でユーザーが指定しない限り、メトリックは1になる。
  (2)指定したいメトリック値を入力する。

 画面はWindows XPのものである。自動メトリック機能のないWindows 2000では、[インタフェース メトリック]という名前のエディットコントロールがあるだけで、チェックボックスはない(そしてエディットコントロールには、デフォルトで「1」が指定されている)。

 今回のケース(100BASE-TXとIEEE 802.11b無線LAN)なら、Windows XPでの自動設定に従って、100BASE-TXには20を、無線LANには30をそれぞれメトリック値として指定すればよいだろう。ただしWindows XPでは、100BASE-TXには自動的に20が割り当てられるので、無線LAN側だけをより大きな値に設定して、優先度を下げればよいはずだ。

 メトリック値を設定したら、それらが有効になっているかどうか、コマンドプロンプトから「netstat -r」を実行して確認しておこう。

インタフェースの切り替えにともなう注意点

 以上では、100BASE-TXケーブルの抜き差しによるデフォルトルートの変更について解説しているが、このケーブルの抜き差しはいつでも行えるわけではないことに注意していただきたい。その原理を考えると分かるが、これは、100BASE-TXのイーサネットインタフェースを有効にしたり、無効にしたりしている。その結果、より優先度の低い無線LAN側のルートが無効になったり、有効になったりして、デフォルトルートが切り替わっている。

 無線LANインタフェースに対して割り当てられたIPアドレスは、システムを起動してから終了するまで(DHCPサーバ側で変更したりしなければ)ずっと同じである。それに対してイーサネット側のIPアドレスは、有効になったり、無効になったりする。もしイーサネット側のIPアドレスを使って動作しているアプリケーションがあると、ケーブルを抜いたとたんにTCPやUDPのソケットが無効化され、上位アプリケーションには通信エラーが伝えられる。例えばメールの送受信処理中やInternet Explorerなどを使ったブラウズの途中でケーブルを抜くと、それらのアプリケーションはエラーを起こし、終了してしまうことになる。ファイルの転送やFTPによる送受信処理などもエラーとなるだろう。

 だが、実際にはWindowsネットワークにおけるファイルサービスなどは、通信が一時途絶えたとしても、何度か自動的にリトライを行うようになっている(IPアドレスが変わっても問題ない)。またメールを始めとして、Windows上のアプリケーションは、実際に送受信中でなければIPアドレスが変わったりしてもエラーとはならないものが多いし、ユーザーが明示的に再処理(再表示)などの操作を行えば、問題なく処理を継続できる場合も多い。

 このような事情があるため、ネットワークケーブルの抜き差しによるデフォルトルートの変更は、まったく問題がないとはいえないが、現実的にはかなりの場面で有効に使えると思われる(特にクライアント用途では)。ネットワークのトラフィックが(明らかに)発生しているときにケーブルを抜き差しするのは問題だが、システムがアイドル状態(外部との通信が行われていない状態)ならば構わないだろう。あえていうならば、システムをサスペンドやリジュームするような感覚で(これらを行う場合は、何も作業をしていないのが普通)、利用するとよいだろう。

「Tech TIPS」のインデックス

Tech TIPS

Copyright© Digital Advantage Corp. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。