본문 바로가기
Network/ccie-mpls

Discovering LDP Neighbors

LDP Neighbor Session Establishment

• LDP는 mpls 도메인에서 서로 label을 교환 하기 위해 사용 되는 프로토콜이다.
mpls ip 명령어를 인터페이스에서 활성화 시키면 LDP hello mesage 를 224.0.0.2 (모든라우터)멀티캐스트로 , 세션 성립을 위해 udp  646 포트로 hello meseage 를 보낸다.

이떄, udp 를 통해서 라우터를 찾게 되면 tcp 646 으로 tcp세션을 요청게 된다.





LDP Link Hello Message

• hello message 는 224.0.0.2 멀티캐스트로 모든 라우터에 전달이 된다.
•ldp 는 hello messge 를 보내기 위해 udp 646 포트를 사용 한다.
• 6바이트 ldp 실별자는 라우터 아이디(4바이트) :레이블 공간(2바이트) 로 식별 된다. => 여기서 per interface 방식과 플랫폼 방식 두가지인데 플렛폼 방식은 항상 0 이며 
• 인터페이스 별로 설정시, 인터페이스 마다 label 이 틀리기 때문에 구분 하기 위해 사용 (Per interface 는 atm 에서 사용 )
=> LDP를 udp 646 멀티 캐스트로 검색 후 라우터아이디를 서로 비교 하여 높은 아이디(아이피)를 갖은 장비가  tcp로 세션을 맺을려고 시도 하며, 세션 성립 되면 네이버를 맺는다.


Label Space: Per-Platform

• Per-Platform은 한 장비 에서 label 에 대한 프로세스를 1개를 갖게 되지만 Per-interface는 각 인터페이스 별로 label의 프로세스가 동작하게 된다.
•단, per platforrm 은 per interface에 비하여 보안이 약하다.(=>label만 알면 forwarding되기 때문에)

Negotiating Label Space

–  LSR들 레이블 공간당 하나의 LDP세션을 설정 한다.
– pre-platform 은 여러 링크를 연결 하더라도 1개의 label space 를 사용 한다.
 – Per-platform방식은 label space 공간이 1개이기 때문에 0으로 세팅 해서 ldp id 를 설정 한다.(0이 아닌 경우에는 per interface 방식 으로 동작 )
– ex) routeid:1.0.0.1 => LDP ID = 1.0.0.1:0


- 아래 그림은 서로 ldp 네이버를 맺는 과정을 나타낸것이며, 라우터 아이디가 높은 장비가 tcp세션을 맺을려고 요청 한다.


LDP Session Negotiation

- TCP로 세션을 맺을때 아래와 같이 3way handshake 과정을 통하여 네이버 성립후 label을 주고 받는다.
세션 성립후 tcp이기 때문에 60초에 한번씩 keepalive 를 던지며,180초가 지나면 상대가 죽었다고 생각 한다.
즉, tcp세션이 끊어지기 전까지 180 초 동안 label을 보관 하게 된다.


## 아래 명령어로 lsp discovery 의 자세한 정보를 확인 할 수 있다.
R1#show mpls ldp discovery detail
 Local LDP Identifier:
    1.1.1.1:0  <---- 로컬에서 광고한 자신의 라우터 아이디
    Discovery Sources:
    Interfaces:
        Ethernet1/0 (ldp): xmit/recv <------------xmit/recv 를 통해서 보내고 받았는지를 알 수 있다.
            Enabled: Interface config
            Hello interval: 5000 ms; Transport IP addr: 1.1.1.1 <-------------- hello interval 5초
            LDP Id: 2.2.2.2:0  <---------------------네이버의 아이피
              Src IP addr: 10.10.12.2; Transport IP addr: 2.2.2.2 <---------해당 네이버가 보낸 소스 아이피와 라우터 아이디
              Hold time: 15 sec; Proposed local/peer: 15/15 sec <---자신과 상대방의 hold time
              Reachable via 2.2.2.2/32 


## 아래 명령어를 통해서 binding 되어 있는 ldp 정보를 확인 할 수 있다.
R1#show mpls ldp bindings
  tib entry: 1.1.1.1/32, rev 2
        local binding:  tag: imp-null
        remote binding: tsr: 2.2.2.2:0, tag: 16
  tib entry: 2.2.2.2/32, rev 4
        local binding:  tag: 16
        remote binding: tsr: 2.2.2.2:0, tag: imp-null
  tib entry: 3.3.3.3/32, rev 6
        local binding:  tag: 17
        remote binding: tsr: 2.2.2.2:0, tag: 17
  tib entry: 10.10.12.0/24, rev 8
        local binding:  tag: imp-null
        remote binding: tsr: 2.2.2.2:0, tag: imp-null
  tib entry: 10.10.14.0/24, rev 10
        local binding:  tag: imp-null
  tib entry: 10.10.23.0/24, rev 12
        local binding:  tag: 18
        remote binding: tsr: 2.2.2.2:0, tag: imp-null

## 아래 명령어로 LFIB 정보를 확인 할 수 있다.
R1#show mpls forwarding-table
Local  Outgoing    Prefix            Bytes tag  Outgoing   Next Hop   
tag    tag or VC   or Tunnel Id      switched   interface             
16     Pop tag     2.2.2.2/32        0          Et1/0      10.10.12.2   
17     17          3.3.3.3/32        0          Et1/0      10.10.12.2   
18     Pop tag     10.10.23.0/24     0          Et1/0      10.10.12.2   

## 아래 명령어를 통해서 라우터 아이디를 변경 할 수 있다.(force 명령어가 없을 경우 강제로 변경 되지 않는다)
R1(config)#mpls ldp  router-id loopback 1 force




반응형