0223

학교

[컴퓨터 네트워크] Chapter 4. Networks Layer Data Plane (Part 2) - (3)

일자 : 24-2 13주차 2차시 (1)

[4] IPv6: 동기

  • 초기 동기: 32비트 IPv4 주소 공간이 완전히 할당된다고 예상한다.

  • 추가 동기:

    • 처리와 전달 속도를 높이기 위해 40바이트 고정 길이 헤더를 사용한다.

    • 네트워크 계층에서 플로우를 다르게 처리할 수 있도록 한다.

[5] IPv6 데이터그램 포맷

IPv6 데이터그램 포맷
  • ver

    • 4비트

  • source address / destination address

    • 128비트 IPv6 주소

    • $2^{128}$ 개의 주소를 표현

  • priority

    • 플로우 내 데이터그램 간 우선순위 식별

  • flow label

    • 동일한 “플로우”에 속한 데이터그램을 식별

1) IPv4와 비교해 부족한 점:

  • 체크섬 없음: 라우터에서 처리 속도를 높이기 위해 체크섬 제거

  • 단편화/재조립 없음: IPv6는 단편화를 지원하지 않음

    • 단편화를 라우터에서 처리하지 않는 이유: 라우터의 성능을 향상시키고, 네트워크의 복잡성을 줄이기 위해서이다. 이를 통해 라우터가 데이터그램을 빠르게 처리할 수 있도록 하고, 송신자가 패킷 크기를 미리 조정하여 효율성을 높이도록 한다.

  • 옵션 없음: 옵션은 상위 계층 프로토콜로 제공되며 라우터의 "next-header" 필드로 사용

