[TIL] 네트워크 계층

김은혁·2023년 5월 18일
0

네트워크 계층에서 가장 중요한 것 ! 주소 ! address !

주소를 어떻게 찾아갈 것인가 ?

  • 송신 호스트에서 수신 호스트로 segment 전달
  • 송신측에서는 segment를 datagram으로 캡슐화함
  • 수신측은 트랜스포트 계층에 segment 전달
  • 네트워크 계층 프로토콜은 모든 호스트, 라우터에 존재
  • 라우터는 지나가는 모든 IP datagram의 헤더를 검사한다

ㅁ 포워딩 : 라우터의 입력으로 들어오는 패킷을 적절한 출력으로 보냄 (데이터 영역)

ㅁ 라우팅 : 패킷이 출발지에서 목적지까지 거칠 경로를 결정 (제어 영역)

  • 각각의 모든 라우터들에 위치한 라우팅 알고리즘 요소들이 제어 영역에서 상호작용함.

  • 때로는 별개의 제어기가 지역 제어 에이전트(CA)와 상호작용함

  • 네트워크가 발전하면서 서비스 모델을 적용함.

    • 송신측에서 수신측으로 datagram을 전송하는 채널(connection)에 어떤 서비스 모델을 적용할 것인가?
    • 개별 datagram에 대한 서비스 예: 전달 보장, 40msec 이하의 지연시간 보장
    • datagram 흐름에 대한 서비스 예: datagram 순서 보장, 최소 대역폭 보장, packet간 간격 변화의 제한
    • = QoS (Quality of Service)

현재의 네트워크 구조는 QoS를 거의 지원하지 못함.

네트워크 구조서비스 모델대역폭손실순서시간혼잡 피드백
인터넷best effortnonenononono
ATMCBR (constant bit rate)constant rateyesyesyesno congestion
ATMVBR (variable bit rate)guaranteed rateyesyesyesno congestion
ATMABR (available bit rate)guatanteed minimumnoyesnoyes
ATMUBR (unspecified bit rate)nonenoyesnono

ATM (Asynchronous Transfer Mode) - 비동기 전송 방식

라우터 구조

  • 라우팅, 제어영역 (소프트웨어) : msec 시간 수준에서 동작
  • 포워딩, 데이터 영역 (하드웨어) : nsec 시간 수준에서 동작

입력 포트

  • 라인 종단 : 물리 계층 (bit 레벨의 수신)

  • 링크 계층 프로토콜 : 예) Ethernet

  • decentralized switching

    • 헤더의 값을 이용해 입력 포트 메모리의 forwarding table에서 출력 포트를 검색
    • 목표 : 회선속도로 입력포트 처리를 완료
    • 큐잉 : 스위치 구조로의 전달 속도보다 datagram이 빨리 도착하면 발생
    • 목적지 기반 전송 : 목적지 IP 주소에만 기반하여 전송 (전통적 방식)
    • 일반적인 전송 : 헤더 필드 값들의 여러 조합에 기반하여 전송
  • 목적지 기반 전송 (Destination-based forwarding)

목적지 주소 범위링크 인터페이스
11001000 00010111 00010000 00000000 부터 11001000 00010111 00010111 111111110
11001000 00010111 00011000 00000000 부터 11001000 00010111 00011000 111111111
11001000 00010111 00011001 00000000 부터 11001000 00010111 00011111 111111112
그 외3

ㅁ 최장 프리픽스 대응 (longest prefix matching)

주어진 목적지 주소에 대해서 forwarding table을 검색할 때, 목적지 주소에 들어맞는 최장의 주소 프리픽스를 사용한다.

ex)

목적지 주소 범위링크 인터페이스
11001000 00010111 00010* **0
11001000 00010111 00011000 ****1
11001000 00010111 00011* **2
그 외3

DA: 11001000 00010111 00010110 10100001
DA: 11001000 00010111 00011000 10101010 어느 인터페이스로 ?

스위치 구조

  • 입력 버퍼의 패킷을 적절한 출력 버퍼로 전달
  • Memory 방식 / Bus 방식 / Interconnection network (Crossbar, HyperCube, …) 방식

ㅁ 메모리를 통한 스위칭

  • 초창기의 라우터들
  • CPU의 직접 제어에 의한 스위칭을 하는 전통적 컴퓨터
  • Packet이 시스템 메모리에 복사된다
  • 속도가 메모리 대역폭에 의해 제약받는다

ㅁ 버스를 통한 스위칭

  • datagram을 공유 버스를 통해 입력 포트 메모리에서 출력 포트 메모리로 전달
  • 어느 한 순간에 하나의 데이터만 버스를 사용할 수 있음
  • bus contention: 스위칭 속도는 버스의 대역폭에 의해 제약을 받음

ㅁ Interconnection network를 통한 스위칭

  • 버스 대역폭 제한을 극복

입력 포트 큐잉

  • 스위치 구조가 입력 포트보다 느리면 입력 큐에 큐잉 발생
    • 입력 버퍼가 넘치면 손실 발생 !
  • bus contention
  • Head-of-the-Line (HOL) 차단 : 큐 앞쪽의 datagram 때문에 그 큐의 다른 datagram이 전달되지 못함

출력 포트

  • 스위치 구조에서 datagram이 전송 속도 이상으로 도착하면 버퍼링 필요
  • 버퍼가 overflow되면 데이터 유실됨.
  • 스케줄링 정책으로 전송할 datagram을 큐에서 선택

ㅁ 스케줄링 메커니즘

  • 스케줄링 : 링크로 보낼 다음 패킷을 선택하는 것

  • FIFO 스케줄링 : 큐에 도착한 순서대로 전송

    • 폐기 정책 : 큐가 꽉 찼을 때 패킷이 도착하면 ?
      • tail drop : 새로 도착하는 패킷을 버림
      • priority: 우선순위에 의해 버림
      • random: 무작위로 선택해서 버림
  • priority 스케줄링 : 가장 우선순위가 높은 큐의 패킷을 전송 (동일 우선순위 내에서는 FIFO)

    • 다른 우선순위의 다중 class
    • starbation 문제 발생
  • Round Robin 스케줄링 : 순환적으로 class queue들을 스캔해서 각 클래스에서 패킷을 하나씩 전송한다.

  • WFQ (Weighted Fair Queuing) 스케줄링 : 일반화된 Round Robin

    • 각 클래스는 각 사이클에 가중치를 감안한 서비스를 받는다.

Q1. 패킷이 유실되는 건 괜찮은가?

Q2. 우선순위는 어디서 정해지고 어디에 저장되는가?

0개의 댓글