Skip to Content
05. SecurityCisco Locator ID Separation Protocol (LISP)

Cisco Locator ID Separation Protocol (LISP)

학습 목차

  1. LISP 개요
  2. LISP 컨트롤 플레인
  3. LISP 데이터 플레인
  4. LISP 동작 4.1. 매핑 시스템 4.1.1. Map-Register와 Map-Notify 4.1.2. Map-Request와 Map-Reply 4.2. LISP 데이터 경로 4.3. PETR 4.4. PITR
  5. 결론

Cisco Locator ID Separation Protocol(LISP) 는 매핑 및 캡슐화 프로토콜로, 원래 인터넷의 라우팅 확장성 문제를 해결하기 위해 개발되었습니다.

인터넷 라우팅 테이블은 기하급수적으로 증가하여 BGP 라우터에 부담을 주고 있습니다. 인터넷 라우팅은 계층적이어야 하지만, 분할(disaggregation) 때문에 오늘날 전체 인터넷 라우팅 테이블에는 800,000개 이상의 prefix가 있습니다.

분할(Disaggregation) 은 집계(aggregation, 라우트 요약)의 반대입니다. 집계(요약 라우트)가 있을 때 더 구체적인 라우트를 주입하는 것입니다. 이런 일이 발생하는 두 가지 주요 이유가 있습니다.

  • 멀티홈잉(Multihoming): 고객이 두 개의 다른 ISP에 연결되어 두 ISP 모두에 자체 공급자 독립 주소 공간(PI)을 광고합니다.
  • 트래픽 엔지니어링(Traffic engineering): 인바운드 트래픽 엔지니어링의 일반적인 관행은 더 구체적인 라우트를 광고하는 것입니다. 작동하지만 인터넷 라우팅 테이블의 크기를 증가시킵니다.

인터넷 라우팅 테이블의 모든 prefix를 저장하기에 충분한 RAM과 TCAM을 가진 강력한 라우터가 필요합니다. 더 구체적인 prefix를 주입하면 라우트 불안정의 위험도 증가합니다.

전통적인 IP 라우팅에서, IP 주소는 두 가지 기능을 가집니다.

  • 신원(Identity): 장치를 식별합니다.
  • 위치(Location): 네트워크에서 장치의 위치입니다. 라우팅에 사용합니다.

LISP는 IP 주소의 이 두 기능을 두 개의 별도 기능으로 분리합니다.

  • Endpoint Identifier (EID): 컴퓨터, 노트북, 프린터 등 호스트에 할당됩니다.
  • Routing Locators (RLOC): 라우터에 할당됩니다. EID에 도달하기 위해 RLOC 주소를 사용합니다.

Cisco가 LISP를 만들었지만, 독점 솔루션이 아니라 RFC 6830에 정의된 오픈 표준입니다. 원래 인터넷용으로 설계되었지만, 오늘날에는 데이터 센터, IoT, WAN, 캠퍼스(Cisco SD-Access)와 같은 다른 환경에서도 LISP를 볼 수 있습니다.


1. LISP 개요

LISP는 매핑 및 캡슐화 프로토콜입니다. LISP 환경에는 세 가지 필수 환경이 있습니다.

  • LISP 사이트: EID 네임스페이스, EID가 있는 곳입니다.
  • non-LISP 사이트: RLOC를 찾는 RLOC 네임스페이스입니다. 예를 들어 인터넷.
  • LISP 매핑 서비스: EID-to-RLOC 매핑을 담당하는 인프라입니다.

다음은 LISP 작동 방식의 고수준 단순화된 개요입니다.

LISP 개요

위에서 보이는 것을 설명해 보겠습니다.

  • 두 LISP 사이트, site 1과 site 2가 있습니다.
  • 각 사이트에는 LISP를 사용하도록 구성된 호스트와 라우터가 있습니다.
  • 호스트는 EID 주소를 가지고 있습니다:
    • H1 EID 192.168.1.101
    • H2 EID 192.168.2.102
  • 라우터는 RLOC 주소를 가지고 있습니다:
    • R1 RLOC 192.168.123.1
    • R2 RLOC 192.168.123.2
  • RLOC 공간은 non-LISP 영역입니다. 예를 들어 인터넷.

