컴퓨터 네트워크 4 : Network Layer

LeemHyungJun·2023년 12월 8일
0

Computer Network

목록 보기
5/8

1. Network Layer: overview

  • network layer의 sevice 와 protocols
    • sender는 segments(transport layer의 packet)를 encapsulate 하여 datagram(network layer의 packet)으로 만들어서 보내기
    • receiver는 segment 를 추출해서 transport layer로 보내기
  • network-layer functions
    • forwarding
      • 라우터 안에서 패킷을 적절한 output 링크로 보내주기
      • data plane과 관련!
    • routing
      • 패킷 경로를 설정하기
      • control plane과 관련!

1-1. data plane

  • local, per-router function
  • forwarding table을 통해 router의 input port로 들어온 datagram이 적합한 output port로 나가도록 하는 것

1-2. control plane

  • network-wide
  • 전체 packet 전송 과정에서 source에서 destination으로 갈 때 어떤 경로를 통해 갈 것인지 설정
  • two control-plane approaches
    • 전통적인 방식 : 라우터에 구현하기
    • SDN (software-defined networking) : routing 기능을 별도의 서버에 구현하기

1-3. network service model

  • 정의 : 송수신 호스트 간 패킷 전송 특성
  • 서비스의 예시..
    • 보장된 전달
    • 지연 제한 이내의 보장된 전달
    • 순서화 패킷 전달
    • 최소 대역폭 보장
    • 보안 서비스
  • best effort service
    • 보장된 것이 없는 서비스
      • 순서 보장 x
      • 전송 자체 보장 x
      • 지연, 최소 대역폭 보장 x
  • cf) QoS (Quality of Service)

2. What's inside a router

2-1. input ports, switching, output ports

전체적인 모습

  • Input Ports
    • line termination : physical layer의 값 처리 (bit level)
    • link layer protocol
    • look up, forwarding queueing (decentralized switching)
      • 검색기능 (header를 통해 output찾기)
      • destination-based forwarding
        • 목적지 주소를 보고 forwarding 하기
        • 주소값의 범위를 가지고 앞에서부터 비교해서 어느 지점까지 확인해서 output 링크를 정하는 방식
        • Longest prefix matching
          • 비교한 것이 같을 때 처리하는 방식
          • 가장 길게 matching 되는 것 선택하기
          • TCAMs 라는 메모리 사용함 (빠르다)
      • generalized forwarding
        • 다른 정보를 추가로 활용한 forwarding
  • Switching
    • 정의 : input 링크로 들어온 packet을 올바른 output 링크로 연결하는 것
    • switching rate
    • 많이 사용하는 방식 세가지
      • memory
        • 입력포트와 출력포트를 연결하는 system bus에 있어서 메모리라는 중간 매개체를 이용
        • packet이 system memory로 복사된 후 보내진다.
        • 복사를 해야하기 때문에 속도가 느리다.
      • bus
        • 공유하는 하나의 bus를 사용
        • 동시전송이 안되고, 하나의 input을 처리할때 bus를 독점해야 한다.
      • interconnection network
        • 동시에 통신을 가능하게 하는 방법
        • multistage switch
          • nxn switch 사용
        • exploiting parallelism
  • Output Ports
    • cf) Input Port queuing
      • 입력 대비 switch가 느리게 동작하는 것을 방지하기 위해 존재
      • Head-of-the-Line blocking
      • 가끔 발생할 수 있는 일을 방지하기 위해 존재함
    • Output Port Queuing
      • buffering : 꽉 찼을때 버리기
      • scheduling discipline : 우선순위를 통해 큐에서 보낼 것 정하기

2-2. buffer management, scheduling

  • Buffer Management
    • drop : packet을 버리는 방식
      • tail drop: 맨 뒤에(꼬리)에 있는것 버리기
      • priority: 우선순위 정해서 버리기
    • marking : 마킹해두기
      • ECN, RED
  • Scheduling
    • FCFS : first come first served (먼저 온 것 먼저 보내기)
    • Priority : 헤더를 통해 우선순위 구별하기
      • low pri와 high pri가 존재해서 low 의 경우 high가 모두 보내진 다음 보내게 되어있다.
    • Round Robin
      • 큐의 우선순위에 따라 돌아가면서 쓰는 방식
      • 각 큐는 같은 가중치를 가진다.
    • Weighted fair queueing
      • RR의 진화된 방식 -> 많이 사용되는 큐의 가중치를 더 많이 주어서 더 많이 반복되게 한다!
      • 최소 bandwidth가 보장된다.
      • QoS를 지킨다.

3. IP: the Internet Protocol

  • Network Layer: Internet

3-1. datagram format

