CH4-1

charrrming·2022년 6월 2일
0

Computer Network

목록 보기
7/10

Network-layer services and protocols

TCP: segment
UDP: datagram

트랜스포트 계층에서 전달된 segment를 받아서 받는 쪽으로 보냄
- sender는 segment를 datagram으로 캡슐화 -> 링크 계층으로 전달
- receiver는 segment를 트랜스포트 계층으로 전달

네트워크 계층은 호스틀, 라우터에도 존재

라우터: 자기를 지나가는 모든 IP 데이터그램의 헤더를 조사함
	   데이터그램을 인풋 포트에서 아웃풋 포트로 전달

Network-layer functions

1. forwarding: 라우터의 input link로 들어온 패킷을 output-link로 전달 (하나의 라우터에서)
2. routing: source 컴퓨터 ~ destination 컴퓨터까지의 경로를 결정 (전체적인 관점)

* data plane: local, 라우터별 기능으로 input port ~ output port
* control plane: network-wide logic, 라우터들끼리 협력하여 데이터를 주고받는 전체 경로 결정

* 2 control-plane approaches
 - traditional routing algorithms: implemented in routers
 - softward-defined-networking(SDN): implemented in servers(controller)

Per-router control plane (전통적 방식)

각각의 라우터에 구현된 라우팅 알고리즘 컴포넌트가 존재
라우터들끼리 정보를 주고받는 라우팅 알고리즘의 결과로 테이블이 생성

각 라우터마다 라우팅 알고리즘이 상호작용하며 포워딩 테이블을 업데이트 하니까 전체적으로 
업데이트 시킬 수 있는 control plane 역할, 라우터마다 있는 포워딩 테이블을 이용하여 들어오는 
데이터그램을 적절한 라우터로 보내주므로 포워딩 역할을 하는 data plane

* control plane
라우팅 알고리즘 컴포넌트 -> 상호작용 -> 전체적인 포워딩 테이블 업데이트 -> 라우팅 
* data plane
포워딩 테이블 -> 데이터그램 헤더 확인 -> 각 데이터에 맞는 라우터 찾아서 포워딩 

Software-Defined Networing (SDN)

원격 컨트롤러가 존재, 컨트롤러가 결정하고 만든 포워딩 테이블을 라우터마다 뿌려줌

Network Service Model

전달 보장, 제한 시간 내에 도착 보장?
순서 보장, 최소 대역폭 보장, inter-packet spacing 제한?
-> IP는 아무것도 안해준다!!!!!! (대역폭,패킷 유실,순서, timing 보장 x)

IP는 best-effort 서비스 (최선은 다하지만 보장은 못함)
- 아주 단순해서 그 위에 뭐 붙이기가 쉬움
- 충분한 대역폭이 보장이 된다면, 실시간 어플리케이션에서도 충분한 성능을 제공
- 어플리케이션 계층에서 복제, 분산 서비스를 제공함 
	-> 추가적으로 어플리케이션 계층에서 지원해주는 것들로 인해 클라이언트가 가능한 
    가까운 서버에서 서비스 제공받을 수 있게됨
- 네트워크 상위 계층에서 congestion control처럼 최선의 노력하는중

Router architecture

라우터는 특수한 컴퓨터
input port, output port, switching fabric, routing processor
routing processor: 라우팅 알고리즘 실행하고 그 결과를 line card로 보냄
line card에도 프로세서 있음
switching fabric: input-port, out-port를 연결

contorl plane, software -> ms
forwarding data palne, hardware -> ns

Input port function

line card 안에 ↓
- line termination (물리 계층, 연속된 비트를 받아들임)
- link layer protocol (링크 계층, Ethernet)
- lookup, forwarding, queueing

목표는 line speed 만족하는 것

* lookup: 사전 찾기임, 사전은 forwarding table, 찾을 단어는 도착한 패킷의 목적지 ip 주소
* queueing 발생: datagram 도착 속도 > forwarding rate
* forwarding: output port로 내보내는 것
* forwading 2가지 방식

- destination-based forwarding (전통적):
    목적지 ip주소만 참조, lognest prefix matching
    prefix를 매칭하는 것이 쉽지 않음 -> 그래서 TCAM 사용
        
    TCAM은 어떤 content를 주면 그 내용을 메모리에서 찾아서 리턴해주는 메모리
    TCAM에 ip주소 넘겨주면 그 ip주소에 해당하는 포트를 한 사이클만에 계산해줌
        
- generalized forwarding: 헤더의 다른 필드도 참조

Switching fabrics

인풋으로 들어온 패킷을 적절한 아웃풋으로 전달
switching rate = 성능 평가 척도

