はじめに
SRv6って言葉は聞いたことがあるけど、実際はどんなものでどんなところで使えるかよくわからない。しかもなんか難しそうだし・・・。この記事では、初心者向けにSRv6ってどんなものかを大雑把に解説します。
SRv6ってなに?
最近、大手サービスプロバイダのバックボーンに使われるようになったルーティングの技術の1つ。まだまだ、新しい規格が作られていて、進化の途上です。Segment RoutingをIPv6を使って行うものがSRv6、MPLSを使って行うものがSR-MPLSと呼ばれています。
簡単にいうと、送信するヘッダに途中で通過するセグメントリストを持っていて、途中のルータはそのセグメントリストを見て次に転送するルータを決定します。
ただし、このときのセグメントリストは、IPアドレスではなく、SID(Segment ID)で表記されます。SIDについては次の章で解説します。
SRv6の入り口となるルータで送信したいパケットをカプセル化しSRヘッダを追加します。SRヘッダには経由するセグメントリストを保持しており、途中経由するルータ(セグメント)では、受け取ったパケットのSRヘッダに載っている自分のSIDを見て、NextHopルータへルータへ転送します。
SID
SRv6で用いるSIDは、IPv6アドレスと同じ形式(128bit)で表記されます。前64bitがLocatorでどのネットワークのロケーションを示します。後半64bitでFunctionやOptionを示しますが、この部分はルータが自動生成してくれます。
Functionはいろいろ定義されているが、L2VPNやL3VPNなどがよく使われます。
近年、Locator部を32bitにしたuSIDも使わていますが、現時点ではuSIDとSIDに互換性はなく、uSID同士、SID同士でないと通信はできません。(単純なIPv6転送だけであればできます)なお、SIDはRFC8986で定義されています。
それじゃどうするか?
これで、SRV6について大まかに説明してきました。(ほんとにざっくり)
実際に設定をどうやっていくのか見てみましょう。
今回、前提条件として、
- ルータ同士はISISで接続
- loopbackインターフェイスにIPv6の固定IPを付与
- ルータ間の通信はIPv6 LLDPを使う
- L3VPNで設定
- SIDはBGPで広報
- プライベートASを使用
設定の中でSRv6にかかわる部分を抜き出してみました。
vrf VRF1
rd 64521:5
address-family ipv4 unicast
segment-routing srv6
locator 1
alloc mode per-vrf
まずは、BGPのVRFの設定の中に、IPv4 unicastをSRv6のLocator 1でSIDを広報するように設定しています。
segment-routing
srv6
encapsulation
source-address fc00:3001::1
!
locators
locator 1
prefix fc00:ff01:1::/64
この部分がSRv6の要です。
SRv6トンネルのソースアドレスの設定とLocatorの設定をしています。
今回は、SRHに入るルータリストは設定していませんが、必要な場合は、SR Policyでルータリストを設定します。
router isis 1
net 49.0000.0000.0001.00
address-family ipv6 unicast
metric-style wide
segment-routing srv6
locator 1
isisの設定にもSRv6の設定を入れておきます。
と、SRv6固有の設定はこんなものです。
さいごに
SRv6の初歩についてちょっとだけ解説しました。
世の中にはもっと詳しく解説してくれているページがあると思いますので、興味を持った方はそっちも参考にしてください。
設定自体はそんな複雑なことはしていないので、割と簡単にできると思います。
(SRv6ができるルータが手元にあればの話しですが・・・)