3-2. addressing

  • Intro
    • IP address: 라우터나 호스트를 구별하기 위한 식별자
    • Interface : 호스트와 물리적 링크 사이의 경계
  • Subnets
    • 라우터 없이 물리적으로 서로에게 도달할 수 있는 장치 인터페이스
    • subnet 주소 예시

  • CIDR(Classless InterDomain Routing)
    • subnet 주소체계 표기를 일반화 하기
    • a.b.c.d/x의 형식
      • x는 subnet 주소의 길이를 알려줌
  • DHCP(Dynamic Host Configuration Protocol)
    • 서버로부터 동적으로 IP 할당받기
    • 동작 과정
      • DHCP discover를 통해 DHCP 서버 존재여부 확인
      • DHCP offer를 통해 사용할 수 있는 IP 주소 알려줌
      • DHCP request를 통해 사용하겠다고 알려줌
      • DHCP ACK을 통해 IP 주소 사용 확인
    • IP 주소뿐만 아니라 첫번째 홉 라우터의 주소나, DNS서버의 정보 network mask등의 정보도 DHCP가 준다.
  • how to get IP address?
    • IP 주소의 subnet part의 경우는 주소를 바꾸지 못한다.
    • 그 뒤에 수정 가능한 부분을 수정하기
  • Hierarchical addressing
    • route aggregation
    • IP 주소가 ~ 로 시작하는 것끼리 묶어두어 더 효율적으로 addressing 할 수 있다.
    • 여기서도 long dest prefix에 따라 동작하므로, 만일 1번 ISP의 Organization이 2번으로 간 경우라도 제대로 동작한다.

3-3. NAT(Network Address Translation)

  • 정의 : 바깥세상(rest of Internet)으로 나갈 때 사설IP를 진짜 IP로 변환해주는 것
  • port# 를 통해 사설 IP를 구별한다.
  • cf) NAT는 network 계층인데, port#(transport layer)를 건드리는것은 원칙은 아니지만, 동작하는데 문제없어서 그냥 쓰고 있다.

3-4. IPv6

  • IPv6가 나오게 된 동기
    • IP 주소의 고갈 (IPv6 -> 128bit)
    • speed processing (빠른 처리와 forwarding, IP packet 단순화) -> 간소화된 header
    • 서로 다른 flow에서 서로다른 network 처리 (QoS)
  • datagram format 특이점 (IPv4와 차이점)
    • no checksum, fragmentation, options
  • tunneling
    • IPv4를 IPv6로 전환하는 과정!
    • IPv6를 IPv4처럼 캡슐화 해서 진행
      • 예를들어 A->F 경로 중 C,D가 IPv4 터널일때 B->E까지의 경로로 캡슐화해서 진행

4. Generalized Forwarding, SDN

4-1. Match+Action

  • 정의
    • Match : 목적지의 IP 주소를 찾기
    • Action : 패킷을 지정된 출력 포트로 전송
  • Generalized forwarding vs. Destination based forwarding
    • destination based forwarding은 오직 도착지 주소만 가지고 수행하지만, generalized 는 다양한 헤더들을 통해 action을 수행한다.
  • Flow table(forwarding table)
    • flow : 헤더값에 정의되어 있다.
    • generalized forwarding
      • match
      • action : drop, forward, modify 등등
      • priority : 중복 제거?
      • counters : 얼마나 사용했는지

4-2. OpenFlow: match+action in action

  • 간단한 forwarding 예시
  • load balancing
  • firewall
  • 요약
    • router
      • match: 가장 긴 도착지 IP prefix
      • action: forward out a link
    • switch
      • match: 도착지 MAC 주소
      • action: forward or flood
    • firewall
      • match: IP 주소, TCP/UDP 포트#
      • action: permit or deny
    • NAT
      • match: IP 주소, port#
      • action: 주소와 port 다시 쓰기

5. Middleboxes

  • RFC 3234: "출발지 호스트와 목적지 호스트 사이의 데이터 경로에서 IP 라우터의 정상적이고 표준적인 기능과는 별도로 기능을 수행하는 모든 미들박스"
  • Middlebox의 역할
    • NAT
    • 보안 (Firewall, IDS)
    • 성능 향상 (Load balancer, Cache)
  • "whitebox" hardware
    • network를 sw화 해서 범용으로 쓸 수 있게 만들었다.
    • SDN
    • NFV(Network Functions Virtualization)
      • whitebox위에 어떤 sw를 설치하는가에 따라 다른 역할을 할 수 있도록 만들기
  • IP hourglass
    • 초기 : IP 가 유일한 network layer protocol
    • 중기 : IP, NAT, caching, NFV, Firewall (middle box 들)
  • 결론은 Internet의 core를 simple하게 만들고, 복잡한 것들은 Internet edge에 배치하기

0개의 댓글