はじめに
SRv6環境を確認しながら「Segment Routing Part III: SRv6」を読んだら理解が深まるかなーと思い、CML2でSRv6を構築してみようという話の第二回です。SRv6 の概念を押さえた前回から一歩進み、今回はいよいよ構築フェーズに入ります。
完成形の config を最初に示しておくので、全体像を掴んでから細部を追うもよし、記事を読み進めながら進めるもよし。
「そもそも SRv6 って何だっけ?」という方は、前回の Introduction1 を軽く眺めておくと今回の構築編がより楽しめます。
CE から PE、そして SRv6 コアへと、L3VPN over SRv6 が形になる過程を一緒に見ていきましょう。
SRv6検証(IPv4 L3VPN over SRv6)その壱(Introduction)
SRv6検証(IPv4 L3VPN over SRv6)その弐(Implementation)
↑ 今回はココ
SRv6検証(IPv4 L3VPN over SRv6)その参(Validation)
- はじめに
- 1. Topology
- 2.Config
- 3.Implementation
- おわりに
1. Topology


2.Config
本blogでは、Step1〜8 に沿ってSRv6(IPv4 L3VPN over SRv6)を構築する手順を解説していきます。
先に完成形を確認したい方向けに、最初にコンフィグ一式を掲載しておきます。
見るかどうかはお好みでどうぞ。
【CE1(IOS-XE) - Config】▼完成版Configはこちら。記事を読み進めながら構築したい方はスルーでOKです。
!CE1 ! conf t ! no ip domain lookup ! interface GigabitEthernet1 ip address 192.0.2.2 255.255.255.0 no shutdown ! ip route 0.0.0.0 0.0.0.0 192.0.2.1 ! end write
【PE1(IOS-XR) - Config】▼完成版Configはこちら。記事を読み進めながら構築したい方はスルーでOKです。
hostname PE1
!
vrf RED
rd 64512:1
address-family ipv4 unicast
import route-target
64512:200
!
export route-target
64512:100
!
!
!
line default
exec-timeout 0 0
!
interface Loopback0
ipv6 address fc00::1/128
!
interface GigabitEthernet0/0/0/0
vrf RED
ipv4 address 192.0.2.1 255.255.255.0
!
interface GigabitEthernet0/0/0/1
ipv6 enable
!
router isis CORE
is-type level-2-only
net 49.0001.0000.0000.0001.00
address-family ipv6 unicast
metric-style wide
segment-routing srv6
locator IPA
!
!
!
interface Loopback0
address-family ipv6 unicast
!
!
interface GigabitEthernet0/0/0/1
address-family ipv6 unicast
!
!
!
router bgp 64512
bgp router-id 10.0.0.1
address-family vpnv4 unicast
segment-routing srv6
locator IPA
!
!
neighbor fc00::3
remote-as 64512
update-source Loopback0
address-family vpnv4 unicast
!
!
vrf RED
rd 64512:1
address-family ipv4 unicast
segment-routing srv6
alloc mode per-vrf
!
redistribute connected
!
!
!
segment-routing
srv6
locators
locator IPA
prefix fc00:0:0:1::/64
!
!
!
!
end
【P1(IOS-XR) - Config】▼完成版Configはこちら。記事を読み進めながら構築したい方はスルーでOKです。
hostname P1 ! line default exec-timeout 0 0 ! interface GigabitEthernet0/0/0/0 ipv6 enable ! interface GigabitEthernet0/0/0/1 ipv6 enable ! router isis CORE is-type level-2-only net 49.0001.0000.0000.0002.00 address-family ipv6 unicast metric-style wide ! interface GigabitEthernet0/0/0/0 address-family ipv6 unicast ! ! interface GigabitEthernet0/0/0/1 address-family ipv6 unicast ! ! ! end
【PE2(IOS-XR) - Config】▼完成版Configはこちら。記事を読み進めながら構築したい方はスルーでOKです。
hostname PE2
!
vrf BLUE
rd 64512:2
address-family ipv4 unicast
import route-target
64512:100
!
export route-target
64512:200
!
!
!
line default
exec-timeout 0 0
!
interface Loopback0
ipv6 address fc00::3/128
!
interface GigabitEthernet0/0/0/0
ipv6 enable
!
interface GigabitEthernet0/0/0/1
vrf BLUE
ipv4 address 198.51.100.1 255.255.255.0
!
router isis CORE
is-type level-2-only
net 49.0001.0000.0000.0003.00
address-family ipv6 unicast
metric-style wide
segment-routing srv6
locator IPA
!
!
!
interface Loopback0
address-family ipv6 unicast
!
!
interface GigabitEthernet0/0/0/0
address-family ipv6 unicast
!
!
!
router bgp 64512
bgp router-id 10.0.0.3
address-family vpnv4 unicast
segment-routing srv6
locator IPA
!
!
neighbor fc00::1
remote-as 64512
update-source Loopback0
address-family vpnv4 unicast
!
!
vrf BLUE
rd 64512:2
address-family ipv4 unicast
segment-routing srv6
alloc mode per-vrf
!
redistribute connected
!
!
!
segment-routing
srv6
locators
locator IPA
prefix fc00:0:0:3::/64
!
!
!
!
end
【CE2(IOS-XE) - Config】▼完成版Configはこちら。記事を読み進めながら構築したい方はスルーでOKです。
hostname CE2 ! no ip domain lookup ! interface GigabitEthernet1 ip address 198.51.100.2 255.255.255.0 no shutdown ! ip route 0.0.0.0 0.0.0.0 198.51.100.1 ! end
参考までに手元の検証環境のバージョンを記載します。
IOS-XE 17.03.02
※ IOS-XEは、どのバージョンでも良いです。
IOS-XR 7.4.12
※ IOS-XRは可能であれば、v7.4.1を使って欲しいです。
CML2 のIOS-XR は、IOS XRv 9000 Router なので、SRv6のサポートが開始されているバージョン(v7.0.1以降3)であれば何でも良いです。v7.4.1に拘る理由としては、このバージョンらへんまではEnd.OP SIDがあったので、それを観察するためです。機能差がある訳ではないです。
詳しくは次回「SRv6検証(IPv4 L3VPN over SRv6)その参(Validation)」で説明します。
3.Implementation
3.1 Step1:ノード配置
CML2でノードを配置します。詳しい手順は割愛します。
初期の頃よりも色々装飾できるようになりました。画面の上部にメニューがあります。 四角、丸、線、文字列、色付けたり、回転させたり...オブジェクトを配置できるのは嬉しいですね。