H1이 H2에게 IP 패킷을 보내려고 할 때 일어나는 일:

  1. H1은 LISP와 아무 관련이 없으며 기본 게이트웨이(R1)로 IP 패킷을 보냅니다.
  2. R1은 IP 패킷을 받고 LISP 매핑 시스템에 EID 192.168.2.102를 어디서 찾을 수 있는지 묻습니다.
  3. 매핑 시스템이 EID-to-RLOC 매핑으로 응답합니다.
  4. R1은 이제 RLOC 192.168.123.2를 통해 EID 192.168.2.102에 도달할 수 있다는 것을 압니다. 라우터는 IP 패킷을 LISP 캡슐화로 캡슐화하고 패킷을 전송합니다.
  5. R2는 LISP 캡슐화된 IP 패킷을 받아 디캡슐화하고 원본 IP 패킷을 H2로 전달합니다.
LISP ITR/ETR

LISP는 IP 패킷을 어느 라우터로 보내야 하는지 알아내기 위해 DNS와 비슷한 시스템을 사용하는 터널링 프로토콜이라는 매우 단순화된 한 문장 설명입니다.

캡슐화하고 디캡슐화하는 LISP 라우터의 이름이 있습니다.

  • Ingress Tunnel Router (ITR): IP 패킷을 캡슐화하는 라우터입니다.
  • Egress Tunnel Router (ETR): LISP 캡슐화된 IP 패킷을 디캡슐화하는 라우터입니다.
  • Tunnel Router (xTR): ITR과 ETR 기능을 모두 수행하는 라우터입니다.

호스트(컴퓨터, 노트북, 프린터)는 LISP에 대해 아무것도 모른다는 것을 명심하세요.

호스트 관점
  • LISP 라우터의 관점: 모든 종단점(호스트)은 EID를 가지고 있습니다.
  • 호스트의 관점: 일반 IP 주소를 가지고 있습니다. 호스트는 LISP가 무엇인지조차 모릅니다.

2. LISP 컨트롤 플레인

LISP 컨트롤 플레인은 DNS가 작동하는 방식과 비슷합니다.

  • DNS는 호스트네임을 IP 주소로 해결합니다.
  • LISP는 EID를 RLOC로 해결합니다.

전통적인 IP 라우팅에서는 prefix를 라우팅 테이블에 설치합니다. LISP는 EID-prefix를 라우팅 테이블에 설치하지 않습니다. 대신 LISP는 EID를 RLOC에 매핑하는 분산 매핑 시스템을 사용합니다. 이러한 매핑을 분산 EID-to-RLOC 데이터베이스에 저장합니다. ITR이 RLOC 주소를 찾아야 할 때, 매핑 시스템에 Map-Request 쿼리를 보냅니다.


3. LISP 데이터 플레인

ITR이 EID에 도달하기 위해 어떤 RLOC를 사용할지 알아내면, IP 패킷을 캡슐화합니다.

LISP 캡슐화

ITR이 호스트로부터 IP 패킷을 받으면, 다음 헤더를 추가합니다.

  • LISP 헤더: 패킷을 전달하는 데 필요한 일부 LISP 정보를 포함합니다. 여기서 모든 비트와 필드를 다루지는 않겠지만, instance ID는 언급할 가치가 있습니다. instance ID는 24비트 값으로 MPLS VPN의 Route Distinguisher(RD)와 비슷한 기능을 합니다. instance ID는 LISP 사이트에 중복되는 (사설) EID 주소가 있을 때 prefix를 분리하는 고유 식별자입니다.
  • 외부 LISP UDP 헤더: 소스 포트는 ITR이 선택해, 한 LISP 사이트에서 다른 LISP 사이트로의 트래픽이 동일 비용 다중 경로(ECMP) 링크가 있을 때 같은 경로를 취하지 않도록 합니다. 다른 소스 포트가 polarization을 방지합니다. 목적지 포트는 4341입니다.
  • 외부 LISP IP 헤더: ITR에서 ETR로 패킷을 라우팅하는 데 필요한 소스 및 목적지 RLOC IP 주소를 포함합니다.

