今回はマルチテナント環境でLISPを動作させる場合に必要なInstanceについて説明します。
概要
Instanceについて
現在、1つの設備で複数の企業を収容するマルチテナント型のサービスが普及しています。
例えば、下図のように、特定のMR/MSでLANのアドレスが重複している企業Aと企業BのxTRを管理するとします。
この状況で、企業Aにおいて10.1.1.1への通信が発生した場合、企業AのxTRは10.1.1.1が存在している拠点のRLOCを取得するために、MR/MSにMap Requestメッセージを送信します。
MR/MSのデータベースでは、EID-Prefixの10.1.1.0/24に対して、企業Aの172.16.1.1と企業Bの172.16.2.1がマッピングされています。
もし、MR/MSが企業BのxTRにMap Requestメッセージを転送した場合、企業AのxTRは10.1.1.1のRLOCとして172.16.2.1を学習してしまいます。
この結果、パケットは企業Aの拠点ではなく、誤って企業Bの拠点に転送されてしまいます。
LISPではマルチテナント環境で、各テナント毎に情報を独立して管理するために、Instanceを導入しました。このInstanceは32ビットのIID(Instance ID)によって識別されます。
(上記の例のように、明示的にIIDを設定してない場合、IIDは0になります。)
LISP側でテナント毎にInstanceを個別に用意することで、テナント毎にEID-PrefixとRLOCのマッピング情報を独立して管理できます。
各xTRはEID-PrefixとRLOCのマッピング情報を登録する際に、一緒にInsntaceを識別するためのIIDを送信します。これにより、MR/MSはIID毎にマッピング情報を管理できます。
xTRはEIDに対応するRLOCを解決する際、EIDに加え、IIDも格納したMap Requestメッセージを送信します。
MR/MSはMap Requestメッセージに格納されているIIDを基に、同じInstance、すなわち、同じテナントに所属するxTRにMap Requestメッセージを転送できます。
この結果、同じテナントの拠点間で正しく通信ができます。
LCAFについて
デフォルトで、LISPでは32ビットのIPv4アドレス、または、128ビットのIPv6アドレスの情報のみコントロールプレーンのメッセージに格納可能です。
そのため、32ビットのIIDの情報をコントロールプレーンのメッセージに格納することができません。
MP-BGP(Multi Protocol BGP)と同様に、LISPではIPv4アドレス、IPv6アドレス以外の情報もやり取りできるように、LCAF(LISP Canonical Address Format)が導入されました。
LCAFが導入されたことで、以下の情報もLISPでやり取りすることが可能です。
- IID
- AS番号
- 緯度、経度
- マルチキャストの情報
- etc…
検証環境、内容
検証内容
R2とR3のg3にVRF_1、g4にVRF_2を割り当てます。
R1をMR/MS、R2とR3をxTRとして動作させます。
VRF_1をIID 1、VRF_2をIID 2に対応付けます。
R2は以下のマッピング情報をR1に登録します。
- IID : 1 , EID-Prefix : 10.1.1.0/24 , RLOC : 172.16.1.2
- IID : 2 , EID-Prefix : 20.1.1.0/24 , RLOC : 172.16.1.2
R3は以下のマッピング情報をR1に登録します。
- IID : 1 , EID-Prefix : 10.2.2.0/24 , RLOC : 172.16.1.3
- IID : 2 , EID-Prefix : 20.2.2.0/24 , RLOC : 172.16.1.3
設定
interface GigabitEthernet2
ip address 172.16.1.1 255.255.255.0
!
router lisp
service ipv4
map-server
map-resolver
exit-service-ipv4
!
site Site_1
authentication-key Zaq12wsx!@
eid-record instance-id 1 10.1.1.0/24
eid-record instance-id 1 10.2.2.0/24
eid-record instance-id 2 20.1.1.0/24
eid-record instance-id 2 20.2.2.0/24
exit-site
!
exit-router-lisp
ip vrf VRF_1
!
ip vrf VRF_2
!
interface GigabitEthernet2
ip address 172.16.1.2 255.255.255.0
!
interface GigabitEthernet3
ip vrf forwarding VRF_1
ip address 10.1.1.2 255.255.255.0
!
interface GigabitEthernet4
ip vrf forwarding VRF_2
ip address 20.1.1.2 255.255.255.0
!
router lisp
service ipv4
itr map-resolver 172.16.1.1
itr
etr map-server 172.16.1.1 key Zaq12wsx!@
etr
exit-service-ipv4
!
instance-id 1
service ipv4
eid-table vrf VRF_1
database-mapping 10.1.1.0/24 172.16.1.2 priority 1 weight 50
exit-service-ipv4
!
exit-instance-id
!
instance-id 2
service ipv4
eid-table vrf VRF_2
database-mapping 20.1.1.0/24 172.16.1.2 priority 1 weight 50
exit-service-ipv4
!
exit-instance-id
!
exit-router-lisp
ip vrf VRF_1
!
ip vrf VRF_2
!
interface GigabitEthernet2
ip address 172.16.1.3 255.255.255.0
!
interface GigabitEthernet3
ip vrf forwarding VRF_1
ip address 10.2.2.3 255.255.255.0
!
interface GigabitEthernet4
ip vrf forwarding VRF_2
ip address 20.2.2.3 255.255.255.0
!
router lisp
service ipv4
itr map-resolver 172.16.1.1
itr
etr map-server 172.16.1.1 key Zaq12wsx!@
etr
exit-service-ipv4
!
instance-id 1
service ipv4
eid-table vrf VRF_1
database-mapping 10.2.2.0/24 172.16.1.3 priority 1 weight 50
exit-service-ipv4
!
exit-instance-id
!
instance-id 2
service ipv4
eid-table vrf VRF_2
database-mapping 20.2.2.0/24 172.16.1.3 priority 1 weight 50
exit-service-ipv4
!
exit-instance-id
!
exit-router-lisp
interface GigabitEthernet2
ip address 10.1.1.4 255.255.255.0
!
ip route 0.0.0.0 0.0.0.0 10.1.1.2
interface GigabitEthernet2
ip address 20.1.1.5 255.255.255.0
!
ip route 0.0.0.0 0.0.0.0 20.1.1.2
interface GigabitEthernet2
ip address 10.2.2.6 255.255.255.0
!
ip route 0.0.0.0 0.0.0.0 10.2.2.3
interface GigabitEthernet2
ip address 20.2.2.7 255.255.255.0
!
ip route 0.0.0.0 0.0.0.0 20.2.2.3
設定内容と状態の確認
MR/MSの設定確認
MR/MSとして動作させるR1の設定を確認します。
Instanceを分割する際は、eid-record instance-id <iid> <address>/<prefix-length>コマンドでIIDを指定してMSに登録可能なEID-Prefixを定義します。
instance-id <iid>の部分を省略した場合は、IIDは0として処理されます。
router lisp
site Site_1
eid-record instance-id 1 10.1.1.0/24
eid-record instance-id 1 10.2.2.0/24
eid-record instance-id 2 20.1.1.0/24
eid-record instance-id 2 20.2.2.0/24
exit-site
!
exit-router-lisp
xTRの設定の確認
xTRとして動作させるR2の設定を確認します。
instance-id <iid>コマンドでインスタンスを作成する際に、VRFに割り当てるIIDを指定します。
そして、eid-table <vrf-name>コマンドでInstanceとVRFをマッピングします。
router lisp
instance-id 1
service ipv4
eid-table vrf VRF_1
database-mapping 10.2.2.0/24 172.16.1.3 priority 1 weight 50
exit-service-ipv4
!
exit-instance-id
!
instance-id 2
service ipv4
eid-table vrf VRF_2
database-mapping 20.2.2.0/24 172.16.1.3 priority 1 weight 50
exit-service-ipv4
!
exit-instance-id
!
exit-router-lisp
EID-PrefixとRLOCのマッピング情報登録時の様子
xTRがMR/MSにEID-PrefixとRLOCのマッピング情報を登録する際、MR/MSがEID-PrefixがどのInstanceに所属しているか判断できるように、xTRはIIDも一緒に送信します。
以下は、IIDが0の場合にR2がR1に送信したMap Registerメッセージになります。
EID-PrefixのAFI(Address Family Identifier)がIPv4用の1であることが確認できます。
以下は、今回の検証において、R2がR1に送信したMap Registerメッセージになります。
EID-PrefixのAFIがLCAF用の16387であることが確認できます。また、IPv4アドレスに加え、IIDも格納されていることが確認できます。
R1はIIDを基に、EID-PrefixとRLOCのマッピング情報を管理していることが確認できます。
R1#show lisp site detail
LISP Site Registration Information
Site name: Site_1
Allowed configured locators: any
Allowed EID-prefixes:
EID-prefix: 10.1.1.0/24 instance-id 1
First registered: 00:21:49
Last registered: 00:21:44
Routing table tag: 0
Origin: Configuration
Merge active: No
Proxy reply: No
Skip Publication: No
Force Withdraw: No
TTL: 1d00h
State: complete
Registration errors:
Authentication failures: 0
Allowed locators mismatch: 0
ETR 172.16.1.2:53580, last registered 00:21:44, no proxy-reply, map-notify
TTL 1d00h, no merge, hash-function sha1, nonce 0xB3AFFF33-0x6B8A2BEA
state complete, no security-capability
xTR-ID 0xF180E005-0x7DEB7B41-0x6FFC3231-0xCD92F0F5
site-ID unspecified
Domain-ID unspecified
Multihoming-ID unspecified
sourced by reliable transport
Locator Local State Pri/Wgt Scope
172.16.1.2 yes up 1/50 IPv4 none
EID-prefix: 10.2.2.0/24 instance-id 1
First registered: 00:13:36
Last registered: 00:13:36
Routing table tag: 0
Origin: Configuration
Merge active: No
Proxy reply: No
Skip Publication: No
Force Withdraw: No
TTL: 1d00h
State: complete
Registration errors:
Authentication failures: 0
Allowed locators mismatch: 0
ETR 172.16.1.3:26180, last registered 00:13:36, no proxy-reply, map-notify
TTL 1d00h, no merge, hash-function sha1, nonce 0x6889357D-0x75928067
state complete, no security-capability
xTR-ID 0xD0D10084-0xDD71B15F-0x5324A6FD-0x4361A266
site-ID unspecified
Domain-ID unspecified
Multihoming-ID unspecified
sourced by reliable transport
Locator Local State Pri/Wgt Scope
172.16.1.3 yes up 1/50 IPv4 none
EID-prefix: 20.1.1.0/24 instance-id 2
First registered: 00:15:44
Last registered: 00:15:44
Routing table tag: 0
Origin: Configuration
Merge active: No
Proxy reply: No
Skip Publication: No
Force Withdraw: No
TTL: 1d00h
State: complete
Registration errors:
Authentication failures: 0
Allowed locators mismatch: 0
ETR 172.16.1.2:53580, last registered 00:15:44, no proxy-reply, map-notify
TTL 1d00h, no merge, hash-function sha1, nonce 0x81B1D0EC-0x48C5F72B
state complete, no security-capability
xTR-ID 0xF180E005-0x7DEB7B41-0x6FFC3231-0xCD92F0F5
site-ID unspecified
Domain-ID unspecified
Multihoming-ID unspecified
sourced by reliable transport
Locator Local State Pri/Wgt Scope
172.16.1.2 yes up 1/50 IPv4 none
EID-prefix: 20.2.2.0/24 instance-id 2
First registered: 00:13:49
Last registered: 00:13:44
Routing table tag: 0
Origin: Configuration
Merge active: No
Proxy reply: No
Skip Publication: No
Force Withdraw: No
TTL: 1d00h
State: complete
Registration errors:
Authentication failures: 0
Allowed locators mismatch: 0
ETR 172.16.1.3:26180, last registered 00:13:44, no proxy-reply, map-notify
TTL 1d00h, no merge, hash-function sha1, nonce 0xB7A1D9D4-0x082D3C96
state complete, no security-capability
xTR-ID 0xD0D10084-0xDD71B15F-0x5324A6FD-0x4361A266
site-ID unspecified
Domain-ID unspecified
Multihoming-ID unspecified
sourced by reliable transport
Locator Local State Pri/Wgt Scope
172.16.1.3 yes up 1/50 IPv4 none
宛先のEIDに対応するRLOC解決時の様子
VRF_1において、R2が10.2.2.6宛のパケットを受信した際のRLOCの解決の様子を確認します。
R2はパケットの送信先アドレスである10.2.2.6に加え、VRF_1に対応するIIDを格納したMap RequestメッセージをR1に送信します。
以下は、R2がR1に送信したMap Requestメッセージになります。
パケットの送信先アドレスである10.2.2.6に加え、IIDとして1が格納されていることが確認できます。
R1はIIDが1のマッピング情報のみ検索し、Map RequestメッセージをR3に転送します。
R3はMap Requestメッセージを受信後、IIDが1のマッピング情報のみを検索し、対応するRLOCを格納したMap ReplyメッセージをR2に返信します。
R2は受信したMap Replyメッセージに格納されている情報をキャッシュとして保存します。
以下は、R3がR2に返信したMap Replyメッセージになります。
EID-PrefixとRLOCに加え、IIDが格納されていることが確認できます。
R2がIID 1とIID 2のEIDに対応するRLOC解決後のMap Cacheの状態を確認します。
IIDが0以外のInstanceのMap Cacheはshow ip lisp map-cache instance-id <iid>コマンドで確認できます。
Instance単位でMap Cacheを管理していることが確認できます。
R2#show ip lisp map-cache instance-id 1
LISP IPv4 Mapping Cache for EID-table vrf VRF_1 (IID 1), 2 entries
0.0.0.0/0, uptime: 00:00:06, expires: 00:00:53, via static-send-map-request
Negative cache entry, action: send-map-request
10.2.2.0/24, uptime: 00:08:42, expires: 23:51:17, via map-reply, complete
Locator Uptime State Pri/Wgt Encap-IID
172.16.1.3 00:08:42 up 1/50 -
R2#show ip lisp map-cache instance-id 2
LISP IPv4 Mapping Cache for EID-table vrf VRF_2 (IID 2), 2 entries
0.0.0.0/0, uptime: 00:00:06, expires: 00:00:53, via static-send-map-request
Negative cache entry, action: send-map-request
20.2.2.0/24, uptime: 00:07:18, expires: 23:52:41, via map-reply, complete
Locator Uptime State Pri/Wgt Encap-IID
172.16.1.3 00:07:18 up 1/50 -
データプレーンの通信の様子
VRF_1とVRF_2でトラフィックを発生させた際に、パケットに付加されるLISPヘッダのIIDの値を確認します。
以下は、IIDが0の場合のデータプレーンのパケットになります。
IIDが0の場合、Iビットに0がセットされ、LISPヘッダにはIIDの情報が存在しません。
以下は、VRF_1において、R4の10.1.1.4からR6の10.2.2.6に送信したICMP Echoになります。
Iビットに1がセットされ、IIDとして1が格納されていることが確認できます。
以下は、VRF_2において、R5の20.1.1.5からR7の20.2.2.7に送信したICMP Echoになります。
Iビットに1がセットされ、IIDとして2が格納されていることが確認できます。
コメント