以降、順番にノードの設定をしていきます。
3.2 Step2:CE定義
CE1/CE2のインターフェースにIPv4アドレスを設定し、Default GatewayをPEに向けます。
① 左側のCE1を定義します。
IP: 192.0.2.2/24,GW:192.0.2.1
※ 192.0.2.0/24 is A.K.A. "Documentation (TEST-NET-1)" 4
CE1のDefault Gateway をPE1に向けておきます。
!CE1 ! conf t ! no ip domain lookup ! interface GigabitEthernet1 ip address 192.0.2.2 255.255.255.0 no shutdown ! ip route 0.0.0.0 0.0.0.0 192.0.2.1 ! end write
PE1はIP未定義ですので当然timeoutします。
CE1#ping 192.0.2.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 192.0.2.1, timeout is 2 seconds: ..... Success rate is 0 percent (0/5) CE1#
② 右側のCE2を定義します。
IP: 198.51.100.2/24,GW:198.51.100.1
※ 198.51.100.0/24 is A.K.A. "Documentation (TEST-NET-2)"5
CE2のDefault Gateway をPE2に向けておきます。
!CE2 ! conf t ! no ip domain lookup ! interface GigabitEthernet1 ip address 198.51.100.2 255.255.255.0 no shutdown ! ip route 0.0.0.0 0.0.0.0 198.51.100.1 ! end write
PE2もIP未定義ですので当然timeoutします。
CE2#ping 198.51.100.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 198.51.100.1, timeout is 2 seconds: ..... Success rate is 0 percent (0/5) CE2#
CEの設定はこれでお終いです。疎通できなくて変ですが、進めていくうちに接続できるようになりますので、そのまま次へ進みます。
3.3 Step3:SP Core定義その1
3.3.1 IPv6の有効化
PE1,P1,PE2でIPv6を有効化し、IPv6の疎通確認をします。
① PE1,P1,PE2でIPv6を有効化します。
本検証環境のSP Network ではノード間のIPv6はリンクローカルユニキャストアドレス6を使います。
IOS-XRのオンラインマニュアルは、以下の通りです。
RP/0/RP0/CPU0:PE1(config)#interface gigabitEthernet 0/0/0/1 RP/0/RP0/CPU0:PE1(config-if)#? ipv6 IPv6 interface subcommands RP/0/RP0/CPU0:PE1(config-if)#ipv6 ? enable Enable IPv6 on interface RP/0/RP0/CPU0:PE1(config-if)#ipv6 enable ? <cr>
設定するインターフェース名間違えないように、コピペに使ってください。
PE1:gigabitEthernet 0/0/0/1
P1:gigabitEthernet 0/0/0/0 と gigabitEthernet 0/0/0/1
PE2:gigabitEthernet 0/0/0/0
■interface gigabitEthernet 0/0/0/0
configure interface gigabitEthernet 0/0/0/0 ipv6 enable no shutdown commit end
■interface gigabitEthernet 0/0/0/1
configure interface gigabitEthernet 0/0/0/1 ipv6 enable no shutdown commit end
PE1,P1,PE2のインターフェース設定を終えたら簡単なテストをします。
以降、リンクローカルユニキャストアドレス(fe80::~)が表示される個所が多数あります。記事で示すものは表示例です。それぞれのコマンドを実行後に出力されるものを使用して確認してください。
② PE1のインターフェースの状況を確認します。
RP/0/RP0/CPU0:PE1#sh ipv6 int br | i "Up|fe80"
GigabitEthernet0/0/0/1 [Up/Up]
fe80::5054:ff:fe0f:7cff
RP/0/RP0/CPU0:PE1#
RP/0/RP0/CPU0:PE1#clear ipv6 neighbors
RP/0/RP0/CPU0:PE1#
RP/0/RP0/CPU0:PE1#sh ipv6 neighbors
IPv6 Address Age Link-layer Add State Interface Location
[Mcast adjacency] - 0000.0000.0000 REACH Gi0/0/0/1 0/0/CPU0
RP/0/RP0/CPU0:PE1#
RP/0/RP0/CPU0:PE1#
clear ipv6 neighborsをしているのは変化を確認したいためです。
③ P1でインターフェースの状況を確認します。
RP/0/RP0/CPU0:P1#sh ipv6 int br | in "Up|fe80"
Loopback0 [Up/Up]
GigabitEthernet0/0/0/0 [Up/Up]
fe80::5054:ff:fe0c:14b6
GigabitEthernet0/0/0/1 [Up/Up]
fe80::5054:ff:fe01:889
RP/0/RP0/CPU0:P1#
RP/0/RP0/CPU0:P1#clear ipv6 neighbors
RP/0/RP0/CPU0:P1#
RP/0/RP0/CPU0:P1#sh ipv6 neighbors
IPv6 Address Age Link-layer Add State Interface Location
[Mcast adjacency] - 0000.0000.0000 REACH Gi0/0/0/0 0/0/CPU0
[Mcast adjacency] - 0000.0000.0000 REACH Gi0/0/0/1 0/0/CPU0
RP/0/RP0/CPU0:P1#
④ P1からPE1へpingコマンドで疎通確認をします。
pingの宛先は、PE1のリンクローカルユニキャストアドレスです。
RP/0/RP0/CPU0:PE1#sh ipv6 int br | i "Up|fe80"
GigabitEthernet0/0/0/1 [Up/Up]
fe80::5054:ff:fe0f:7cff
ping に続けてコピペしてEnterキーを押下すると、Output Interface:を聞いてきます。
RP/0/RP0/CPU0:P1#ping fe80::5054:ff:fe0f:7cff Output Interface:
⑤ PE1と隣接しているインターフェースを入力してEnterキーを押下すると、pingコマンドが実行します。
RP/0/RP0/CPU0:P1#ping fe80::5054:ff:fe0f:7cff Output Interface: GigabitEthernet0/0/0/0 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to fe80::5054:ff:fe0f:7cff, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 10/14/27 ms RP/0/RP0/CPU0:P1#
⑥ P1がPE1のPE1(Gi0/0/0/1)のリンクローカルユニキャストアドレスをGi0/0/0/0から学習していることが分かります。
【ping実行前】neighborは未学習ですが、
RP/0/RP0/CPU0:P1#sh ipv6 neighbors IPv6 Address Age Link-layer Add State Interface Location [Mcast adjacency] - 0000.0000.0000 REACH Gi0/0/0/0 0/0/CPU0 [Mcast adjacency] - 0000.0000.0000 REACH Gi0/0/0/1 0/0/CPU0 RP/0/RP0/CPU0:P1#
【ping実行後】★の行にあるとおり、P1のGi0/0/0/0の先にはPE1が存在することを学習しています。
RP/0/RP0/CPU0:P1#sh ipv6 neighbors IPv6 Address Age Link-layer Add State Interface Location ★fe80::5054:ff:fe0f:7cff 23 5254.000f.7cff REACH Gi0/0/0/0 0/0/CPU0 [Mcast adjacency] - 0000.0000.0000 REACH Gi0/0/0/0 0/0/CPU0 [Mcast adjacency] - 0000.0000.0000 REACH Gi0/0/0/1 0/0/CPU0 RP/0/RP0/CPU0:P1#
RP/0/RP0/CPU0:PE1#sh ipv6 int br | i "Up|fe80"
GigabitEthernet0/0/0/1 [Up/Up]
fe80::5054:ff:fe0f:7cff
⑦ 同様にPE1もP1(Gi0/0/0/0)のリンクローカルユニキャストアドレスをGi0/0/0/1から学習していることが分かります。
【ping実行前】neighborは未学習ですが、
RP/0/RP0/CPU0:PE1#sh ipv6 neighbors IPv6 Address Age Link-layer Add State Interface Location [Mcast adjacency] - 0000.0000.0000 REACH Gi0/0/0/1 0/0/CPU0 RP/0/RP0/CPU0:PE1#
【ping実行後】★の行にあるとおり、PE1のGi0/0/0/1の先にはP1が存在することを学習しています。
RP/0/RP0/CPU0:PE1#sh ipv6 neighbors IPv6 Address Age Link-layer Add State Interface Location ★fe80::5054:ff:fe0c:14b6 161 5254.000c.14b6 REACH Gi0/0/0/1 0/0/CPU0 [Mcast adjacency] - 0000.0000.0000 REACH Gi0/0/0/1 0/0/CPU0 RP/0/RP0/CPU0:PE1#
RP/0/RP0/CPU0:P1#sh ipv6 int br | in "Up|fe80"
Loopback0 [Up/Up]
GigabitEthernet0/0/0/0 [Up/Up]
fe80::5054:ff:fe0c:14b6
GigabitEthernet0/0/0/1 [Up/Up]
fe80::5054:ff:fe01:889
3.3.2 IS-IS定義
PE1,P1,PE2で、IS-ISを設定して簡単な接続確認をします。
① IS-ISを定義します。
●NSAP Addresses
・Area address = 49.0001
・System ID = 0000.0000.000x(PE1=1,P1=2,PE2=3)
・NSEL = 00
●ノード間はLevel-2接続
●PEのみインターフェースLoopback0もIS-ISを有効にする
∵最小構成としてPE間でのみBGPを動かしたいので
【IOS-XR:PE1のIS-IS定義コピペ用】
!PE1 ! conf ! router isis CORE is-type level-2-only net 49.1.0.0.1.00 address-family ipv6 unicast metric-style wide interface Loopback0 address-family ipv6 unicast interface GigabitEthernet0/0/0/1 address-family ipv6 unicast commit end
【IOS-XR:P1のIS-IS定義コピペ用】
!P1 ! conf ! router isis CORE is-type level-2-only net 49.1.0.0.2.00 address-family ipv6 unicast metric-style wide interface GigabitEthernet0/0/0/0 address-family ipv6 unicast interface GigabitEthernet0/0/0/1 address-family ipv6 unicast commit end
【IOS-XR:PE2のIS-IS定義コピペ用】
!PE2 ! conf ! router isis CORE is-type level-2-only net 49.1.0.0.3.00 address-family ipv6 unicast metric-style wide interface Loopback0 address-family ipv6 unicast interface GigabitEthernet0/0/0/0 address-family ipv6 unicast commit end
ここで覚えておいて欲しいことがあります。
CiscoのIS-ISは、Defaultが”metric-style narrow”です。
SRでは”metric-style wide”にする必要があります。
RP/0/RP0/CPU0:PE2(config)#router isis CORE RP/0/RP0/CPU0:PE2(config-isis)#address-family ipv6 unicast RP/0/RP0/CPU0:PE2(config-isis-af)#metric-style ? narrow Use old style of TLVs with narrow metric transition Send and accept both styles of TLVs during transition wide Use new style of TLVs to carry wider metric RP/0/RP0/CPU0:PE2(config-isis-af)#
よいかケンシロウ。なぜSRを使用するならIS-ISのmetricをwideにするかと言えばじゃ...
— やすお (@chimay_wh) 2024年10月15日
16bitのnarrow metricでは高度なtopology情報やPath計算が十分にできない...Aristaは例外でnarrow metricはない!忘れるでないぞ。 pic.twitter.com/QMRurzvfKA
さて、簡単にテストをしよう٩(๑>∀<๑)۶
RP/0/RP0/CPU0:PE1#sh isis hostname IS-IS CORE hostnames Level System ID Dynamic Hostname 2 * 0000.0000.0001 PE1 2 0000.0000.0002 P1 2 0000.0000.0003 PE2 RP/0/RP0/CPU0:PE1#
PE1にP1とPE2の情報が見れる状態です。System IDも間違っていない。もう少し詳しく確認してみます。
RP/0/RP0/CPU0:PE1#sh isis neighbors
IS-IS CORE neighbors:
System Id Interface SNPA State Holdtime Type IETF-NSF
P1 Gi0/0/0/1 5254.000c.14b6 Up 21 L2 Capable
Total neighbor count: 1
RP/0/RP0/CPU0:PE1#!
RP/0/RP0/CPU0:PE1#sh isis neighbors detail
IS-IS CORE neighbors:
System Id Interface SNPA State Holdtime Type IETF-NSF
P1 Gi0/0/0/1 5254.000c.14b6 Up 21 L2 Capable
Area Address(es): 49.0001
IPv6 Address(es): fe80::5054:ff:fe0c:14b6*
Topologies: 'IPv6 Unicast'
Uptime: 00:42:36
Total neighbor count: 1
RP/0/RP0/CPU0:PE1#!
RP/0/RP0/CPU0:PE1#sh isis interface brief
IS-IS CORE Interfaces
Interface All Adjs Adj Topos Adv Topos CLNS MTU Prio
OK L1 L2 Run/Cfg Run/Cfg L1 L2
----------------- --- --------- --------- --------- ---- ---- --------
Lo0 No
Gi0/0/0/1 Yes - 1* 1/1 1/1 Up 1497 - 64
RP/0/RP0/CPU0:PE1#
PE1では、隣接するP1が想定通りLevel-2で見えている。
RP/0/RP0/CPU0:P1#sh isis neighbors
IS-IS CORE neighbors:
System Id Interface SNPA State Holdtime Type IETF-NSF
PE1 Gi0/0/0/0 5254.000f.7cff Up 7 L2 Capable
PE2 Gi0/0/0/1 5254.0001.193a Up 7 L2 Capable
Total neighbor count: 2
RP/0/RP0/CPU0:P1#!
RP/0/RP0/CPU0:P1#sh isis neighbors detail
IS-IS CORE neighbors:
System Id Interface SNPA State Holdtime Type IETF-NSF
PE1 Gi0/0/0/0 5254.000f.7cff Up 7 L2 Capable
Area Address(es): 49.0001
IPv6 Address(es): fe80::5054:ff:fe0f:7cff*
Topologies: 'IPv6 Unicast'
Uptime: 00:16:00
PE2 Gi0/0/0/1 5254.0001.193a Up 7 L2 Capable
Area Address(es): 49.0001
IPv6 Address(es): fe80::5054:ff:fe01:193a*
Topologies: 'IPv6 Unicast'
Uptime: 00:16:00
Total neighbor count: 2
RP/0/RP0/CPU0:P1#!
RP/0/RP0/CPU0:P1#sh isis interface brief
IS-IS CORE Interfaces
Interface All Adjs Adj Topos Adv Topos CLNS MTU Prio
OK L1 L2 Run/Cfg Run/Cfg L1 L2
----------------- --- --------- --------- --------- ---- ---- --------
Gi0/0/0/1 Yes - 1 1/1 1/1 Up 1497 - 64
Gi0/0/0/1 Yes - 1 1/1 1/1 Up 1497 - 64
RP/0/RP0/CPU0:P1#
P1では、隣接するPE1とPE2が想定通りLevel-2で見えている。PE1と違いLoopback0はIS-ISで有効となっていないです。
RP/0/RP0/CPU0:PE2#sh isis neighbors
IS-IS CORE neighbors:
System Id Interface SNPA State Holdtime Type IETF-NSF
P1 Gi0/0/0/0 5254.0001.0889 Up 28 L2 Capable
Total neighbor count: 1
RP/0/RP0/CPU0:PE2#!
RP/0/RP0/CPU0:PE2#sh isis neighbors detail
IS-IS CORE neighbors:
System Id Interface SNPA State Holdtime Type IETF-NSF
P1 Gi0/0/0/0 5254.0001.0889 Up 28 L2 Capable
Area Address(es): 49.0001
IPv6 Address(es): fe80::5054:ff:fe01:889*
Topologies: 'IPv6 Unicast'
Uptime: 00:19:36
Total neighbor count: 1
RP/0/RP0/CPU0:PE2#!
RP/0/RP0/CPU0:PE2#sh isis interface brief
IS-IS CORE Interfaces
Interface All Adjs Adj Topos Adv Topos CLNS MTU Prio
OK L1 L2 Run/Cfg Run/Cfg L1 L2
----------------- --- --------- --------- --------- ---- ---- --------
Lo0 No
Gi0/0/0/0 Yes - 1* 1/1 1/1 Up 1497 - 64
RP/0/RP0/CPU0:PE2#
PE2では、隣接するP1が想定通りLevel-2で見えている。PE1と同様にLoopback0もIS-ISで有効になっています。
細かい話ですが、sh isis int br の出力結果で、Adjs(L2)に「*」がつくインターフェースが異なる可能性があります。 priorityの設定をしていませんので、PE1/P1/PE2いずれもpriority64(Default)です。SNPA(インターフェースのmacアドレス)のデカい方がDISとなり、「*」がつきます。詳細の説明はここでは割愛します。
ここからSRv6の設定をすこしづつ実施していきます。
3.4 Step4:Locator定義(Locatorの設計)
Srv6 には、uSID & SID(Full-Length SID)がありますが、今回はSID(Full-Length SID)について検証を行います。 uSID(Micro SID)はまだ勉強中で説明できるほど理解できていないので( ºωº; )
前回「SRv6検証(IPv4 L3VPN over SRv6)その壱(Introduction)」のTerminology(用語)で簡単に触れましたが、定義として使えるようにもう少し説明します。
SRv6のSIDは128bitあり、構成要素は Locator / Function / Argument の3つです。

