シナプス技術者ブログ

シナプスの技術者公式ブログ。インターネットで、鹿児島の毎日を笑顔にします。

ネットワークにおける優先度を考える

技術部ネットワーク課の若松です。

私共はお客様へのインターネットサービスが止まることなく、日々快適にご利用いただけるよう常にネットワーク構成の見直しや増強をしております。

それらの作業において、さまざまなネットワーク機器の設定をするのですが、設定するパラメータの「優先度」について「数値の小さいほうが優先なのか、大きいほうが優先なのか」迷うことが時々あります。

今回はネットワーク設計上直面するさまざまな優先度についてまとめ、参考までにCiscoルータ/スイッチでの設定例をまとめてみました(なお一部Ciscoでしかサポートされていない機能なども記載しております)。

STPの優先度

STPのブリッジプライオリティ

STP(スパニングツリープロトコル)はLAN内で冗長性を確保しつつループ状態が発生するのを回避するためのプロトコルです。

ネットワークに接続されたスイッチはBPDU(bridge protocol data unit)という制御情報をやり取りして転送経路の冗長化(スパニングツリーの形成)を行います。 これらのやり取りの際にルートブリッジの選出が行われるのですが、ブリッジプライオリティを設定することであるルートブリッジを指定することが可能です。

設定例

ブリッジプライオリティは数値の小さいほうがルートブリッジに選出されやすくなります。 以下はVLAN10のブリッジプライオリティを0にし、そのスイッチをルートブリッジになるようにしています。

(config)# spanning-tree vlan 10 priority 0

なお、ブリッジプライオリティはデフォルトは32768で設定できる値は 0から61440です(値は4096刻みで設定する必要があります。0, 4096, 8192, 12288, 16384, 20480, 24576, 28672, 32768,,,61440)。 ブリッジプライオリティが同じだった場合はスイッチのMACアドレスのもっとも小さいスイッチがルートブリッジになります。

STPのポートプライオリティ

STPが動作する2台のスイッチ間に2つのリンクが存在している場合、ルートブリッジではないスイッチ側の片方のIFがルートポートになりもう片方のIFがブロッキングポートになります。 ルートブリッジの対向するIFにプライオリティを設定することで、ルートブリッジではないスイッチ側のルートポートを指定することが可能です(ちょっとややこしいですね)。

設定例

ポートプライオリティは数値の小さいほうが対向するスイッチのIFがルートポートに選出されやすくなります。 以下はGigabitEthernet1/0/1のポートプライオリティを0とすることで、このポートに接続されたスイッチのIFがルートポートになるようにしています。

(config)#interface GigabitEthernet1/0/1
(config-if)#spanning-tree port-priority 0

なお、ポートプライオリティはデフォルトは128で設定できる値は0から240です。

ゲートウェイ冗長化プロトコルの優先度

単一のホストやダイナミックルーティングを実装していないルータなどに、最終的なパケット転送先として設定されるのがデフォルトゲートウェイです。 ゲートウェイ冗長化プロトコルは2台以上のルータで仮想ルータを構成し、このゲートウェイを提供します。

HSRPのプライオリティ

HSRP(Hot Standby Router Protocol)はCisco独自のゲートウェイ冗長化プロトコルです。

設定例

HSRPのプライオリティが最も数値の大きいルータがアクティブルータになります。 以下はVlan 10のスタンバイグループ10のプライオリティを105に設定しています。

(config)#interface vlan 10
(config-if)#standby 10 ip 192.168.0.254
(config-if)#standby 10 priority 105

なお、HSRPのプライオリティはデフォルトは100で、設定できる値はHSRP Version1の場合0から255です。 同じプライオリティを持つルータがいた場合はもっとも大きいIPアドレスを持つルータがアクティブルータになります。

VRRPのプライオリティ

VRRP(Virtual Router Redundancy Protocol)はHSRP同様ゲートウェイ冗長化プロトコルですが、RFC2338で定義され多くのメーカのルータやサーバOSなどでサポートされています。

設定例

VRRPのプライオリティは数値の大きいルータがマスタールータになります。 以下はVlan 10のVRRPグループ10のプライオリティを105に設定しています。

