TIL #030 Data plane 공부하기

2019. 12. 7. 21:56공부/TIL

 

TIL #030

191207 토

 


오늘 배운 점

<컴퓨터네트워크>

네트워크 계층의 주요 기능인 forwarding과 routing에 대해 배우면서 해당 계층에서 주고받는 패킷의 내용과 인터넷 프로토콜에 대해 공부하였다.

1. forwarding과 routing은 사전적으로 비슷한 의미일 것 같지만 네트워크에서는 전혀 다른 의미로 사용된다.

  • forwarding은 라우터 입력 링크에서 출력 링크로 데이터그램을 전송하는 내부적인 동작이다.
  • routing은 네트워크 전반에 걸쳐 end-to-end 경로를 결정하는 것이다.

2.  모든 host 또는 router에는 네트워크 계층 프로토콜이 존재한다.

  • 4계층의 segment를 전달할 때, source에서는 이를 datagram으로 캡슐화하고, 중간단계 라우터에서는 헤더값을 체크하여 포워딩하며, destination에서는 캡슐화된 datagram을 segment로 빼내서(?) 데이터를 받는다.

3. Network Service Model에는 Packet Switching의 일종인 Virtual Circuit Networking과 Datagram Networking이 있다. 3계층에서 연결형 TCP와 비연결형 UDP가 있는 것처럼, 4계층에도 연결형과 비연결형이 있다.

  • ATM에서 사용된 가상회선 NW는 네트워크 내부적으로 복잡한 편이다. 경로의 링크마다 VC 가상 번호를 부여하고, 연결할 때마다 매번 갱신하고 FIB에서 변환하는 과정을 반복한다. 즉, 매번 set up이 필요한 연결형 네트워크 모델이다.
  • 인터넷에서 사용되는 Datagram NW는 보장하는 것이 아무것도 없으며, 네트워크 내부적으로는 단순한 대신 smart edge를 내세워 종단에서 복잡한 모델이다. call setup이 없는 비연결형 네트워크 모델이며, 따라서 패킷이 독립적으로 포워딩된다. lookup 동작을 통해 데이터그램 헤더에 destination host 주소를 FIB에서 대응시켜 놓았다가 출력 링크를 찾아 전달한다. Forwarding table은 data plane에서 로컬 포워딩을 선정항다는 점에서 routing table과 다르다.
  • Datagram NW는 longest prefix matching rule을 따른다. FIB에서 비교했을 때 IP주소가 가장 많이 일치하는 출력 링크를 선택한다.

4. Router는 라우팅 프로세서, 입력 포트, 스위치 구조, 출력 포트로 구성된다.

  • 입출력 포트 양 끝에는 물리 계층 기능을 수행하여 패킷을 받거나 보내는 역할을 한다. 입력 포트의 line card 중 가장 안쪽에 있는 것이 lookup 함수를 실행하고, 제어 패킷의 경우 라우팅 프로토콜로 전달하기 위해 라우팅 프로세서로 전달하기도 한다. ingress queue도 존재하는데, switching 속도가 R보다 작으면 overflow가 발생한다. 어쨌든 가장 중요한 역할은 헤더값을 통해 FIB에서 출력 포트를 검색하여 포워딩하는 것.
  • 출력 포트의 가장 안쪽 line card에는 egress queue가 있다. 출력 포트의 네트워크 계층에서 핵심 역할은 버퍼링과 packet scheduler이다. 버퍼를 통해 손실이나 지연이 발생하지 않도록 데이터를 받는 속도를 조절해야 한다. packet scheduler의 경우 큐에 대기중인 패킷 중 하나를 전송하기 위해 선택할 때 발생하는데, QoS를 보장하기 위한 것이다. 인터넷은 FCFS(선착순)이기 때문에 특별히 우선순위 작업을 하지 않는다.
  • HOL(Head-of-the-Line) blocking은 다른 출력 링크가 놀고 있을 수 있는데도 앞에 있던 패킷이 제 시간에 이동하지 못하여 지연이 발생하는 상황을 말한다. 큐가 길어져 버퍼가 넘치면 패킷 손실이 발생할 수 있는 상황이다.

