4.1 네트워크 계층 개요
데이터 평면: 입력 링크 -> 출력 링크 데이터 그램 전달
제어 평면: 데이터 그램이 송신호스트에서 목적지 호스트까지 잘 전달되게끔 로컬, 퍼 라우터 포워딩 조절
#라우터에선 전송계층, 어플계층을 지원x, 프로토콜 스택에서 네트워크 계층이 최상위 계층
포워딩: 패킷이 라우터의 입력 링크에서 출력링크까지 전달. 라우터에서 나갈 때 막힐 수도,
복제되어 여러 링크로 전송될 수도.. 매우 짧은 시간 - 하드웨어 실행
라우팅: 송신자-수신자 패킷 전송 시 패킷 경로를 설정. 종단 간 경로이기 때문에 더 긴 시간 - 소프트웨어 실행
포워딩 테이블: 라우터가 도착하는 패킷 헤더의 필드값을 조사하여 라우터가 가진 포워딩 테이블의
내부 색인으로 사용. 헤더의 값은 해당 패킷이 전달될 라우터의 외부링크 인터페이스를 나타냄.
제어평면 (chapter5에서 다룸)
SDN(software defined networking): 네트워크가 소프트웨어적으로 정의되었을 때 포워딩 테이블 계산하는
컨트롤러가 라우터와 상호작용하여 소프트웨어에서 실행됨.
포워딩 테이블 구성 = 포워딩과 라우팅 사이의 상호작용 보여줌
라우터들 간에는 포워딩 테이블에 패킷이 목적지에 도착하기 위한 방법 설정이 명확하도록 상호 소통해야 함.
라우터로부터 물리적으로 분리된 원격 컨트롤러 컴퓨터와 각각의 라우터에 의해 사용될 포워딩 테이블 분배.
- 원격제어가 포워딩 테이블을 계산과 분배하는 동안 라우팅 기기는 포워딩만 수행.
이때 라우터와 원격 컨트롤러는 포워딩 테이블이나 다른 라우터 정보를 포함한 메시지를 교환하여 소통
네트워크 서비스 모델: 송수신 호스트 간 패킷 전송 특성을 정의
1. 보장된 전달: 패킷 도착 보장
2. 지연 제한 이내의 보장된 전달: 전달 보장뿐만 아니라 특정 지연제한 안에 전달
3. 순서화 패킷 전달: 패킷이 목적지에 송신된 순서로 도착하는 것 보장
4. 최소 대역폭 보장: 송수신 호스트 사이에 특정한 비트 속도의 전송 링크 보장
- 송신 호스트가 비트들을 이 보장된 속도 이하로 전송하는 한 모든 패킷은 안전하게 도착
5. 보안 서비스: source 호스트에선 암호화, 목적지 호스트에선 복호화할 수 있게 함.
*최선형 서비스: 패킷을 보내는 순서대로 수신됨을 보장하진 x, 목적지까지의 전송 자체도 보장x
근데도 여러 어플에서 사용한다.(추가로, 패킷 스위치는 링크계층 장치, 스위치 ≠ 라우터)
4.2 라우터 내부에는 무엇이 있을까?
하드웨어 내부적으로 라우터가 어떻게 작동하고 입출력 패킷을 처리하는가?
포워딩 vs 라우팅 차이점/ 네트워크 계층 서비스/ 입력링크- 출력링크 실제 전달 가능
입력 포트: 라우터로 들어오는 입력 링크의 물리계층 기능 수행
- 입력 링크의 반대편에 있는 링크 계층과 상호 운용하기 위해 필요한 링크계층 기능 수행(중간상자)
- 입력 포트에서 포워딩 테이블 참조하여 검색 기능 수행(가장 오른쪽 상자)
- 제어 패킷은 입력포트에서 라우팅 프로세서로 전달됨.
스위칭 구조: 라우터의 입력포트와 연결 포트를 연결(라우터 내부에 존재)
출력 포트: 스위치 구조에서 수신한 패킷을 저장하고, 필요한 링크계층 및 물리적 계층 기능을 수행하여
출력 링크로 패킷 전송. 링크가 양방향이면 동일한 링크의 입력포트와 한쌍.
라우팅 프로세서: 라우팅 프로토콜 실행, 라우팅 테이블과 연결된 링크 상태 정보 유지 관리,
포워딩 테이블 계산/ 원격 컨트롤러와 통신하여 원격 컨트롤러가 계산해 준 포워딩 테이블 항목 수신하고
라우터의 입력 포트에 이러한 항목을 설치.
입력포트, 스위칭구조, 출력포트는 하드웨어로 구현
- N개의 포트가 회선 카드에서 결합되는 경우, 데이터그램 처리 파이프라인은 소프트웨어 구현에 대해
N배 더 빠르게 작동해야 함. 나노초 단위로 작동.
라우터(라우팅 프로세서)의 관리제어 기능은 밀리초~초 단위로 소프트웨어로 구현
비유
원형 교차로 진입구 = 입력포트/ 원형 교차로 = 스위치 구조/ 원형 교차로 출구 = 출력포트
라우팅 프로세서인 승무원이 느린 경우/ 승무원이 빠르더라도 자동차가 교차로에 천천히 진입하는 경우/
자동차들이 같은 출구로 나가고자 하는 경우/ 출구나 다른 곳에 백업이 발생될 수 있는가?/
다른 차량에 우선순위를 지정하거나 특정 차량을 차단하려면?
입력 포트 처리 및 목적지 기반 전달
입력포트에서 회선 종단기능, 링크계층 처리 및 검색
포워딩 테이블(라우팅 프로세서에서 계산되거나 업데이트되거나 원격 SDN 컨트롤러에서 수신됨)을 사용하여
도착 패킷이 전달될 출력 포트를 검색
포워딩 테이블은 라우팅 프로세서에서 입력 회선 카드로 복사되고, 패킷 단위로 중앙 집중식 라우팅 프로세서를
호출하는 게 아닌 해당 복사본을 사용하면 병목 현상을 피할 수 있다.
- 목적지 주소의 전체가 아닌, prefix만 테이블의 엔트리와 대응시키면 적절한 링크로 보낼 수 있다.
엔트리와 대응되지 않으면 최장 prefix 매칭 규칙을 적용한다.
- 하드웨어 로직에서 빠르게 검색돼야 하기 때문에 내장형 DRAM, 빠른 SRAM 등을 사용해야 하며
TCAM을 사용하면 32비트 IP주소가 메모리에 제공되어 포워딩 테이블 항목의 내용을 반환할 수 있다.
출력 포트가 결정되면 패킷을 스위칭 구조로 보낸다.
다른 입력포트가 스위칭 구조를 쓰고 있으면 패킷이 스위칭 구조로 들어가는 것을 일시적으로 대기시킬 수 있다.
목적지 IP주소를 찾은 다음에 (match) 패킷을 스위칭 구조를 통해 지정된 출력 포트로 보내는 것 (action)은
라우터뿐만 아니라 많은 네트워크 장치에서 수행되는 match & action 구조이다.
변환기
스위칭 구조 작동원리
1. 메모리를 통한 교환: 단순, 초기 라우터는 CPU(라우팅 프로세서)를 직접 제어하는 전통적인 컴퓨터이다.
입출력 포트는 전통적인 I/O 장치처럼 작동한다.
패킷 도착 - 라우팅 프로세서에 패킷 복사 - 포워딩 테이블에서 적절한 출력 포트 찾음 - 출력 포트 버퍼에 복사
전체 전달 처리량은 메모리 대역폭이 초당 최대 B인 패킷에 대해 B/2보다 작아야 함.
공유 시스템 버스를 통해 한 번에 하나의 메모리 읽기/쓰기 작업이 가능하기 때문에 동시에 두 패킷은 전달 불가능.
최근엔 메모리를 통해 스위칭하는 라우터는 초기 라우터와 달리 주소 검색 및 패킷 저장을 입력회선카드에서 수행
2. 버스를 통한 교환: 입력포트는 라우팅 프로세서 개입 없이 공유 버스를 통해 직접 출력포트로 패킷 전송.
모든 출력 포트에 패킷이 수신되지만, 라벨과 일치하는 포트만 패킷을 유지.
라벨은 버스 지날 때만 사용되므로 출력 포트에선 제거됨.
여러 패킷이 동시에 다른 입력 포트로 라우터에 도착하면 한번에 하나의 패킷만 버스를 통과하기에 나머진 대기해야 함..
결국 버스 속도가 라우터 교환 속도를 제한하는 셈.
3. 인터커넥션 네트워크를 통한 교환: 다중 프로세서 구조에서 프로세서 인터커넥션 한 것 마냥
복잡한 인터커넥션 네트워크를 사용하면 공유 버스 대역폭 제한 문제 극복 가능.
N개의 입력 포트를 N개의 출력포트에 연결하는 2N버스로 구성된 네트워크
각 수직 버스는 각 수평 버스와 교차하며 스위치 구조 컨트롤러에 의해 열고 닫힌다.
여러 패킷이 병렬로 전달될 수 있고 같은 출력 포트로 전달되지 않는 한 차단(대기)하지 않는다.
시스코 CRS는 3단계 논 블로킹 스위칭 전략을 사용한다.
라우터의 스위치 용량은 다중 스위칭 구조를 병렬로 실행하여 확장 가능하다.
N개의 병렬 스위칭 구조에 입출력 포트가 연결되며 입력 포트는 패킷을 K개의 작은 청크로 분해하고,
이 N개의 스위칭 구조의 K를 통해 청크를 선택한 출력 포트로 보내서 출력포트에서 K개의 청크를 원래 패킷으로 재조합함.
출력 포트 프로세싱
대기열이 입력포트에서 생길지 출력포트에서 생길지에 관한 것과 범위는
트래픽 로드, 스위칭 구조의 상대 속도 및 회선 속도에 따라 달라진다.
패킷을 저장할 메모리가 없을 때 패킷 손실이 발생한다. Rswitch가 Rline보다 N배 빠르다면 N개의 입력 라인에 대해
패킷을 동시에 같은 출력 포트로 받더라도, 스위치 구조에 의해 손실 없이 처리될 수 있다.
입력 큐잉
자,, 근데 위의 빨간글씨과 달리 그렇게까지 스위치구조가 안 빠르다면 패킷이 스위칭 구조를 기다려야겠네?
출력 포트가 다르다면 괜찮겠지만 출력포트가 같다면 한 패킷은 차단되어서 입력 큐에서 기다려야 됨.
HOL 차단: 입력 큐에서 A패킷 앞에 있는 B패킷이 다른 패킷이랑 같은 출력포트로 가려고 해서 입력큐에서 대기 중일 때,
A패킷은 자기가 가고자 하는 출력포트에 경쟁상대가 없음에도 불구하고 B패킷 때문에 기다려야 하는 차단.
출력 큐잉
출력 포트는 시간단위에 단일 패킷만을 전송할 수 있기 때문에 스위치가 일을 엄청 잘해서
N개의 입력포트에서 보낸 패킷이 우수수 도착했더라도, 출력 큐에서 패킷들은 대기해야 한다..
들어오는 패킷을 저장할 메모리가 없을 때 도착한 패킷을 폐기하거나 이미 대기 중인 패킷을 폐기해야 함.
버퍼가 가득 차기 전에 패킷을 폐기시킴으로써 송신자에게 혼잡을 알리기도 함.
AQM 알고리즘: 패킷 폐기와 패킷 마킹에 관한 정책을 모은 알고리즘
So,, 라우터 버퍼가 얼마나 많이 필요할까?
몇 년 동안은 RTT * c(왕복시간x링크용량) 이었지만 최근엔 많은 수의 TCP 흐름이 링크를 통과할 때
필요한 버퍼링은 RTI * C / √N 이라고 제한한다.
패킷 스케쥴링
FIFO: 먼저 온 게 먼저 나감. 버퍼 공간 충분치 않을 시 도착 패킷의 공간을 확보하기 위해 패킷 손실 여부 또는
다른 패킷을 큐에서 제거할 것인지를 결정.
우선순위 큐잉: 패킷이 큐에 도착하면 우선순위 클래스로 분리됨(ex.네트워크 관리정보가 사용자 트래픽보다 우선순위)
각 우선순위 클래스가 고유한 큐를 가지고, 우선순위가 높은 큐에서부터 패킷을 전송하며 큐 내부에선 FIFO를 채택.
라운드 로빈: 클래스 간에 서비스를 번갈아서 제공. 작업 보존 큐잉 규칙에선 전송을 위해 기다리는 패킷이
있다면 링크가 유휴 상태가 되는 것을 허용하지 않는다.
WFQ: 각 클래스마다 다른 양의 서비스 시간을 부여받는다는 점에서 라운드 로빈과는 차이가 있다.
각 클래스 I는 Wi의 가중치를 할당받고, Wi에 따라 할당시간을 차등적으로 받으며
모든 클래스에 큐가 대기 중일 때도, 각 클래스 I는 최소 (R*Wi/가중치 총합)의 처리율을 가진다.
4.3 인터넷 프로토콜(IP): IPv4, 주소 지정, IPv6 등
IPv4
버전 번호: IP 프로토콜 버전 명시 (4비트)
헤더길이: 가변길이 옵션 포함, 실제 페이로드가 시작하는 곳 결정 (4비트)
서비스 타입: 서로 다른 유형의 IP 데이터그램 구별 (실시간, 비실시간 등)
데이터그램 길이: 이론상 데이터 그램 최대 길이는 65,535 바이트 (16비트)
식별자, 플래그, 단편화 오프셋: IP 단편화와 관계되는 부분, IPv6는 지원 x
TTL: 데이터가 무한히 순환하지 않도록 함. 라우터가 데이터그램 처리할 때마다 감소
프로토콜: IP 데이터그램이 최종 목적지에 도착했을 때 사용. 목적지의 전송 계층의 특정 프로토콜 명시
- 이 프로토콜 번호가 네트워크 계층과 전송계층을 묶는 역할을 함.
헤더 체크섬: 비트 오류 탐지, 오류 검출 데이터그램 폐기. 각 라우터에서 체크섬 재계산됨.
출발/목적지 IP주소: 종종 출발지 호스트는 DNS 검색을 통해 목적지 주소 결정
옵션: 옵션의 유무에 따라 라우터에서 데이터그램 처리하는데 필요한 시간 크게 달라짐.
고성능 라우터 및 호스트에서 IP처리에 중요, IPv6는 지원 x
데이터(페이로드): 전송계층 세그먼트(TCP, UDP)를 포함하고, ICMP 메시지 등의 데이터를 담음
*IP데이터그램은 총 20바이트 헤더/ TCP 세그먼트 전송 시 TCP 헤더는 20바이트/ 총 40 바이트
IPv4 데이터그램 단편화
링크 계층 프레임은 네트워크 계층 패킷 크기의 데이터를 전달할 수 없다.
MTU: 링크 계층 프레임이 전달할 수 있는 최대 데이터 양.
각 IP 데이터그램은 라우터에서 다른 라우터로 전송하기 위해 링크 계층 프레임 내에 캡슐화된다,
링크마다 MTU가 다르기 때문에 IP 데이터그램 길이 설정이 중요하다.
단편화: 링크 계층 프레임으로 캡슐화할 때 IP 데이터그램을 더 작은 데이터그램으로 분할
IPv4 설계자는 단편화된 조각들을 재결합하는 역할을 라우터가 아닌 종단 시스템에 맡긴다.
목적지 호스트가 데이터 그램 수신 시 원본 데이터그램의 조각인지 판단.
이러한 재결합을 위해 식별자, 플래그, 단편화 오프셋 필드를 사용.
식별자로 어떤 원본 데이터그램의 조각인지 판단
마지막 데이터그램 조각의 플래그 비트를 0으로 설정하여 마지막 조각의 수신을 확신.
단편화 오프셋 필드를 통해 조각이 분실되었는지 확인하고 적절한 순서로 조각을 재결합
IPv4 주소 체계
호스트-물리적 링크 사이의 경계 = 인터페이스
라우터와 링크 사이의 경계 = 인터페이스 // 라우터는 여러 개의 인터페이스를 가짐
IP주소는 32비트, 2^32개의 주소가 사용가능. 십진 표기법 사용.
모든 호스트와 라우터의 각 인터페이스는 고유한 IP주소를 가지며, 주소 일부는 연결된 서브넷이 결정한다.
233.1.1.0/24 라는 서브넷 주소가 있으면 24는 서브넷 마스크가 되어 "왼쪽 24비트가 서브넷 주소"임을 가리킨다.
서브넷: 호스트나 라우터에서 각 인터페이스를 분리하고 만든 고립된 네트워크. 이 고립된 네트워크의 종단점은
인터페이스의 끝이 된다. 라우터와 호스트들 간의 서브넷뿐만 아니라 라우터 간 인터페이스용 서브넷도 있을 수 있다.
CIDR: 인터넷 주소 할당 방식/ 서브넷 주소체계/ 32비트 IP주소는 두 부분으로 나눈 뒤 이는 다시 점으로 된
십진수 형태의 a.b.c.d./x를 가지며 x는 주소 첫 부분의 비트수를 나타냄.
x= 해당 주소의 프리픽스 또는 네트워크 프리픽스.
한 기관은 통상 연속적인 공통 프리픽스를 갖는 주소의 블록을 할당받기 때문에
외부 기관의 라우터가 목적지 주소가 내부 기관인 데이터그램을 전달할 때, x비트들만 고려해서 전달 가능.
--> 라우터들에게 포워딩 테이블의 크기를 상당히 줄여준다.
한편 32-x 나머지 비트들은 기관 내부에서 같은 네트워크 프리픽스를 갖는 장비들을 구별시켜준다.
+CIDR 채택 전 클래스 주소체계에선 8, 16, 24비트 서브넷 주소를 갖는 서브넷을 각각 A, B, C 클래스 네트워크로 분리함.
근데 A클래스는 너무 적고 B 클래스는 너무 크다는 문제점이 있었다.
+브로드캐스트 주소 255.255.255.255/ 메시지는 같은 서브넷에 있는 모든 호스트들에게 전달됨.
=================================================
한 기관에서 각 호스트를 위한 주소 블록을 어떻게 얻는가 / 어떻게 호스트에 할당하는가를 알아보자.
주소 블록 획득
이미 할당받은 주소의 큰 블록에서 주소를 제공하는 ISP와 접촉
(ex. ISP가 200.24.16.0/20을 할당받으면 ISP가 이를 작은 주소 블록으로 나누어 다른 조직들을 지원할 수 있다.)
ICANN: 비영리 단체, 최상위 국제기관으로 다른 조직에 주소 블록 할당 및 DNS 루트 서버 관리,
도메인 이름 할당 및 도메인 이름 분쟁 해결
호스트 주소 할당: 동적 호스트 구성 프로토콜
라우터 인터페이스에 할당된 주소에 대해 시스템 관리자가 라우터 안에 IP 주소를 할당.
DHCP(동적 호스트 구성 프로토콜): 호스트가 네트워크에 접속하고자 할 때마다 동일한 IP주소를 받도록 하거나
다른 임시 IP주소를 할당하도록 하는 프로토콜.
IP주소뿐만 아니라 서브넷 마스크, 첫 번째 홉 라우터 주소나 로컬 DNS 서버 주소 같은 추가 정보를 얻게 함.
*DHCP는 자동으로 호스트와 연결해 줘서 PnP프로토콜, 제로 구성 프로토콜이라고도 부름
학생이 노트북을 기숙사에서 도서관으로 옮기면 각 지역에서 새로운 서브넷에 접속하며 새로운 IP주소가 필요하겠네.
이때 DHCP의 PnP 기능의 가치가 빛이 난다.
-DHCP는 클라이언트/서버 프토토콜이다.
각 서브넷은 DHCP 서버를 가지는 게 보통인데, 만약 없다면 DHCP 연결 에이전트(라우터)가 DHCP 서버 주소를 알려준다.
DHCP 프로토콜 4단계 과정
DHCP 서버 발견: 클라이언트가 DHCP 발견 메시지를 사용하여 포트 67번으로 UDP 패킷을 보냄.
이 패킷은 IP 데이터그램으로 캡슐화되는데 누구한테 보내야 되는지 모르기 때문에 목적지 주소를 브로드 캐스팅 주소로
설정하고 출발지 주소는 0.0.0.0으로 설정하여 서브넷에 연결된 모든 노드로 브로드 캐스팅
DHCP 서버 제공: DHCP 발견 메시지를 받은 DHCP 서버는 DHCP 제공 메시지를 클라이언트에게 준다.
이 때도 브로드캐스팅 주소를 써서 브로드캐스팅 한다.
[DHCP가 IP를 할당받기 위해 사용하는 프로토콜이기 때문에 IP를 할당받지 못한 노드가 출발지 주소를
0.0.0.0으로 설정하는 것이고, IP 프로토콜에서 IP주소를 기반으로 통신하기 때문에 MAC주소만 안다고
원하는 노드(클라이언트)에게 패킷을 전달하는 것은 어렵다.]
[또한 DHCP 서버도 브로드캐스팅을 해주면, 응답자는 최적의 서버로부터 주소를 할당받을 수 있다.]
- 클라이언트는 여러 DHCP 서버로부터 응답 메시지를 받아서 가장 최적의 DHCP 서버를 선택
- 각 서버 제공 메시지는 수신된 발견 메시지의 트랜잭션 ID, 클라이언트에 제공된 IP주소, 네트워크 마스크 및
IP주소 임대기간(유효기간)을 포함
DHCP 요청: 새롭게 도착한 클라이언트는 하나 이상의 서버 제공자를 선택하여 그 제공자에게 파라미터 설정으로
되돌아오는 DHCP 요청 메시지로 응답한다.
DHCP ACK: 서버는 DHCP 요청 메시지에 대해 요청된 파라미터를 확인하는 ACK로 응답한다.
클라이언트는 DHCP ACK를 받고 나면 상호 동작은 종료되고 클라이언트는 임대기간 동안 할당된 IP주소를 사용.
(이동 노드가 서브넷 사이를 이동 시 원격 응용에 대한 TCP 연결이 유지될 수 없어서,
하나의 영구적인 주소를 사용할 수 있게 하는 IP 인프라에 대한 확장을 6장에서 배움 -
아마 서브넷 사이의 ISP들끼리도 통신을 해서 클라이언트가 할당받은 IP에 대한 정보를 옮겨주겠지..?)
=================================================
네트워크 주소 변환(NAT)
SOHO(small office, home office) 네트워크의 확산으로 SOHO가 장치를 연결하기 위해 LAN을 설치할 때마다
ISP는 모든 SOHO의 IP장치들을 수용할 수 있는 주소 범위를 할당해줘야 함.
네트워크의 해당 주소 범위에 인접한 부분을 이미 할당했다면?
IP 주소가 어떻게 관리되는지를 알고자 한다면? --> NAT(네트워크 주소 변환)으로 주소 할당 가능
NAT 가능 라우터
주소공간 10.0.0.0/8 이라는 주소 권역은 일부 지역에 대한 사설망을 담당하고 있는 네트워크일 텐데,
이 네트워크가 서로 패킷 전달은 할 수 있겠지만 글로벌 인터넷으로 가는 패킷은 보낼 수 없다.
해당 주소공간을 쓰는 수십만 개의 네트워크가 있을 거 기 때문에.. 그래서 글로벌 인터넷과의 송수신에서 NAT 사용
NAT 가능 라우터는 외부에선 라우터처럼 보이진 않고 하나의 IP주소를 갖는 장비로 동작한다.
외부에서 들어오는 홈 네트워크의 상세사항을 숨기고, NAT변환 테이블을 사용하여 그 테이블에
IP주소와 포트번호를 포함하여 WAN과 LAN을 잇는다.
1. NAT변환 테이블을 통해 WAN 쪽으론 다른 주소와 테이블에 없는 포트번호를 담아서 보내고,
2. WAN쪽 서버는 NAT라우터의 IP주소를 목적지 주소로 하여 같은 포트번호로 응답한다.
3. NAT라우터가 데이터를 받고 나면 홈네트워크에 대해 테이블을 작성하고 난 다음 LAN 쪽으로 데이터 전달
NAT는 네트워크 계층에서 작동하지만 라우터와 상당히 다른 기능을 가지는 '미들박스'와 마찬가지로
인터넷의 중요한 구성요소가 되진 않는다.
=================================================
IPv6
확장된 주소기능(애니캐스트 주소 사용), 간소화된 40바이트 헤더, 트래픽 클래스 필드 등의 특징을 가진다.
*애니캐스트 : 유니캐스트와 마찬가지로 1대1 통신이지만 유니캐스트와 달리 여러 연결 가능한 후보를 가진다
IPv4에서 IPv6로 전환하는 법
플래드 데이: 모든 인터넷 장비를 끄고 다 같이 동시에 IPv4에서 IPv6로 한 번에 업글하자 - 불가능
터널링: 두 IPv6 노드가 IPv4 라우터를 통해 연결될 때 이 라우터들을 터널이라고 함.
터널의 송신 측에 있는 IPv6노드는 IPv6 데이터그램을 받고, IPv4 데이터그램의 데이터 필드에 이를 넣는다.
터널은 IPv4 데이터그램이 IPv6 데이터그램을 가지고 있는 것을 모른 채 그냥 IPv4 처리하듯이 수신 측으로 보냄.
수신 측은 프로토콜 번호를 확인해서 아, 이 데이터그램이 IPv6데이터그램을 담고 있구나를 안 다음
이를 IPv6 데이터그램으로 바꿔서 IPv6 노드로 보냄.
4.4 일반적인 포워딩 및 소프트웨어 기반 네트워크(SDN)
NAT 상자는 헤더 IP주소와 포트번호를 기록하고,
방화벽은 헤드 필드 값에 따라 트래픽을 차단하거나 DPI와 같은 추가 처리를 하기도 하고,
부화 균등하기는 일정 서비스가 요구하는 패킷을 해당 서비스를 제공하는 일련의 서버 집합 중 하나에게 전송하는 등
다양한 미들박스들이 있다.
하드웨어와 소프트웨어 및 인터페이스 관리를 갖춘 미들 박스들의 확산은 네트워크 사업자에게 비용부담이 된다.
SDN은 최근 네트워크 계층 기능과 특정 링크 계층 기능을 제공하기 위한 통합된 접근 방식을 가진다.
일반적인 포워딩에서 검색 추가 작업 테이블은 목적지 기반 포워딩 테이블 개념을 일반화한다.
3계층 라우터, 2계층 스위치 이렇게 구분하지 않고 "패킷 스위치"라고 부른다.
패킷 스위치의 검색 추가 작업 테이블: 원격 컨트롤러를 통해 계산, 설치, 업데이트됨
OpenFlow: 검색 추가 작업 포워딩의 개념화 및 SDN과 컨트롤러 혁명의 개념 표준
OpenFlow의 플로우 테이블 = 검색 추가 작업 테이블
플로우 테이블이 포함하는 것
들어오는 패킷에 대한 헤더 값들의 세트 매칭: 하드웨어 기반 매칭이 TCAM 메모리에서 가장 신속하게 수행되며
100만 개가 넘는 목적지 주소를 포함한다. 테이블 항목과 일치하지 않는 패킷은 원격 컨트롤러로 보낸다.
카운터 세트: 패킷들에 의해 업데이트되어 플로우 테이블 요소와 일치됨.
플로우 테이블 요소와 마지막으로 업데이트된 테이블 항목 이후에 일치된 패킷들을 포함.
패킷이 플로우 테이블 항목과 일치될 때: 패킷이 지정 출력포트로 전달되거나, 삭제되거나, 복사본 만들어
여러 출력 포트로 가거나, 선택한 헤더필드를 다시 쓰는 등을 수행
=================================================
매치
OpenFlow 검색 추가 작업 규칙에서 일치(match)할 수 있는 11개의 패킷 헤더 필드와
수신 포트 ID들이 플로우 테이블에 있다. 링크 계층 - 네트워크 계층 - 전송 계층의 필드를 가진다.
[진입포트, SrcMAC, DstMAC, EthType, VLANID, VLANPri, IPSrc, IPDst, IPpro, IPTos, TCP/UDP 출발/목적 포트]
- 진입 포트는 패킷이 수신되는 패킷 스위치의 입력 포트
- IP 주소가 아닌 이더넷 주소를 기반으로 전달하면 2계층(스위치) 포워딩 프레임뿐만 아니라
3계층(라우터) 포워딩 데이터그램과 동일한 성능을 발휘함.
- EthType 필드는 상위 계층의 프로토콜 즉, 프레임의 페이로드가 역 다중화되는 프로토콜(IP 등)에 해당
- VLAN 필드는 6장에서 공부할 가상 로컬 영역 네트워크와 관련됨.
- 플로우테이블 항목은 128.110."*"의 주소를 가지면 128.110이 첫 16비트인 데이터그램의 주소필드이다.
각 테이블 항목에 우선순위를 부여하여 패킷이 여러 항목과 일치하면 선별된 일치 항목과 해당하는 패킷이
항목의 가장 높은 우선순위가 됨.
- 모든 필드가 일치할 수 있는 것은 아님. TTL 필드 또는 데이터그램 길이 필드에 기반한 일치는 허용 x
액션
각 플로우 테이블 엔트리는 일치하는 패킷을 처리하는 0개 이상의 액션 목록을 가짐.
포워딩: 들어오는 패킷을 출력 포트로 전달하거나, 브로드캐스트 하거나, 멀티 캐스트하거나,
캡슐화하여 원격 컨트롤러로 보내거나, 새 플로우 테이블 항목을 설치하고 조치하는 등의 액션을 한다.
드롭핑: 아무 동작이 없는 플로우 테이블 항목은 일치된 패킷을 삭제해야 함.
수정필드: 패킷이 출력 포트로 전달되기 전에 10개의 패킷 헤더 필드(IPpro를 제외한 나머지)의 값을 다시 쓸 수 있다.
플로우 테이블을 계산하고 분배하는 SDN 컨트롤러와 패킷스위치 <-> 컨트롤러 사이에 통신되는 프로토콜을
5.5장에서 다룸.
'CS > Computer Network' 카테고리의 다른 글
[컴퓨터 네트워크 하향식 접근] Chapter06 링크 계층 (0) | 2024.08.06 |
---|---|
[컴퓨터 네트워크 하향식 접근] Chapter05 네트워크 계층: 제어 평면 (0) | 2024.08.04 |
[컴퓨터 네트워크 하향식 접근] Chapter03 트랜스포트 계층 (0) | 2024.07.31 |
[컴퓨터 네트워크 하향식 접근] Chapter02 애플리케이션 계층 (0) | 2024.07.26 |
[컴퓨터 네트워크 하향식 접근] Chapter01 컴퓨터 네트워크와 인터넷 (1) | 2024.07.21 |