ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [네트워크] 17. LAN(arp), MPLS
    CS/네트워크 2023. 6. 19. 23:49

    Link layer의 대표적인 프로토콜인 ARP에 대해 알아보도록 하겠습니다.

     

    ARP 와 MAC addresses

    mac 주소는 48bit(6byte)로 이루어져 있습니다.

    앞의 3byte는 Manufacturer ID이며, 뒤의 3byte는 Product ID 입니다.

     

    IP주소는 변할 때가 있는 반면에, MAC주소는 변경이 일어나지 않기 때문에 portablilty가 있습니다.

     

    ARP(Address Resolution Protocol)은 IP주소를 이용해 MAC주소를 알아내는 protocol입니다.

    각 장비마다 ARP table이 있고, 여기에 IP주소와 MAC주소를 매핑해서 저장합니다.

    TTL(time to live)은 이 주소가 얼마나 유효할지에 대한 시간 정보로, 약 20분 정도입니다.

     

    ARP : same LAN

    A가 B에게 datagram을 보내고 싶을 때, A는 B의 mac 주소를 알아내야 합니다.

    과정은 다음과 같이 이루어집니다.

    1. A는 ARP query를 broadcast합니다. 모든 LAN에 있는 노드는 이 쿼리를 받게 됩니다.
    2. B는 ARP query를 받고 A에게 자신의 MAC 주소를 써서 unicast 합니다.
    3. A는 IP주소-MAC주소 pair를 캐싱합니다.

    이 과정은 plug and play이기 때문에, 보안상 위험할수도 있습니다.

     

     

    ARP Format

     

     

    ARP : 다른 LAN으로 라우팅하기

    이번엔 A와 B가 다른 네트워크에 라우터로 연결된 경우를 살펴보겠습니다.

     

     

    1. A는 B와 같은 네트워크인지 확인합니다. Netmask를 &해서 Network ID를 보고 알 수 있습니다.
    2. 다른 네트워크라는 것을 확인한 후, first hop router로 패킷을 전달해야 하므로 ARP를 통해 first hop router의 MAC 주소를 알아냅니다.(first hop router의 IP주소는 DHCP를 통해 알 수 있습니다)
    3. 이후 패킷을 라우터에게 전달하게 되면, 라우터 안에서 역 캡슐화, 캡슐화 작업을 거친 이후 B의 네트워크로 보내게 됩니다.

    * DHCP로 알 수 있는 정보 : first hop router, DNS server, network mask

     


    Ethernet

    ethernet protocol의 시작은 preamble로 시작합니다.

    이 8 byte는 0b101010 7byte와 0b101011 1byte로 구성되는데, 이를 통해 sync를 맞추게 됩니다.

     

    Ethernet은 아래와 같은 특징을 가집니다.

    • connectionless : handshake 과정을 거치지 않습니다.
    • unreliable : NIC는 다른 NIC로 ack나 nack를 보내지 않습니다.(더 높은 계층에서 rdt 지원)
    • unslotted CSMA/CD with binary backoff 프로토콜을 사용합니다.

    Switch

    스위치는 frame을 받고 전달하는 역할을 합니다.

    스위치의 특징은 아래와 같습니다.

    • selectively forward : frame을 받고 forwarding 시킵니다.
    • transparent : host는 스위치를 모릅니다.
    • plug and play, self learning : 스위치는 스스로 학습하여 table을 형성합니다.

    다음과 같은 구조에서 스위치가 없고 물리적으로 bus로 연결된 경우, collision이 발생할 수 있습니다.

    이를 스위치의 forwarding table로 해결합니다.

     

    스위치의 table은 단순하게 MAC 주소와 interface, TTL만이 담겨 있습니다.

    이를 채우는 방법은 self learning을 이용합니다.

     

    Switch : self-learning

    스위치는 스스로 학습할 수 있는 기능이 있습니다.

    • frame이 스위치로 도달했을 때, source를 보고 해당 interface와 MAC 주소로 table을 형성합니다.
    • destination이 스위치 table에 있다면 해당 interface로 전달합니다.
    • 만약 destination을 알고 있지 않다면 flood 방식을 사용합니다.(broadcast)
    • flood를 하게 되면 host에서 해당 MAC주소가 맞지 않는 경우 discard시킵니다.
    • 알맞는 host에서는 response를 주게 되고, 이 내용이 경로를 따라 오면서 스위치들의 table에 기록됩니다.

     


    VLAN

    vlan은 physical하게는 하나지만, 논리적으로 여러개처럼 작동하게 만든 것입니다.

    하나의 스위치에 있지만, broadcast 영역을 두 개로 나눌 수 있습니다.

     

    Port-based VLAN

    port 기반으로 도달할 수 있는 frame을 구분하는 방법입니다.

    여기서 port 기반이 아닌 MAC주소 기반으로 할 수도 있습니다.

    MAC 주소를 기반으로 VLAN을 나눌 수 있게 됩니다.

    따라서 다른 위치에 연결을 하더라도, 계속 사용할 수 있습니다.

     

     

    VLANS spanning multiple switches

    물리적으로 떨어져 있을 때 동일한 LAN을 사용하는 것 처럼 하기 위한 확장입니다.

     

    16번에 다른 스위치를 연결하는 방법으로 서로 다른 LAN을 연결할 수 있습니다.

     


    MPLS

    라우터는 frame을 전달받은 이후, ethernet 헤더를 벗겨내고 IP주소를 확인해서 IP forwarding을 수행합니다.

    이 과정이 오래 걸리기 때문에, Ethernet header와 IP header 사이에 label을 넣어서 이 label 기반으로 forwarding하는 방법입니다.

     

     

     

    이 헤더를 통해 로드밸런싱이 가능합니다.

     

    위 그림에서 IP 라우팅만 사용한다면 항상 같은 경로를 사용하게 됩니다.

    하지만 label을 통한 MPLS 라우팅을 사용하면 source와 destination address를 기반으로 backup routes를 생성하여 트래픽을 분산시킬 수 있습니다.

     

    MPLS는 기본적으로 L2까지만 올라가는 것으로 작동하지만, 호환성을 위해 L3 layer도 지원해야 합니다.

    link state 알고리즘을 변형한 알고리즘을 사용해서 주변 라우터에게 광고해서 table을 채워나갑니다.

     

     

    테이블을 채우게 되는 과정은 다음과 같습니다.

    • R1은 A로 갈 수 있는 경로를 가지고 있음을 label과 함께 R2와 R3에게 광고합니다.
    • R2와 R3는 각각 A로 가는 방법을 r4에게 광고해서 알려줍니다.

    Data center network

    서비스가 커지면서 클라이언트가 많아지면, 이를 견뎌내기 위한 로드밸런싱과 매니징이 필요합니다.

    Data center에서는 로드밸런싱을 통해 아래와 같은 구조로 트래픽을 분산시킵니다.

     

    여기서 load balancer를 L4 스위치라고 하기도 합니다.

    로드밸런서는 트래픽에 따라 다르게 라우팅을 해주는데, 이 때 최종 목적지는 IP주소가 같을 수도 있습니다.

     

    또한 어느 누가 고장나더라도 괜찮도록 모든 스위치를 서로 연결시키는 방식을 사용하기도 합니다.

    댓글

Designed by Tistory.