●Locator:このSIDを割り当てたノードへ到達するための情報
※グローバルで一意かつルーティング可能であることが必要です!
これ ↑ 大変重要な点です!!
Locatorは以下の2つで構成しています。
・Locator Block(B)
・Node ID(N)
RFC 8986
Segment Routing over IPv6 (SRv6) Network Programming3.2. SID Allocation within an SR Domain
Locators are assigned consistent with IPv6 infrastructure allocation. For example, a network operator may:Assign block B::/48 to the SR domain
Assign a unique B:N::/64 block to each SRv6-enabled node in the domain
●Function:ノードによって実行するアクションを指定するための情報
※これを割り当てたローカルノードでのみ意味を持ち、他のノードでは解釈できない点が重要です。
●Argument:Functionの引数(オプション)
今回は以下のようにします。
・定義名(locator name)= IPA
・Locator(Prefix)= B:N::/64=fc00:0:0:x::/64
→ Locator Block(B)は” fc00:0:0: ” で、
Node ID(N)は、x は、PE1=1, PE2=3 とします。
3.5 Step5:SP Core定義その2(SRv6の要!)
PE1,PE2のインターフェースLoopback0にIPv6を設定し、簡単な疎通確認をします。
3.5.1 PEルーターのLoopback0設定
PE1,PE2のインターフェースLoopback0にIPv6を付与します。
今回付与するIPv6は、ユニークローカルアドレスにしています。(FC00::/7)7
PE1,PE2にだけ定義します。P1にはLoopback0の定義をしません。
このLoopback0は、BGPでvpnv4セッションを確立するために使います。
また、SRv6ではインターフェースLoopback0に付与したIPv6がSIDとして使われ、パケット転送の経路を決定します。
【IOS-XR:PE1 Loopback0定義コピペ用】
!PE1 ! configure interface loopback 0 ipv6 address fc00::1/128 commit end
【IOS-XR:PE2 Loopback0定義コピペ用】
!PE2 ! configure interface loopback 0 ipv6 address fc00::3/128 commit end
PE1で確認します。
RP/0/RP0/CPU0:PE1#show ipv6 int br | i "Up|fc|fe"
Loopback0 [Up/Up]
fe80::39e6:6cff:fe7e:af67
fc00::1
GigabitEthernet0/0/0/1 [Up/Up]
fe80::5054:ff:fe0f:7cff
RP/0/RP0/CPU0:PE1#
PE2も確認します。
RP/0/RP0/CPU0:PE2#show ipv6 int br | i "Up|fc|fe"
Loopback0 [Up/Up]
fe80::a134:aaff:fe17:1196
fc00::3
GigabitEthernet0/0/0/0 [Up/Up]
fe80::5054:ff:fe01:193a
RP/0/RP0/CPU0:PE2#
3.5.2 疎通確認
簡単な試験をしてみましょう。IPv4は未定義なので当然IPv4のルーティングテーブルには何もありません。
RP/0/RP0/CPU0:PE1#show route % No matching routes found RP/0/RP0/CPU0:PE1# RP/0/RP0/CPU0:PE1#show route ipv4 % No matching routes found RP/0/RP0/CPU0:PE1#
IPv6のルーティングテーブルには、PE2のLoopback0がPE1で学習済み(IS-IS Level-2)であることが分かります。
RP/0/RP0/CPU0:PE1#show route ipv6
Codes: C - connected, S - static, R - RIP, B - BGP, (>) - Diversion path
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - ISIS, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, su - IS-IS summary null, * - candidate default
U - per-user static route, o - ODR, L - local, G - DAGR, l - LISP
A - access/subscriber, a - Application route
M - mobile route, r - RPL, t - Traffic Engineering, (!) - FRR Backup path
Gateway of last resort is not set
L fc00::1/128 is directly connected,
00:03:25, Loopback0
i L2 fc00::3/128
[115/30] via fe80::5054:ff:fe0c:14b6, 00:00:29, GigabitEthernet0/0/0/1
RP/0/RP0/CPU0:PE1#
PE1からPE2に対してLoopback0のIPv6pingで疎通できることも確認できます。
RP/0/RP0/CPU0:PE1#ping fc00::3 source fc00::1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to fc00::3, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 9/14/28 ms RP/0/RP0/CPU0:PE1#
tracerouteをすると興味深い結果が得られます。
RP/0/RP0/CPU0:PE1#traceroute fc00::3 source fc00::1 Type escape sequence to abort. Tracing the route to fc00::3 1 ::ffff:0.0.0.0 24 msec 10 msec 12 msec 2 fc00::3 27 msec 20 msec 14 msec RP/0/RP0/CPU0:PE1#
Transit NodeであるP1には、ユニークローカルアドレスを付与していません。(PE1/PE2とは違い、Loopback0にIPv6アドレスを設定していない)
するとこのようにIPv4射影アドレス(::ffff:0.0.0.0)を経由するように見えます。
3.6 Step6:SP Core定義その3
CE-PE間でVRFを設定し、簡単な疎通確認をします。
3.6.1 L3VPN(CE-PE間のVRF設定)
CE-PE間のvrfを定義します。
■CE1-PE1
vrf:RED
Route Distinguisher:64512:1
Import Route Target:64512:200
Export Route Target:64512:100
■CE2-PE2
vrf:BLUE
Route Distinguisher:64512:2
Import Route Target:64512:100
Export Route Target:64512:200
図示するとこのようになります。
① VRF nameは見た目のままでVRFの名前です。CE1(左)とCE2(右)で揃えても揃えなくてもどっちでも良いです。
② Route Distinguisher(以降、RDと省略します)はL3VPNの端にあるCEを識別するために使います。フォーマットは色々あるのですが、今回は私が良く使う”2-byte AS number”で設定します。
CE1(左)を識別するのに使うRDは、64512:1としていますが、コロン左側の64512は今回使うBGPのAS numberを64512にしたからです。コロン右側の1はCE1の1です。
混乱するかもしれませんが、設定するL3VPNでRDの重複さえなければぶっちゃけ何でも良いのです。1:1でも良いです。
CE2(右)を識別するのに使うRDは、64512:2としています。理由はCE1と同様です。
③ Route Target(以降、RTと省略します)は、VPN間で経路情報をインポート・エクスポートする際に属性を持たせて通信を制御するために使います。フォーマットは色々あるのですが、今回は私が良く使う”2-byte AS number”で設定します。
PE1(左)で定義するRTでは、CE1(左)からCE2(右)に向かう方向をExport RT「64512:100」とします。コロン左側の64512は今回使うBGPのAS numberを64512にしたからです。コロン右側の100は適当です。
ココで重要なのは、対向のExport RTとImport RTは同じである必要があります。つまり、PE2(右)で定義するRTでは、CE1(左)からCE2(右)に向かう方向をImport RT「64512:100」とする必要があるということです。図の青い破線がExport RTとImport RTが一対になっていることを表しています。

