- ナレッジセンター
- 匠コラム
MPLS網にSegment Routingを適用してみよう ②TE環境の実現
- 匠コラム
- ネットワーク
ビジネス推進本部 応用技術部
コアネットワークチーム
高田 聡士
Segment Routing(以下、SR)も登場からそこそこ年月が経過し、その概要や利点もかなり広まってきています。特にMPLS環境に関しては仕様/定義が出揃い、機器への実装も進んでいるため、使用に対してReadyな状態となっています。実際、国内においてもSegment Routingを使用した商用Network構成に関するニュースリリースも見受けられる様になりました。しかしながらSRの概要は知っていても実際にどの様に適用していくのかについては曖昧な方も多いかと思います。本コラムではその様な方を対象に、MPLS環境にSRを適用する手法について3回に渡って出来るだけ具体的に伝えて行きたいと考えています。
連載インデックス |
---|
前回はSRの基本設定からFRRの適用までについて説明しました。
連載2回目の今回はSRを採用する大きな理由の1つであるTE (Traffic Engineering)の適用について見ていきます。
[SR適用の流れ]

今回も各手順の説明と合わせてコア系Networkで良く使用されるCisco ASR9000(5.3.4)、Juniper MX(17.2R1.13)、Nokia7750 SR(15.0R4)での設定方法についても簡単に紹介します。
(注意)
各機器の設定内容は括弧内のOS version時のものとなります。
そのため、最新version の内容とは異なっている場合もあります。
ⅰ.TEの有効化
SRでのTEの事をSR-TE(もしくはSRTE)と表現することがよくあります。これはRSVP-TEの様にその様なプロトコルが存在している訳では無く、あくまでもSR環境においてTEを実現している状態を表した言葉となります。
このSR-TEを行うためには、まずルータでTEを有効化してやる必要があります。有効化の方法はルータの実装に依存しますが、概ねRSVP-TEの場合と同様となっています。
■SRの有効化コマンド
(例:IS-ISの場合)
<Cisco ASR9000>
router isis 1 address-family ipv4 unicast mpls traffic-eng level-1 mpls traffic-eng router-id Loopback0 |
- TEの対象とするIS-ISのlevelを指定
- TEとしてのrouter-idを指定
mpls traffic-eng interface GigabitEthernet0/0/0/4 |
- TEで使用するインタフェースを指定
<Juniper MX>
protocols { isis { traffic-engineering |
- IS-ISにてTEを有効化
<Nokia 7750SR>
isis 0 traffic-engineering |
- IS-ISにてTEを有効化
ⅱ.LSPの作成
TEの有効化を実施したら次はLSPの作成を行います。まずLSPの経路を決めるために必要なPathを作成します。
Ⅰ.Pathの作成
Pathの作成方法もRSVP-TEの場合とほぼ同様で、経由するルータを順に指定していく形となります。ただ1つ大きな違いとして、指定方法としてlabel番号が使用できるというものがあります。RSVP-TEではPathとしてnext addressやloopback addressを指定していましたがSR-TEではこれらに加えてlabel番号を指定することが可能です。これはRSVP-TEと違いnode-sidやadj-sidといった分かり易い値がlabel番号として使用されているSRだからこそ生きてくる機能であると考えられます。ただし、この機能が使用できるかどうかはルータの実装に依存します。
■Path設定コマンド
<Cisco ASR9000>
explicit-path name 2 index 1 next-address strict ipv4 unicast 1.1.1.2 |
- next addressでのPath設定
explicit-path name 3 index 1 next-label 19002 |
- next label番号でのPath設定
<Juniper MX>
- 確認OS versionでは設定方法無し(ルータでのSR LSP作成に未対応)
<Nokia 7750SR>
mpls path “test“ hop 10 1.1.1.1 strict |
- next addressでのPath設定
- 確認OS versionではlabel番号でのPath設定不可
Ⅱ.LSPの作成
Pathを設定したら次はそのPathを使用するLSPを作成します。作成方法はPathの場合と同じくRSVP-TEとほぼ同様となります。違いとしてはLSPを作成する際にSRを使用することを設定で示す必要があります。これは同じルータ上でSR-TEとRSVP-TEを同時に使用する事が可能であるため、SR-TEとRSVP-TEのどちらのLSPであるのかを区別するためとなります。
またRSVP-TEと同様に、CSPF計算に基づいたPathを使用することも可能です。
■LSP設定コマンド
(例:手動で設定したPathを使用する場合)
<Cisco ASR9000>
interface tunnel-te2 ipv4 unnumbered Loopback0 destination 1.1.1.2 path-option 1 explicit name 2 segment-routing |
- tunnel-teインタフェースとして設定
- path-optionにてPath設定で作成したPath名を指定
- path-optionにてSRのLSPであることを示すsegment-routingオプションを記載
<Juniper MX>
- 確認OS versionでは設定方法無し(ルータでのSR LSP作成に未対応)
<Nokia 7750SR>
lsp “R2” sr-te to 1.1.1.2 max-sr-labels 6 additional-frr-labels 2 primary “test“ |
- SRのLSPであることを示すためにsr-teオプションを記載
- 最大ラベルスタック数とFRR時の追加ラベルスタック数を設定
- Path設定で作成したPath名を指定
ⅲ.Steering設定
LSPを作成しただけでは通信トラフィックはLSPを使用する事が出来ません。どの通信トラフィックがどのLSPを使用するのかを決めてやる必要があります。この設定のことをSteering設定と言います。Steering設定を行うことでユーザや用途などにより使用するLSPを一緒にしたり分けたりすることが可能となります。ただしどこまでの指定が行えるかについてはルータの実装に依存する事となります。
■Steering設定コマンド
(例:同じ宛先(Tail-End)へのトラフィックに1つのLSPを使用させる場合)
<Cisco ASR9000>
interface tunnel-te2 autoroute announce |
- tunnel-teインタフェースにてautoroute announceを設定
- IGPでの経路計算にtunnel-teインタフェースを使用する様に指定
もしくはstatic routeを使用して設定することも可能
router static address-family ipv4 unicast 1.1.1.2/32 tunnel-te 1 |
- 宛先(Tail-Endのloopback)への通信に使用するインタフェースとしてtunnel-teインタフェースを設定
また、IOS-XR6.2.2より古いバージョンでは下記設定も必要
mpls ldp |
- LDPを使用していない場合も設定が必要
- interfaceなど以下に続く設定は必要無し
- この設定が無いとLSPがUpしていてもSteeringが行われない
<Juniper MX>
- 確認OS versionでは設定方法無し(ルータでのSR LSP作成に未対応)
<Nokia 7750SR>
service vprn 10 customer 10 create auto-bind-tunnel resolution-filter sr-te exit resolution any |
- Service ConfigurationにてSRTEのLSPにVPRNのトラフィックをのせる様に設定
ⅳ.ControllerによるLSP制御
ここまでの3つのステップでLSPを作成しSR-TEを実現することが可能です。しかしながらそのうち2つ目のステップであるLSPの作成については外部のControllerに委託することが可能です。Controllerへの委託を行うことで例えば次のようなメリットを得ることが出来ます。
○Multi-Domain環境でのPath設定
Multi-Domain環境でLSPを作成する場合、Head-Endルータは自身の所属していないDomainの情報を完全には把握出来ないため、Path計算により本当に最適な経路を算出できない可能性があります。これに対してControllerにLSP作成を委託すると、Controllerが全てのDomainの情報を取得できていれば確実に最適な経路をPath計算により算出することが出来ます。
ControllerによるLSP作成を実現するためには、Controllerが対象NetworkのTopology情報を取得する手段と、ControllerによるLSP作成情報やPath計算の結果をHead-Endルータに伝える手段が必要となります。これらの手段として前者はBGP-LS、後者はPCEPというプロトコルを使用します。
●BGP-LS
LSはLink-Stateの略です。このプロトコルはIGP(OSPF/IS-IS)のリンクステート情報をBGPを使って送るために使用されます。ControllerがDomain内の1台のルータとBGP-LSセッションを確立することにより、そのDomainのリンクステート情報を入手し、結果としてTopology情報を把握することが可能となります。
●PCEP(Path Computation Element Protocol)
PCEPはPCE(Path Computation Element)とPCC(Path Computing Client)の間でやり取りを行うためのプロトコルです。PCEはLSP作成やPath計算を行うノード、PCCはPCEの計算結果を実際に使用するノードを表しており、前者がController、後者がHead-Endルータとなります。
Controllerを使用したLSP作成の流れは図の様になります。
■Controllerを使用したLSP作成

① BGP-LSにより各DomainのLin
① BGP-LSにより各DomainのLink-State情報を取得
② 取得した情報から最適なPathを計算
③ Pathの計算結果をSID-Listとして生成し、PCEPを使ってHead-Endルータに送信
④ SID-Listを元にLSPを作成
最後にControllerを使用したLSP作成を行う際にルータで必要な設定を記載します。
■設定コマンド
<Cisco ASR9000>
【BGP-LS】
router isis 1 distribute bgp-ls |
- IS-ISにてLink-State情報をBGP-LSに渡す様に設定
router bgp 65001 address-family link-state link-state ! neighbor 1.1.1.7 address-family link-state link-state |
- BGPのGlobalとNeighbor(Controller)にBGP-LSのaddress-familyを設定
【PCEP】
mpls traffic-eng pce peer source ipv4 1.1.1.6 peer ipv4 1.1.1.7 ! segment-routing stateful-client instantiation |
- PCEPで使用する自身のアドレスを設定
- PCE(Controller)のアドレスを設定
- SRの使用を設定
- stateful 制御を有効化
- ControllerでのLSP管理を有効化
<Juniper MX>
【BGP-LS】
protocols { mpls { traffic-engineering { database { import { policy TE; bgp { group northstar { family traffic-engineering { unicast; } export TE; neighbor 1.6.100.221; |
- MPLSにてTED(Traffic Engineering Database)のLink-State情報をBGPに渡せる様にpolicyを指定
- BGPにてNeighbor(Controller)との間にBGP-LSのfamilyを設定
- BGPにてTEDのLink-State情報を取得出来る様にpolicyを指定
policy-options { policy-statement TE { from family traffic-engineering; then accept; |
- TEDからLink-State情報を取り扱える様にpolicyを設定
【PCEP】
protocols { mpls { lsp-external-controller pccd; } pcep { pce northstar3.0B1 { local-address 1.0.0.1; destination-ipv4-address 1.5.100.210; destination-port 4189; pce-type active stateful; lsp-provisioning; spring-capability; spring-traffic-engineering { lsp-external-controller pccd; } |
- MPLSにてPCCとしてControllerからの制御を受け入れる様に設定
- PCEPにて自身のPCCとしてのアドレスを設定
- PCEPにてControllerのアドレスを設定
- PCEPにてControllerとの通信に使用するポート番号を設定
- PCEPにてstateful制御を有効化
- PCEPにてlsp provisioningを有効化
- PCEPにてSRの取り扱いを有効化
- spring-traffic-engineeringにてPCCとしてControllerからの制御を受け入れる様に設定
<Nokia 7750SR>
※こちらは実機での動作を未確認のため机上確認でのコマンドとなります
【BGP-LS】
isis 0 database-export identifier 1 bgp-ls-identifier 1 |
- IS-ISにてLink-State情報をBGP-LSに渡す様に設定
bgp family ipv4 bgp-ls link-state-import-enable group “eBGP” neighbor 172.16.1.1 |
- BGPにてBGP-LSのfamilyを設定
- IGPからのLink-State情報取得を設定
- Neighbor(Controller)を設定
【PCEP】
pcep pcc local-address 192.0.2.1 peer 192.0.2.10 |
- PCEPにて自身をPCCとして設定
- PCEPで使用する自身のアドレスを設定
- PCE(Controller)のアドレスを設定
SR環境にてTraffic Engineering を実現するために必要な手順を紹介しました。またControllerによるLSP制御を実施するために必要となるBGP-LSとPCEPについても合わせて紹介しました。
ルータでのLSP設定については扱い方がRSVP-TEの場合とほとんど変わらないため、既存のMPLS環境に携わっている方には理解がし易かったかと思います。一方ControllerによるLSP制御については馴染みのない方が多いかと思います。しかしながらこの機能はSDNやSlicingなど、これからのNW構築において検討すべき要素と切り離せないものです。そのため、今回は触りだけでしたが別の機会にもう少し詳しく紹介させていただこうかと考えています。
まとめ
連載3回目の次回はサブタイトル「③SRの独自機能」を予定しています。
LDP/RSVP-TE環境では出来ない事を実現したり、LDP/RSVP-TE環境では手間がかかる事を簡単に実現するSRの独自機能について紹介する予定ですのでご期待ください。
関連記事
- RFC 8402
Segment Routing Architecture - draft-ietf-isis-segment-routing-extensions-18
IS-IS Extensions for Segment Routing - draft-ietf-ospf-segment-routing-extensions-25
OSPF Extensions for Segment Routing
執筆者プロフィール
高田 聡士
ネットワンシステムズ株式会社 ビジネス推進本部 第1応用技術部 コアネットワークチーム
SP事業会社のコアネットワークにNIerとして7年弱携わる
当時の主な担当製品はCisco社のCRSシリーズ
6年ほど前に現部署に異動し、Cisco社含めたハイエンドルータ製品を担当
現在はSP-SDN分野に注力中
- 情報処理「ネットワークスペシャリスト」
- CCIE RS #50857
Webからのお問い合わせはこちらから
ナレッジセンターを検索する
カテゴリーで検索
タグで検索