通信系が好きな社会人

blogというかmemo

JANOG43の発表を聞いてSRv6サービスチェイニングを試してみた

JANOG43のDAY1でSRv6についての発表を聞きました。
“SRv6でサービスチェイニングをやってみた”という発表が非常に分かりやすく、
自分もLinuxでSRv6を動かすことが出来るのではないかと思い、実際に検証を行ってみました。

www.janog.gr.jp


動作環境
ESXi6.5

   -Ubuntu18.10 (Linux Kernel 4.18) 6台

  • SRv6動作マシン 4台
  • クライアント/サーバ 2台(各1台)

 

SRv6はkernel 4.10以降で動作するとのことで、
CentOSではまだ3.x系のため、kernelをビルドし直す必要があるため、
今回はUbuntuを採用しました。

Linux Kernelの対応状況については下記を参照ください。

CentOS - Wikipedia

www.segment-routing.net


SRv6 とは(ざっくり)
Segment Routingは最短経路”以外”を指定することが可能です。
経由したいサービス(End)のSegment ID(SID)のリストをEdgeルータで挿入します。

※詳しくはInternet-Draftまたは、下記スライドを参照。

www.slideshare.net

 

構成図

今回は、ワンアーム構成ではなくツーアーム構成で試しています。

f:id:uchy_13a:20190212202948p:plain

 

動作イメージ 

f:id:uchy_13a:20190212202848p:plain


SRv6の設定


共通設定 (R1,R2,R3,R4)

SRv6を起動するサーバには、全て下記を設定。環境に応じて適宜書き換え。

root@srv6:/home/uchy# vim /etc/sysctl.conf

net.ipv6.conf.all.forwarding = 1
net.ipv6.conf.all.seg6_enabled = 1
net.ipv6.conf.default.seg6_enabled = 1
net.ipv6.conf.ens161.seg6_enabled = 1
net.ipv6.conf.ens224.seg6_enabled = 1
root@srv6:/home/uchy# sysctl -p

Client
sudo ip -6 route add fd:192:168:6::/64 via fd:192:168:1::2 dev ens192

R1(SRv6-1)
root@srv6-1:/home/uchy# vim /etc/iproute2/rt_tables
100     local1
101     local2

ip -6 route add fd:192:168:6::/64 encap seg6 mode encap segs fd:192:168:2::2,fd:192:168:4::2 dev ens224 table local1
ip -6 route add fd:192:168:6::/64 encap seg6 mode encap segs fd:192:168:3::2,fd:192:168:5::2 dev ens161 table local2
sudo ip -6 route add fd:192:168:2::1 encap seg6local action End.DX6 nh6 fd:192:168:1::1 dev ens256
sudo ip -6 route add fd:192:168:3::1 encap seg6local action End.DX6 nh6 fd:192:168:1::1 dev ens256

サービスチェイニング設定(AまたはBの設定を投入)

A: sudo ip -6 rule add from fd:192:168:1::1 table local1
B: sudo ip -6 rule add from fd:192:168:1::1 table local2


R2(SRv6-2)
sudo ip -6 route add fd:192:168:2::2 encap seg6local action End dev ens224
sudo ip -6 route add fd:192:168:4::1 encap seg6local action End dev ens192

R3(SRv6-3)
sudo ip -6 route add fd:192:168:3::2 encap seg6local action End dev ens224
sudo ip -6 route add fd:192:168:5::1 encap seg6local action End dev ens192

R4(SRv6-4)
root@srv6-4:/home/uchy# vim /etc/iproute2/rt_tables
100     local1
101     local2

sudo ip -6 route add fd:192:168:1::/64 encap seg6 mode encap segs fd:192:168:4::1,fd:192:168:2::1 dev ens224 table local1
sudo ip -6 route add fd:192:168:1::/64 encap seg6 mode encap segs fd:192:168:5::1,fd:192:168:3::1 dev ens224 table local2
sudo ip -6 route add fd:192:168:4::2 encap seg6local action End.DX6 nh6 fd:192:168:6::2 dev ens161
sudo ip -6 route add fd:192:168:5::2 encap seg6local action End.DX6 nh6 fd:192:168:6::2 dev ens161

サービスチェイニング設定(AまたはBの設定を投入)

A: sudo ip -6 rule add from fd:192:168:6::2 table local1

B: sudo ip -6 rule add from fd:192:168:6::2 table local2

 

※アドレスがfd00:xx::xxではなく、fd:xx::xxになっているのは見間違いです。。


SRv6の疎通性確認

Client -> R1 -> R2 -> R4 -> Serverの経路のキャプチャ

Client->R1間のキャプチャ

f:id:uchy_13a:20200831155141p:plain

R1->R2間のキャプチャ

f:id:uchy_13a:20200831155230p:plain

R2->R4間のキャプチャ

f:id:uchy_13a:20200831155319p:plain

R4-Server間のキャプチャ

f:id:uchy_13a:20200831155337p:plain



IPv6ヘッダのRouting HeaderにSIDのリストが格納されていることが分かります。


まとめ

 

JANOG43の発表を元にSRv6を動かして見ました。本ブログでは設定内容がほとんどでSRv6の動作の解説を特に行っていません。 詳しくはInternet-DraftやJanog43のDAY1の資料をご覧ください。とりあえず手を動かして動作を確認してみたいという方のお役に立てれば良いと思います。