(config)#interface vlan 10
(config-if)#vrrp 10 ip 192.168.0.254
(config-if)#vrrp 10 priority 105

VRRPのプライオリティはデフォルトは100で、設定できる値は0から254ですが、0を設定した場合はマスタールータがVRRPグループから離脱することを意味し他のバックアップルータが迅速にマスタールータとして稼動します(ただし、実際に0が設定できるかは機種やソフトウェアに依存するようです)。 同じプライオリティを持つルータがいた場合はもっとも大きいIPアドレスを持つルータがマスタールータになります。

GLBPのプライオリティ

GLBPもHSRP同様Cisco独自のゲートウェイ冗長化プロトコルですが、HSRPやVRRPのようなアクティブ(あるいはマスター)ルータ側にトラフィックが偏ってしまうのと違い負荷分散の機能もある便利/多機能なプロトコルです。

GLBPでは、ルータの役割としてAVG(Active Virtual Gateway)とAVF(Active Virtual Forwarder)がありますが、ここでは詳細は省略しAVGの優先度についてのみ記述します。 GLBPのプライオリティは数値の大きいルータがAVGになります。

設定例

以下はVlan 10のGLBPグループ10のプライオリティを105に設定しています。

(config)#interface vlan 10
(config-if)#glbp 10 ip 192.168.0.254
(config-if)#glbp 10 priority 105

GLBPのプライオリティはデフォルトは100で、設定できる値は1~255です。 同じプライオリティを持つルータがいた場合はもっとも大きいIPアドレスを持つルータがマスタールータになります。

BGP の優先度

BGP(Border Gateway Protocol)はインターネット上のAS(Autonomous System:自律システム)と呼ばれるネットワークを相互接続するためのルーティングプロトコルです。

LOCAL_PREFアトリビュート

LOCAL_PREF(local-preference) アトリビュートは特定のiBGPピアから受信した経路に優先度をつけるもので、特定のトラフィックを特定の接続先に送信したい場合に利用します。 LOCAL_PREFアトリビュートは数値の大きいほうが優先されます。

設定例

以下は、1.1.1.1から受信した経路にLOCAL_PREF 200を設定しています。

Router(config)# ip as-path access-list 1 permit .*

Router(config)# route-map LP200 permit 10
Router(config-route-map)# match as-path 1
Router(config-route-map)# set local-preference 200

Router(config)# router bgp 64512
Router(config-router)# neighbor 1.1.1.1 remote-as 64512
Router(config-router)# neighbor 1.1.1.1 route-map LP200 in

LOCAL_PREFアトリビュートはデフォルトは100で、設定できる値は0~4294967295です。

MEDアトリビュート

MED(Multi Exit Discriminator)アトリビュートは隣接するASとの接続が複数ある場合に、どの接続を通じてトラフィックを流してもらうか優先度をつけたい場合に使用します。

例えば複数の回線でトラフィック分散をしたい場合や、回線の特性(帯域、品質、ネットワーク的な距離、コスト)などの要因で設定したい場合などです。

なお、実際に設定したとしても、トラフィックがどこから流れてくるかは隣接するASのポリシー次第ですので必ずしも有効に機能するというわけではありません(BGPとしてもOptional特性ですので全てのルータがサポートしている必要はない、となっております)。

MEDアトリビュートは数値の小さいほうが優先されます。

設定例

以下は、1.1.1.1から受信した経路にMED値として100を、2.2.2.2から受信した 経路にMED値として200を設定しています。

Router(config)# ip as-path access-list 1 permit .*

Router(config)# route-map MED100 permit 10
Router(config-route-map)# match as-path 1
Router(config-route-map)# set metric 100

Router(config)# route-map MED200 permit 10
Router(config-route-map)# match as-path 1
Router(config-route-map)# set metric 200

Router(config)# router bgp 64512
Router(config-router)# neighbor 1.1.1.1 remote-as 64513
Router(config-router)# neighbor 1.1.1.1 route-map MED100 out
Router(config-router)# neighbor 2.2.2.2 remote-as 64513
Router(config-router)# neighbor 2.2.2.2 route-map MED200 out

OSPF の優先度

OSPF(Open Shortest Path First)は企業内や単一のポリシーで運用されているネットワーク内で使用するためのルーティングプロトコルです。