[6] IPv4에서 IPv6로의 전환

  • 모든 라우터를 동시에(simultaneously) 업그레이드할 수 없음

    • "플래그 데이" 없음

    • IPv4와 IPv6 라우터가 혼합된 네트워크에서는 어떻게 운영될 것인가?

  • `터널링: IPv4 라우터들 사이에서 IPv6 데이터그램을 IPv4 데이터그램의 페이로드로 운반 ("패킷 속의 패킷")

    • 터널링은 다른 맥락에서도 광범위하게 사용됨 (4G/5G 등)

    • 터널링은 IPv6 데이터그램을 IPv4 데이터그램 안에 포함시켜, 마치 하나의 패킷 속에 다른 패킷이 들어있는 형태로 만든다.

[7] 터널링과 캡슐화

터널링과 캡슐화
  1. 이더넷 연결로 두 IPv6 라우터 연결

    • 링크 계층 프레임

    • 일반적으로: 데이터그램을 페이로드로 사용하는 링크 계층 프레임

    • 차이점 : 두 IPv6 라우터는 직접적으로 이더넷을 통해 연결된다. 이더넷은 링크 계층에서 동작하며, IPv6 데이터그램은 이더넷 프레임의 페이로드로 포함된다. 즉, IPv6 라우터들 간에 IPv6 패킷이 그대로 전송된다.

  2. IPv4 네트워크로 두 IPv6 라우터 연결

    • 라우터 B / E는 IPv6와 IPv4를 모두 사용해야 한다.

    • IPv4 네트워크가 두 IPv6 라우터를 연결하는 역할을 한다. IPv4 네트워크를 통해 IPv6 패킷을 전송하려면 터널링을 사용해야 하며, IPv6 패킷은 IPv4 패킷 안에 캡슐화되어 전송된다. 즉, IPv4 네트워크 상에서 IPv6 패킷을 전송하려면 IPv6와 IPv4를 모두 처리할 수 있는 라우터가 필요하다.

1) 결론 (차이점)

: 따라서 1은 동일한 IPv6 프로토콜을 사용하는 네트워크에서의 연결인 반면, 2는 IPv4 네트워크에서 IPv6 패킷을 전송하기 위한 터널링 방식이다.

[8] 터널링

: 터널링을 통해 IPv6 라우터가 IPv4 네트워크를 통과하여 통신할 수 있는 터널링 프로세스를 이해할 수 있다.

1) 논리적 관점과 물리적 관점

  1. 논리적 관점:

    • IPv6 라우터(A, B)가 IPv4 터널을 이용하여 서로 통신한다.

    • IPv4 터널은 두 IPv6 라우터(B, E) 사이를 연결한다.

  2. 물리적 관점:

    • IPv6 라우터(B, E)와 IPv4 라우터(C, D, E)가 연결되어 있다.

    • 데이터는 IPv6 패킷에서 IPv4 패킷으로 변환되며, IPv4 네트워크를 통과한다.

    • 목적지에 도달하면 다시 IPv6 패킷으로 변환된다.

2) 주목할 점:

  • 출발지(src)와 목적지(dest) 주소가 각 단계에서 변경됩니다.

    • A-to-B: IPv6 내부 전송

    • B-to-C: IPv6 내부에서 IPv4로 변환

    • C-to-D: IPv4 내부 전송

    • D-to-E: IPv4에서 IPv6로 변환

Q. Router E에서는 어떻게 IPv6가 IPv4에 있는 것을 알 수 있을까?
A. A. Router E는 IPv4 패킷의 헤더에서 "프로토콜" 필드를 보고, 그 값이 41이면 이 패킷 안에 IPv6 데이터가 들어 있다는 걸 알 수 있다. 41은 IPv6를 의미하는 값이다.

  • uppder layer를 보면 된다.

    • 1은 ICMP, 6은 TCP, 17은 UDP, 41은 IPv6 등을 의미

[9] IPv6: 채택

  • Google^1: 약 44%의 클라이언트가 IPv6를 통해 서비스에 접근 (2023년 기준)

  • NIST: 미국 정부 도메인의 1/3이 IPv6를 지원

  • 배포와 사용에 오랜 시간

4. 일반화된 전달, SDN

  • Match+action

[1] 일반화된 전달: 매치와 액션

1) 복습

각 라우터에는 전달 테이블(흔히 플로우 테이블이라 불림)이 포함되어 있다.

  • “매치와 액션” 추상화: 도착한 패킷에서 비트를 매칭하고 액션을 취한다.

    • 목적지 기반 전달: 목적지 IP 주소를 기준으로 전달

    • 일반화된 전달:

      • 여러 헤더 필드를 사용해 액션을 결정할 수 있다.

      • 가능한 액션은 많다: 패킷을 드롭/복사/수정/로그 기록 등

일반화된 전달

[2] 플로우 테이블 추상화

  • 플로우: 헤더 필드 값에 의해 정의됨 (링크 계층, 네트워크 계층, 전송 계층 필드에서)

  • 일반화된 전달: 간단한 패킷 처리 규칙

    • 매치: 패킷 헤더 필드에서 패턴 값 매칭

      • 패킷 헤더 필드의 특정 값을 찾아 패킷을 필터링하거나 구분하는 과정이다.

    • 액션: 매칭된 패킷에 대해 취할 액션: 드롭, 전달, 수정, 또는 매칭된 패킷을 컨트롤러로 전송

      • 매칭된 패킷에 대해 취할 동작으로, 패킷을 드롭하거나 전달, 수정 또는 컨트롤러로 보낼 수 있다.

    • 우선순위: 겹치는 패턴을 구분하기 위한 우선순위 설정

      • 여러 매칭 패턴이 겹칠 때, 어떤 패턴이 우선 적용될지를 결정하는 기준이다. `

    • 카운터: 바이트 수 및 패킷 수

      • 패킷 처리에 대한 통계로, 처리된 바이트 수와 패킷 수를 추적한다.

플로우 테이블 추상화
  • 라우터의 플로우 테이블은 라우터의 매치+액션 규칙을 정의한다.

1) 예시

  • src = *.*.*.*, dest = 3.4.*.* -> forward(2)(출발지 주소가 어떤 값이든, 목적지 주소가 3.4.*.*이면 패킷을 포트 2로 전달)

  • src = 1.2.*.*, dest = *.*.*.* -> drop(출발지 주소가 1.2.*.*이면, 목적지와 관계없이 패킷을 드롭)

  • src = 10.1.2.3, dest = *.*.*.* -> send to controller(출발지 주소가 10.1.2.3이면, 목적지와 관계없이 패킷을 컨트롤러로 전송)

*: 와일드카드로, 모든 값을 의미한다.

  • 0 ~ 255

[3] OpenFlow: flow table entries

1) OpenFlow 프로토콜의 flow table 항목

