IETF106報告会
SR 最新動向
Teppei Kamata
Cisco Systems G.K.
9th Jan 2020

本日の発表内容• Spring WGを中心としたSRの最新動向• SRv6の進展• SR Control Planeなど• uSID/CRHなど• SRv6 Service Chainingに関連してSpring WGに提案したI-D 2本の紹介• draft-upa-srv6-service-chaining-exp• draft-eden-srv6-tagging-proxy© 2018 Cisco and/or its affiliates. All rights reserved.

Cisco Confidential

Spring WGを中心としたSRの最新動向• まず最初に(いきなりSpringではないですが)• SRv6のDataplaneを定義するSRHがProposed Standardとなりました
draft-ietf-6man-segment-routing-header• 最初にDraftが提出されたのが2014年なので5年越し• 最終的なSRH形式は右のように© 2018 Cisco and/or its affiliates. All rights reserved.

Cisco Confidential

Spring WGを中心としたSRの最新動向• 以下のDraftに関してもLast Call/Proposed Standardへと進捗中

SRv6 Network Programming
draft-ietf-spring-srv6-network-programming• Control Plane(IS-IS, BGP)
draft-ietf-lsr-isis-srv6-extensions
draft-ietf-idr-bgp-ls-segment-routing-ext• SR Policy
draft-ietf-idr-segment-routing-te-policy• OAM
draft-ietf-6man-spring-srv6-oam• YANG
draft-ietf-spring-sr-yang•• SR-MPLSについても主要なDocumentがRFCとなるなど標準化は最終段階へRFC 8660 Segment Routing with the MPLS Data Plane• RFC 8661 Segment Routing MPLS Interworking with LDP•

© 2018 Cisco and/or its affiliates. All rights reserved.

Cisco Confidential

Spring WGを中心としたSRの最新動向• IETF105の報告会で話題になったuSID/CRHについて• uSIDについてはIETF106では目立ったアップデートは特になし• CRHについてはSRv6とは別提案という扱いになり、SRv6+からSRm6(Segment Routing Mapped IPv6)へとRenameすることになった
draft-bonica-spring-srv6-plus→draft-bonica-spring-sr-mapped-six© 2018 Cisco and/or its affiliates. All rights reserved.

Cisco Confidential

SRv6でService ChainingするFunction• Service Chaining系のFunctionをまとめたService programmingも今回WGドラフトへ• draft-ietf-spring-sr-service-programming• 定義されているのは以下のFunction• SR Aware Funcstion (End.AN)• Static Proxy (End.AS)• Dynamic Proxy (End.AD)• Shared-memory Proxy (NEW!!)• Masquerading Proxy (End.AM)© 2018 Cisco and/or its affiliates. All rights reserved.

Cisco Confidential

End.AS – Endpoint to SR-unaware app via static proxy• Ingress:• Active SIDは”E1::B”（Function 0xBはVNF

End.AS）• 外側のIPヘッダー（SRヘッダー含む）をPopする• End.ASに関連付けられたVNF (OIF, NH)
へ転送する>VPP: show sr localsid
LocalSID
Behavior
E1::B
End.AS {OIF:TenGE0/1/0,
NH: 2001::a,IIF: TenGE0/2/0}
Total SR LocalSIDs: 1• Egress:• Valid for IPv4 and IPv6 traffic• Per-chain static configuration© 2018 Cisco and/or its affiliates. All rights reserved.

Cisco Confidential

SA = A::, DA = B::
Payload

TenGE0/2/0

TenGE0/1/0• IPヘッダー（SRヘッダー含む）をPushする（Static）• Next Segmentへ転送する

IPv6 Hdr

ProxyE1::
IPv6 Hdr
SR HdrSA = C1::, DA = E1::B

IPv6 Hdr

SA = C1::, DA = C2::( E2::, C2::, E1::B ) SL=2

SR Hdr( E2::, C2::, E1::B ) SL=1

IPv6 Hdr

SA = A::, DA = B::IPv6 Hdr

SA = A::, DA = B::

Payload

PayloadEnd.AD – Endpoint to SR-unaware app via dynamic proxy• Ingress:• Active SIDは”E1::C”（Function 0xCはVNF

End.AD）• 外側のIPヘッダー（SRヘッダー含む）をCashしてPopする• End.ADに関連付けられたVNF (OIF, NH)
へ転送する>VPP: show sr localsid
LocalSID
Behavior
E1::CEnd.AD {OIF:TenGE0/1/0,
NH: 2001::a,IIF: TenGE0/2/0}
Total SR LocalSIDs: 1• Egress:• Valid for IPv4 and IPv6 traffic• Cashは1Proxyにつき1枠© 2018 Cisco and/or its affiliates. All rights reserved.

Cisco Confidential

SA = A::, DA = B::
Payload

TenGE0/2/0

