Segment Routing入門① ~概要と基本動作~

ビジネス推進本部 応用技術部
コアネットワークチーム
高田 聡士

特にMPLSを使用したネットワークに携わっている皆様方は最近Segment Routingという単語を聞かれる機会が多いのではないでしょうか。各メーカの製品も徐々にこのSegment Routingに対応してきており盛り上がりが感じられます。しかしながらSegment Routingがどの様なものなのかについてはまだあまり知られていない様に思われます。本コラムはそんなSegment Routingに関する入門ということでその概要と基本的な動作について説明していきます。

連載インデックス

Segment Routingとは

Segment Routingとは何なのか、というのを大雑把に一言でいうと「ネットワークをSegmentという要素を用いて表現し、そのSegmentを指定することによりパケットの転送を実現するアーキテクチャ」となります。
Segmentにはいくつか種類があり代表的なものとして特定のノードを示す”Node Segment” やノード毎の隣接関係を示す”Adjacency Segment”などがあります。

tt1

Segmentの例(Node Segment と Adjacency Segment)

そしてSegment Routingが導入されたネットワーク内では、Destination Addressの代わりに付与されたSegmentを元にパケットの転送が行われます。

tt2

Segment情報を元にしたパケット転送

さすがにこれだけだと大雑把すぎますのでもう少し細かくSegment Routingについて見ていきましょう。

Segment Routing用語

まずSegment Rougingに関する主な用語について簡単に紹介しておきます。

Segment
流入してくるパケットに対してノードが実行する処理
(例:指定されたノードへの転送、指定されたIFからの転送 など)

SID(Segment Identifier)
Segmentに割り当てられるSegment識別子
MPLSではラベルに変換される

Segment List
Source Routingの経路に沿って並べられたSIDのリスト
MPLSではラベルスタックに変換される

SR domain
Segment Routingに参加するノード(SRノード)の集まり

Active Segment
Segment Listのうち、パケット処理のためにノードによって実施されるSegment
MPLSではTOPラベルを指す

Global Segment
SR domain内の全てのノードが認識するSegment
SIDはSR domain内でユニーク

Local Segment
Segmentを作成したノード自身だけが認識するSegment
SIDはノード内でのみユニーク

SR Global Block(SRGB)
SRノードがGlobal Segment向けに確保する領域
MPLSではGlobal Segment用として予約されたラベル群(範囲)を指す

Node Segment
特定のノードを示すSegment
Global Segmentとなる

Node-SID
Node SegmentのSID

Adjacency Segment
片方向の隣接関係(アジャセンシ)示すSegment
Local Segmentとなる

Adj-SID
Adjacency SegmentのSID

Segment Routingの特徴

続いて特徴についてです。Segment Routingは以下の様な特徴を持っています。

Source Routingである
送信元あるいはSegment Routingネットワークの入口ノードにて経路の指定を行います。

コントロールプレーンにIS-IS/OSPFを使用
Segmentに関する情報のやり取りにはリンクステートプロトコルであるIS-ISまたはOSPFを使用します。どちらのプロトコルもSegment Routingに対応出来るように拡張されます。

MPLSデータプレーンへの適用が容易
Segment Routingのアーキテクチャはフォワーディングプレーンに変更を加える事無くMPLSデータプレーンに直接適用させることが可能です。これはSegment Routingでパケット転送に使用されるSegmentのSIDをそのままMPLSラベルに変換して使用することで実現されます。Segment Routingネットワーク内での通信経路を指定するSegment ListはMPLSではラベルスタックに変換されます。

ECMPに対応
Segment RoutingはECMPに対応しています。

これらの特徴はMPLSデータプレーンにLDP/RSVP-TEではなく、Segment Routingを適用した際の動作に変化をもたらします。この詳細は次回のコラムでお伝え致します。

Segment Routingにおけるパケット転送

続いてSegment Routingの基本動作としてパケット転送動作を見ていきます。最初に説明した通りSegment RoutingではSegment(SID)を元にパケットの転送が行われます。

■ Node Segment(Node-SID)の転送動作

tt3

Node Segmentによるパケット転送

Active SegmentがNode Segmentであった場合、ノードはIGPの計算結果(shortest path)に従ってパケットの転送を実施します。

ECMPが存在する場合にはそれぞれのパスを使ってパケット転送が行われます。

またNode SegmentはGlobal SegmentであるためNode-SIDはSR domain内でユニークな値となります。

そのためNode-SIDが付与されたパケットはどのルータが受け取っても宛先は同じノード(ルータ)となります。

■ Adjacency Segment(Adj-SID)の転送動作

tn2

Adjacency Segmentによるパケット転送

Active SegmentがAdjacency Segmentであった場合、ノードは該当するAdjacency対象に対してパケットの転送を実施します。

Adjacency SegmentはLocal Segmentであるため異なるノードであれば同じAdj-SIDを使用することが可能です。

そのため同じAdj-SIDが付与されたパケットであっても受け取った時の宛先はルータ毎に異なります。

■ Node SegmentとAdjacency Segmentを組み合わせた転送動作

tt4

組み合わせによるパケット転送

パケットは最初にActive SegmentであるSID 16004に従って対象ノードまで転送されます。

その後SID 16004 を取り除いて新たにActive SegmentとなったSID 24045に従ってAdjacency対象に転送されます。

まとめ

Segment Routingを理解するための取り掛かりとして、用語や特徴といった概要とパケット転送の基本動作について説明しました。これでSegment Routingがどの様なモノなのかについておぼろげながら認識していただけたかと考えております。
次回はもう少し理解を深めるためにSegment RoutingをMPLSデータプレーンに適用するとどうなるのかについて見ていきます。

関連記事

RFC 7855
Source Packet Routing in Networking (SPRING) Problem Statement and Requirements
https://datatracker.ietf.org/doc/rfc7855/?include_text=1

draft-ietf-spring-segment-routing-09
Segment Routing Architecture
https://datatracker.ietf.org/doc/draft-ietf-spring-segment-routing/?include_text=1

Segment Routing Introduction
https://cisco.box.com/s/o4n1j5tuog9vjquvl0pdtvkjjtfka3nd

執筆者プロフィール

高田 聡士
ネットワンシステムズ株式会社 ビジネス推進本部 応用技術部 コアネットワークチーム
所属
SP事業会社のコアネットワークにNIerとして7年弱携わる
当時の主な担当製品はCisco社のCRSシリーズ
4年ほど前に現部署に異動し、Cisco社含めたハイエンドルータ製品を担当
現在はSP-SDN分野に注力中
・情報処理「ネットワークスペシャリスト」
・CCIE RS #50857

イベント/レポート

pagetop