今回はOSPFのマルチエリア構成で使用されるAttach Flagについて説明します。
概要
OSPFのAttach Flag
OSPFの特性上、マルチエリア構成の場合、特定のエリアのルータは別のエリアに存在するPrefixは認識できますが、ネットワークの構造は認識できません。(Router LSA、Network LSA、OSPFv2 Extended Link Opaque LSAは他のエリアには投入されないため)
下図のように、R3が直接接続されているエリア1の10.4.4.0/24にPrefix SIDを割り当てたとします。ABRであるR3はエリア1のPrefix SIDの情報をエリア0に投入し、R2とR1に広報します。この結果、R1とR2はPrefix SIDとして20301を認識できます。
しかし、R1とR2はエリア1のRouter LSAやNetwork LSA等の情報を保持していないため、10.4.4.0/24がR3の奥に存在することは認識できますが、10.4.4.0/24がR3と直接接続しているかは分かりません。
この結果、R2は10.4.4.0/24のPrefix SIDである20301宛のパケットを受信した際、PHPを実施せずに、SIDを付加した状態でパケットをR3に転送するため、無駄が発生してしまいます。
上記のように、本来はPHPを実施すべき箇所でPHPが実施されない問題を回避するために、OSPFv2 Extended Prefix Opaque LSAにはA(Attach) Flagが存在します。
ABRは特定のエリアのOSPFv2 Extended Prefix Opaque LSAを他のエリアに投入する際、そのPrefixがABRに直接接続されている場合、A Flagをセットします。
A FlagがセットされたOSPFv2 Extended Prefix Opaque LSAを学習した他のエリアのルータは、そのPrefixがABRに直接接続されていると判断し、ABRにパケットを転送する際、PHPを実施し、パケットからSIDを削除します。
検証の基本設定
基本設定の内容
R1-R2-R3間でOSPF Area 0、R3-R4間でOSPF Area 1を構成します。
OSPFでSRを有効にします。
R3でLoopback Interfaceの3.3.3.3/32にPrefix SIDとして20301を割り当てます。
R4でLoopback Interfaceの4.4.4.4/32にPrefix SIDとして20401を割り当てます。
初期設定
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
!
interface GigabitEthernet0/0/0/1
ipv4 address 10.3.3.3 255.255.255.0
!
router ospf 1
router-id 3.3.3.3
segment-routing mpls
area 0
interface GigabitEthernet0/0/0/0
network point-to-point
!
!
area 1
interface Loopback0
prefix-sid absolute 20301
!
interface GigabitEthernet0/0/0/1
network point-to-point
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
segment-routing mpls
area 1
interface Loopback0
prefix-sid absolute 20401
!
interface GigabitEthernet0/0/0/0
network point-to-point
状態確認
LSDBの確認
R3は3.3.3.3/32と4.4.4.4/32のOSPFv2 Exteded Prefix Opaque LSAをエリア0に投入する際、直接接続されている3.3.3.3/32のA Flagのみセットします。
エリア0に投入された3.3.3.3/32のOSPFv2 Extended Prefix Opaque LSAのA Flagがセットされていることが確認できます。
RP/0/RP0/CPU0:R1#show ospf database opaque-area 7.0.0.2 adv-router 3.3.3.3
OSPF Router with ID (1.1.1.1) (Process ID 1)
Type-10 Opaque Link Area Link States (Area 0)
LS age: 443
Options: (No TOS-capability, DC)
LS Type: Opaque Area Link
Link State ID: 7.0.0.2
Opaque Type: 7
Opaque ID: 2
Advertising Router: 3.3.3.3
LS Seq Number: 80000001
Checksum: 0x75b0
Length: 44
Extended Prefix TLV: Length: 20
Route-type: 3
AF : 0
Flags : 0xc0
Prefix : 3.3.3.3/32
SID sub-TLV: Length: 8
Flags : 0x0
MTID : 0
Algo : 0
SID Index : 4301
一方、エリア0に投入された4.4.4.4/32のOSPFv2 Extended Prefix Opaque LSAのA Flagはセットされていないことが確認できます。
RP/0/RP0/CPU0:R1#show ospf database opaque-area 7.0.0.1 adv-router 3.3.3.3
OSPF Router with ID (1.1.1.1) (Process ID 1)
Type-10 Opaque Link Area Link States (Area 0)
LS age: 384
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: 80000001
Checksum: 0xa25c
Length: 44
Extended Prefix TLV: Length: 20
Route-type: 3
AF : 0
Flags : 0x40
Prefix : 4.4.4.4/32
SID sub-TLV: Length: 8
Flags : 0x40
MTID : 0
Algo : 0
SID Index : 4401
以下はエリア0に投入された3.3.3.3/32のOSPFv2 Extended Prefix Opaque LSAのキャプチャになります。A Flagがセットされていることが確認できます。
LFIBの確認
R2のLFIBを見ると、R3に直接接続されている3.3.3.3/32のOutgoing LabelがPopなので、PHPが有効なことが確認できます。一方、R3に直接接続されていない4.4.4.4/32のOutgoing Labelは20401なので、PHPが無効なことが確認できます。
RP/0/RP0/CPU0:R2#show mpls forwarding
Local Outgoing Prefix Outgoing Next Hop Bytes
Label Label or ID Interface Switched
------ ----------- ------------------ ------------ --------------- ------------
20301 Pop SR Pfx (idx 4301) Gi0/0/0/1 10.2.2.3 0
20401 20401 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 Pop SR Adj (idx 0) Gi0/0/0/1 10.2.2.3 0
疎通確認
R1の1.1.1.1からR3の3.3.3.3へTracerouteを実施します。
R2はSIDを削除してから、R3にパケットを転送していることが確認できます。
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] 84 msec 99 msec 93 msec
2 10.2.2.3 100 msec * 96 msec
R1の1.1.1.1からR4の4.4.4.4へTracerouteを実施します。
R2はSIDを削除せずに、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 20401 Exp 0] 8 msec 15 msec 14 msec
3 10.3.3.4 21 msec * 19 msec
コメント