: 스위치는 패킷 헤더와 일치하는 flow table 항목을 찾아 해당 동작을 수행하게 된다.

  1. Match (일치 조건):

    • 패킷의 헤더 필드들이 여기에 명시된 조건과 일치하면 해당 항목이 적용된다.

    • Header fields to match: Flow table의 Match 필드에 사용되는 다양한 헤더 필드들이 계층별로 정리되어 있다.

      • 링크 계층, 네트워크 계층, 전송 계층의 필드들이 표시되어 있다.

  2. Action (동작):

    • 일치하는 패킷에 대해 수행할 동작들이 나열되어 있다.

    • 4가지 동작: 포트로 전달, 버림, 헤더 수정, 컨트롤러에 전달한다.

      1. Forward packet to port(s): 패킷을 지정된 포트로 전달한다. (예: 특정 목적지로 향하는 패킷을 지정된 트로 전송)

      2. Drop packet: 패킷을 폐기한다. (예: 조건에 맞지 않는 패킷을 네트워크에서 제거)

      3. Modify fields in header(s): 패킷의 헤더 필드를 수정한다. (예: 목적지 주소나 출발지 주소, 프로토콜 등을 변경)

      4. Encapsulate and forward to controller: 패킷을 캡슐화하여 컨트롤러로 전송한다. (예: 네트워크의 제어를 담당하는 컨트롤러에 패킷을 전달하여 추가 처리를 요청)

  3. Stats (통계):

    • 각 flow table 항목에 대한 통계 정보들이 제공된다.

    • 패킷/바이트 카운터와 같은 정보를 포함한다.

[4] OpenFlow: 예시

(간단하게 짚고 넘어감)

1) 목적지 기반 전달

목적지 기반 전달
  • IP 데이터그램이 IP 주소 51.6.0.8으로 향할 때, 이를 라우터 출력 포트 6으로 전달해야 한다.

2) 방화벽:

방화벽 1
  • TCP 포트 22(SSH 포트)로 향하는 모든 데이터그램을 차단 (전달하지 않음)

방화벽 2
  • 호스트 128.119.1.1에서 전송된 모든 데이터그램을 차단 (전달하지 않음)

3) Layer 2 목적지 기반 전달:

Layer 2 목적지 기반 전달
  • 목적지 MAC 주소 22:A7:23:11:E1:02를 가진 Layer 2 프레임을 출력 포트 3으로 전달해야 한다.

[5] OpenFlow 추상화

  • 매치+액션: 이 추상화는 다양한 종류의 장치를 통합한다.

  1. 라우터

    • 매치: 가장 긴 목적지 IP 접두어

    • 액션: 링크를 통해 전달

  2. 스위치

    • 매치: 목적지 MAC 주소

    • 액션: 전달 또는 플러딩

  3. 방화벽

    • 매치: IP 주소 및 TCP/UDP 포트 번호

    • 액션: 허용 또는 거부

  4. NAT (네트워크 주소 변환)

    • 매치: IP 주소와 포트

    • 액션: 주소와 포트 재작성

[6] OpenFlow 예시

1) 상황

  • 조정된 테이블은 네트워크 전반에 걸친 동작을 생성할 수 있다. 예를 들어:

    • 호스트 h5와 h6에서 오는 데이터그램은 s1을 통해 h3 또는 h4로 보내고, 그곳에서 s2로 전달되어야 한다.

2) host 별 match / action

1) s1 Router

  • ingres port = 1: 경로 4로 이동할 수 있게끔 한다.

2) s2 Router

  • ingress port = 2 && IP Dst = 10.2.0.3: 경로 3로 이동할 수 있게끔 한다.

  • ingress port = 2 && IP Dst = 10.2.0.4

  • 경로 4로 이동할 수 있게끔 한다.

[7] 일반화된 전달: 요약

  • “매치와 액션” 추상화: 도착한 패킷 헤더의 비트를 여러 계층에서 매칭하고 액션을 취한다.

    • 여러 필드를 기준으로 매칭 (링크, 네트워크, 전송 계층)

    • 로컬 액션: 패킷을 드롭, 전달, 수정하거나 매칭된 패킷을 컨트롤러로 전송

    • 네트워크 전반에 걸쳐 동작을 "프로그램"할 수 있음

  • 간단한 형태의 “네트워크 프로그래머블성”

    • 패킷 단위로 처리할 수 있는 프로그래밍 가능성

    • 역사적 배경: 활성 네트워킹

    • 오늘날: 더 일반화된 프로그래밍 (P4, p4.org 참조)

[8] 4장: 완료!

  • 네트워크 계층: 개요

  • 라우터 내부 구성

  • IP: 인터넷 프로토콜

  • 일반화된 전달, SDN

질문: 전달 테이블(목적지 기반 전달) 또는 플로우 테이블(일반화된 전달)은 어떻게 계산되는가?
답변: 제어 평면에 의해 계산된다 (다음 장에서 다룰 예정).