混乱するかもしれませんが、設定するL3VPNでExport RTとImport RTが1対になってさえいれば、ぶっちゃけ何でも良いのです。全部1:1でも良いです。
AFI/SAFIを指定するのを忘れないようにします。今回はCE1,CE2で扱うのは、address-family ipv4 unicast(AFI:ipv4,SAFI:unicast)です。
AFIとは、Address Family Identifier の略で、伝達するプロトコルのアドレスを識別する情報のことです。
代表的なもの AFI = 1 ⇒ IPv4 AFI = 2 ⇒ IPv6
SAFI (Subsequent-AFI)とは、AFI で識別されたプロトコルの詳細識別のことです。
代表的なもの Sub-AFI = 1 (SAFI=1) ⇒ Unicast Sub-AFI = 2 (SAFI=2) ⇒ Multicast Sub-AFI = 4 (SAFI=4) ⇒ NLRI with MPLS Labels Sub-AFI = 128 (SAFI=128) ⇒ MPLS-labeled VPN address
詳細は以下をご参照ください。
www.iana.org
www.iana.org
ipv4 unicast 今もなお更新し続けられているのがすごいな!
AFI/SAFIて凄いな
— やすお (@chimay_wh) 2025年7月26日
今もなお更新されて増えてるw
ipv4 unicast
AFI : ipv4, SAFI : unicast
今月一体何が更新されたんだろ?https://t.co/XEFgTPJp56 pic.twitter.com/qrUkonFrKm
【IOS-XR:PE1のvrfを定義コピペ用】
!PE1 ! configure vrf RED rd 64512:1 address-family ipv4 unicast import route-target 64512:200 export route-target 64512:100 root interface gigabitEthernet 0/0/0/0 no shutdown no ipv4 add vrf RED ipv4 add 192.0.2.1/24 commit end
【IOS-XR:PE2のvrfを定義コピペ用】
!PE2 ! configure vrf BLUE rd 64512:2 address-family ipv4 unicast import route-target 64512:100 export route-target 64512:200 root interface gigabitEthernet 0/0/0/1 no shutdown no ipv4 add vrf BLUE ipv4 add 198.51.100.1/24 commit end
PE1で確認します。
RP/0/RP0/CPU0:PE1#show ip int br | i Up
Loopback0 unassigned Up Up default
GigabitEthernet0/0/0/0 192.0.2.1 Up Up RED
GigabitEthernet0/0/0/1 unassigned Up Up default
RP/0/RP0/CPU0:PE1#
RP/0/RP0/CPU0:PE1#show vrf RED
VRF RD RT AFI SAFI
RED 64512:1
import 64512:200 IPV4 Unicast
export 64512:100 IPV4 Unicast
RP/0/RP0/CPU0:PE1#
PE2で確認します。
RP/0/RP0/CPU0:PE2#sh ip int br | i Up
Loopback0 unassigned Up Up default
GigabitEthernet0/0/0/0 unassigned Up Up default
GigabitEthernet0/0/0/1 198.51.100.1 Up Up BLUE
RP/0/RP0/CPU0:PE2#
RP/0/RP0/CPU0:PE2#show vrf BLUE
VRF RD RT AFI SAFI
BLUE 64512:2
import 64512:100 IPV4 Unicast
export 64512:200 IPV4 Unicast
RP/0/RP0/CPU0:PE2#
3.6.2 疎通確認
PE1のルーティングテーブル(vrf RED)を確認します。
RP/0/RP0/CPU0:PE1#show route vrf RED
Codes: C - connected, S - static, R - RIP, B - BGP, (>) - Diversion path
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - ISIS, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, su - IS-IS summary null, * - candidate default
U - per-user static route, o - ODR, L - local, G - DAGR, l - LISP
A - access/subscriber, a - Application route
M - mobile route, r - RPL, t - Traffic Engineering, (!) - FRR Backup path
Gateway of last resort is not set
C 192.0.2.0/24 is directly connected, 00:01:35, GigabitEthernet0/0/0/0
L 192.0.2.1/32 is directly connected, 00:01:35, GigabitEthernet0/0/0/0
RP/0/RP0/CPU0:PE1#
PE1のGigabitEthernet0/0/0/0にvrf(RED)でIP 192.0.2.1/24を付与したので、CE1からPE1へ疎通できるようになります。
CE1#ping 192.0.2.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 192.0.2.1, timeout is 2 seconds: .!!!! Success rate is 80 percent (4/5), round-trip min/avg/max = 3/18/64 ms CE1# CE1#ping 192.0.2.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 192.0.2.1, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 8/17/42 ms CE1#
pingの一発目が欠けるのは、初回はarp未解決だけど、2発目以降はarp解決が完了しているから問題なく応答があります。
PE2のルーティングテーブル(vrf BLUE)を確認します。
RP/0/RP0/CPU0:PE2#show route vrf BLUE
Codes: C - connected, S - static, R - RIP, B - BGP, (>) - Diversion path
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - ISIS, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, su - IS-IS summary null, * - candidate default
U - per-user static route, o - ODR, L - local, G - DAGR, l - LISP
A - access/subscriber, a - Application route
M - mobile route, r - RPL, t - Traffic Engineering, (!) - FRR Backup path
Gateway of last resort is not set
C 198.51.100.0/24 is directly connected, 00:09:07, GigabitEthernet0/0/0/1
L 198.51.100.1/32 is directly connected, 00:09:07, GigabitEthernet0/0/0/1
RP/0/RP0/CPU0:PE2#
PE2のGigabitEthernet0/0/0/0にvrf(BLUE)でIP 198.51.100.1/24を付与したので、CE2からPE2へ疎通できるようになります。
CE2#ping 198.51.100.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 198.51.100.1, timeout is 2 seconds: .!!!! Success rate is 80 percent (4/5), round-trip min/avg/max = 3/13/42 ms CE2# CE2#ping 198.51.100.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 198.51.100.1, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 2/2/3 ms CE2#
こちらもpingの一発目が欠けていますが、先ほどと同じ理由です。
3.7 Step7:BGP定義(BGP設定とBGPのSRv6設定)
BGPはIGPなどでReachabilityが担保されていないと機能しません。定義をする順序としては、ルーターGlobal とIS-ISでSRv6を定義してからBGPでSRv6を定義するのが良いかと思いますが、ここでは敢えて逆の順序で定義していきます。
3.7.1 BGP定義
BGPでSRv6を使えるように「vrf」と「vpnv4」に定義をします。
細かいことを言うと、vrfにSRv6を定義するのではなく、BGPの中で使うvrfでSRv6を定義します。

