Segment Routing PCE

今回は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用の情報を投入する必要があります。

R5

pce
 address ipv4 5.5.5.5
!
router ospf 1
 distribute link-state
            

 

PCCの設定の確認

PCCとして動作させる場合、最初にpccコマンドによりPCCを有効にします。そして、pce address ipv4 <address>コマンドでLSPの計算の依頼先のPCEのアドレスを指定します。

R1

segment-routing
 traffic-eng
  pcc
   pce address ipv4 5.5.5.5
            

 

PCEPセッションの確認

PCCではshow segment-routing traffic-eng pcc ipv4 peer detailコマンドでPCEPセッションの状態を確認できます。

R1

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セッションの状態を確認できます。

R5

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コマンドを設定します。

R1

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を計算していることが確認できます。

R5

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の計算結果を学習していることが確認できます。

R1

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のインスタンスを生成していることが確認できます。

R1

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に転送していることが確認できます。

R1

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を使用します。

R1

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を計算していることが確認できます。

R5

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の計算結果を学習していることが確認できます。

R1

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のインスタンスを生成していることが確認できます。

R1

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に転送していることが確認できます。

R1

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
            

コメント

タイトルとURLをコピーしました