ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [네트워크] 23. HDLC, PPP, 프레임 릴레이
    네트워크 2024. 1. 2. 16:11

    이 게시물은 후니의 쉽게 쓴 CISCO 네트워킹 4판을 공부한 내용을 바탕으로 작성됨.


    HDLC (High-level Data Link Protocol)

     

    HDLC는 1970년대 후반 국제 표준화 기구(ISO)에서 표준화한 대표적인 데이터 통신 전송 제어 절차이다. 이 encapsulation 방식을 사용하는 경우 정보를 전송할 때 전송 제어 부호가 포함된 frame 단위로 분할하여 전송하는데, 그 구조는 다음과 같다.

     

    TTA정보통신용어사전

     

    각 frame의 처음과 끝을 '01111110'의 8bit 플래그로 감싸기 때문에 frame의 위치를 쉽게 검출할 수 있다. 주소부호는 송신측, 수신측의 식별변호를 표시하는 주소 부호이며 제어 부호는 각종 제어 정보를 표시한다. 또한 프레임 오류 검사 부호를 이용하여 수신측에서 데이터를 열어본 후 오류가 검출되면 송신측에 재전송을 요구한다.

     

     

    HDLC는 표준 프로토콜이지만, 시스코에서 사용하는 HDLC는 표준 프로토콜이 아니다. HDLC는 효과적인 프로토콜이 아니었기 때문에 시스코에서 이를 발전시켜 시스코만의 HDLC를 사용한다. 따라서 기존 HDLC와 달리 시스코 HDLC는 여러 개의 프로토콜을 지원할 수 있다. 따라서 시스코 라우터와 다른 회사의 라우터를 Serial로 연결할 때 HDLC를 쓰면 안된다. (이름은 같아도 서로 다른 HDLC이다.) 이런 경우에는 PPP를 사용하자.

     

     

     

    HDLC는 Serial interface에는 디폴트로 Enable 되어있지만 Modem 등 Async 라인에서는 Enable을 직접 설정해야하는 경우가 있기 때문에 HDLC 설정 명령어를 알아보자.

     

    Router(config)#interface Serial 0/3/0
    
    Router(config-if)#encapsulation ?
      frame-relay  Frame Relay networks
      hdlc         Serial HDLC synchronous
      ppp          Point-to-Point protocol
      
    Router(config-if)#encapsulation hdlc

     

     

     

     

     

     

    Configuring Cisco HDLC and PPP Encapsulation. - learncisco.net

     

    위 그림은 표준 HDLC와 Cisco HDLC의 비교이다. Cisco HDLC에는 Proprietary라는 block이 추가되어 있다. 하여튼 둘이 다르므로 cisco 장비와 다른 회사 장비를 사용할 때는 HDLC를 사용해서는 안된다.

     

     

     

     

     

     


    PPP (Point-to-Point Protocol)

     

    PPP는 WAN에서 가장 일반적이며 가장 괜찮은 encapsulation 방식이다. Cisco 장비끼리 Serial 연결하는 경우에는 보통 HDLC를 사용하지만 ISDN이나 Modem 접속에서는 거의 PPP를 이용한다. 또한 Cisco가 아닌 다른 회사 장비와 Cisco 장비를 Serial 연결할 때도 PPP를 사용해야 한다. PPP는 보안기능이 강력하며 여러 네트워크 계층의 프로토콜을 한 번에 지원하는 장점을 가진 표준 프로토콜이다.

     

     

    PPP는 NCP(Network Control Protocol), LCP(Link Control Protocol)이라는 두 개의 프로토콜을 지원하는데, NCP는 IP, IPX, AppleTalk 등 멀티 프로토콜을 지원하며 LCP는 링크 접속에서 보안, error check, 압축기능 및 multi-link PPP 등의 링크접속 옵션을 제공한다.

     

     

    ICP에서 보안기능을 제공하기 때문에 안전한 PPP 통신이 가능하다는 것을 기억하자. 

     

    {"originWidth":438,"originHeight":521,"style":"alignCenter","caption":"HDLC and PPP Comparison

     

     

    PPP는 Session 구축(Establishment) 과정을 수행하는데, 위 그림의 과정을 거친다.

     

    1. 데이터 링크 계층의 세션 구축 (LCP 교환단계) ➭ Router 1에서 2로 Configure Request LCP를 보낸다. 이것을 받은 2는 Configure Ack이라는 LCP를 1로 전달한다. 2가 이를 거절하고 싶으면 Configure Nak를 보내면 된다.
    2. 보안 인증 단계 ➭ PAP or CHAP Authentication 과정을 거친다.
    3. 네트워크 계층 세션 구축 (NCP 교환단계) ➭ 맨 처음 단계에서 했던 것처럼 Configure Request, Configure  Ack을 서로 교환한다. IP와 IPCP(Internet Protocol Control Protocol)가 NCP로 사용된다.

     

     

     

     

    보안 인증 단계에서 사용하는 PAP(팹)와 CHAP(챕)에 대하여 알아보자.

     

     

     

     

     


    PAP (Password Authentication Protocol)

     

    {"originWidth":528,"originHeight":289,"style":"alignCenter","caption":"HDLC and PPP Comparison

     

    1. Router 1은 2에 접속하기 위해 자신의 Host name / password를 2에게 전송한다.
    2. Router 2는 1로부터 받은 정보를 자신이 가진 Host name / password 정보와 비교한다.
    3. 만약 그 둘이 일치하면 접속이 허가된다.

     

    이때 메시지 교환이 두 번 발생하므로 2 Way Handshake 방식 인증이라고도 한다.

     

     

    굉장히 간단하지만 Host name / password를 network에 그대로 전송하기 때문에 중간에 해킹에 노출될 가능성이 있다. name과 password가 암호화되어 전송되는 것도 아니고 그냥 생으로 전송되기 때문에 특히나 더 위험하다. 이것으르 전문 용어로 'Host name과 password가 Clear Text로 이동한다'라고 말한다. 이러한 보안상 단점 때문에 실제로는 PAP보다 CHAP을 더 많이 사용하며 시험에도 더 자주 출제된다.

     

     

     


    CHAP (Challenge Handshake Authentication Protocol)

     

     

    {"originWidth":477,"originHeight":283,"style":"alignCenter","caption":"HDLC and PPP Comparison

     

     

    CHAP은 PAP에는 없던 보안성을 탑재하였다. PAP는 중간에 해킹이 가능했지만 CHAP은 이를 방지한다. 또한 3-Way Handshake 방식이다.

     

     

    1. Router 1은 2와 통신하고 싶다.
    2. Router 2는 1에게 '접속하고 싶으면 이 메시지 받아'라며 Challenge를 전송한다.
    3. Router 1은 수신한 Challenge 값을 가지고 자신의 password를 암호화 한다. ➜ 이를 Hashing한다고 말한다. Hashing이란 기존의 데이터를 어떤 코드 값을 이용하여 완전히 변형시켜 절대 원본 데이터로 돌아갈 수 없게 하는 작업을 말한다.
    4. Router 1은 2에게 자신의 password를 해싱한 값을 전송한다.
    5. Router 2는 자기가 가지고 있는 password를 같은 코드 값을 사용하여 해싱한다.
    6. 두 값이 일치하면 인증 통과

     

     

    Password를 해싱(암호화)하여 전송하기 때문에 중간에 누가 이를 갈취해가도 어떤 정보인지 알 수 없다. 보안성능이 짱짱하다.

     

     

     

     

     

     


    Frame Relay

     

    기존에 WAN에서 전통적으로 사용하던 통신 방식은 X.25였다. 과거 WAN은 느리고 오류가 많았기 때문에 이에 알맞게 에러 복구 기능, 흐름 제어 기능을 포함하고 있었다. 반면 Frame Relay는 에러 복구와 흐름 제어등의 과정을 생략하여 효과적이고 빠른 데이터 전송 방법이다.

     

    쉽게 말해서 Frame Relay는 X.25에 비해 빠르지만 에러 제어 기능은 거의 제공되지 않는다.

     

     

     

    Frame Relay를 이해하기 위해 먼저 알아야 할 용어 몇 가지를 살펴보자.

     

    • Data-Link Connection Identifier (DLCI) : Frame Relay 연결을 위한 주소이다. X.25같은 경우에는 주소 지정을 위해 X.121이라는 방식을 사용했는데, 프레임 릴레이는 DLCI를 사용하여 주소를 지정한다. 실제 Physical link가 아닌 logical link에 DLCI를 하나씩 배정한다. 그래서 하나의 interface에 여러 개의 DLCI가 있을 수 있다. (하나의 physical interface에 여러 개의 logical link가 존재할 수 있기 때문)

     

    • LMI (Local Management Interface) : DLCI 정보와 함께 설정된 PVC(Permanent Virtual Circuit, 가상회선) 정보를 알려주어 interface의 다양한 정보와 동작 상태를 제공하는 기능이다. 인접한 라우터들에게 특정 동작 상태에 대한 정보를 제공하여 network에 존재하는 Virtual Circuit의 상태를 쉽게 파악할 수 있게 한다. LMI 타입에는 시스코 LMI, ANSI 617 Annex D LMI 그리고 Q.933 Annex A LMI 등이 있으며 ANSI 방식이 가장 대중적으로 사용되고 있다.

     

    • Encapsulation : 프레임이 릴레이 망을 통과할 때 캡슐로 덮어 씌우는 것처럼 정보를 입히는 것. Cisco 방식과 IETF 방식으로 두 종류가 있는데, Cisco 라우터들은 디폴트로 Cisco 방식을 사용하기 때문에 Cisco 간 통신에서는 Cisco 방식을 사용하고, 타사 장비와 연결할 때는 IETF 방식을 사용하는 것이 바람직.

     

     

     

     

     

     

    Encapsulation을 명령해보자.

     

    Router(config)#interface Serial 0/3/0
    Router(config-if)#encapsulation frame-relay ?
      ietf  Use RFC1490/RFC2427 encapsulation
      <cr>

     

    Frame Relay의 Encapsulation 명령은 Interface에 해주는 것이라는 것을 명심하자. frame-relay 뒤에 올 수 있는 문자는 ietf 혹은 그냥 엔터키이다. ➜ #encapsulation frame-relay ietf 혹은 #encapsulation frame-relay이 가능 frame-realy 뒤에 아무것도 안 써주면 Cisco 방식을 의미한다.

     

     

     

     

     

    다음으로 LMI(Local Management Interface) 값을 설정해주자. Frame Relay 구성시 원활한 Frame Relay를 설정하기 위하여 ISP가 사용하는 LMI 종류를 반드시 정확히 파악해야 한다. 그 LMI 종류와 일치하는 LMI로 세팅을 해야만 Frame Relay가 제대로 작동한다. LMI는 현재 DLCI값, global 혹은 local significance DLCI 값, 그리고 virtual circuit의 현재 작동 상태 등에 대한 정보를 알려주기 위한 목적이다.

     

    Router(config)#interface Serial 0/3/0
    Router(config-if)#frame-relay lmi-type ?
      ansi   
      cisco  
      q933a  
    Router(config-if)#frame-relay lmi-type cisco

     

    LMI 세팅도 역시 interface에 해주어야 한다. LMI 타입은 앞에서 설명한 것처럼 Cisco, ANSI, Q.933 Annex A LMI를 제공한다. 요즘엔 LMI가 자동으로 인식되어 설정되어있기 때문에 굳이 명령어로 설정할 필요는 없다.

     

     

     

     

     

    이제 위같은 네트워크를 설정해보자. Router A에서는 Serial 0/3/0.1, Serial 0/3/0.2를 사용하였는데 이는 Router subinterface를 의미한다. 하나의 interface 0/3/0에서 여러 개의 sub-interface를 나누어 사용하는 것이다. 즉 하나의 물리적인 interface는 여러 개의 논리적 interface로 나누어서 사용하는 바로 그 개념이다.

     

     

    Router(config)#interface Serial 0/3/0.1 ?
      multipoint      Treat as a multipoint link
      point-to-point  Treat as a point-to-point link

     

     

    Serial 0/3/0 interface를 sub interface로 나누고 싶으면 0/3/0 뒤에 점을 찍고 숫자를 붙여주면 된다. Sub-interface는 위에서 보는 것처럼 두 종류로 만들 수 있다.

     

    • Multipoint - 한 곳에서 여러 곳으로 연결해주는 타입
    • Point-to-Point - 일대일 연결 타입

     

     

    Router(config)#interface Serial 0/3/0 point-to-point
    Router(config-if)#encapsulation frame-relay
    Router(config-if)#frame-relay lmi-type ansi
    
    
    Router(config)#interface Serial 0/3/0.1 point-to-point
    Router(config-subif)#ip address 203.240.15.1 255.255.255.0
    Router(config-subif)#frame-relay interface-dlci 102
    
    
    Router(config)#interface Serial0/3/0.2 point-to-point
    Router(config-subif)#ip address 203.240.20.1 255.255.255.0
    Router(config-subif)#frame-relay interface-dlci 103

     

     

    라우터 A의 실제 Physical interface인 Serial 0/3/0에는 IP 설정을 해주지 않았다. Logical interface (Virtual circuit)들에만 IP를 설정해주고 dlci 번호를 부여하였다. 

     

     

    • Physical interface에는 Encapsulation 방식과 LMI 타입을 설정한다. (LMI 타입은 Frame Relay 망에 연결된 모든 라우터에서 동일하게 맞춰주어야 하며, Cisco 라우터에서 디폴트는 Cisco 타입이다.)
    • Sub interface를 point-to-point로 구성한 후 IP주소를 할당하여 실제 Physical interface처럼 동작하도록 설정하였다.
    • DLCI 연결도 잊지 말자. Frame Relay 구성에서는 DLCI 연결을 스킵해도 Inverse ARP라는 것이 동작하여 자동으로 Frame Relay가 연결되지만, 일반적인 경우에서는 DLCI 연결도 반드시 해주어야 하므로 일단 기억하기.
    • Frame Relay를 세팅하면 Inverse ARP가 자동으로 동작하기 때문에 당장은 문제가 없다. 하지만 이 Frame Relay 망에 다른 sub interface를 하나 더 붙이는 경우에, 이것을 연결할 때 frame-realy map을 사용하면 일단 그 상태에서는 연결이 멀쩡하다. 하지만 이 라우터들을 전부 재부팅하면 frame-relay map이 설정되어있기 때문에 Inverse ARP를 동작시키지 않는다. 이러한 경우를 막기 위해서 Inverse ARP에 의존하지 말고 DLCI를 직접 설정해주는 것이 바람직하다.
    • 또한 이 예제처럼 sub interface에 Point-to-Point를 설정하는 경우에는 frame-relay map 명령이 아닌 frame-relay interface-dlci 명령어를 사용한다는 것도 알아두자. 해당 명령어 뒤에는 Local DLCI 번호를 입력한다.

     

     

     

     

     

    Router B, C의 설정도 알아보도록 하자.

     

     

    B(config)#interface Serial 0/3/0
    B(config-if)#bandwidth 56
    B(config-if)#ip address 203.240.15.2 255.255.255.0
    B(config-if)#encapsulation frame-relay
    B(config-if)#frame-relay map ip 203.240.15.1 201 broadcast
    B(config-if)#frame-relay lmi-type ansi
    
    
    C(config)#interface Serial0/3/0
    C(config-if)#ip address 203.240.20.3 255.255.255.0
    C(config-if)#encapsulation frame-relay
    C(config-if)#frame-relay map ip 203.240.20.1 301 broadcast
    C(config-if)#frame-relay lmi-type ansi

     

     

    Router A와는 다르게 B, C에서는 Physical interface를 사용하였다. 주의해야 할 점은 Router A의 logical interface와 동일한 encapsulation, LMI type을 설정해주어야 한다는 것이다.

     

    Router A에서 sub interface를 구성할 때는 frame-relay interface dlci 명령어를 사용했었는데, 이처럼 Physical interface를 구성할 때는 frame-realy map 명령을 사용한다. 이 명령어의 사용 형식은 다음과 같다.

     

     

     

     

    Router(config-if)#frame-relay map <protocol> <address> <dlc> broadcast

     

    • Protocol - Frame realy에서 사용할 프로토콜
    • address - 상대편의 IP 주소
    • dlc - 자신의 DLCI 번호

     

     

     

     

    이로써 Frame Relay 구성을 마쳤다. Router A에서 현재 어떻게 구성이 완료되었는지 그 상태를 확인하기 위해 show frame-relay pvc 명령어를 입력해보자.

     

    Router#show frame-relay pvc
    
    PVC Statistics for interface Serial0/3/0 (Frame Relay )
    DLCI = 102, DLCI USAGE = LOCAL, PVC STATUS = ACTIVE, INTERFACE = Serial0/3/0.1
    
    input pkts 14055       output pkts 32795        in bytes 1096228
    out bytes 6216155      dropped pkts 0           in FECN pkts 0
    in BECN pkts 0         out FECN pkts 0          out BECN pkts 0
    in DE pkts 0           out DE pkts 0
    out bcast pkts 32795   out bcast bytes 6216155
    
    DLCI = 103, DLCI USAGE = LOCAL, PVC STATUS = ACTIVE, INTERFACE = Serial0/3/0.2
    
    input pkts 14055       output pkts 32795        in bytes 1096228
    out bytes 6216155      dropped pkts 0           in FECN pkts 0
    in BECN pkts 0         out FECN pkts 0          out BECN pkts 0
    in DE pkts 0           out DE pkts 0
    out bcast pkts 32795   out bcast bytes 6216155

     

     

    Router A에서는 2개의 Frame Relay PVC(Permanent Virtual Circuit)을 사용한 것을 확인할 수 있다. 각 sub interface가 Router B, C와 잘 연결되어 ACTIVE 상태인 것도 확인된다. 만약 inactive, deleted 상태라면 Frame relay 연결에 문제가 발생한 것이므로 STATUS를 반드시 확인하고 넘어가야 한다. 

     

     

     

    마지막으로 A-B, A-C간 설정이 잘 이루어져 있나 확인해보았다.

     

    Router#sh fram map
    Serial0/3/0.1 (down): point-to-point dlci, dlci 102, broadcast, status defined, inactive
    Serial0/3/0.2 (down): point-to-point dlci, dlci 103, broadcast, status defined, inactive

     

    읭? 둘 다 inactive이다. (책에서는 B만 inactive인데 뭔가 내가 설정을 잘못한 듯) 위 그림에서 Router A,B,C는 모두 한 network 내에 존재해야 하는데 위처럼 설정하는 경우 A-B network / A-C network 두 개로 분리된 것이다. 따라서 A,B,C가 모두 하나의 Frame realy 망에 존재하도록 다시 구성해보자.

     

     

     

     

     

     

    책에서는 라우터 A와 B,C 사이를 Cloud로 연결하라는 말이 없어서 난항을 겪다가 구글링해서 Cloud 연결을 해줘야 Frame Relay 연결이 된다는 것을 알았다. How to configure frame relay in Cisco Packet Tracer - Jesin's Blog (websistent.com) 이 블로그를 참고했다. (근데 이게 맞는지는 잘 모르겠다. ping이 안된다.)

     

    하여튼 되는 데 까지만 해보도록 한다..

     

     

    A(config)#interface Serial 0/3/0
    A(config-if)#encapsulation frame-relay
    A(config-if)#frame-relay lmi-type ansi
    
    A(config)#interface Serial 0/3/0.1 multipoint
    A(config-subif)#ip address 203.240.15.1 255.255.255.0
    A(config-subif)#frame-relay map ip 203.240.15.2 102 broadcast
    A(config-subif)#frame-relay map ip 203.240.15.3 103 broadcast
    A(config-subif)#no shut

     

    여기서는 위와 다르게 Router A에서 하나의 sub interface를 사용했다. 그리고 이 sub interface에 B, C 모두를 multi-point로 연결한다. (위에서는 두 개의 sub interface를 이용하여 각각 B, C와 point-to-point 연결하였다.)

     

     

     

     

    B(config)#interface Serial 0/3/0
    B(config-if)#bandwidth 56
    B(config-if)#ip address 203.240.15.2 255.255.255.0
    B(config-if)#encapsulation frame-relay
    B(config-if)#frame-relay map ip 203.240.15.1 201 broadcast
    B(config-if)#frame-relay map ip 203.240.15.3 201 broadcast
    B(config-if)#frame-relay lmi-type ansi
    B(config-if)#no shut
    
    
    C(config)#interface Serial0/3/0
    C(config-if)#ip address 203.240.15.3 255.255.255.0
    C(config-if)#encapsulation frame-relay
    C(config-if)#frame-relay map ip 203.240.15.1 301 broadcast
    C(config-if)#frame-relay map ip 203.240.15.2 301 broadcast
    C(config-if)#frame-relay lmi-type ansi
    C(config-if)#no shut

     

     

    이번에는 B, C를 각각 A와만 연결하는 것이 아니라 B-C간의 연결도 설정해주었다.

     

     

     

     

    이때 Router B에서 Frame Relay 상태를 체크해보면 다음과 같다.

     

    B#show frame-relay map
    Serial0/3/0 (up): ip 203.240.15.1 dlci 201, static, 
                  broadcast, 
                  CISCO, status defined, active
    Serial0/3/0 (up): ip 203.240.15.3 dlci 201, static, 
                  broadcast, 
                  CISCO, status defined, active

     

     

    B에서 A로 연결된 회선, C로 연결된 회선 모두 active로 잘 설정된 것을 확인할 수 있다.

     

     

     

     

    B#ping 203.240.15.1
    
    Type escape sequence to abort.
    Sending 5, 100-byte ICMP Echos to 203.240.15.1, timeout is 2 seconds:
    .....
    Success rate is 0 percent (0/5)

     

     

    그런데 여기서 문제점은 A의 주소로 ping이 안된다는 것............ 분명히 위에서 active로 연결이 잘 돼있었는데 왜 ping이 안되는지 잘 모르겠다. 나중에 복습할 때 다시 해보고 해결책 찾아보자. 하여튼 이번 게시글에서는 WAN에 사용되는 데이터 전송 알고리즘인 프레임 릴레이에 대하여 알아보았다.

Designed by Tistory.