5. 인터넷에서는 어떻게 주소를 지정하고 포워딩할까?

  • 3계층에는 TCP, UDP가 있고 4계층에는 Control plane에서 경로를 선택하는 라우팅 프로토콜과 에러를 보고하는 ICMP 프로토콜이 있다. 라우팅 프로토콜은 Data plane의 포워딩 테이블과 협업한다. 이 외에도 Data plane에는 IP 프로토콜, 주소 체계와 데이터그램 형식에 관한 체계, 패킷 핸들링 등에 관한 내용이 담겨 있다.
  • IPv4와 iPv6의 헤더 구성과 그 요소들의 의미/역할을 공부하였고, 서브넷과 관련된 예제들도 풀어보았다. IPv6은 128 bit 길이의 주소를 다루지만, 라우터 차원에서의 fragmentation은 하지 않는다(대신 source에서 쪼개는 작업을 한다). v6에서는 헤더를 간소화하여 프로세스와 포워딩 성능을 개선하였고, anycast 주소도 도입하였다는 차이점이 있다. IPv4에서 주소 공간을 할당할 때에는 CIDR 방식으로 정해진 길이의 서브넷이 아닌 임의의 길이로 서브넷을 지정하여 보다 효율적으로 공간을 활용한다. 그럼에도 결국 고갈되었기 때문에 이제는 IPv6로 넘어가고 있는 과정에 있다.
  • 또한 동적으로 호스트 주소를 획득하는 DHCP 프로토콜이 있는데, 자동으로 호스트와 연결해준다는 특성 때문에 plug-and-play protocol이라고도 불린다. 클라이언트-서버 프로토콜이며, 연결 요청을 할 때 broadcast를 통해(255.255.255.255) 클라이언트와 서버가 discover->offer->request->ACK 메시지를 순서대로 주고 받으며 새로운 호스트가 주소를 획득한다. 
  • IPv4에서 iPv6로 전환하는 과정에서 두 주소를 사용하는 방법은 크게 3가지가 있다: Dual Stack, NAT-PT, Tunneling.

6. NAT(Network Address Translation)을 통한 주소 변환

  • SOHO의 확산으로 연결할 기기가 많아지고, 굳이 ISP의 관리를 하나하나 받을 필요가 없는 경우에 WAN과 LAN 측면으로 나누어 IP 주소를 부여한 라우터를 사용한다. 각 기기들은 로컬 네트워크에서 사용하는 private IP 주소를 가지지만, WAN과 정보를 송수신할 때에는 단일한 public IP 주소를 사용하고 port #만 달리하여 통신하게 된다. 라우터가 NAT translation table에 각 주소를 매칭해놓았다가 송수신이 발생할 때마다 주소를 변환해주는 방식으로 진행된다.
  • e2e connectivity 원칙을 위반한다, 라우터가 4계층 패킷처리까지 하게 되는 상황이 된다, port #가 host 주소 대신 process 지정에 사용된다 등의 논란이 있다.

 

<그래노라>

오늘은 근로계약서와 4대보험 관련 서류 작업을 위한 오전 미팅을 진행했다. 주관기관에서의 실사 방문에 필요한 서류들도 점검하고, 업무지시서 양식도 만들었다. 


내일 배울 점

<학교 전공>

1. 컴퓨터네트워크 Control Plane 공부, 팀프로젝트 최종 보고서 마무리 및 제출

2. 범주형자료분석 기말레포트 작성, 기말고사 공부

<Flutter>

1. 마이스튜디오 화면 구현 조금이라도 시간 내서 하기!


더보기

- 그래도 12월 1주차에 해야 할 업무는 거의 다 끝내서 기분이 좋다!