IETF105報告会
SRv6+について
2019年8月31日
NTTコミュニケーションズ株式会社
上手 祐治
1

SRv6+について
 動機： 現在のSRv6仕様が抱える問題（パケット長）
 Segment（SID）の数が増えると…

• オーバーヘッドが増え、ネットワークの帯域を浪費する（SID 1段 につき16 byte増加）-ショートパケットになればオーバーヘッドが無視できない（設備コスト増加）• 従来のASICを搭載する装置では、十分な転送性能を発揮できない ルーティングを織り交ぜSID段数を少なく使う限りは大きな問題にならないが、 0
12
30 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
大規模展開や高度な処理を行う上では制約となる
Steering+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Next Header| Hdr Ext Len | Routing Type | Segments Left |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Last Entry
|
Flags
|
Tag|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|||
Segment List[0] (128 bits IPv6 address)|||||+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
|
...
|
|
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|||
Segment List[n] (128 bits IPv6 address)
|
|
|
|
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+//////
Optional Type Length Value objects (variable)//////+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

2

従来のSRv6 Segment Routing Header(Segment1個あたり128bits IPv6 addr)

SRv6+
SRv6+ … SRv6を活用し、パケット長の懸念を無くした技術の提案
 全体アーキテクチャ
 draft-bonica-spring-srv6-plus-05 * Compression Header draft-bonica-6man-comp-rtg-hdr-06 * Per-Segment Service Instruction
 draft-bonica-6man-seg-end-opt-04

 Per-Path Service Instruction
 draft-bonica-6man-vpn-dest-opt-06

 IS-IS Extension
 draft-bonica-lsr-crh-isis-extensions-00

 BGP-based VPN draft-ssangli-idr-bgp-vpn-srv6-plus-02*) 8/30時点の最新draftでは、IETF105発表時から改版あり
3

PathとSegment------------------|Node|----|Node|----|Node|----|Node|----|Node|----|Node|
| A |
| B |
| C |
| D |
| E |
| F |
------------------||||-------------------||-------------------|
Segment A-C|---------|
Segment D-F
Segment C-D||------------------------------------------------SRv6+ Path4

PathとSegment
 Path・PathのIngress

・PathのEgress------------------|Node|----|Node|----|Node|----|Node|----|Node|----|Node|
| A |
| B |
| C |
| D |
| E |
| F |
------------------||||-------------------||-------------------|
Segment A-C|---------|
Segment D-F
Segment C-D||------------------------------------------------SRv6+ Path5

PathとSegment
 Segment
・A-CのIngress・Transit

・A-CのEgress
・C-DのIngress ・C-DのEgress
・D-FのIngress ・Transit

・D-FのEgress------------------|Node|----|Node|----|Node|----|Node|----|Node|----|Node|
| A |
| B |
| C |
| D |
| E |
| F |
------------------||||-------------------||-------------------|Segment A-C|---------|Segment D-F
Segment C-D||------------------------------------------------SRv6+ Path

6

Topological/Service Instruction
 従来のSRv6でのSIDが担っていた内容を、２つの概念に分離する
 Topological Instruction• 通過トポロジを指定する• パケットとしてはRouting Headerで表現 Compression Header(CRH) Service Instruction• セグメントやパスの終わりでの追加処理を指示する• パケットとしてはDestination Option Headerで表現

7

SRv6+ Segment
 Segment は2種類
 Adjacency Segments (*1)
 Node Segments (*2)

*1 … Strictly Routed Segmentsから改称 (draft -0506)*2 … Loosely Routed Segments から改称(draft -0506)

 IS-ISでSegment情報（SID）を広告
 Segmentのingress nodeが、adjacency segmentをフラッド• 始点側がつくる Segmentのegress nodeが、node segmentをフラッド• 終点側がつくる

 CRHにエンコード
 Compression Header• 従来のSRHではSIDあたり128bitだったのが、CRHでは16bit or 32bitになる8

SRv6+ Segment -- CRH Format
 SID長が16bit (CRH-16)の場合と、32bit(CRH-32)の場合に対応
draft-bonica-6man-comp-rtg-hdr-06

CRH-16

CRH-3201230 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Next Header | Hdr Ext Len | Routing Type | Segments Left |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|
SID[0]|
SID[1]|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-||.........
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

