송신 호스트로 전송된 세그먼트는 데이터그램으로 캡슐화된다. 그 후 네트워크 계층을 통해 라우터를 거쳐 수신 호스트로 전달된다. 수신자는 데이터그램을 받아서 세그먼트를 추출한다. 또한 라우터는 IP 데이터그램을 한 뒤, 입력 포트에서 출력 포트로 이동시킨다.
네트워크 계층의 기능에는 두 가지가 있다:
- 포워딩(Forwarding): 라우터의 입력 링크에서 패킷을 적절한 출력 링크로 이동시키는 과정이다. 포워딩은 환승역에서 기차를 갈아타는 것으로 비유할 수 있다.
- 라우팅(Routing): 소스에서 목적지까지 패킷이 전달되는 경로를 결정하는 과정이다. 라우팅은 여행을 계획하는 과정으로 비유할 수 있다.
라우팅 알고리즘은 네트워크에서 패킷의 경로를 결정하는 데 사용되는 알고리즘이다. 이 알고리즘은 네트워크의 상황과 목적지까지의 거리 등을 고려하여 최적의 경로를 선택한다.
Data plane and Control plane
Data Plane은 로컬 및 라우터별 기능을 말한다. 이는 라우터의 입력 포트로 도착한 데이터그램이 라우터의 출력 포트로 어떻게 전달되는지를 결정한다.
Control Plane은 네트워크 전체적인 논리를 의미한다. 이는 소스 호스트에서 목적지 호스트까지의 end-end 경로 상에서 라우터 간에 데이터그램이 어떻게 라우팅되는지를 결정한다.
Control plane에는 두 가지 접근 방식이 있다:
- 전통적인 라우팅 알고리즘은 라우터 내에 구현된다.
- 소프트웨어 정의 네트워킹(Software-Defined Networking, SDN)은 원격 서버에 구현된다.
Router architecture overview
라우터는 다음과 같이 입력 포트와 출력 포트, switching fabric으로 구성되어 있다.
1. Input Port
입력 포트의 구조와 기능은 다음과 같다.
1. 물리 계층(Physical Layer):
- 비트 수준의 수신(bit-level reception)을 담당한다.
- 수신된 전기 신호를 비트화 한다.
2. 링크 계층(Link Layer):
- 이더넷(Ethernet)과 같은 프로토콜이 사용된다.
- 생성된 비트를 프레임으로 만들어 입력 큐에 넣는다.
3. 분산 스위칭(Decentralized Switching):
- 입력 포트 메모리의 전방향 테이블을 사용하여 헤더 필드 값에 따라 출력 포트를 찾아내는 방식으로 스위칭이 수행된다. 이는 "match plus action" 원칙을 따른다.
- 만약 데이터그램이 스위치 패브릭으로의 전달속도보다 빠르게 도착한다면, 입력포트 대기열에 저장된다.
- 목적지 기반 포워딩 방식과 일반화된 포워딩 방식이 있다.
라우터에서 사용되는 전달 방식에는 목적지 기반 전달과 일반화된 전달 방식이 있다.
- 목적지 기반 포워딩(Destination-Based Forwarding): 전통적인 방식으로, 목적지 IP 주소에만 기반하여 패킷을 전달한다. 라우터는 목적지 IP 주소를 통해 패킷이 어떤 출력 포트로 전달되어야 하는지 결정한다.
- 일반화된 전달 방식(Generalized Forwarding): 어떤 세트의 헤더 필드 값에 기반하여 패킷을 전달하는 방식이다. 목적지 IP 주소뿐만 아니라 다른 헤더 필드 값들을 고려하여 패킷을 전달할 출력 포트를 결정한다. 이를 통해 더 유연한 라우팅 및 트래픽 제어 기능을 구현할 수 있다.
목적지 기반 포워딩 시에는 목적지의 IP 주소를 참고 하여 포워딩을 진행한다. 이때 주소의 패턴에 따라 출력포트를 결정하게 되는데, 주소의 패턴이 겹치는 경우가 발생할 수 있다.
한 예로 아래의 그림에서 목적지 주소가 11001000 00010111 00011000 11111111인 경우 1번 링크로 가는 주소패턴과 2번 링크로 가는 주소패턴을 동시에 만족한다.
이 경우에는 더욱 명확하게 표현된 주소패턴에 해당되는 링크에 매치되는데, 이를 "Longest prefix match"라고 한다. 즉, Longest prefix match는 주어진 목적지 주소에 대해 전달 테이블 항목을 찾을 때, 목적지 주소와 가장 긴 접두사(prefix)가 일치하는 항목을 사용하는 원칙이다. 때문에 위 예에서는 해당 데이터는 1번 출력 링크로 보내지게 된다.
2. Switching fabrics
입력포트에서 받은 데이터가 어느 출력 포트로 가게될지 결정됐다면 이를 실제로 전달해주는 과정이 필요하다. 입력포트와 출력포트 사이의 switching fabric이 그 역할을 수행한다. switching fabric에는 세 가지 종류가 존재한다.
1. Memory-Based switching fabrics
메모리를 통한 스위칭은 초기 세대의 라우터에서 사용된다. 이는 CPU의 직접적인 제어 하에 스위칭이 이루어지는 전통적인 컴퓨터와 유사한 방식이다. 패킷은 입력 링크에서 읽히고, CPU는 이를 메모리로 복사하여 처리한다. 그 후 패킷은 출력 링크로 복사되어 전달된다. 이 방식은 메모리 대역폭에 의해 속도가 좌우된다. 패킷은 데이터그램 당 2회의 버스 교차(bus crossing)를 거치게 되는데, 이는 메모리 액세스를 위한 버스와 출력 링크로의 복사를 포함한다. 따라서 시스템 메모리의 대역폭 한계로 인해 전송 속도가 제한될 수 있다.
2. Bus-Based switching fabrics
버스 기반 스위칭은 입력포트와 출력포트 사이에 존재하는 하나의 공유 버스를 통해 데이터그램의 전달이 이루어진다. 그러나 버스 경쟁(bus contention)이 발생할 수 있으며, 이 또한 스위칭 속도가 버스의 대역폭에 의해 제한된다.
3. Interconnection switching fabrics
상호연결을 이용한 스위칭은 입력포트와 출력포트를 병렬로 연결함으로써 대역폭에 의한 속도의 한계를 극복한 방식이다. 이러한 방식은 병렬 처리를 통해 데이터 전달을 수행하므로 처리량과 성능을 향상시킬 수 있다. 하지만 서로 다른 입력 포트에서 나온 패킷들이 동일한 출력 포트로 보내질 경우 하나의 패킷만 전송되고 나머지 패킷들은 입력포트에서 기다려야 한다.
만약 스위칭 패브릭의 속도가 입력 포트들의 결합된 속도보다 느리다면, 입력 큐에서 대기가 발생할 수 있다. 이는 입력 버퍼 오버플로우로 인해 큐잉 지연과 패킷 손실을 초래할 수 있다.
Head-of-the-Line (HOL) 블로킹은 큐의 맨 앞에 대기 중인 데이터그램이 다른 데이터그램들이 전진하는 것을 방해하는 현상을 말한다. 즉, 큐의 맨 앞에 있는 데이터그램이 전송되지 않으면 그 뒤의 데이터그램들도 전송될 수 없게 된다.
버퍼가 가득찬 경우에는 가장 최근에 도착한 패킷을 삭제하거나(Tail Drop), 패킷의 우선순위에 따라 삭제한다(Priority). 또한 혼잡 상태를 신호로 알리기 위해 패킷에 마킹을 하기도 한다(ECN, RED).
3. Output Port
출력포트는 입력포트와 동일한 기능을 반대로 수행한다. 추가적으로 버퍼링, 드롭정책, 스케쥴링 등이 필요하다.
Packet Scheduling
Packet Scheduling(패킷 스케줄링)은 컴퓨터 네트워크에서 발생하는 다양한 패킷들의 전송을 관리하고 제어하기 위한 메커니즘이다. Packet Scheduling(패킷 스케줄링)은 컴퓨터 네트워크에서 발생하는 다양한 패킷들의 전송을 관리하고 제어하기 위한 메커니즘이다. 이러한 패킷 스케줄링에도 여러가지가 방식이 존재한다:
1. FCFS
가장 먼저 들어온 패킷이 가장 output port로 먼저 나가는 방식이다.
2. Priority
우선순위가 높은 패킷부터 먼저 나가는 방식이다. 일반적으로 high priority queue와 low priority queue가 있어서 high priority queue에 있는 패킷부터 우선적으로 처리된 뒤 low priority queue의 패킷이 처리된다.
3. Round robin
도착하는 패킷들을 클래스로 분류하고, 각 클래스를 순환하며 패킷을 차례대로 전송한다.
4. WFQ(Weighted Fair Queuing)
RR과 마찬가지로 도착하는 패킷들을 클래스로 분류하고 각 클래스마다 가중치를 부여한다. 각 클래스는 자신의 가중치에 해당하는 양만큼의 대역폭을 보장받는다.
IP Datagram format
IP 데이터그램의 형식과 구성요소는 다음과 같다:
- IP 프로토콜 버전 번호: IP 프로토콜의 버전을 나타낸다.
- 헤더 길이: IP 헤더의 길이를 바이트 단위로 표시한다.
- 서비스 유형(Type of Service): 패킷에 대한 서비스 유형을 나타낸다. 이는 Diffserv(Differentiated Services)와 ECN(Explicit Congestion Notification)으로 구성된다.
- TTL(Time To Live): 패킷이 최대로 통과할 수 있는 라우터의 수를 나타낸다. 각 라우터에서 패킷이 전달될 때마다 TTL 값은 감소한다.
- 상위 계층 프로토콜: 패킷의 상위 계층 프로토콜을 나타낸다. 일반적으로 TCP 또는 UDP와 같은 프로토콜을 사용한다.
- 전체 데이터그램 길이: IP 데이터그램의 전체 길이를 바이트 단위로 표시한다.
- 분할 및 재조립 정보: 데이터그램이 분할되거나 재조립되는 경우, 해당 정보가 여기에 포함된다.
- 헤더 체크섬: IP 헤더의 오류 검출을 위한 체크섬 값이다.
- 32비트 출발지 IP 주소: 패킷의 출발지 IP 주소를 나타낸다.
- 32비트 목적지 IP 주소: 패킷의 목적지 IP 주소를 나타낸다.
- 추가 정보 (예: 타임스탬프, 경로 기록): 패킷에 부가적인 정보를 포함할 수 있으며, 예를 들어 타임스탬프 또는 패킷이 통과한 경로를 기록할 수 있다.
- 페이로드 데이터: 패킷의 페이로드 데이터로, 일반적으로 TCP 또는 UDP 세그먼트와 같은 상위 계층 데이터를 포함한다.
- 오버헤드: IP 헤더의 크기와 함께 상위 계층인 TCP/IP의 추가 오버헤드를 고려하여 전체 오버헤드를 계산한다. 일반적으로 20바이트의 TCP 헤더와 20바이트의 IP 헤더가 포함되며, 애플리케이션 계층의 오버헤드도 고려된다.
IP addressing
IP 주소는 호스트 또는 라우터 인터페이스와 연관된 32비트의 식별자이다.
1. Interface
인터페이스는 호스트 또는 라우터와 물리적인 링크 간의 연결을 나타낸다. 인터페이스는 네트워크에 연결된 장치들이 통신할 수 있도록 하며, 각 인터페이스는 고유한 IP 주소를 가지고 있다. 이를 통해 호스트나 라우터가 네트워크 상에서 고유하게 식별될 수 있다.
2. Subnet
서브넷(Subnet)은 서로를 라우터를 거치지 않고 직접적으로 도달할 수 있는 디바이스 인터페이스들의 그룹이다. IP 주소는 서브넷 부분과 호스트 부분으로 나뉜다. /24 서브넷의 경우, 32비트 IP 주소 중에서 마지막 8비트를 호스트 부분으로 사용하고 나머지 24비트를 네트워크 부분으로 사용한다.
CIDR (Classless InterDomain Routing)는 "사이더"라고 발음되며, 주소의 서브넷 부분을 임의의 길이로 나타낸다. CIDR 주소 형식은 a.b.c.d/x로 표현된다. 여기서 x는 주소의 서브넷 부분의 비트 수를 나타낸다. 이를 통해 주소의 네트워크 부분과 호스트 부분을 구분할 수 있다.
CIDR은 이전의 클래스 기반 주소 체계를 대체하는 방식으로 도입되었다. 이전에는 주소 체계가 A 클래스, B 클래스, C 클래스 등과 같이 사전에 정의된 클래스에 따라 주소를 할당했다. 하지만 CIDR는 주소를 임의의 길이로 분할하여 할당할 수 있으므로, 보다 유연하고 효율적인 IP 주소 할당이 가능해졌다.
호스트는 DHCP(Dynamic Host Configuration Protocol)를 사용하여 IP 주소를 동적으로 할당받는다. DHCP는 네트워크 내에 DHCP 서버가 존재하고 호스트가 네트워크에 접속할 때 DHCP 서버에 IP 주소를 요청하고 할당받는 방식이다.
새로운 호스트가 IP주소가 필요할 때, DHCP는 다음과 같은 기능을 제공한다:
- 호스트는 네트워크에 연결할 때 DHCP 서버에게 IP 주소를 동적으로 요청할 수 있다. 호스트가 네트워크에 처음 연결되면 DHCP Discover 메시지를 브로드캐스트하여 DHCP 서버를 찾는다. 이 메시지는 호스트가 IP 주소를 요청하는 의도를 알리는 역할을 한다. (이 단계는 선택적이다.)
- DHCP 서버는 호스트의 DHCP Discover 메시지에 대해 DHCP Offer 메시지를 응답한다. 이 메시지에는 호스트에게 할당할 수 있는 IP 주소와 관련된 네트워크 구성 정보가 포함될 수 있다. (이 단계도 선택적이다.)
- 호스트는 DHCP Request 메시지를 통해 실제로 IP 주소를 요청합니다. 이 메시지는 호스트가 특정 IP 주소를 사용하고자 한다는 의사를 나타낸다.
- DHCP 서버는 호스트에게 IP 주소를 할당하고, 이를 확인하기 위해 DHCP Acknowledgement (ACK) 메시지를 보낸다. ACK 메시지에는 할당된 IP 주소와 함께 네트워크 구성 정보가 포함된다.
네트워크는 주소 할당을 위해 해당 ISP와의 계약을 통해 IP 주소를 얻는다. ISP는 보유하고 있는 IP 주소 공간 중에서 네트워크에 필요한 주소 범위를 할당한다. 이를 통해 네트워크는 자체적으로 IP 주소를 가지고, 해당 주소 범위 내에서 호스트들에게 IP 주소를 할당할 수 있다.
한 예로 어떤 기관이 상위 ISP로부터 200.23.16.0/20 이라는 subnet을 할당받았다. 그 후 해당 기관에서 이 subnet을 8개로 나누기 위해 23bit의 subnet mask를 만들고, 이 subnet들의 존재를 알리기 위해 상위 ISP에 메세지를 보낸다면 200.23.16.0/20으로 route aggregation하여 보내게 된다. 왜냐하면 8개의 subnet IP 주소의 앞의 20bit는 동일하기 때문이다. 만약 8개의 subnet 중 하나가 다른 곳으로 이동했다면 나머지 3bit까지 추가로 확인한 후 더 길게 match되는 쪽과 연결된다.
ISP는 ICANN으로부터 IP주소를 할당받으며, ICANN은 root DNS를 관리하고 개별 최상위 도메인 관리를 위임한다. ICANN가 2011년에 마지막 IPv4 주소 청크를 지역 레지스트리에 할당한 이후, NAT(Network Address Translation)가 IPv4 주소 공간 고갈을 돕는 역할을 하고 있다. IPv4 주소 공간이 고갈됨에 따라 IPv6가 등장하였으며, IPv6는 128비트 주소 공간을 가지고 있다.
NAT
로컬 네트워크에서 사용되는 IP 주소는 외부 네트워크에서 사용될 수 없다. NAT는 로컬 네트워크의 IP 주소를 외부 네트워크와 연결되는 공인 IP 주소로 변환하는 기술이다. 이를 통해 로컬 네트워크의 여러 장치들이 하나의 공인 IP 주소를 사용하여 인터넷에 접속할 수 있다. 또한 로컬 네트워크 내 호스트의 주소를 외부 네트워크에 통보하지 않고 변경할 수 있다. NAT는 IP 주소 부족 문제를 해결하고 IP 주소 할당을 효율적으로 관리하는 데 도움을 준다.
이때 NAT는 원래 Source IP와 Port, 변환된 Source IP와 Port를 NAT 변환 테이블에 기록해둔다.
NAT은 가정 및 기관용 네트워크와 4G/5G 셀룰러 네트워크에서 널리 사용되고 있다. 하지만 NAT는 '라우터는 3계층까지만 처리해야 한다'는 원칙에 위배되며 네트워크 계층 장치에 의한 포트 번호 조작은 엔드 투 엔드 원칙을 위반한다는 논란이 있다. 이 때문에 IP 주소 부족은 IPv6로 해결되어야 한다는 주장이 제기되고 있다.
IPv6
IPv6는 IPv4 주소 부족 문제를 해결하기 위해 더 많은 주소 공간이 필요함에 따라 제시되었다. IPv6는 더 간결한 헤더 구조를 가지고 있어 라우터에서의 처리 및 전달 속도를 향상시킨다. 또한 트래픽 흐름 (Flow)을 구분하여 다른 네트워크 계층 처리를 적용할 수 있어, 서비스 품질(QoS) 관리, 트래픽 엔지니어링 등을 지원한다.
IPv6 데이터그램의 형식은 다음과 같다:
- Version: 4비트 필드로, IPv6를 나타내는 값인 6을 가진다.
- Traffic Class: 8비트 필드로, 서비스 품질(QoS) 및 우선순위 정보를 식별한다.
- Flow Label: 20비트 필드로, 동일한 "플로우" 내의 데이터그램을 식별한다. (단, "플로우"의 개념은 명확하게 정의되어 있지 않다.)
- Payload Length: 16비트 필드로, 페이로드의 길이를 나타낸다.
- Next Header: 8비트 필드로, 다음 헤더의 종류를 식별한다.
- Hop Limit: 8비트 필드로, 패킷이 라우터를 통과할 수 있는 최대 홉(hop) 수를 제한한다.
- Source Address: 128비트 필드로, 송신자의 IPv6 주소를 나타낸다.
- Destination Address: 128비트 필드로, 수신자의 IPv6 주소를 나타낸다.
- Payload: 실제 데이터를 포함하는 부분이다.
IPv6 데이터그램은 128비트 길이의 IPv6 주소를 사용하고, 우선순위를 식별하는 Traffic Class와 같은 추가적인 필드를 포함한다. IPv4와 비교했을 때 누락된 기능은 다음과 같다:
- 체크섬(Checksum): 라우터에서의 처리 속도 향상을 위해 체크섬 필드가 제거되었다.
- 분할 및 재조립: IPv6는 분할 및 재조립 기능이 존재하지 않는다. 대신 상위 계층에서의 처리로 이를 대체할 수 있다.
- 옵션: IPv6 헤더에는 옵션 필드가 없다. 대신 상위 계층의 프로토콜에 의해 옵션을 사용할 수 있다.
1. Tunneling
모든 라우터를 IPv4에서 IPv6로 한꺼번에 변경하기 위해서는 네트워크를 정지시켜야 할 것이다. 하지만 이것은 불가능하기 때문에 tunneling이 사용된다. 이는 IPv4만을 인식하는 라우터를 지나기 위해 IPv6 datagram을 IPv4 datagram으로 감싸는 방식이다. 이를 위해 IPv4 라우터와 연결된 라우터는 IPv6와 IPv4를 모두 인식할 수 있어야 한다.
Generalized forwarding
기존의 목적지 기반 포워딩(Destination-based forwarding)은 목적지 IP 주소를 기반으로 패킷을 전달하는 방식이었다. 하지만 일반화된 포워딩에서는 많은 헤더 필드가 동작을 결정하는 데에 영향을 줄 수 있다.
일반화된 전달에서는 많은 헤더 필드가 동작을 결정하는 데에 사용될 수 있으며, 여러 가지 동작이 가능하다. 예를 들어, 패킷을 버리거나 복사하거나 수정하거나 로깅하는 등 다양한 동작을 선택할 수 있다. 이를 통해 네트워크에서 패킷의 흐름을 더 유연하게 제어하고 관리할 수 있다.
플로우 테이블 추상화(Flow table abstraction)는 링크, 네트워크, 전송 계층의 헤더 필드 값에 의해 정의되는 "플로우"를 기반으로 한다. 일반화된 전달(Generalized forwarding)은 간단한 패킷 처리 규칙을 사용한다.
- match: 플로우 테이블에서는 패킷 헤더 필드의 패턴 값(주소 패턴)과 일치하는지 여부를 확인하는 "매치(match)" 작업을 수행한다.
- action: 매치된 패킷에 대해서는 버리기, 전달하기, 수정하기, 컨트롤러로 전송하기 등의 동작을 선택할 수 있다.
- priority: 플로우 테이블에서는 패턴이 겹치는 경우를 구분하기 위해 "우선순위(priority)"를 사용한다. 겹치는 패턴들 중에서 어떤 패턴을 우선하여 적용할지를 결정한다.
- counter: 플로우 테이블은 각각의 플로우에 대한 바이트 수와 패킷 수를 추적하는 "카운터(counters)"를 포함할 수 있다. 이를 통해 해당 플로우의 데이터 전송량을 확인할 수 있다.
1. OpenFlow
OpenFlow는 소프트웨어 정의 네트워킹(Software-Defined Networking, SDN)의 프로토콜 중 하나로, 네트워크 스위치와 컨트롤러 간의 통신을 위한 표준화된 인터페이스이다. OpenFlow는 플로우 기반의 전달 테이블을 사용하여 네트워크 트래픽을 제어하고 관리하는 데 사용된다.
오픈플로우 추상화는 다양한 네트워크 장치들을 통합하여 효율적으로 관리할 수 있는 기술이다. 이를 위해 각 장치의 동작을 표현하는 매치와 액션을 사용한다:
- 라우터의 경우, 패킷의 목적지 IP 주소를 비교하여 가장 긴 프리픽스와 일치하는 경로를 선택한다. 액션으로는 해당 경로로 패킷을 전달한다.
- 스위치는 목적지 MAC 주소를 매치로 사용한다. 패킷의 목적지 MAC 주소를 확인하여 해당 장치에게 전달하거나 플러딩(모든 포트로 패킷을 전송)하는 액션을 수행한다.
- 방화벽은 IP 주소와 TCP/UDP 포트 번호를 매치 기준으로 사용한다. 패킷의 소스 및 목적지 IP 주소, 포트 번호를 비교하여 허용 또는 거부할지 결정한다. 즉, 특정 IP 주소와 포트 번호를 허용하거나 차단하는 액션을 취한다.
- NAT(Network Address Translation)은 IP 주소와 포트를 매치로 사용한다. 패킷의 소스 IP 주소와 포트 번호를 확인하여 다른 IP 주소와 포트로 재작성하는 액션을 수행한다. 이를 통해 네트워크 주소 변환을 처리하고 사설 IP 주소를 공인 IP 주소로 변환하는 등의 기능을 수행한다.
2. Middlebox
중간 상자(Middlebox)는 소스 호스트와 대상 호스트 사이의 데이터 경로에서 일반적인 IP 라우터의 표준 기능 이외의 기능을 수행하는 중개 상자이다. 이러한 중간 상자는 네트워크 트래픽을 조작하거나 분석하고 보안, 가속, QoS(품질 보증) 등과 같은 추가적인 기능을 제공할 수 있다.
중간 상자는 다양한 형태로 구현될 수 있으며, 방화벽, 로드 밸런서, WAN 최적화 장치, 프록시 서버, 인트라넷 게이트웨이 등이 그 예시이다. 이러한 중간 상자는 네트워크 흐름을 제어하고 모니터링하여 네트워크의 안정성, 보안성, 성능 등을 향상시키는 역할을 한다.
중간 상자는 일반적인 IP 라우터와 달리 데이터 패킷을 적극적으로 처리하고 변형할 수 있다. 예를 들어 방화벽은 특정한 보안 정책에 따라 트래픽을 차단하거나 허용하고, 로드 밸런서는 트래픽을 여러 대상 서버로 분산시켜 성능을 향상시킨다. 이러한 중간 상자들은 네트워크 인프라에 추가적인 기능과 유연성을 제공하여 다양한 요구사항을 충족시킬 수 있다.
초기에는 독점적인(폐쇄적인) 하드웨어 솔루션을 사용하여 중간 상자 기능을 구현했으나, 현재는 오픈 API를 구현하는 "화이트박스" 하드웨어로의 전환을 추구하고 있다.
"매치+액션"을 통해 프로그래밍 가능한 로컬 동작을 수행할 수 있도록 하고, 소프트웨어를 통해 혁신과 차별화를 추구하고 있다. 이러한 방향성은 소프트웨어를 통해 네트워크 기능을 개발하고 확장하여 다양한 기능을 제공하려는 것이다.
SDN(소프트웨어 정의 네트워킹)은 논리적으로 중앙 집중식 제어와 구성 관리를 수행하며, 종종 개인 또는 공용 클라우드에서 이루어진다. 이는 네트워크의 제어를 중앙에서 관리하여 유연성과 효율성을 높이는 것을 목표로 한다.
네트워크 기능 가상화(NFV)는 화이트박스 네트워킹, 컴퓨팅, 저장을 통해 프로그래밍 가능한 서비스를 제공한다. 이를 통해 네트워크 기능을 가상화하고 필요에 따라 프로그래밍하여 유연하게 서비스를 제공할 수 있다. 이러한 변화는 네트워크의 유연성과 확장성을 향상시키는 데 도움이 된다.
다른 계층에는 여러가지 프로토콜이 있는데 반해 network layer는 IP 프로토콜 하나만을 갖는다. 때문에 middlebox들을 통해 인터넷의 성능과 안전성을 보완한다.
Architectural Principles of the Internet
인터넷의 구조적 원칙은 세 가지 기본적인 신념을 가지고 있다. 연결성, 인터넷 프로토콜(IP)을 사용, 지능의 End-to-End가 바로 그것이다.
첫째로, 인터넷의 구조적 원칙은 단순한 연결성을 추구한다. 이는 인터넷을 통해 모든 장치와 사용자가 서로 연결되어 통신할 수 있도록 하는 것을 목표로 한다. 인터넷은 단순한 연결을 위한 기반이 되어 다양한 서비스와 애플리케이션을 가능하게 한다.
둘째로, 인터넷은 인터넷 프로토콜(IP)을 사용하여 동작한다. 이는 인터넷의 "얇은 허리"로 알려져 있으며, 모든 인터넷 연결 장치에서 구현되어야 하는 네트워크 계층 프로토콜이다. IP 프로토콜은 데이터의 전송과 라우팅을 담당하며, 인터넷의 핵심적인 역할을 수행한다.
셋째로, 인터넷은 네트워크의 지능과 복잡성을 네트워크의 가장자리에 위치시킨다. 이는 네트워크의 에지(End)에서 데이터의 처리와 응용 프로그램의 로직을 담당하도록 하는 것을 의미한다. 네트워크의 가장자리에 위치한 사용자 장치와 서버는 데이터의 처리와 응용 프로그램 실행에 필요한 지능을 가지고 있으며, 네트워크 자체는 단순한 데이터 전달 역할을 수행한다. 응용 프로그램은 통신 시스템의 끝점에서만 해당 기능을 완전하게 구현할 수 있으며, 네트워크 자체에 해당 기능을 구현하는 것은 불가능하다고 여겨진다.
이러한 구조적 원칙은 인터넷의 설계와 운영 방식을 결정하는 기반이 되며, 단순한 연결성, IP 프로토콜의 중요성, 그리고 네트워크의 지능과 복잡성을 가장자리에 위치시키는 것이 인터넷의 핵심적인 신념이다.
'학교공부 > 컴퓨터 네트워크' 카테고리의 다른 글
Network Layer: Control Plane (0) | 2023.12.02 |
---|---|
[컴퓨터 네트워크] Computer Network outline (0) | 2023.10.21 |
[컴퓨터 네트워크] Transport Layer (1) | 2023.10.18 |
[컴퓨터 네트워크] Application Layer (0) | 2023.10.11 |