SRv6 概要とデモ

はじめに

ネットワーク分野で盛り上がっているSRv6 についての自分の理解やデモについてご紹介します。

SRv6 概要

Segment Routing over IPv6 (SRv6)は、これまでのDst(行き先)でパケット転送を制御するのではなく、
セグメントというホップを決めてパケットを1ホップずつIPv6で転送するルーティング方式です。

自由なルーティングパスを生成できるため、以下のようにコンテンツ内容でルーティングパスを生成することもできます。

f:id:thelarklife1021:20200623235031p:plain

SRv6 特徴

以下の特徴があります。

ソースルーティング:経由するノード一つ一つを送信元で制御するルーティング方式

TI-LFA:あらゆるトポロジに対して100%バックアップ経路を用意することが出来る方式

IPv6ルーティング:IPv6のDstを見て次のセグメントをまでパケット転送しているため、SRv6非対応のIPv6対応スイッチがそのまま使えます

SRH

Segment Routing Header は以下のようになっており、IPv6拡張ヘッダーを利用して実現しています。 Segment List にSegment IDというSegmentを識別するための情報を、経由するSegmentノード分入れることになります。

f:id:thelarklife1021:20200624001240p:plain

Basic Funnction

SRv6では特定のノードで以下のようなFunctionを実行してパケットをDecapしたりルーティングさせたり、様々な制御が可能になっています。

f:id:thelarklife1021:20200624004213p:plain

SRv6 Demo

2020/06 現在、以下の方法でDemoは可能です。 今回は手軽そうなiproute2とNetwork Namespaceを使用したいと思います。

  • iproute2
  • VPP

  • Zebra2.0

  • FRR

以下でデモ用vagrantを作成しましたのでREADME通りにVM上に環境を作れます。 4タイプのルーティングパスのデモが可能で自由に試せます。

github.com

f:id:thelarklife1021:20200624012444p:plain

任意の場所でtcpdumpを実行すれば以下の通りSRHが確認できます。

f:id:thelarklife1021:20200624011945p:plain