참고: instance ID가 prefix를 고유하게 만들지만, 가상화를 구현하려면 VRF가 필요합니다. LISP는 instance ID를 VRF와 EID VRF에 바인딩하여 이를 지원합니다.

EID와 RLOC는 IPv4 또는 IPv6 주소가 될 수 있으므로, LISP 데이터 플레인은 다음 캡슐화 조합을 모두 지원합니다.

  • IPv4 RLOC와 IPv4 EID
  • IPv4 RLOC와 IPv6 EID
  • IPv6 RLOC와 IPv6 EID
  • IPv6 RLOC와 IPv4 EID

4. LISP 동작

이제 LISP RLOC와 EID가 무엇인지, ITR과 ETR이 무엇을 하는지, LISP가 컨트롤 플레인을 위해 매핑 시스템을 사용한다는 것, 그리고 LISP가 데이터 플레인에서 IP 패킷을 어떻게 캡슐화하는지 알게 되었습니다. LISP 매핑 시스템이 정확히 어떻게 작동하는지 단계를 살펴봅시다.

4.1. 매핑 시스템

4.1.1. Map-Register와 Map-Notify

ETR을 구성하면, 라우터는 EID-to-RLOC 매핑을 추적하는 책임이 있는 장치, 즉 Map-Server (MS) 에 EID-prefix를 등록합니다.

다음은 등록 프로세스의 그림입니다.

Map-Register

ETR은 다음을 포함하는 Map-Register 메시지를 MS에 보냅니다.

  • EID-prefix: 192.168.2.0/24
  • RLOC 주소: 192.168.123.2
  • UDP 소스 포트: ETR이 선택
  • UDP 목적지 포트: 4342

MS는 ETR에 Map-Notify라는 응답을 보내 Map-Register 메시지를 받아 처리했음을 확인합니다. Map-Notify 메시지는 UDP 소스 및 목적지 포트 4342를 사용합니다.

4.1.2. Map-Request와 Map-Reply

ITR은 EID-to-RLOC 매핑을 요청하기 위해 Map-Request 메시지를 사용합니다.

Map-Request

Map-Reply는 매핑을 제공합니다.

여기에 두 가지 함수가 역할을 합니다.

  • MS (Map-Server)
  • MR (Map-Resolver)

이전에 MS에 대해 이야기했습니다. ETR이 EID-prefix를 등록하고 EID-to-RLOC 매핑을 저장하는 장치입니다.

ITR이 EID-to-RLOC 매핑이 필요할 때, MR에 Map-Request를 보냅니다.

MR이 Map-Request를 받고 로컬 데이터베이스에 항목이 있으면, MR은 Map-Reply로 응답합니다. 항목이 없으면, MR은 Map-Request를 MS로 전달합니다. MS는 Map-Request를 ETR로 전달하고, ETR은 Map-Reply로 직접 응답합니다.

작은 환경에서는 MR과 MS 기능을 단일 라우터에 결합합니다. 이를 MR/MS라고 부릅니다.


단계별 동작

Step 1: LISP 사이트 내에서 전통적인 라우팅을 사용합니다. LISP 사이트 1의 H1이 LISP 사이트 2의 H2와 통신하려고 한다고 가정해 봅시다. 이 호스트들은 LISP에 대해 아무것도 모릅니다.

Step 2: ITR은 H1에서 목적지 192.168.2.102인 IP 패킷을 받습니다. FIB 테이블에서 조회를 수행하고 다음 질문을 자신에게 묻습니다.

  • 192.168.2.102와 일치하는 항목이 있나? 그렇다면: 일반 IP 라우팅 사용.
  • 그렇지 않으면, 다음 세 가지 검사 중 하나가 참이면 LISP 캡슐화를 사용합니다:
    • 기본 라우트가 있다.
    • 라우트가 없다.
    • Null0를 next-hop으로 갖는 라우트가 있다.
  • 소스 IP가 로컬 map-cache의 등록된 EID-prefix인가?
    • 그렇지 않으면, 일반 IP 라우팅으로 패킷을 전달.
    • 그렇다면, ITR은:
      • UDP 소스 포트 선택
      • UDP 목적지 포트를 4342로 설정
      • 192.168.2.102에 대해 캡슐화된 Map-Request를 MR에 전송

