1. Overview of Network layer
네트워크 계층
- 송신 호스트에서 수신 호스트로 세그먼트를 전송한다
- 송신측에서는 세그먼트를 데이터그램으로 캡슐화 한다
- 수신 측에서는 세그먼트를 전송계층으로 전달한다.
- 모든 호스트와 라우터에는 네트워크 계층 프로토콜이 있다
- 라우터는 그것을 통과하는 모든 IP 데이터그램의 헤더필드를 검사한다
두가지 주요 기능들
1. 포워딩 : 라우터의 입력에서 패킷을 적절한 라우터 출력으로 이동시킨다.
2. 라우팅 : 출발지에서 목적지까지 패킷이 통과하는 경로를 결정
네트워크 계층: 데이터 평면과 컨트롤 평면
1. 데이터 평면
- 각 라우터마다 이루어지는 로컬한 기능
- 라우터의 입력 포트로 도착한 데이터그램이 어떻게 라우터의 출력 포트로 전달되는지를 결정
- 전달 기능
2. 컨트롤 평면
- 네트워크 전반에 걸쳐 적용되는 논리
- 출발지 호스트에서 목적지 호스트로의 end-end 경로 상에서 데이터그램이 어떻게 라우터들 사이에서 라우팅되는지를 결정
- 두가지 제어 평면 접근 방법:
-- 전통적인 라우팅 알고리즘 : 라우터에서 구현됨
-- 소프트웨어 정의 네트워킹(SDN): (원격) 서버에서 구현됨
개별 라우터 제어 평면
각 라우터의 개별 라우팅 알고리즘 구성요소가 제어 평면에서 상호작용 한다.
논리적으로 중앙 집중화된 제어 평면
독립적인 (일반적으로 원격에 위치한) 컨트롤러가 지역 제어 에이전트들과 상호작용 한다.
네트워크 서비스 모델
발신자에서 수신자로 데이터그램을 전송하는 채널에 대한 어떤 서비스 모델이 있는가?
개별 데이터그램에 대한 예시 서비스:
- 보장된 전달
- 40밀리초 미만의 지연을 가진 보장된 전달
데이터그램의 흐름에 대한 예시 서비스:
- 순서대로 데이터그램 전달
- 흐름에 대한 보장된 최소 대역폭
- 패킷 간 간격 변경에 대한 제한
2. What's inside a router
라우터 아키텍처
일반적인 라우터 아키텍처의 high-level 개요:
입력 포트 기능들
분산 스위칭
- 헤더 필드값을 사용해 입력 포트 메모리의 전달 테이블을 조회하여 출력 포트 결정 ("일치 + 동작")
- 목표 : 입력 포트 처리를 '라인 속도'로 완료하는 것
- 대기열 : 데이터그램이 스위치 패브릭으로 전달되는 전달 속도보다 빠르게 도착할 경우
- 목적지 기반 전달 : 목적지 IP 주소만을 기반으로 전달 (전통적인 방식)
- 일반화된 전달 : 모든 헤더 필드 값의 세트를 기반으로 전달
목적지 기반 전달
가장 긴 Prefix 일치
- 주어진 목적지 주소의 포워딩 테이블 항목을 찾을때, 대상 주소와 일치하는 가장 긴 주소 prefix를 사용한다.
- 가장 긴 prefix 일치는 종종 삼상 내용 주소 가능 메모리(TCAMs)를 사용하여 수행된다.
-- 내용 주소 가능: TCAM에 주소를 제시하면 테이블 크기에 관계없이 한 클록 주기 내에 주소를 검색
-- Cisco Catalyst: TCAM에서 약 1백만 라우팅 테이블 항목을 지원할 수 있다.
스위칭 패브릭
- 입력 버퍼에서 적절한 출력버퍼로 패킷을 전송
- 스위칭 속도 : 입력에서 출력으로 패킷을 전송할 수 있는 속도
-- 종종 입력/출력 라인 속도의 배수로 측정됨
-- N개의 입력 : 스위칭 속도가 N배의 라인 속도인 것이 바람직 하다
- 세가지 종류의 스위칭 패브릭
메모리를 통한 스위칭
1세대 라우터:
- CPU의 직접적이 제어하에 스위칭이 이뤄지는 전통적인 컴퓨터
- 패킷이 시스템의 메모리로 복사됨
- 메모리 대역폭에 의해 속도가 제한됨 (데이터그램당 2회의 버스 교차)
버스를 통한 스위칭
- 입력 포트 메모리에서 출력포트 메모리로 데이터그램을 공유 버스를 통해 전송
- 버스 경합 : 버스 대역폭에 의해 스위칭 속도가 제한됨
- 32Gbps 버스, Cisco 5600: 액세스 및 엔터프라이즈 라우터에 충분한 속도
상호 연결 네트워크를 통한 스위칭
- 버스 대역폭 제한을 극복
- 배니언 네트워크, 크로스바, 다른 상호 연결 네트워크는 초기에 다중 프로세서에서 프로세서를 연결하기 위해 개발
- 고급 설계 : 데이터그램을 고정 길이의 셀로 나누고, 패브릭을 통해 셀을 스위칭
- Cisco 12000: 상호 연결 네트워크를 통해 60 Gbps를 스위칭
입력 포트 대기열
- 페브릭이 입력포트들의 합보다 느린경우 => 입력 대기열에서 대기가 발생 (입력 버퍼 오버플로우로 인한 대기 및 손실 발생)
- HOL(Head-of-the-Line)차단 : 대기열의 맨 앞에 있는 대기중인 데이터그램이 다른 데이터그램들이 앞으로 이동하는 것을 방지
출력 포트들
페브릭이 더 빠른 속도를 가지는 경우 버퍼링이 필요 : 혼잡이나 버퍼부족으로 데이터그램(패킷)이 손실될 수 있다.
데이터그램 스케줄링 : 우선순위 스케줄링 - 최상의 성능을 얻는 것, 네트워크 중립성
출력포트 대기열
- 스위치를 통한 arrival rate가 출력 라인 속도를 초과할 때 버퍼링이 필요
- 출력 포트 버퍼 오버플로우로 인한 대기 및 손실 발생 가능
얼마나 많은 버퍼링이 필요한가?
- RFC 3439의 규칙: 평균 버퍼링은 "일반적인" RTT (250ms)에 링크 용량 C를 곱한 값과 같아야 한다(ex : C=10Gbps 링크인 경우 2.5 Gbit의 버퍼가 필요)
- 최근 권장 사항 : N개의 플로우가 있을경우 버퍼링은 아래와 같다
스케줄링 메커니즘
- 스케줄링 : 링크에서 다음으로 전송할 패킷을 선택
- FIFO(선입선출) 스케줄링 : 도착 순서대로 큐에 전송
-- 폐기 정책 : 패킷이 가득 찬 큐에 도착하면 어떤것을 폐기 할 것인가
--- tail drop : 도착한 패킷을 폐기
--- priority : 우선순위 기준으로 폐기/제거
--- random : 무작위로 폐기/제거
스케줄링 정책들 :
1. 우선순위 스케줄링 : 가장 높은 우선순위를 가진 대기 중인 패킷을 전송
- 여러 클래스가 있고 각각 다른 우선순위를 가질 수 있다
-- 클래스는 마킹이나 다른 헤더 정보 (예 : IP소스 / 목적지, 포트번호 등)에 따라 달라질 수 있다
2. 라운드 로빈 (RR) 스케줄링:
- 여러 클래스가 있다
- 순환적으로 클래스 큐를 스캔하고, 각 클래스에서 한번에 하나의 완전한 패킷을 전송(사용가능한 경우)
3. 가중 공정 대기열 (WFQ)
- 일반화된 라운드 로빈
- 각 클래스는 각 주기마다 가중치에 따른 서비스 양을 받는다
3. IP: Internet Protocol
인터넷 네트워크 계층
IP 데이터그램 형식
IP 단편화, 재조립
- 네트워크 링크는 MTU(최대 전송 크기 / 가장 큰 가능한 링크 수준 프레임)를 가진다 (다른 링크 유형마다 다른 MTU가 있다)
- 큰 IP 데이터그램은 네트워크 내에서 분할되어 여러 데이터그램으로 나뉜다
-- 하나의 데이터그램이 여러개의 데이터그램이 된다
-- 최종 목적지에서만 재조립된다
-- IP 헤더 비트는 관련된 단편을 식별하고 정렬하는데 사용
IP 주소 개요
- IP 주소 : 호스트, 라우터 인터페이스의 32비트 식별자
- 인터페이스 : 호스트 / 라우터와 물리적 링크 사이의 연결
-- 라우터는 일반적으로 여러개의 인터페이스를 가진다
-- 호스트는 일반적으로 한개 또는 두개의 인터페이스를 가진다
- 각 인터페이스에는 IP주소가 할당된다.
서브넷
- IP 주소:
-- 서브넷 부분 : 높은 순서 비트
-- 호스트 부분 : 낮은 순서 비트
- 서브넷이란?
-- 동일한 IP 주소의 서브넷 부분을 가진 장치 인터페이스
-- 중간에 라우터가 개입하지 않고도 물리적으로 서로에게 도달할 수 있다.
서브넷을 결정하기 위한 방법:
- 각 인터페이스를 해당 호스트나 라우터에서 분리하여 격리된 네트워크의 섬을 만든다
- 각 격리된 네트워크를 서브넷이라고 한다.
IP 주소 지정 : CIDR
CIDR : 클래스 없는 간격 기반 라우팅
- 임의의 길이의 서브넷 부분 주소
- 주소 형식 : a.b.c.d/x, 여기서 x는 주소의 서브넷 부분의 비트 수
IP 주소를 얻는 방법
- 시스템 관리자가 파일에 직접 설정
- DHCP (동적 호스트 구성 프로토콜) : 서버로부터 동적으로 주소를 받음 (plug and play)
DHCP (Dynamic Host Configuration Protocol)
목표 : 호스트가 네트워크에 가입할 때 네트워크 서버에서 동적으로 IP 주소를 획득할 수 있도록 함
- 사용 중인 주소에 대한 임대 갱신 가능
- 주소를 임대 받을 때만 유지하고 있음 (연결된 동안에만 "활성"임)
- 네트워크에 가입하려는 이동 사용자를 지원
DHCP 개요:
- 호스트는 "DHCP discover" 메시지를 브로드캐스트 [선택적]
- DHCP 서버가 "DHCP offer" 메시지로 응답 [선택적]
- 호스트가 IP 주소를 요청함: "DHCP request" 메시지
- DHCP 서버가 주소를 보냄: "DHCP ack" 메시지
DHCP는 할당된 IP 주소 외에도 다음을 반환할 수 있다
- 클라이언트용 첫번째 홉 라우터의 주소
- DNS 서버의 이름과 IP 주소
- 네트워크 마스크 (주소의 네트워크 부분과 호스트 부분을 나타낸다)
1. 노트북을 연결하는 경우, 해당 노트북의 IP 주소, 첫번째 홉 라우터의 주소, DNS 서버의 주소가 필요 (DHCP 사용)
2. DHCP 요청은 UDP로 캡슐화 되어 IP로 캡슐화 되고, 다시 802.1 이더넷으로 캡슐화
3. 이더넷 프레임은 LAN에서 브로드캐스트로 전송되며, DHCP서버를 실행중인 라우터에서 수신됨
4. 이더넷 프레임은 IP로 분리되고, 다시 UDP로 분리되어 DHCP로 전달
5. DHCP 서버는 클라이언트의 IP주소, 클라이언트의 첫번째 홉 라우터의 IP주소, DNS 서버의 이름 및 IP 주소를 포함하는 DHCP ACK를 구성합니다.
6. DHCP 서버를 캡슐화하고 프레임을 클라이언트로 전달하며, 클라이언트에서 DHCP로 Demuxing 된다.
7. 이제 클라이언트는 자신의 ip 주소 , DNS 서버의 이름 및 IP 주소, 그리고 첫번째 홉라우터의 IP주소를 알고 있다.
네트워크가 IP 주소의 서브넷 부분을 얻는 법 : 공급자 ISP의 주소 공간 중 일부가 할당
계층적 주소 지정은 라우팅 정보의 효율적인 광고를 가능하게 한다.
ISP가 주소 블록을 받는 방법?
ICANN(Internet Corporation for Assigned Names and Numbers)
- 주소 할당
- DNS 관리
- 도메인 이름 할당, 분쟁 해결
NAT(Network Address Translation)
로컬 네트워크를 떠나는 모든 데이터그램은 동일한 단일 출발지 NAT IP 주소를 가진다: 138.76.29.7이며, 다른 출발지 포트 번호를 가진다
이 네트워크의 출발지 또는 목적지를 가지고 있는 데이터그램은 보통처럼 출발지와 목적지에 대해 10.0.0/24 주소를 가진다.
NAT 사용 이유 : 외부 세계에서 볼 때 로컬 네트워크는 하나의 IP 주소만 사용한다.
- ISP로부터 주소 범위가 필요하지 않고, 모든 기기에 하나의 IP주소만 필요
- 로컬 네트워크 내의 기기의 주소를 외부세계에 알리지 않고 변경할 수 있다.
- ISP를 변경해도 롴컬 네트워크 내의 기기의 주소를 변경하지 않아도 된다.
- 로컬 네트워크 내의 기기는 명시적으로 주소 지정할 필요가 없으며 외부 세계에서 볼 수 없다.(보안상 이점)
NAT 필수 조건:
- 나가는 데이터그램 : 나가는 모든 데이터그램의 (출발지 IP 주소, 포트 번호)를 (NAT IP주소, 새 포트 번호)로 대체
-- 원격 클라이언트/서버는 대상 주소로 (NAT IP 주소, 새 포트 번호)를 사용하여 응답 한다.
- NAT변환 테이블에 모든 (출발지 IP 주소, 포트 번호)에서 (NAT IP 주소, 새 포트 번호)로의 변환 쌍을 기억한다.
- 들어오는 데이터그램: 모든 들어오는 데이터그램의 대상 필드에서 (NAT IP 주소, 새 포트 번호)를 NAT 테이블에 저장된 해당 (출발지 IP 주소, 포트 번호)로 대체
장점
- 16비트 포트 번호 필드: 하나의 LAN 측 주소로 동시에 60,000개의 연결이 가능
단점
- 라우터는 레이어 3까지만 처리해야 한다
- 주소 부족 문제는 IPv6로 해결되어야 한다
- 엔드-투-엔드 논리를 위반 (애플리케이션 디자이너는 NAT 가능성을 고려해야한다.)
IPv6
초기 동기 : 32비트 주소 공간이 곧 완전히 할당될 예정
추가적인 동기 :
- 헤더 형식은 처리 및 전달 속도를 높이는데 도움이 된다.
- QoS를 용이하게 하기 위한 헤더 변경
IPv6 데이터그램 형식:
- 고정 길이의 40바이트 헤더
- 단편화가 허용되지 않는다.
IPv4와의 차이점:
1. checksum : 각 홉에서의 처리시간을 줄이기 위해 완전히 제거
2. options : "다음 헤더" 필드에서 나타남
3. ICMPv6 : ICMP의 새 버전
- 패킷이 너무 큼 과 같은 추가 메시지 유형
- 멀티캐스트 그룸 관리 기능 포함
IPv4와 IPv6 라우터가 혼합된 네트워크는 터널링을 통해 동작한다
터널링 : IPv6 데이터그램이 IPv4 라우터 사이에서 IPv4 데이터그램의 페이로드로 전달된다.
4. Generalized Forward and SDN
각 라우터는 논리적으로 중앙 집중화된 라우팅 컨트롤러에 의해 계산되고 배포되는 플로우 테이블을 포함한다
OpenFlow 데이터 평면 추상화
- flow : 헤더 필드로 정의됨
- Generalized Forward : 간단한 패킷 처리 규칙
-- 패턴 : 패킷 헤더 필드에서 값 매치
-- 액션 : 매칭된 패킷에 대한 동작 (드롭, 전달, 수정, 매칭된 패킷 보내기 또는 컨트롤러로 매칭된 패킷 보내기)
-- 우선순위 : 겹치는 패턴을 구분
-- 카운터 : 바이트 수와 패킷 수
- 라우터의 플로우 테이블 (컨트롤러에 의해 계산 및 배포됨)은 라우터늬 매치 + 액션 규칙을 정의한다.
OpenFlow 추상화
매치 + 액션 : 다양한 종류의 장치를 통합
1. 라우터
- 매치 : 가장 긴 목적지 IP prefix
- 액션 : 링크로 전달
2. 스위치
- 매치 : 목적지 MAC 주소
- 액션 : 전달 또는 플러딩
3. 방화벽
- 매치 : IP 주소 및 TCP/UDP 포트 번호
- 액션 : 허용 또는 거부
4. NAT
- 매치 : IP 주소 및 포트
- 액션 : 주소와 포트 다시 작성
'Study > 컴퓨터 네트워크' 카테고리의 다른 글
컴퓨터 네트워크 6. 링크 계층과 LANs (0) | 2023.10.29 |
---|---|
컴퓨터 네트워크 5. 제어 평면 (0) | 2023.10.29 |
컴퓨터 네트워크 3. 전송계층(Transport Layer) (0) | 2023.09.13 |
컴퓨터 네트워크 2. 어플리케이션 계층 (0) | 2023.08.31 |
컴퓨터 네트워크 1. 컴퓨터 네트워크와 인터넷 (0) | 2023.08.31 |