Network Layer
Network Layer Function
Forwarding vs Routing
- Forwarding : 패킷을 라우터의 입력에서 출력으로 옮기는 것
- Routing : 출발지부터 목적지까지 패킷이 거치는 전체경로를 결정하는 것
연결설정
데이터평면, 제어평면
-
데이터평면 :
- 각 라우터의 로컬 함수
- 라우터 입력포트의 데이터그램을 어떤 출력포트로 내보낼지 결정
-
제어평면 :
- 네트워크 로직
- 데이터그램이 출발지 호스트에서 목적지 호스트까지 어떤 경로로 전달할 지를 결정
제어평면 구현 방법
- 기존 라우팅 알고리즘 : 라우터에서 구현
- Software-Defined Networking (SDN) : 원격서버에서 구현
기존 제어평면의 개념
- 라우팅 알고리즘은 라우터 제어평면에서 상호작용에 의해 동작
SDN 제어평면
- 원격제어장치에 의해 라우터에 포워딩 테이블 설치
Network Layer service model
- best effort : 최선을 다해 보지만 안될 경우 보장 불가능
Router 구조 개요
- routing algorithms/protocol (RIP, OSPF, BGP) 실행
- 입력링크에 출력링크로 데이터그램 포워딩
- 출력쪽에 buffer가 중요
ex) 2개의 입력포트가 같은 출력포트로 나갈 때 : buffer에서 딜레이를 줘서 약간의 차이를 두고 출력
Forwarding table 구성
Q. 라우터에 모든 라우터의 주소가 필요한가?
A. No. Longest Prefix Matching - 가장 비트가 맞는 포트로 보낸다
Answer : 0, 1
- 통합 서버에서 라우터의 우회 주소를 쉽게 변경할 수 있다. -> SDN을 쓰려고 하는 이유
Internet Network Layer
- 한 라인에 32bits (4byte) IP 헤더는 20byte (옵션제외)
- ver (version) : 4bits / Ipv4 : 0100 4, Ipv6 : 0110 6
- head len : 4bits / 0101 -> 5, 5x4 : 20 byte
- type of service : 잘 안쓴다. 0
- length : 데이터그램 길이
- 16bit identifier (식별자) : 16bits
- Flag : 3bit, fragment offset :
- time to live : 라우터를 통해서 갈 때 무한루프에 빠지는 경우가 있는데 라우터를 한번 돌 때 마다 감소하며 0이 될 경우 소멸하게 한다.
- upper layer : 상위 계층에 어떤 프로토콜이 있는지 말해준다.
- Checksum :
- 32 bits source IP address / destination IP address : 각 4 btye
- MTU (Maximum Transmission Unit) : 링크계층에서 보낼 수 있는 최대 데이터의 크기
-> MTU는 링크 계층에 따라 다르다.
IP 분할 및 재조립
IP Addressing : introduce
IP는 호스트가 아닌 인터페이스에 할당
라우터는 관리자에 의해 관리받고 오류가 발생 시 관리자에 알려야하기 때문에 라우터에도 IP가 필요하다 -> 라우터 인터페이스에 할당
-> 인터페이스란 호스트와 라우터와 물리적 링크 사이를 연결
Subnets
-
IP Address :
- subnet part (상위비트)
- host part (하위비트)
-
Subnet?
- 라우터의 개입없이 물리적으로 다른 노드에 접속할 수 있는 기본 단위
- 동일한 서브넷에 속한 디바이스는 IP address에서 동일한 서브넷 주소를 가짐
네트워크와 호스트를 구분해주는 서브넷 마스크
ex) 255.255.255.0
-> 255.255.255 네트워크, .0 호스트
라우터를 통해서 나갈수 밖에 없다.
IP Addressing : CIDR
CIRD : Classless InterDomain Routing
- 비클래스 인터넷 주소할당방식
- 주소에 임의의 길이의 서브넷을 표시
- 주소형식 : a.b.c.d/x, 여기서 x는 서브넷 부분을 표시
ex) 200.23.16.0/20을 할당받은 경우 이를 다시 작은 주소 블록 8개로 분할하는 방법
NAT : Network Address Translation
NAT router must :
- ougoing datagrmas : 데이터그램 (송신 IP Addr, port #) -> (NAT IP Addr, new port #)으로 변환
- NAT 변환 테이블 : (송신 IP Addr, port #) -> (NAT IP Addr, new port #) 변환을 기록
- 상대 호스트는 (NAT IP Addr, new port #)을 수신호스트로 응답
- Incoming datagrams : NAT 변환 테이블을 이용 데이터그램의 수신 호스트를 (NAT IP Addr, new port #) -> (source IP Addr, port #)로 변환
사설 IP를 쓸 때 외부에서 들어올 때 문제 발생
NAT traversal problem
- Client가 10.0.0.1 주소를 가진 서버에 접속하고자 할 때
- server address 10.0.0.1 local to LAN(client는 이 주소를 사용할 수 없다.)
- 외부에 보이는 address : 138.76.29.7
외부에서 접속하고자 할 때 접속이 불가능
- solution 1 : 통계적으로 특정한 NAT주소/포트를 서버의 주어진 포트로 연결되도록 구성 (공유기 관리자모드접속)
- 포트포워딩 : 관리자모드로 접속 ex) (138.76.29.7, port 2500)주소는 항상 (10.0.0.1, port 25000)에 전송
- DMZ(IP주소와 포트범위설정)/Twin IP(MAC 주소 설정)
- solution 2 : Universal Plug and Play (UPnP) Internet Gatewaay Device (IGD) Protocol.
- IGD 프로토콜 이용
- port 변환을 추가/삭제 (with lease times)
- ex) upnpc -a 192.168.0.9 21 21 TCP
- solution 3 : relaying (usede in Skype)
- 사설 IP 주소를 사용하는 Cilent가 relay 서버에 연결 설정
- 외부 Client가 relay 서버에 접속
- Relay 서버가 2개의 연결에 대해 브리지 역할
ICMP : Internet Control Message Protocol
- 호스트/라우터에서 네트워크 레벨의 통신을 위해 사용함
- error reporting : unreachable host, network, port, protocol
- echo request/reply (used by ping)
- Network-layer 로 IP위에 존재
- ICMP msgs carried in IP datagrams
- ICMP message : 타입과 코드를 포함한 8바이트의 헤더를 가짐
- 방화벽 : IP주소와 포트번호를 기반으로 ICMP등 수상한 패킷의 진입을 막음
- IDS(침입탐지시스템) : 헤더필드 뿐만 아니라 페이로드까지 심층적인 패킷 감시 기능 수행
IPv6
- 동기 : 32-bit address 공간이 부족함
- Additional motivation :
- 헤더 포맷으로 인해 처리속도를 가속화시킬 필요가 있다.
- 헤더에 QoS지원기능이 필요하다 (패킷의 우선순위를 정하기 위해)
- IPv6 datagram format :
- 확장된 주소기능 : 32비트에서 128비트로 확장
- 애니캐스트 주소 도입 -> 특정 주소가 아닌 내 주위의 가장 가까운 서버에 접속
- 고정된 40byte 헤더 -> 정적으로 구성되어 하드웨어에서 처리가 가능하기 때문에 속도향상
- 흐름 라벨링과 우선순위
nmap : 네트워크 상태(열린/닫힌상태, 열린 포트 등)를 탐지할 수 있는 스캐너
IPv4 : 32-bit 40억개
IPv6 : 128-bit 40억^4
- Ver : IP version 번호
- Priority : 흐름별 데이터그램의 우선순위 식별
- Flow Label : 데어트그램의 흐름 인식 (우선순위 처리를 위해 라벨링)
- Next Header : 상위 계층 프로토콜 식별 (IPv4의 Protocol 부분)
IPv4 vs IPv6
- 단편화/재결합 : 단편화/재결합은 시간이 걸리므로 라우터에서 기능을 삭제하고 종단시스템에서 함으로서 속도증가
- Checksum : 각 홉에서 처리시간을 줄이기 위해 제거
- Options : 옵션필드를 Next Header(상위계층 프로토콜)로 처리
- ICMPv6 : new version of ICMP
- 추가메세지 타입 정의, ex)"Packet Too Big"
- Multicast group management functions
Q : IPv4 에서 IPv6 또는 반대로 상호작용을 어떻게 진행해야 하는가?
A : 터널링 : IPv6망에서 IPv4망에서 사용하는것처럼 변환
Tunnerling