Step 3: MR과 MS 기능이 같은 장치에 있습니다. MR/MS가 Map-Request를 받으면 EID-prefix를 등록한 ETR로 전달합니다.

Step 4: ETR이 Map-Request를 받으면 다음을 포함하는 Map-Reply를 만들어 전송합니다.

  • EID-to-RLOC 매핑:
    • EID: 192.168.2.0/24
    • RLOC: 192.168.123.2
  • UDP 소스 포트 4342
  • UDP 목적지 포트는 ITR이 Map-Request의 UDP 소스 포트로 선택한 것

ETR은 Map-Reply를 ITR로 직접 보냅니다. 그러나 ETR이 자신을 대신해 Map-Request에 응답하도록 MS에게 요청할 수도 있습니다. 이를 위해 ETR은 Map-Register 메시지에서 “proxy Map-Reply” 플래그(P-bit)를 활성화해야 합니다.

ITR은 ETR(또는 ETR이 proxy Map-Reply를 요청한 경우 MS)로부터 Map-Reply를 받고 EID-to-RLOC 매핑을 로컬 map-cache에 설치합니다. ITR은 또한 FIB를 프로그래밍하고 이제 LISP 캡슐화된 트래픽을 전달할 준비가 되었습니다.

4.2. LISP 데이터 경로

ITR이 H1의 IP 패킷을 LISP로 캡슐화할 때 어떻게 보이는지 봅시다.

LISP 데이터 경로 LISP 데이터 경로 단계

본 강의는 NetworkLessons.com의 미리보기 버전입니다. 전체 내용은 멤버십 가입 후 확인 가능합니다.

이미지

포럼 답글

Evan.1971

포럼 답글

안녕 Molenaar 씨, 이 강의에 작은 랩을 첨부할 수 있나요?

ReneMolenaar

안녕 Evan,

곧 구성 워크스루를 추가하겠습니다. CCNP ENCOR 시험은 LISP를 이론적으로만 다루기 때문에 즉시 하지 않았습니다.

작동하는 랩을 보고 싶다면, 이 설명에서 사용한 토폴로지의 구성을 가지고 있습니다.

hostname H1 ! no ip routing ! interface GigabitEthernet0/1 ip address 192.168.1.101 255.255.255.0 ! ip default-gateway 192.168.1.254 ! end hostname H2 ! no ip rou

… 포럼에서 계속 읽기

Evan.1971

정보와 랩 감사합니다 Rene. 5월 31일까지 CCNP를 재인증해야 합니다. 그건 그렇고, 당신의 웹사이트는 훌륭합니다.

포럼 답글

informramki

포럼 답글

안녕 Rene,

이 LISP 주제를 공유해 주셔서 감사합니다. 사이트 1의 H1이 사이트 2의 H2 주소를 처음에 어떻게 아는지 알고 싶습니다(ARP 요청/응답과 같은 건가요?). 그렇다면 ARP 패킷도 같은 캡슐화 프로세스를 거치나요?

감사합니다, Rama

lagapidis

안녕 Ramakrishnan,

H1이 H2의 주소를 아는 것은 대부분의 경우 사용자가 입력했기 때문입니다. 예를 들어 H2가 이메일 서버라면, H1의 이메일 클라이언트가 그 이메일 서버에 도달하도록 수동으로 구성되었습니다. H2가 웹 서버라면, H1은 예를 들어 www.ip-address-of-h2.net에  대한 DNS 조회 서비스를 사용해 그 호스트의 목적지 주소를 해결했습니다.

LISP는 서브넷을 상호 연결하는 기능이라는 점도 주목하세요. 제가 의미하는 것은, H1과 H2의 게이트웨이가 모두 그들의 로컬 LISP 사이트 내에서 발견된다는 것입니다. 이는 레이어 2 프로토콜이…

… 포럼에서 계속 읽기

57개의 추가 답글이 있습니다. 커뮤니티 포럼을 방문해 질문하거나 토론에 참여하세요.


출처: networklessons.com - Cisco Locator ID Separation Protocol (LISP)

태그: LISP