今回はSRとLDPが混在している環境において、OSPFを使用したSR環境からLDP環境へのLSPの接続方法を説明します。
概要
SRからLDPへのLSPの結合
前回の記事で、LDP環境からSR環境へのLSPの結合は、特別な設定が不要な事を説明しました。
一方、SR環境からLDP環境へのLSPの結合は容易にできません。IOS-XRの場合、自身のLoopback Interfaceのアドレスに対してのみPrefix SIDを割り当て可能なため、LDP環境に存在するPrefixに対してPrefix SIDを割り当てることができません。この結果、SR環境において、LDP環境に存在するPrefixへのLSPを構築できません。
SRではSRMS(Segment Routing Mapping Server)を使用することで、LDP環境に存在するPrefixに対してPrefix SIDを割り当てることが可能です。
そして、OSPFやIS-ISを使用して、SRMSで定義したPrefixとPrefix SIDのマッピング情報をSR環境内に広報することで、各ルータはLDP環境に存在するPrefixのPrefix SIDを認識できます。
この結果、SR環境からLDP環境へLSPを接続できます。
SRMS用のOSPFのTLV
SRMSが生成したPrefixとPrefix SIDのマッピング情報はOSPFv2 Extended Prefix Range TLVに格納されます。OSPFv2 Extended Prefix Range TLVはOSPFv2 Extended Prefix Opaque LSAに格納され広報されます。
OSPFv2 Extended Prefix Range TLVのSub TLVにはPrefix SID Sub-TLVが格納されます。またPrefix SID Sub-TLVでは、Prefix SIDがSRMSで定義されてことを示すために、M(Mapping Server) Flagがセットされます。
検証の基本設定
基本設定の内容
R1-R2-R3-R4-R5間でOSPF Area 0を構成します。
R1-R2間、R1-R5間でOSPFのSRを有効にします。
R2-R3-R4間でLDPを有効にします。
R5をSRMSとして動作させ、4.4.4.4/32にPrefix SIDとして20401を割り当て、OSPFで広報します。
初期設定
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.4.4.1 255.255.255.0
!
router ospf 1
router-id 1.1.1.1
segment-routing mpls
area 0
interface Loopback0
!
interface GigabitEthernet0/0/0/0
network point-to-point
!
interface GigabitEthernet0/0/0/1
network point-to-point
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
!
router ospf 1
router-id 2.2.2.2
segment-routing mpls
area 0
interface Loopback0
!
interface GigabitEthernet0/0/0/0
network point-to-point
!
interface GigabitEthernet0/0/0/1
network point-to-point
segment-routing forwarding disable
!
!
!
mpls ldp
router-id 2.2.2.2
interface GigabitEthernet0/0/0/1
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.3.3.3 255.255.255.0
!
router ospf 1
router-id 3.3.3.3
area 0
interface Loopback0
!
interface GigabitEthernet0/0/0/0
network point-to-point
!
interface GigabitEthernet0/0/0/1
network point-to-point
!
!
!
mpls ldp
router-id 3.3.3.3
interface GigabitEthernet0/0/0/0
!
interface GigabitEthernet0/0/0/1
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
!
router ospf 1
router-id 4.4.4.4
area 0
interface Loopback0
!
interface GigabitEthernet0/0/0/0
network point-to-point
!
!
!
mpls ldp
router-id 4.4.4.4
interface GigabitEthernet0/0/0/0
interface Loopback0
ipv4 address 5.5.5.5 255.255.255.255
!
interface GigabitEthernet0/0/0/0
ipv4 address 10.4.4.5 255.255.255.0
!
router ospf 1
router-id 5.5.5.5
segment-routing mpls
segment-routing prefix-sid-map advertise-local
area 0
interface Loopback0
!
interface GigabitEthernet0/0/0/0
network point-to-point
!
!
!
segment-routing
mapping-server
prefix-sid-map
address-family ipv4
4.4.4.4/32 4401 range 1
設定と状態確認
SRMSの設定の確認
SRMSでのPrefixとPrefix SIDのマッピング情報は<address>/<prefix-length> <sid index> range <range>コマンドで定義します。
SRMSで定義したマッピング情報をOSPFで広報するにはsegment-routing prefix-sid-map advertise localコマンドを設定します。
router ospf 1
segment-routing prefix-sid-map advertise-local
!
!
segment-routing
mapping-server
prefix-sid-map
address-family ipv4
4.4.4.4/32 4401 range 1
Rangeオプションについて
SRMSでPrefixとPrefix SIDのマッピング情報を定義するコマンドのrangeオプションを使用することで、同時に複数のマッピング情報を定義できます。
例えば、1.1.1.1/32 4001 range 5コマンドを設定した場合、以下のマッピング情報が定義されたことになります。
1.1.1.0/24 4001 range 5コマンドを設定した場合、以下のマッピング情報が定義されたことになります。
SRMSの状態確認
SRMSで定義したPrefixとPrefix SIDのマッピング情報はshow segment-routing mapping-server prefix-sid-map ipv4 detailコマンドで確認できます。
R5で定義したPrefixとPrefix SIDのIndexのマッピング情報が確認できます。
RP/0/RP0/CPU0:R5#show segment-routing mapping-server prefix-sid-map ipv4 detail
Prefix
4.4.4.4/32
SID Index: 4401
Range: 1
Last Prefix: 4.4.4.4/32
Last SID Index: 4401
Flags:
OSPFの状態確認
OSPFで広報しているSRMSのマッピング情報はshow ospf segment-routing prefix-sid-map active-policy detailコマンドで確認できます。
RP/0/RP0/CPU0:R5#show ospf segment-routing prefix-sid-map active-policy detail
SRMS active policy for Process ID 1
Prefix
4.4.4.4/32
Source: Local
Router ID: 5.5.5.5
Area ID: Not set
SID Index: 4401
Range: 1
Last Prefix: 4.4.4.4/32
Last SID Index: 4401
Flags:
Number of mapping entries: 1
R5が生成したOSPFv2 Extended Prefix Opaque LSAを見ると、SRMSで定義したマッピング情報を格納したExtended Prefix Range TLVが存在することが確認出来ます。
RP/0/RP0/CPU0:R1#show ospf database opaque-area 7.0.0.1 adv-router 5.5.5.5
OSPF Router with ID (1.1.1.1) (Process ID 1)
Type-10 Opaque Link Area Link States (Area 0)
LS age: 211
Options: (No TOS-capability, DC)
LS Type: Opaque Area Link
Link State ID: 7.0.0.1
Opaque Type: 7
Opaque ID: 1
Advertising Router: 5.5.5.5
LS Seq Number: 80000001
Checksum: 0x32dd
Length: 48
Extended Prefix Range TLV: Length: 24
AF : 0
Prefix : 4.4.4.4/32
Range Size: 1
Flags : 0x0
SID sub-TLV: Length: 8
Flags : 0x60
MTID : 0
Algo : 0
SID Index : 4401
以下はR5が生成したOSPFv2 Extended Prefix Opaque LSAのキャプチャになります。OSPFv2 Extended Prefix Range TLVが存在し、Prefixの4.4.4.4とPrefix SIDのIndexの4401が存在することが確認できます。また、SRMSによって生成されたことを示すM Flagがセットされています。
LDPの状態確認
R2はLDP経由でR3からLabel 24005を学習していることが確認できます。
RP/0/RP0/CPU0:R2#show mpls ldp forwarding
Codes:
- = GR label recovering, (!) = LFA FRR pure backup path
{} = Label stack with multi-line output for a routing path
G = GR, S = Stale, R = Remote LFA FRR backup
Prefix Label Label(s) Outgoing Next Hop Flags
In Out Interface G S R
--------------- ------- -------------- ------------ ------------------- -----
1.1.1.1/32 24001 Unlabelled Gi0/0/0/0 10.1.1.1
3.3.3.3/32 24002 ImpNull Gi0/0/0/1 10.2.2.3
4.4.4.4/32 24004 24005 Gi0/0/0/1 10.2.2.3
5.5.5.5/32 24006 Unlabelled Gi0/0/0/0 10.1.1.1
10.3.3.0/24 24003 ImpNull Gi0/0/0/1 10.2.2.3
10.4.4.0/24 24005 Unlabelled Gi0/0/0/0 10.1.1.1
LFIBの確認
R1のLFIBにSRMSで定義したPrefix SID 20401がインストールされていることが確認できます。
また、R2はSRMGで定義したPrefix SID 20401とLDP経由で学習したLabel 24005を基に、LFIBのエントリを生成していることが確認できます。
RP/0/RP0/CPU0:R1#show mpls forwarding
Local Outgoing Prefix Outgoing Next Hop Bytes
Label Label or ID Interface Switched
------ ----------- ------------------ ------------ --------------- ------------
20401 20401 SR Pfx (idx 4401) Gi0/0/0/0 10.1.1.2 0
24000 Pop SR Adj (idx 0) Gi0/0/0/0 10.1.1.2 0
24001 Pop SR Adj (idx 0) Gi0/0/0/1 10.4.4.5 0
RP/0/RP0/CPU0:R2#show mpls forwarding
Local Outgoing Prefix Outgoing Next Hop Bytes
Label Label or ID Interface Switched
------ ----------- ------------------ ------------ --------------- ------------
20401 24005 SR Pfx (idx 4401) Gi0/0/0/1 10.2.2.3 0
24000 Pop SR Adj (idx 0) Gi0/0/0/0 10.1.1.1 0
24001 Unlabelled 1.1.1.1/32 Gi0/0/0/0 10.1.1.1 0
24002 Pop 3.3.3.3/32 Gi0/0/0/1 10.2.2.3 7487
24003 Pop 10.3.3.0/24 Gi0/0/0/1 10.2.2.3 0
24004 24005 4.4.4.4/32 Gi0/0/0/1 10.2.2.3 0
24005 Unlabelled 10.4.4.0/24 Gi0/0/0/0 10.1.1.1 0
24006 Unlabelled 5.5.5.5/32 Gi0/0/0/0 10.1.1.1 0
疎通確認
R1の1.1.1.1からR4の4.4.4.4へTracerouteを実施します。
R1はパケットにLabel 20401を付加して、R2に転送していることが確認できます。また、R2は受信したパケットのLabelを20401から24005に変更して、R3に転送していることが確認できます。
RP/0/RP0/CPU0:R1#traceroute 4.4.4.4 source 1.1.1.1
Type escape sequence to abort.
Tracing the route to 4.4.4.4
1 10.1.1.2 [MPLS: Label 20401 Exp 0] 24 msec 36 msec 18 msec
2 10.2.2.3 [MPLS: Label 24005 Exp 0] 8 msec 15 msec 14 msec
3 10.3.3.4 21 msec * 19 msec
コメント