ルータID

ルータでOSPFを動かすにはルータIDが必要となります。 各ルータ内のルータIDの優先度(選択されやすさ)は以下の順番となります。

  1. ルータIDが設定してあればその値

  2. アクティブなループバックIFのうち最大のIPv4アドレス

  3. ループバックIF以外のアクティブなIFのうち最大のIPv4アドレス

なおOSPFのIPv6対応バージョンであるOSPFv3もルータIDは必須ですので、IPv6のみしか使用しない(IPv4は一切使用しない)ルータの場合は、ルータIDの設定が必須となります。

OSPFプライオリティ(DR/BDR)

DR(Designated Router)/BDR(Backup Designated Router)は代表ルータ/バックアップ代表ルータとも言われルーティングアップデートの負荷軽減のため選出され、他のルータへ情報を広報するルータです。

このDR/BDRの選出されやすさの優先度としてOSPFプライオリティがあります。 OSPFプライオリティは数値の大きいほうがDR/BDRに選出されやすくなります。

設定例

以下は、GigabitEthernet 0/1 のOSPFプライオリティを200に設定しています。

Router(config)# interface GigabitEthernet 0/1
Router(config-if)# ip ospf priority 200

なお、DR/BDRの選出完了後にOSPFプライオリティを変更しても、DR/BDRの関係には反映されません(設定反映するには当該IFをいったんシャットダウンした後に復帰させるか、OSPFプロセスの再起動が必要です)。

OSPFプライオリティはデフォルトは1で設定できる値は0~255ですが、0が設定された場合はDR/BDRには選出されません。OSPFの経路計算はそれなりに処理能力を必要としますので非力なルータを参加させる場合には0を設定するとよいでしょう。

同じプライオリティが設定されたルータがあった場合は、ルータIDが大きいもの、UPしているIFのIPアドレスが大きいものの順で選出されます。

複数のルーティングプロトコル

ルータ内で複数のダイナミックルーティングプロトコルが動いている場合、同じ宛先に対してどちらのルーティングプロトコルをベストパスとするかの優先度の設定があります。

Ciscoのアドミニストレーティブディスタンス

ルートの情報源 デフォルトのディスタンス値
接続されているインターフェイス 0
スタティック ルート 1
EIGRPサマリー ルート 5
外部ボーダー ゲートウェイ プロトコル(BGP) 20
内部 EIGRP 90
IGRP 100
OSPF 110
IS-IS 115
RIP 120
eBGP 140
ODR 160
外部EIGRP 170
iBGP 200
不明 255

なお、アドミニストレーティブディスタンスが255の場合はルーティングテーブルに登録されません。 詳しくはこちらを参照ください。

JuniperのRoute Preference

ルートの情報源 デフォルトのPreference値
接続されたインターフェース 0
スタティックルート 5
OSPF内部ルート 10
IS-ISレベル1内部ルート 15
IS-ISレベル2内部ルート 18
RIP 100
OSPF AS外部ルート 150
IS-ISレベル1外部ルート 160
IS-ISレベル2外部ルート 165
BGP 170

詳しくはこちらを参照ください。

まとめ

今回紹介させていたたいたパラメータと優先度についてまとめてみました。

パラメータ デフォルト値 優先される値
STPのブリッジプライオリティ 32768 数値の小さい方
STPのポートプライオリティ 128 数値の小さい方
HSRP 100 数値の大きい方
VRRP 100 数値の大きい方
GLBP 100 数値の大きい方
LOCAL_PREFアトリビュート 100 数値の大きい方
MEDアトリビュート 0 数値の小さい方
OSPFルータID - (ルータID未設定の場合)最大のIPアドレス(*)
OSPFプライオリティ(DR/BDR) 1 数値の大きい方
Ciscoのアドミニストレーティブディスタンス - 数値の小さい方
JuniperのRoute Preference - 数値の小さい方

*まとめるにあたり、OSPFのルータIDについては一部端折ってありますので詳しくは本文を参照ください。

今後もより快適なネットワーク提供を目指していきたいと思います。

みなさんは日常でやらないといけない「優先度1」と「優先度100」の用事があった場合、どちらを先に片付けますか?