今回はControllerでSR-TEのLSPを計算し、Head-endに配布する方法を説明します。
概要
SR PCEについて
SR-TEでLSPを計算するには、SR-TE DBが必要になります。そのため、Head-endとして動作するルータが多い場合、多くのルータが個別にSR-TE DBを保持する必要があります。
SR PCEでは、特定のルータでのみLSPの計算を実施し、その計算結果を他のルータに配布することが可能です。
LSPを計算するルータをPCE(Path Computation Element)、LSPの計算を依頼するルータをPCC(Path Computing Client)と呼びます。PCEとPCC間はPCEP(Path Computation Element Protocol)と呼ばれるプロトコルを使用して通信します。PCEPではTCP 4189を使用します。
PCCとPCE間では、最初にOpenメッセージをやり取りしてコネクションを確立します。
その後、PCCはPCEに対してPCRpt(Path Computation State Report)メッセージを送信して、LSPの計算を依頼します。PCEはPCRptメッセージ受信後、Head-endからEnd-pointへのLSPを計算します。そして、計算結果をPCUpd(Path Computation Update Request)メッセージに格納して、PCCに返信します。
PCEPのメッセージのフォーマット
PCEPのメッセージはHeaderとObject Classから構成されています。
PCPE Header
Object Class Header
・OT(Object Type)
Object Classのタイプが格納されます。
OPEN Object
Openメッセージに格納されるObjectになります。
・Version
PCEPのバージョンで、常に1が格納されます。
・Keepalive
Keepaliveメッセージの送信間隔で、デフォルトで30秒になります。
・Deadtime
Deadtimeで、デフォルトで120秒になります。
・SID(Session ID)
PCEPセッションを識別するためのIDになります。
SR-PCE-CAPABILITY Sub TLV
Segment Routingの機能に関する情報が格納されます。
・N(NAI Resolution Capability) Flag
SID(Segment ID)へのNAI(Node or Adjacency Identifier)を解決可能な事を示します。
・L(no MSD Limit) Flag
MSDの上限の影響を受けないことを示します。
・MSD(Maximum SID Depth)
SID Listの最大サイズを格納します。
LSP Object
LSPの情報が格納されます。
・PLSP-ID(PCPE Spesific Identifier for LSP)
PCEPがLSPを識別する際に使用するIDが格納されます。
・C(Create) Flag
LSPを作成することを示します。
・O(Operation State) Flag
オペレーションステータスを示します。
・A(Administrative) Flag
管理的にLSPが有効なことを示します。
・R(Remove) Flag
LSPを削除することを示します。
・S(Sync) Flag
状態の同期を示すます。
・D(Delegate) Flag
PCPEのLSPの計算する権限を委任することを示します。
IPv4-LSP-IDENTIFIERS TLV
LSPのHead-endとEnd-pointのアドレスが格納されます。
・IPv4 Tunnel Sender Address
LSPのHead-endのアドレスが格納されます。
・IPv4 Tunnel Endpoint Address
LSPのEnd-pointのアドレスが格納されます。
SYMBOLIC-PATH-NAME TLV
LSPの名前であるSymbolic Nameが格納されます。
ERO(EXPLICIT-ROUTE-OBJECT)
LSPが経由するパスの情報が格納されます。
SR(Segment Routing) Sub Object
SID(Segment ID)が格納されます。
LSPA(LSP Attribute) Object
LSPを計算する際に考慮するColorの制限情報が格納されます。
METRIC Object
LSPの計算に使用するメトリックの種類とメトリック値が格納されます。
・Metric Type
1がIGP Metric、2がTE Metric、3がHop Countを示します。
検証内容と設定
基本設定の内容
R1-R2-R3-R4-R5間でOSPF Area 0を構成します。
OSPFでSR-TEを有効にします。
R2-R3間のリンクのTE Metricを50に変更します。
R1でLoopback Interfaceの1.1.1.1/32にPrefix SIDとして20101を割り当てます。
R3でLoopback Interfaceの2.2.2.2/32にPrefix SIDとして20201を割り当てます。
R3でLoopback Interfaceの3.3.3.3/32にPrefix SIDとして20301を割り当てます。
R4でLoopback Interfaceの4.4.4.4/32にPrefix SIDとして20401を割り当てます。
R5でLoopback Interfaceの5.5.5.5/32にPrefix SIDとして20501を割り当てます。
R5をPCE、R1をPCCとして動作させます。
初期設定
interface Loopback0
ipv4 address 1.1.1.1 255.255.255.255
!
interface GigabitEthernet0/0/0/0
ipv4 address 10.1.1.1 255.255.255.0
!
interface GigabitEthernet0/0/0/1
ipv4 address 10.5.5.1 255.255.255.0
!
router ospf 1
router-id 1.1.1.1
segment-routing mpls
area 0
mpls traffic-eng
interface Loopback0
prefix-sid absolute 20101
!
interface GigabitEthernet0/0/0/0
network point-to-point
!
interface GigabitEthernet0/0/0/1
network point-to-point
!
!
!
segment-routing
traffic-eng
pcc
pce address ipv4 5.5.5.5
interface Loopback0
ipv4 address 2.2.2.2 255.255.255.255
!
interface GigabitEthernet0/0/0/0
ipv4 address 10.1.1.2 255.255.255.0
!
interface GigabitEthernet0/0/0/1
ipv4 address 10.2.2.2 255.255.255.0
!
interface GigabitEthernet0/0/0/2
ipv4 address 10.3.3.2 255.255.255.0
!
router ospf 1
router-id 2.2.2.2
segment-routing mpls
area 0
mpls traffic-eng
interface Loopback0
prefix-sid absolute 20201
!
interface GigabitEthernet0/0/0/0
network point-to-point
!
interface GigabitEthernet0/0/0/1
network point-to-point
!
interface GigabitEthernet0/0/0/2
network point-to-point
!
segment-routing
traffic-eng
interface GigabitEthernet0/0/0/1
metric 50
interface Loopback0
ipv4 address 3.3.3.3 255.255.255.255
!
interface GigabitEthernet0/0/0/0
ipv4 address 10.2.2.3 255.255.255.0
!
interface GigabitEthernet0/0/0/1
ipv4 address 10.4.4.3 255.255.255.0
!
router ospf 1
router-id 3.3.3.3
segment-routing mpls
area 0
mpls traffic-eng
interface Loopback0
prefix-sid absolute 20301
!
interface GigabitEthernet0/0/0/0
network point-to-point
!
interface GigabitEthernet0/0/0/1
network point-to-point
!
!
!
segment-routing
traffic-eng
interface GigabitEthernet0/0/0/0
metric 50
interface Loopback0
ipv4 address 4.4.4.4 255.255.255.255
!
interface GigabitEthernet0/0/0/0
ipv4 address 10.3.3.4 255.255.255.0
!
interface GigabitEthernet0/0/0/1
ipv4 address 10.4.4.4 255.255.255.0
!
router ospf 1
router-id 4.4.4.4
segment-routing mpls
area 0
mpls traffic-eng
interface Loopback0
prefix-sid absolute 20401
!
interface GigabitEthernet0/0/0/0
network point-to-point
!
interface GigabitEthernet0/0/0/1
network point-to-point
!
!
!
segment-routing
traffic-eng
pce
address ipv4 5.5.5.5
!
interface Loopback0
ipv4 address 5.5.5.5 255.255.255.255
!
interface GigabitEthernet0/0/0/0
ipv4 address 10.5.5.5 255.255.255.0
!
router ospf 1
distribute link-state
router-id 5.5.5.5
segment-routing mpls
area 0
mpls traffic-eng
interface Loopback0
prefix-sid absolute 20501
!
interface GigabitEthernet0/0/0/0
network point-to-point
!
!
!
segment-routing
traffic-eng
PCEの設定の確認
PCEとして動作させる場合、pceコマンドによりPCEを有効にします。そして、address ipv4 <address>コマンドでPCPEの通信に使用に使用するアドレスを指定します。
また、PCEがSR-TEのLSPを計算できるようにするために、distribute link-stateコマンドを設定し、SR-TE DBに対して、OSPFやIS-IS経由で学習したTE用の情報を投入する必要があります。
pce
address ipv4 5.5.5.5
!
router ospf 1
distribute link-state
PCCの設定の確認
PCCとして動作させる場合、最初にpccコマンドによりPCCを有効にします。そして、pce address ipv4 <address>コマンドでLSPの計算の依頼先のPCEのアドレスを指定します。
segment-routing
traffic-eng
pcc
pce address ipv4 5.5.5.5
PCEPセッションの確認
PCCではshow segment-routing traffic-eng pcc ipv4 peer detailコマンドでPCEPセッションの状態を確認できます。
RP/0/RP0/CPU0:R1#show segment-routing traffic-eng pcc ipv4 peer detail
PCC's peer database:
--------------------
Peer address: 5.5.5.5 (best PCE)
State up
Capabilities: Stateful, Update, Segment-Routing, Instantiation
PCEP has been up for: 00:08:08
Local keepalive timer is 30 seconds
Remote keepalive timer is 30 seconds
Local dead timer is 120 seconds
Remote dead timer is 120 seconds
Statistics:
Open messages: rx 1 | tx 1
Close messages: rx 0 | tx 0
Keepalive messages: rx 16 | tx 16
Error messages: rx 0 | tx 0
Report messages: rx 0 | tx 9
Update messages: rx 2 | tx 0
PCEではshow pce ipv4 peer detailでコマンドでPCEPセッションの状態を確認できます。
RP/0/RP0/CPU0:R5#show pce ipv4 peer detail
PCE's peer database:
--------------------
Peer address: 1.1.1.1
State: Up
Capabilities: Stateful, Segment-Routing, Update, Instantiation
PCEP has been up for: 00:09:27
PCEP session ID: local 0, remote 0
Sending KA every 30 seconds
Minimum acceptable KA interval: 20 seconds
Peer timeout after 120 seconds
Maximum SID Depth: 10
Statistics:
Keepalive messages: rx 19 tx 19
Request messages: rx 0 tx 0
Reply messages: rx 0 tx 0
Error messages: rx 0 tx 0
Open messages: rx 1 tx 1
Report messages: rx 10 tx 0
Update messages: rx 0 tx 2
Initiate messages: rx 0 tx 0
Last PCError:
Received: None
Sent: None
補足として、以下はPCEPセッション確立時にR1がR5に送信したOpenメッセージのキャプチャになります。
また、以下はPCEPセッション確立後に定期的に送受信されるKeepaliveメッセージのキャプチャになります。
PCEによるTE Metricを使用したLSPの計算
SR-TE Policyの設定確認
R1からPCEに対して、3.3.3.3へのLSPの計算を依頼します。LSPの計算にはTE Metricを使用します。
PCEにLSPの計算を依頼するには、SR-TE PolicyのDynamic Candidate Pathに対して、pceコマンドを設定します。
segment-routing
traffic-eng
policy SR-TE_POLICY
color 1 end-point ipv4 3.3.3.3
autoroute
include all
!
candidate-paths
preference 10
dynamic
pcep
PCEとPCCの状態確認
SR-TE Policy設定後、R1はR5に対してPCRptメッセージを送信し、LSPの計算を依頼します。
以下はR1がR5に送信したPCRptメッセージのキャプチャになります。Head-end、End-pointのアドレスが格納されていることが確認できます。また、METRIC ObjectのMetric TypeにはTE Metric(2)が格納されていることが確認できます。
R5はPCRptメッセージを受信後、TE Metricを基に、R1からR3へのLSPを計算します。
PCEが計算したLSPの情報はshow pce lsp detailコマンドで確認できます。TE Metricを基にLSPを計算していることが確認できます。
RP/0/RP0/CPU0:R5#show pce lsp detail
PCE's tunnel database:
----------------------
PCC 1.1.1.1:
Tunnel Name: cfg_SR-TE_POLICY_discr_10
Color: 1
Interface Name: srte_c_1_ep_3.3.3.3
LSPs:
LSP[0]:
source 1.1.1.1, destination 3.3.3.3, tunnel ID 6, LSP ID 1
State: Admin up, Operation up
Setup type: Segment Routing
Binding SID: 24003
Maximum SID Depth: 10
Preference: 10
Bandwidth: signaled 0 kbps, applied 0 kbps
PCEP information:
PLSP-ID 0x6, flags: D:1 S:0 R:0 A:1 O:1 C:0
LSP Role: Single LSP
State-sync PCE: None
PCC: 1.1.1.1
LSP is subdelegated to: None
Reported path:
Metric type: TE, Accumulated Metric 3
SID[0]: Node, Label 20401, Address 4.4.4.4
SID[1]: Node, Label 20301, Address 3.3.3.3
Computed path: (Local PCE)
Computed Time: Fri Jun 26 12:22:52 UTC 2020 (00:05:40 ago)
Metric type: TE, Accumulated Metric 3
SID[0]: Node, Label 20401, Address 4.4.4.4
SID[1]: Node, Label 20301, Address 3.3.3.3
Recorded path:
None
Disjoint Group Information:
None
R5はLSP計算後、R1に対して、LSPの計算結果を格納したPCUpdメッセージを返信します。
以下はR5がR1に返信したPCUpdメッセージのキャプチャになります。R4とR3のPrefix SID、また、R1からR3へのLSPのメトリックが格納されていることが確認できます。
PCCがPCEから学習したLSPの情報はshow segment-routing traffic-eng pcc lsp detailコマンドで確認できます。R1はR5からLSPの計算結果を学習していることが確認できます。
RP/0/RP0/CPU0:R1#show segment-routing traffic-eng pcc lsp detail
PCC's SR policy database:
-------------------------
Symbolic Name: cfg_SR-TE_POLICY_discr_10
LSP[0]:
Source 1.1.1.1, Destination 3.3.3.3, Tunnel ID 6, LSP ID 1
State: Admin up, Operation up
Binding SID: 24003
Setup type: SR
Bandwidth: requested 0, used 0
LSP object:
PLSP-ID 0x6, flags: D:0 S:0 R:0 A:1 O:1 C:0
Metric type: TE, Accumulated Metric 3
ERO:
SID[0]: Node, Label 20401, NAI: 4.4.4.4
SID[1]: Node, Label 20301, NAI: 3.3.3.3
SR-TE Policyの確認
R1はR5から学習したLSPの計算結果を基に、SR-TE Policyのインスタンスを生成していることが確認できます。
RP/0/RP0/CPU0:R1#show segment-routing traffic-eng policy
SR-TE policy database
---------------------
Color: 1, End-point: 3.3.3.3
Name: srte_c_1_ep_3.3.3.3
Status:
Admin: up Operational: up for 00:06:34 (since Jun 26 12:22:26.017)
Candidate-paths:
Preference: 10 (configuration) (active)
Name: SR-TE_POLICY
Requested BSID: dynamic
PCC info:
Symbolic name: cfg_SR-TE_POLICY_discr_10
PLSP-ID: 6
Dynamic (pce 5.5.5.5) (valid)
Metric Type: TE, Path Accumulated Metric: 3
20401 [Prefix-SID, 4.4.4.4]
20301 [Prefix-SID, 3.3.3.3]
Attributes:
Binding SID: 24003
Forward Class: Not Configured
Steering labeled-services disabled: no
Steering BGP disabled: no
IPv6 caps enable: yes
疎通確認
R1の1.1.1.1からR3の3.3.3.3へTracerouteを実施します。
R1はSID 20401 20301をパケットに付加してR2に転送していることが確認できます。
RP/0/RP0/CPU0:R1#traceroute 3.3.3.3 source 1.1.1.1
Type escape sequence to abort.
Tracing the route to 3.3.3.3
1 10.1.1.2 [MPLS: Labels 20401/20301 Exp 0] 59 msec 56 msec 45 msec
2 10.3.3.4 [MPLS: Label 20301 Exp 0] 69 msec 59 msec 59 msec
3 10.4.4.3 60 msec * 56 msec
PCEによるIGP Metricを使用したLSPの計算
SR-TE Policyの設定確認
R1からPCEに対して、3.3.3.3へのLSPの計算を依頼します。LSPの計算にはIGP Metricを使用します。
segment-routing
traffic-eng
policy SR-TE_POLICY
color 1 end-point ipv4 3.3.3.3
autoroute
include all
!
candidate-paths
preference 10
dynamic
pcep
!
metric
type igp
PCEとPCCの状態確認
今回はIGP Metricを使用するため、PCRptメッセージのMETRIC ObjectのMetric TypeにはIGP(1)が格納されます。
以下はR1がR5に送信したPCRptメッセージのキャプチャになります。METRIC ObjectのMetric TypeにはIGP Metric(1)が格納されていることが確認できます。
R5はPCRptメッセージを受信後、IGP Metricを基に、R1からR3へのLSPを計算します。
PCEが計算したLSPの情報を見ると、IGP Metricを基にLSPを計算していることが確認できます。
RP/0/RP0/CPU0:R5#show pce lsp detail
PCE's tunnel database:
----------------------
PCC 1.1.1.1:
Tunnel Name: cfg_SR-TE_POLICY_discr_10
Color: 1
Interface Name: srte_c_1_ep_3.3.3.3
LSPs:
LSP[0]:
source 1.1.1.1, destination 3.3.3.3, tunnel ID 7, LSP ID 1
State: Admin up, Operation up
Setup type: Segment Routing
Binding SID: 24007
Maximum SID Depth: 10
Preference: 10
Bandwidth: signaled 0 kbps, applied 0 kbps
PCEP information:
PLSP-ID 0x7, flags: D:1 S:0 R:0 A:1 O:1 C:0
LSP Role: Single LSP
State-sync PCE: None
PCC: 1.1.1.1
LSP is subdelegated to: None
Reported path:
Metric type: IGP, Accumulated Metric 2
SID[0]: Node, Label 20301, Address 3.3.3.3
Computed path: (Local PCE)
Computed Time: Fri Jun 26 12:38:29 UTC 2020 (00:01:27 ago)
Metric type: IGP, Accumulated Metric 2
SID[0]: Node, Label 20301, Address 3.3.3.3
Recorded path:
None
Disjoint Group Information:
None
R5はLSP計算後、R1に対して、LSPの計算結果を格納したPCUpdメッセージを返信します。
以下はR5がR1に返信したPCUpdメッセージのキャプチャになります。R3のPrefix SID、また、R1からR3へのLSPのメトリックが格納されていることが確認できます。
R1はR5からLSPの計算結果を学習していることが確認できます。
RP/0/RP0/CPU0:R1#show segment-routing traffic-eng pcc lsp detail
PCC's SR policy database:
-------------------------
Symbolic Name: cfg_SR-TE_POLICY_discr_10
LSP[0]:
Source 1.1.1.1, Destination 3.3.3.3, Tunnel ID 7, LSP ID 1
State: Admin up, Operation up
Binding SID: 24007
Setup type: SR
Bandwidth: requested 0, used 0
LSP object:
PLSP-ID 0x7, flags: D:0 S:0 R:0 A:1 O:1 C:0
Metric type: IGP, Accumulated Metric 2
ERO:
SID[0]: Node, Label 20301, NAI: 3.3.3.3
SR-TE Policyの確認
R1はR5から学習したLSPの計算結果を基に、SR-TE Policyのインスタンスを生成していることが確認できます。
RP/0/RP0/CPU0:R1#show segment-routing traffic-eng policy
SR-TE policy database
---------------------
Color: 1, End-point: 3.3.3.3
Name: srte_c_1_ep_3.3.3.3
Status:
Admin: up Operational: up for 00:06:08 (since Jun 26 12:33:35.162)
Candidate-paths:
Preference: 10 (configuration) (active)
Name: SR-TE_POLICY
Requested BSID: dynamic
PCC info:
Symbolic name: cfg_SR-TE_POLICY_discr_10
PLSP-ID: 7
Maximum SID Depth: 10
Dynamic (pce 5.5.5.5) (valid)
Metric Type: IGP, Path Accumulated Metric: 2
20301 [Prefix-SID, 3.3.3.3]
Attributes:
Binding SID: 24007
Forward Class: Not Configured
Steering labeled-services disabled: no
Steering BGP disabled: no
IPv6 caps enable: yes
疎通確認
R1の1.1.1.1からR3の3.3.3.3へTracerouteを実施します。
R1はSID 20301をパケットに付加してR2に転送していることが確認できます。
RP/0/RP0/CPU0:R1#traceroute 3.3.3.3 source 1.1.1.1
Type escape sequence to abort.
Tracing the route to 3.3.3.3
1 10.1.1.2 [MPLS: Label 20301 Exp 0] 17 msec 23 msec 17 msec
2 10.2.2.3 24 msec * 19 msec
コメント