LISP Instance

今回はマルチテナント環境で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として処理されます。

R1

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をマッピングします。

R2

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

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

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が格納されていることが確認できます。

コメント

タイトルとURLをコピーしました