N개의 인풋이 있다면 얘네가 모두 스위치 구조를 공유하기 때문에 NR만큼 지원해줘야함

종류: memory, bus, interconnection network

1) 메모리 활용 방식 (초기 형태, 현재는 사용 안함)
2) 공유 버스 (소형급 라우터에서 사용)
	- input port끼리 버스를 잡기 위해 경쟁 발생
3) interconnection 네트워크 (for 고성능 라우터)
	- crossbar 방식: 멀티 프로세서 구조에서 발전
    - multistage switch 방식: 스위치는 더 작은 스위치들로 구성
    - exploiting parallelism: 패킷을 쪼개고 쪼갠걸 한번에 병렬처리하고 재조립

queueing

* input port queueing
	- input buffer overflow로 queueing dealy, loss 발생할 수 있음
    - HOL Blocking (head of the line): 줄 맨 앞에 있는 애가 block되어 뒤에 애가 기다림
    
* output port queueing
	- datagram 도착 속도 > 전송되는 속도보다 빠르면 큐잉 발생
    - drop policy: 어떤 애를 버릴건지 ex) tail drop
    
    - scheduling discipline (뭘 먼저 내보낼지 결정)
      ex) FCFS(first come first service), Priority, 
      	  round robin, weighted fair queueing(WFQ)
      
* buffer management (drop? 어떤 패킷 먼저 서비스?)
	- drop: tail drop, priority
    - marking: 어떤 패킷이 혼잡을 경험했는지 마킹, ex) ECN, RED
    

IP: the Internet Protocol 🤗

* 호스트, 라우터의 network layer 기능
	- IP protocol
    - ICMP protocol (오류, 긴급 사항 발생 시 사용)
    - 라우팅 알고리즘으로 포워딩 테이블을 적절하게 업데이트 + 포워딩

IP datagram format

헤더: 20바이트

ver: 버전 정보
head len: option 때문에 가변적
type of service(tos): diffserv, ECN (보통 0)
length: 총 길이, 데이터 크기 모르니까
16-bit identifier, flgs, fragment offset: 쪼개고 재조립할 때 사용
time to live(ttl): 한 hop 지날 때마다 1씩 감소, ttl이 1이면 그 자리 못 떠남
upper layer: tcp 또는 udp
header checksum
source ip address
destination ip address
options

payload data (1460B, Ethernet이 한번에 보낼 수 있는 최대 양은 1500B
	근데 ip, tcp 헤더가 20바이트씩이니까 1500-40=1460)

IP addressing

v4 -> 32bit, dotted decimal(8비트씩 4구간, 10진수로)
라우터는 보통 여러 ip 주소를 가짐

서브넷: 라우터를 거치지 않고 연결될 수 있는 디바이스 인터페이스들의 집합
ip 주소 = subent 파트 + host 파트

* CIDR (Classless InterDomain Routing, 사이더)
	- 주소의 서브넷 부분 길이가 가변적
    - a.b.c.d/x, x가 서브넷 파트 비트 수
    
* Class
	- A: subnet 길이가 1바이트 -> 호스트 주소 2^24개 가능
    - B: subnet 2바이트 -> 호스트 주소 2^16개 가능
    - C: subent 31ㅏ이트 -> 호스트 주소 2^8개 가능

IP 주소 얻는 방법

1) 호스트가 얻는 방법: DHCP(서버로부터 동적으로 받아옴, plug-and-play)

* DHCP (Dynamic Host Configuration Protocol)
	- 가입된 ISP의 서버가 부여해줌, udp 사용함
    - ip주소 뿐만 아니라 first-hop router 주소, dns 서버 등도 알려줄 수 있음
    
    # 이 과정은 다 broadcast (255.255.255.255)
    1) 호스트가 DHCP discover msg를 브로드캐스트 (누가 나한테 ip주소 부여하는지 모르니까)
    2) DHCP 서버는 DHCP offer 보냄 (나 서버인데 너 이거 쓸래?)
    3) 호스트가 DHCP request msg 보냄
    4) DHCP 서버가 DHCP ack 보냄
    
2) 네트워크가 얻는 방법: ISP의 주소대역 빌려와서 사용
	- 고객사가 8군데라면 3bit 더 써서 8개의 블록으로 나눔, 마스크는 이제 23

3) ISP가 얻는 방법: ICANN이 레지스트리에게 분배
	- registry: 주소 대역 나눠주면서 수수료 받는 기관
    - 우리나라는 옛날에는 인터넷 진흥원이 나눠줬지만 이젠 ISP가 대부분 함

0개의 댓글