今回はOSPFを使用したSegment RoutingでのExplicit Nullの動作を見ていきます。
概要
OSPFのExplicit Null
従来のMPLSと同様で、SRでもPHPが動作し、End-pointの1つ手前のルータでパケットからThimヘッダが削除されます。
例えば、MPLS網内でThimヘッダのEXP(Experimental)ビットを変更した場合でも、End-pointに届いたパケットにはThimヘッダは存在しません。この結果、End-pointでIPヘッダのToSフィールドにThimヘッダのEXPビットの値をコピーすることができません。
End-pointでIPヘッダのToSフィールドにThimヘッダのExpビットをコピーできるようにようにするために、Explicit Nullと呼ばれる手法が存在します。
Explicit Nullが有効な場合、End-pointの1つ手前のルータはパケットからThimヘッダを削除しません。その代わりに、ThimヘッダのLabelを0に変更して、End-pointに転送します。
この結果、End-pointはIPヘッダのToSフィールドにThimヘッダのExpビットをコピーできます。
Explicit Nullが有効な場合、OSPFでは、OSPFv2 Extended Prefix Opaque LSA内のPrefix SID Sub-TLVのE(Explicit Null) FlagとNP(No-PHP) Flagがセットされます。
これにより、End-pointの1つ手前のルータは、パケットからThimヘッダを削除せず、Labelを0に変更して、パケットを転送します。
検証の基本設定
基本設定の内容
R1-R2-R3間でOSPF Area 0を構成します。
OSPFでSRを有効にします。
R3でLoopback Interfaceの3.3.3.3/32にPrefix SIDとして20301を割り当てます。また、Explicit Nullを有効にします。
初期設定
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
!
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 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
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
!
router ospf 1
router-id 3.3.3.3
segment-routing mpls
area 0
interface Loopback0
prefix-sid absolute 20301 explicit-null
!
interface GigabitEthernet0/0/0/0
network point-to-point
設定と状態の確認
設定の確認
Explicit Nullを有効にするには、explicit-nullオプションを指定します。これによりPrefix SID Sub-TLVのE FlagとNP Flagがセットされます。
router ospf 1
area 0
interface Loopback0
prefix-sid absolute 20301 explicit-null
LSDBの確認
R3が生成したOSPFv2 Extended Prefix Opaque LSA内のSID Sub-TLVのE FlagとNP Flagがセットされていることが確認できます。
RP/0/RP0/CPU0:R3#show ospf database opaque-area 7.0.0.1 adv-router 3.3.3.3
OSPF Router with ID (3.3.3.3) (Process ID 1)
Type-10 Opaque Link Area Link States (Area 0)
LS age: 309
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: 3.3.3.3
LS Seq Number: 80000004
Checksum: 0x5cf9
Length: 44
Extended Prefix TLV: Length: 20
Route-type: 1
AF : 0
Flags : 0x40
Prefix : 3.3.3.3/32
SID sub-TLV: Length: 8
Flags : 0x50
MTID : 0
Algo : 0
SID Index : 4301
以下はR3が生成したOSPFv2 Extended Prefix Opaque LSAのキャプチャになります。E FlagとNP Flagがセットされていることが確認できます。
LFIBの確認
R2のLFIBを見ると、3.3.3.3/32のOutgoing LabelがExplicit Nullであることが確認できます。
RP/0/RP0/CPU0:R1#show mpls forwarding
Local Outgoing Prefix Outgoing Next Hop Bytes
Label Label or ID Interface Switched
------ ----------- ------------------ ------------ --------------- ------------
20301 20301 SR Pfx (idx 4301) Gi0/0/0/0 10.1.1.2 500
24000 Pop SR Adj (idx 0) Gi0/0/0/0 10.1.1.2 0
RP/0/RP0/CPU0:R2#show mpls forwarding
Local Outgoing Prefix Outgoing Next Hop Bytes
Label Label or ID Interface Switched
------ ----------- ------------------ ------------ --------------- ------------
20301 Exp-Null-v4 SR Pfx (idx 4301) Gi0/0/0/1 10.2.2.3 500
24000 Pop SR Adj (idx 0) Gi0/0/0/0 10.1.1.1 0
24001 Pop SR Adj (idx 0) Gi0/0/0/1 10.2.2.3 0
疎通確認
R1の1.1.1.1からR3の3.3.3.3へPingを実施します。(Tracerouteの結果からはExplicit Null用のLabelが確認できないため)
以下はR2-R3間でキャプチャしたR1の1.1.1.1からR3の3.3.3.3へのICMP Echoになります。パケットにThimヘッダが付加されており、かつ、Labelが0であることが確認できます。
コメント