今回は、PE1-PE2間でBGP(vpnv4)をSRv6で定義します。
CCO極稀に嘘書いてあるからなー。OSで確認できるオンラインマニュアルから学ぶこともあると思います。
RP/0/RP0/CPU0:PE1#configure RP/0/RP0/CPU0:PE1(config)#router bgp 64512 ? address-family Enter Address Family command mode RP/0/RP0/CPU0:PE1(config)#router bgp 64512 address-family ? vpnv4 VPNv4 Address Family RP/0/RP0/CPU0:PE1(config)#router bgp 64512 address-family vpnv4 ? unicast Address Family modifier RP/0/RP0/CPU0:PE1(config)#router bgp 64512 address-family vpnv4 unicast ? segment-routing (Deprecated from 7.4.1) Specify Segment-routing configu rations RP/0/RP0/CPU0:PE1(config)#router bgp 64512 address-family vpnv4 unicast segment-routing ? srv6 (Deprecated from 7.4.1) Replaced by segment-routing srv6 config under vr f all RP/0/RP0/CPU0:PE1(config)#$ily vpnv4 unicast segment-routing srv6 ? locator Specify locator RP/0/RP0/CPU0:PE1(config)#$ily vpnv4 unicast segment-routing srv6 locator ? WORD locator name RP/0/RP0/CPU0:PE1(config)#$ily vpnv4 unicast segment-routing srv6 locator IPA ? <cr> RP/0/RP0/CPU0:PE1(config)#router bgp 64512 address-family vpnv4 unicast seg sr$ RP/0/RP0/CPU0:PE1(config)#show Building configuration... !! IOS XR Configuration 7.4.1 router bgp 64512 address-family vpnv4 unicast segment-routing srv6 locator IPA ! ! ! end RP/0/RP0/CPU0:PE1(config)#
CE-PE間におけるBGPのSRv6をオンラインマニュアルで見ると
RP/0/RP0/CPU0:PE1#configure
RP/0/RP0/CPU0:PE1(config)#router bgp 64512
RP/0/RP0/CPU0:PE1(config-bgp)#?
vrf Specify a vrf name
RP/0/RP0/CPU0:PE1(config-bgp)#vrf ?
RED VRF name
WORD VRF name - maximum length 32 characters
RP/0/RP0/CPU0:PE1(config-bgp)#vrf RED ?
address-family Enter Address Family command mode
RP/0/RP0/CPU0:PE1(config-bgp)#vrf RED address-family ?
ipv4 IPv4 Address Family
RP/0/RP0/CPU0:PE1(config-bgp)#vrf RED address-family ipv4 ?
unicast Address Family modifier
RP/0/RP0/CPU0:PE1(config-bgp)#vrf RED address-family ipv4 unicast ?
segment-routing Specify Segment-routing configurations
RP/0/RP0/CPU0:PE1(config-bgp)#$unicast segment-routing ?4 unicast seg
srv6 Specify SRv6 configurations
RP/0/RP0/CPU0:PE1(config-bgp)#$unicast segment-routing srv6 ?
alloc SID Allocation
RP/0/RP0/CPU0:PE1(config-bgp)#$unicast segment-routing srv6 alloc ?
mode SID Allocation mode
RP/0/RP0/CPU0:PE1(config-bgp)#$unicast segment-routing srv6 alloc mode ?
per-ce Set per CE label mode
per-vrf Set per VRF label mode
RP/0/RP0/CPU0:PE1(config-bgp)#$unicast segment-routing srv6 alloc mode per-vrf ?
<cr>
RP/0/RP0/CPU0:PE1(config-bgp)#vrf RED address-family ipv4 unicast segment-rout$
RP/0/RP0/CPU0:PE1(config-bgp)#show
router bgp 64512
vrf RED
address-family ipv4 unicast
segment-routing srv6
alloc mode per-vrf
!
!
!
!
RP/0/RP0/CPU0:PE1(config-bgp)#
今回は、CE-PEが1対向しかないので”per-ce”でも”per-vrf”でも同じことです。
vrfごとにSIDを識別したいのか?CEごとにSIDを識別したいのか、PEにぶら下がっているCEをどのように管理したいかによって使い分ければよいかと
定義の作り方が分かったのでそれぞれを定義していきます。
PE1にBGPを定義します。SRv6のlocatorは、「3.4 Step4:Locator定義(Locatorの設計)」で決めた通りIPAとします。
余談ですが、Locatorの名称は私の好きなビールIPA(India Pale Ale)にしています。
【IOS-XR:PE1のBGPを定義コピペ用】
!PE1 ! configure ! router bgp 64512 bgp router-id 10.0.0.1 address-family vpnv4 unicast segment-routing srv6 locator IPA ! ! neighbor fc00::3 remote-as 64512 update-source Loopback0 address-family vpnv4 unicast ! ! vrf RED rd 64512:1 address-family ipv4 unicast segment-routing srv6 alloc mode per-vrf ! redistribute connected ! ! ! commit end
【IOS-XR:PE2のBGPを定義コピペ用】
!PE2 ! configure ! router bgp 64512 bgp router-id 10.0.0.3 address-family vpnv4 unicast segment-routing srv6 locator IPA ! ! neighbor fc00::1 remote-as 64512 update-source Loopback0 address-family vpnv4 unicast ! ! vrf BLUE rd 64512:2 address-family ipv4 unicast segment-routing srv6 alloc mode per-vrf ! redistribute connected ! ! ! commit end
3.7.2 疎通確認
簡単なテストをしていきます。
PE1を見るとPE2(fc00::3)とiBGPが確立できていますが、showコマンドの出力結果の右下に注目すると「 St/PfxRcd が 0 」であることからVPNV4経路は何も受信していません。
RP/0/RP0/CPU0:PE1#show bgp all all summary Address Family: VPNv4 Unicast ----------------------------- BGP router identifier 10.0.0.1, local AS number 64512 BGP generic scan interval 60 secs Non-stop routing is enabled BGP table state: Active Table ID: 0x0 RD version: 0 BGP main routing table version 4 BGP NSR Initial initsync version 4 (Reached) BGP NSR/ISSU Sync-Group versions 0/0 BGP scan interval 60 secs BGP is operating in STANDALONE mode. Process RcvTblVer bRIB/RIB LabelVer ImportVer SendTblVer StandbyVer Speaker 4 4 4 4 4 0 Neighbor Spk AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down St/PfxRcd fc00::3 0 64512 111 111 4 0 0 01:48:34 0 RP/0/RP0/CPU0:PE1#
PE2を見るとPE1(fc00::1)とiBGPが確立できていますが、showコマンドの出力結果の右下に注目すると「 St/PfxRcd が 0 」であることからVPNV4経路は何も受信していません。
RP/0/RP0/CPU0:PE2#show bgp all all summary Address Family: VPNv4 Unicast ----------------------------- BGP router identifier 10.0.0.3, local AS number 64512 BGP generic scan interval 60 secs Non-stop routing is enabled BGP table state: Active Table ID: 0x0 RD version: 0 BGP main routing table version 4 BGP NSR Initial initsync version 4 (Reached) BGP NSR/ISSU Sync-Group versions 0/0 BGP scan interval 60 secs BGP is operating in STANDALONE mode. Process RcvTblVer bRIB/RIB LabelVer ImportVer SendTblVer StandbyVer Speaker 4 4 4 4 4 0 Neighbor Spk AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down St/PfxRcd fc00::1 0 64512 112 112 4 0 0 00:04:37 0 RP/0/RP0/CPU0:PE2#
3.8 Step8:IGP&Global定義(IS-ISとルーター全体のSRv6設定)
最後の設定です。PE1、PE2でSRv6の設定をして、簡単な疎通確認をします。
3.8.1 IGP&Global定義
PE1,PE2にのみSRv6を定義します。P1はTransit NodeなのでSRv6を定義しません。