TenGE0/1/0• IPヘッダー（SRヘッダー含む）をCashからPushする（Dynamic）• Next Segmentへ転送する

IPv6 Hdr

Proxy
E1::
IPv6 Hdr
SR HdrSA = C1::, DA = E1::C

IPv6 Hdr

SA = C1::, DA = C2::

( E2::, C2::, E1::C ) SL=2SR Hdr( E2::, C2::, E1::C ) SL=1

IPv6 Hdr

SA = A::, DA = B::

IPv6 Hdr

SA = A::, DA = B::Payload

PayloadEnd.AM – Endpoint to SR-unaware app via masquerading• Ingress:• Active SIDは”E1::A”（Function 0xAはEnd.AM）• 宛先をLast Segment B::に書き換える• End.AMに関連付けられたVNF (OIF, NH)

へ転送する• Egress:

VNF>VPP: show sr localsid
LocalSID
Behavior
E1::AEnd.AM {OIF:TenGE0/1/0,
NH: 2001::a,
IIF: TenGE0/2/0}
Total SR LocalSIDs: 1• SRHを確認し、宛先をActive Segment• T.Insert⽅式のTrafficにしか適⽤できない• IPv4はT.Encapせざるを得ない• StateはPacketが保持したままなのでChainの重畳が可能© 2018 Cisco and/or its affiliates. All rights reserved.

Cisco Confidential

SA = A::, DA = B::( B::, C3::, E1::A ) SL=1
Payload

TenGE0/2/0

TenGE0/1/0

C3::に書き換える• Valid for IPv6 traffic only

IPv6 Hdr
SR Hdr

Proxy
E1::
IPv6 Hdr

SA = A::, DA = E1::A

IPv6 Hdr

SA = A::, DA = C3::SR Hdr( B::, C3::, E1::A ) SL=2

SR Hdr( B::, C3::, E1::A ) SL=1

PayloadPayload

Shared-memory Proxy• VNFとProxyが同⼀Compute Node上で動作• Shared-memory IFを⽤いてVNFに対してSRHを⽤いたままサービス提供する

IPv6 Hdr
SR Hdrfuture revision of this document.

VNF• Valid for IPv4 and IPv6 traffic?

Chainの重畳が可能?

• まだ実装⽅式も明らかではないので、今後要トラック© 2018 Cisco and/or its affiliates. All rights reserved.

Cisco Confidential( B::, C3::, E1::A ) SL=1Payload• More details will be added in a• StateはPacketが保持したままなので

SA = A::, DA = B::

TenGE0/1/0

ProxyE1::

TenGE0/2/0

IPv6 Hdr

SA = A::, DA = E1::A

IPv6 Hdr

SA = A::, DA = C3::SR Hdr( B::, C3::, E1::A ) SL=2

SR Hdr( B::, C3::, E1::A ) SL=1

PayloadPayload

Spring WGに提案したI-D 2本の紹介• ShowNet2019でSRv6 Service Chainingを実施• End.ANのFunctionは一つだけしか実装がなかった• IPv6のTrafficはEnd.AMでProxy可能• IPv4に対して現実的に用いることができるProxy方式が存在していなかった• 結論としてIPv4に対する複数Chainを重畳できるProxy方式End.ATを検討して実装したので、I-Dを出してみました。
• https://tools.ietf.org/html/draft-eden-srv6-tagging-proxy• せっかくShowNetという大規模環境でSRv6 Service Chainingを実装したので知見を残そうとExperimental draftも出してみました。
• https://tools.ietf.org/html/draft-upa-srv6-service-chaining-exp© 2018 Cisco and/or its affiliates. All rights reserved.

Cisco Confidential

ShowNet 2019でのSRv6 Service Chaining
External

2. Tagging Proxy

2. End.AM
3. End.DT4

3. End.DT4

3. End

1. T.Encap for IPv4
T.Insert for IPv6

© 2018 Cisco and/or its affiliates. All rights reserved.

Cisco Confidential

Users20

draft-upa-srv6-service-chaining-exp• このExperimental draftでは以下の知見を共有しました• Transparency of SRv6 header• SRHがついていてもVNFは処理可能• Services that cannot co-exist with End.AM• 自発パケットを生成するFunctionと一部Proxyは相性が悪い• Service liveness detection and conditional advertisement of service segments• Proxyの裏にいるFunctionの正常性確認の難しさ(SRの世界ではIGPを使いたいがVNFに求めるのは難しい)• Control Plane Capabilities (Control Planeは必須です。。。)• Match Condition for Applying SRv6 Functions• 今回はVRFを切ってPBRで引き込みを実施• SR PolicyはColor(Destination)ベースでTraffic Steering可能ですが、戻りパケットを考えると5TupleでSteeringが必要© 2018 Cisco and/or its affiliates. All rights reserved.

Cisco Confidential