01230 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Next Header | Hdr Ext Len | Routing Type | Segments Left |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++
SID[0]++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++
SID[1]++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+////+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++
SID[n]++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
9

SRv6+ Service Instruction
 Per-Segment Service Instruction
 セグメントのEgressでサービス指示
 Routing Header（CRH）の*前にある*Destination Options headerにエンコード

 Per-Path Service Instruction
 パスのEgressでサービス指示 上位レイヤパケットの*前にある*Destination Options headerにエンコード

Per-Segment Service Instruction
 セグメントの終わりで、追加処理を指示できる
Segment A-CのPer-Segment Service InstructionはNodeCで処理

Segment C-DのPer-Segment Service InstructionはNodeDで処理

Segment D-FのPer-Segment Service InstructionはNodeFで処理------------------|Node|----|Node|----|Node|----|Node|----|Node|----|Node|
| A |
| B |
| C |
| D |
| E |
| F |
------------------||||-------------------||-------------------|
Segment A-C|---------|
Segment D-F
Segment C-D||------------------------------------------------SRv6+ Path
Figure 1: Paths, Segments And Instructions

例えば、Segmentが終わるごとに、Firewall policyや Sampling Policyを適用するなどの用途に使う
11

Per-Path Service Instruction
 Per-Path Service Instruction
 パスの終わりで、追加処理を指示できる

Per-Path Service InstructionはNode Fで処理------------------|Node|----|Node|----|Node|----|Node|----|Node|----|Node|
| A |
| B |
| C |
| D |
| E |
| F |
------------------||||-------------------||-------------------|
Segment A-C|---------|
Segment D-F
Segment C-D||------------------------------------------------SRv6+ Path
Figure 1: Paths, Segments And Instructions

例えば、カプセル化する/外す指示を入れることで、VPNを提供する用途に使う
12

SRv6 vs SRv6+
 圧縮効果+------+------------------------+--------------+--------------+| SIDs | SRv6 SRH (128-bit SID) | SRv6+ CRH-16 | SRv6+ CRH-32 |+------+------------------------+--------------+--------------+| 1|
24|
8|
8|
| 2|
40|
8|
16|
| 3|
56|
16|
16|
| 4|
72|
16|
24|
| 5|
88|
16|
24|
| 6|
104|
16|
32|
| 7|
120|
24|
32|
| 8|
136|
24|
40|
| 9|
152|
24|
40|
| 10 |
168|
24|
N/A|| 11 |184|
32|
N/A|| 12 |
200|
32|
N/A
|| 13 |216|32|
N/A|| 14 |
232
|
32|
N/A
|
| 15 |
248
|
40|
N/A
|
| 16 |
264
|
40
|
N/A
|
| 17 |
280
|
40|
N/A
|
| 18 |
296|
40|
N/A
|
+------+------------------------+--------------+--------------+
Table 1: Routing Header Size (in Bytes) As A Function Of Routing
Header Type and Number Of SIDs

 例） Traffic Engineeringをして 12ホップさせたいときのオーバーヘッド
SRv6….
 SRv6+ …
240 byte (IPv6 Header 40 byte, SRH 200 byte)
72 byte (IPv6 Header 40 byte, CRH-16 32 byte)
13

まとめ SRv6+ のポイント
 Topological Instruction とService Instruction を分離（下図参照）
 Topological Instruction (SID) は Routing Headerで表現CRH• Routing Header内のSIDは、 IS-ISで広告• SIDの値そのものは、IPv6アドレスのセマンティクスとは関係ない• CRHのSIDは16bit or 32bit  パケット長の圧縮効果
 Service InstructionはDestination Option Headerで表現
Dst Option Headerだけ使う例---------| Ethernet |---------| Dest|||| Option |---------||
|
|
|
|
|
IPv6|
----------

CRHだけ使う例---------| Ethernet |---------Service| VXLAN|Instruction---------|
UDP|---------Topological |Instructions |CRH|---------|
IPv6|---------パケット

先頭Option 1↓Option 2

Figure 2: EVPN Design Alternatives
14

両方とも使う例---------| Ethernet |---------|
Dest|
|
|
| Option |---------|||
CRH|---------|
IPv6|---------Option 3