IS-ISのSRv6を定義するためにオンラインマニュアルを見ます。
RP/0/RP0/CPU0:PE1#configure RP/0/RP0/CPU0:PE1(config)#router isis CORE ? address-family Enter the IS-IS address-family configuration submode RP/0/RP0/CPU0:PE1(config)#router isis CORE address-family ? ipv6 IPV6 address family RP/0/RP0/CPU0:PE1(config)#router isis CORE address-family ipv6 ? unicast unicast topology RP/0/RP0/CPU0:PE1(config)#router isis CORE address-family ipv6 unicast ? segment-routing Enable Segment Routing RP/0/RP0/CPU0:PE1(config)#$ily ipv6 unicast segment-routing ? srv6 Enable SRv6 RP/0/RP0/CPU0:PE1(config)#$ily ipv6 unicast segment-routing srv6 ? locator Enter SRv6 Locator submode RP/0/RP0/CPU0:PE1(config)#$ily ipv6 unicast segment-routing srv6 locator ? WORD Locator name RP/0/RP0/CPU0:PE1(config)#$ily ipv6 unicast segment-routing srv6 locator IPA ? <cr> RP/0/RP0/CPU0:PE1(config)#router isis CORE address-family ipv6 unicast segment$ RP/0/RP0/CPU0:PE1(config-isis-srv6-loc)#show router isis CORE address-family ipv6 unicast segment-routing srv6 locator IPA ! ! ! ! RP/0/RP0/CPU0:PE1(config-isis-srv6-loc)#
Global Configuration modeでSRv6を定義するためにオンラインマニュアルを見ます。
RP/0/RP0/CPU0:PE1#configure
RP/0/RP0/CPU0:PE1(config)#?
segment-routing Segment Routing
RP/0/RP0/CPU0:PE1(config)#segment-routing ?
srv6 Segment Routing with IPv6 dataplane
RP/0/RP0/CPU0:PE1(config)#segment-routing srv6 ?
locators Configure Locators
RP/0/RP0/CPU0:PE1(config)#segment-routing srv6 locators ?
locator Configure a Locator
RP/0/RP0/CPU0:PE1(config)#segment-routing srv6 locators locator ?
WORD Specify locator name
RP/0/RP0/CPU0:PE1(config)#segment-routing srv6 locators locator IPA ?
prefix Configure locator's prefix value
RP/0/RP0/CPU0:PE1(config)#segment-routing srv6 locators locator IPA prefix ?
X:X::X/length Specify IPv6 subnet
RP/0/RP0/CPU0:PE1(config)#$s locator IPA prefix fc00:0:0:1::/64 ?
<cr>
RP/0/RP0/CPU0:PE1(config)#segment-routing srv6 locators locator IPA prefix fc0$
RP/0/RP0/CPU0:PE1(config)#show
Building configuration...
!! IOS XR Configuration 7.4.1
segment-routing
srv6
locators
locator IPA
prefix fc00:0:0:1::/64
!
!
!
!
end
RP/0/RP0/CPU0:PE1(config)#
「3.4 Step4:Locator定義(Locatorの設計)」で決めた通りにPE1へSRv6を定義します。
【IOS-XR:PE1のIS-IS及びGlobalにSRv6を定義コピペ用】
!PE1 ! configure router isis CORE address-family ipv6 unicast segment-routing srv6 locator IPA ! segment-routing srv6 locators locator IPA prefix fc00:0:0:1::/64 ! ! ! ! commit end
PE2はまだ定義せずにPE1だけを定義します。showコマンドの出力結果の右下に注目すると「 St/PfxRcd が 1 」であることからVPNV4経路を受信していることが確認できます。
RP/0/RP0/CPU0:PE2#show bgp all all summary Address Family: VPNv4 Unicast ----------------------------- BGP router identifier 10.0.0.3, local AS number 64512 BGP generic scan interval 60 secs Non-stop routing is enabled BGP table state: Active Table ID: 0x0 RD version: 0 BGP main routing table version 6 BGP NSR Initial initsync version 4 (Reached) BGP NSR/ISSU Sync-Group versions 0/0 BGP scan interval 60 secs BGP is operating in STANDALONE mode. Process RcvTblVer bRIB/RIB LabelVer ImportVer SendTblVer StandbyVer Speaker 6 6 6 6 6 0 Neighbor Spk AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down St/PfxRcd fc00::1 0 64512 162 160 6 0 0 02:38:05 1 RP/0/RP0/CPU0:PE2#
左側のCE1から右側のCE2へ疎通確認を行いますが、当然片側のPE2では定義していませんので疎通できません。
CE1#ping 198.51.100.2 source 192.0.2.2 rep 100 Type escape sequence to abort. Sending 100, 100-byte ICMP Echos to 198.51.100.2, timeout is 2 seconds: Packet sent with a source address of 192.0.2.2 U.U.U.U.U.U.U.U.U.U.
PE2のIS-ISとGlobal定義をします。
【IOS-XR:PE2のIS-IS及びGlobalにSRv6を定義コピペ用】
!PE2 ! configure router isis CORE address-family ipv6 unicast segment-routing srv6 locator IPA ! segment-routing srv6 locators locator IPA prefix fc00:0:0:3::/64 ! ! ! ! commit end
CE1とCE2の異なるネットワークで疎通できるようになります。
CE1#ping 198.51.100.2 source 192.0.2.2 rep 100 Type escape sequence to abort. Sending 100, 100-byte ICMP Echos to 198.51.100.2, timeout is 2 seconds: Packet sent with a source address of 192.0.2.2 U.U.U.U.U.U.U.U.U.U.U..!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Success rate is 77 percent (77/100), round-trip min/avg/max = 8/11/17 ms CE1#
PE1を確認します。showコマンドの出力結果の右下に注目すると「 St/PfxRcd が 1 」であることからVPNV4経路を受信していることが確認できます。
RP/0/RP0/CPU0:PE1#show bgp all all summary Address Family: VPNv4 Unicast ----------------------------- BGP router identifier 10.0.0.1, local AS number 64512 BGP generic scan interval 60 secs Non-stop routing is enabled BGP table state: Active Table ID: 0x0 RD version: 0 BGP main routing table version 7 BGP NSR Initial initsync version 4 (Reached) BGP NSR/ISSU Sync-Group versions 0/0 BGP scan interval 60 secs BGP is operating in STANDALONE mode. Process RcvTblVer bRIB/RIB LabelVer ImportVer SendTblVer StandbyVer Speaker 7 7 7 7 7 0 Neighbor Spk AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down St/PfxRcd fc00::3 0 64512 208 209 7 0 0 00:31:46 1 RP/0/RP0/CPU0:PE1#
PE1でCE向けのvrfを確認すると
逆サイのネットワーク情報(B 198.51.100.0/24 [200/0])が伝搬していることが分かります。
RP/0/RP0/CPU0:PE1#show route vrf RED
Codes: C - connected, S - static, R - RIP, B - BGP, (>) - Diversion path
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - ISIS, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, su - IS-IS summary null, * - candidate default
U - per-user static route, o - ODR, L - local, G - DAGR, l - LISP
A - access/subscriber, a - Application route
M - mobile route, r - RPL, t - Traffic Engineering, (!) - FRR Backup path
Gateway of last resort is not set
C 192.0.2.0/24 is directly connected, 03:49:33, GigabitEthernet0/0/0/0
L 192.0.2.1/32 is directly connected, 03:49:33, GigabitEthernet0/0/0/0
B 198.51.100.0/24 [200/0] via fc00::3 (nexthop in vrf default), 00:10:11
RP/0/RP0/CPU0:PE1#
PE2でCE向けのvrfを確認すると
逆サイのネットワーク情報(B 192.0.2.0/24 [200/0])が伝搬していることが分かります。
RP/0/RP0/CPU0:PE2#show route vrf BLUE
Codes: C - connected, S - static, R - RIP, B - BGP, (>) - Diversion path
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - ISIS, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, su - IS-IS summary null, * - candidate default
U - per-user static route, o - ODR, L - local, G - DAGR, l - LISP
A - access/subscriber, a - Application route
M - mobile route, r - RPL, t - Traffic Engineering, (!) - FRR Backup path
Gateway of last resort is not set
B 192.0.2.0/24 [200/0] via fc00::1 (nexthop in vrf default), 00:10:54
C 198.51.100.0/24 is directly connected, 03:51:52, GigabitEthernet0/0/0/1
L 198.51.100.1/32 is directly connected, 03:51:52, GigabitEthernet0/0/0/1
RP/0/RP0/CPU0:PE2#
これで、2拠点間のL3VPN over SRv6が構築できたことになります。
今回はここまでです。
おわりに
次回は、SRv6検証(IPv4 L3VPN over SRv6)その参(Validation)です。showコマンドやパケットキャプチャなどを使ってSRv6の観察をします。
最後までお読みいただき、ありがとうございました!
- SRv6検証(IPv4 L3VPN over SRv6)その壱(Introduction):https://chimay-wh.hatenablog.com/entry/srv6/l3vpn/Intro↩
- xrv9k-full9-x-7.4.1.qcow2 が含まれるIOSイメージ「refplat-20220211-fcs-iso.zip」はこちら(https://software.cisco.com/download/home/286193282/type/286326381/release/2.4.1)↩
- https://www.cisco.com/c/en/us/td/docs/routers/virtual-routers/xrv9k-70x/general/release/notes/b-release-notes-xrv9k-r701.html↩
- https://www.rfc-editor.org/rfc/rfc6890.html(Table 9: TEST-NET-1)↩
- https://www.rfc-editor.org/rfc/rfc6890.html(Table 13: TEST-NET-2)↩
- プロフェッショナルIPv6 第2版(https://booth.pm/ja/items/913273)2.3.2 IPv6アドレスの利用モデル - ■リンクローカルユニキャストアドレス↩
- https://www.rfc-editor.org/rfc/rfc4193.html↩































































































































