Network Layer
- 세그먼트를 송신 호스트 에서 수신 호스트 로 보낸다.
- Sender : 세그먼트를 데이터그램으로 캡슐화(Encapsulation).
Link layer로 보낸다.
- Receiver : 세그먼트를 받아 Transport layer로 보낸다.
- 네트워크 레이어는 모든 인터넷 장치에 존재한다 : host / router
주요 기능
1. Forwarding
- 패킷을 Router input link에서 올바른 Router output link로 보낸다.
2. Routing
- 패킷이 Source에서 Destination까지 가는 경유지를 정한다.
- Routing algorithm 사용
분류
1. Data plane
- 로컬 기능
- 데이터그램이 Input port에 도착하고 Output port로 전달(Forward) 되는 방법을 정한다.
2. Control plane
- 네트워크 기능
- 데이터그램이 source에서 destination까지 가기 위해 라우터끼리 거치는 경로를 정한다.
- Traditional routing algorithm : 라우터에 내장
- 모든 라우터에 내장되어 Control plane에서 상호작용한다.
- Software-defined networking < SDN > : 원격 서버에 내장
- 원격 서버(Remote server)에서 테이블을 만들고, 이를 라우터에 설치한다.
Network service model
단일 패킷에 대한 서비스 예시
패킷 흐름에 대한 서비스 예시
- 데이터 그램의 순서 보장
- 흐름을 위한 최소한의 대역폭 보장
- 패킷간 거리 차이의 제한
인터넷 Best Effort Service 는 아래를 보장하지 못함
- 목적지까지 성공적인 패킷 전송
- 전송의 타이밍 혹은 순서
- End-End 흐름의 사용 가능한 대역폭
Router architecture
High-level view
- Line Termination : Physical Layer
- Link Layer Protocol : Link Layer
- Lookup / Forwarding / Queueing
- Decentralized Switching
- 헤더값과 Input port memory의 Forwarding Table을 토대로 Output port를 찾는다.
- Input port queueing : Forwarding 속도보다 Datagram이 들어오는 속도가 빠르면 저장해 놓는다.
Destination-Based Forwarding
IP 기반 포워딩의 라우팅 테이블
범위가 적혀있다
- 입력 IP 주소의 목록과 출구 Link가 적혀있다.
- Longest Prefix matching
- 목적지 주소를 찾을때, 일치하는 Prefix가 가장 긴 Link interface를 사용한다.
- 1 - 0번 Link interface로 이동한다.
- 2 - 1번 Link interface로 이동한다.
- Ternary content addressable memory 를 통해 작동
- 세개 전부 match 되지 않을시 3번 Link interface로 연결된다.
TCAM < Ternary content addresable memories > 와 같은 기술을 통해 빠르게 찾아낼수 있다.
Switching Fabric
- Input link에 들어온 패킷을 올바른 output link로 전송한다.
- Switching rate : 패킷이 input에서 output으로 전송되는 속도
Switching Fabric 세가지 종류
- 메모리 스위칭 : 1세대 라우터
- CPU의 직접 통제 하에 스위칭
- 패킷이 Input에서 메모리로 복사된다, 이후 메모리에서 Output으로 복사된다.
- 속도가 메모리 대역폭에 제한된다.
- 버스 스위칭
- 데이터그램이 Input port memory에서 Output port memory로 공유버스를 통해 간다.
- 버스 경합이 일어나 속도가 제한될수 있다.
- Interconnection network 스위칭
- n * n 스위치가 여러 작은 스위치로 이루어진다.
- fabric을 지나 출구에서 데이터그램이 재조립된다.
- 병렬화를 통해 빠른 스위칭이 가능해진다.
병렬화
- 보내고자 하는 데이터가 길면, 이를 잘라서 다른 통로를 통해 동일한곳으로 보낼수 있다.
- Switch fabric의 속도가 Input port보다 느릴때, Input queue에 대기열이 생긴다.
- 버퍼 오버플로우로 인해 지연 혹은 손실이 생긴다.
HOL/Head-Of-The-Line Blocking
- 먼저 온 데이터그램으로 인해 뒤에 온 데이터그램이 대기중인것.
Output port Queueing
- 데이터그램이 Fabric에서 오는 속도보다 Link transmission 속도가 느릴 경우 버퍼링이 필요하다.
Buffer management
- Drop Policy
- 버퍼가 가득 찼을때 어떤 데이터그램을 버려야 하나
- Scheduling discipline 이 대기중인 데이터그램중 전송할것을 고른다.
Buffer
Buffer Management
- Drop : 버퍼가 가득 찼을때 어떤 패킷을 버릴지 결정한다.
- Tail drop : 지금 들어오고 있는 패킷을 버린다.
- Priority : 우선순위에 기반하여 결정한다.
- Marking
- 어떤 패킷을 혼잡 신호 마킹 할지
- ECN / RED algorithm : E 플래그 설정해 송신에 보내고, C 플래그로 다시 보내주는것.
Packet Scheduling
FCFS ⋅ First come First serve
Priority
- 도착하는 트래픽이 분류되어, 종류에 따라 대기한다.
- 높은 우선순위 대기열에 있는 패킷을 먼저 보낸다.
- 우선순위 클래스 내부에는 FCFS로 작동한다.
- 몇몇 패킷은 전송되지 못하고 버퍼에 계속 남을 수도 있다.
Round robin
- 트래픽이 분류되어 종류에 따라 대기
- 서버가 이들 대기열에서 패킷을 하나씩 돌려가며 보낸다.
Weighted fair queueing
- Round robin의 일반화된 방식
- 각각의 분류가 가중치를 가지며, 이 가중치에 의거해 선택된다.
- 가중치 : Σjwjwi
- 전체 가중치의 합 중 자신의 가중치의 비율
- Path selection algorithm : 라우팅 테이블 / 경로 설정
- ICMP : 에러 리포트 / 라우터 신호
Internet
IP 데이터그램 포맷
- ver : 인터넷 프로토콜의 버전
- header length : IP 패킷 헤더의 길이
- type of service : IP 데이터그램의 서비스 형태
- Low Delay : 설정 될 시 지연시간이 낮게 라우팅 됨
- Throughput : 설정 될 시 최대한의 처리량을 갖도록 라우팅 됨
- Reliability : 설정 될 시 신뢰성을 갖는 네트워크로 라우팅 됨
- Low cost : 설정 될 시 최소한의 비용으로 라우팅 됨
- length : 패킷의 전체 길이
- 16-bit identifier : 분리된 패킷들이 한 패킷에 속해있으면 이 값이 같다.
- flgs
- 0번 비트 : Reserved
- 1번 비트 : Don't fragment - 이 패킷은 단편화 되지 않음, 만약 패킷이 너무 크다면 바로 drop 됨.
- 2번 비트 : More fragment - 이 패킷이 설정되어 있다는 것은, 자신이 단편화 된 패킷들의 마지막이 아니라는것.
- fragment offset
- time to live
- 패킷이 거칠수 있는 라우터의 갯수를 나타낸다.
- 라우터를 거칠때마다 1씩 줄어들며, 0에 도달 할 시 패킷이 drop 된다.
- upper layer
- Transport layer에서 사용되는 프로토콜을 적는다.
- header checksum
- options
- 라우팅 되는 경로를 적어둘수 있다.
- Source routing
- Strict source routing : 반드시 options에 적힌 순서대로 라우팅을 한다.
- Loose source routing : options에 적힌 라우팅을 거치되, 중간에 다른 라우터를 거쳐도 된다.
Terminology
- IP주소
- Host/Router interface의 32비트 식별자
- 네트워크를 구분하는 Network ID 와 Host ID 로 구분된다.
- Interface
- Host/Router간 연결과 Physical link
- 라우터는 보통 여러 interface를 가지고 있다.
- 호스트는 하나 혹은 두개의 인터페이스를 가진다.
- 패킷 분리
- IPv4는 보낼때 MTU가 적어 보내지 못할경우 나누어 보낸다.
- 나뉘어진 패킷 마다 헤더가 붙는다.
- 이후 조립이 필요하다.
- 16-bit identifier : 각 조각이 동일한 데이터그램에 속하면 같은 일련번호를 공유한다.
- fragment offset : 조각의 순서가 들어간다.
- 이미 분리된 패킷의 경우 목적지에 도착할때까지 유지되어 목적지에서 새로 조립된다.
중간고사 시험범위
Subnet
- 서브넷은 IP 주소에서 네트워크 영역을 부분적으로 나눈 부분 네트워크를 뜻한다.
- 라우터 사이를 지나지 않고 기기간 서로 물리적으로 연결될수 있는 Device interface
- 일종의 섬과 같은 네트워크
Subnet mask
- IP 주소 체계의 Network ID와 Host ID를 분리하는 역할을 한다.
- /24 Subnet mask : 앞의 24비트가 IP주소의 Subnet 부분이다.
- 255.255.255.0 과 같이도 작성 가능 < == .../24 >
Subnetting
- IP 주소 낭비를 방지하기 위해 원본 네트워크를 여러개의 서브넷으로 분리하는 과정
- 전부 0이나 1로 채워진 Host ID는 사용할수 없다는것만 명심하면 된다.
IP 주소의 구조
- Subnet part : 동일한 서브넷에 위치한 기기들이 가지는 동일한 IP
- Host part : 남은 우측 IP 부분
CIDR - Classesless Interdomain Routing
- 주소의 Subnet 부분이 임의의 길이를 가진다.
- 주소 포맷 : a.b.c.d/x, x는 주소에서 subnet이 차지하는 비트의 갯수를 의미한다.
Get IP Address
HOST IP 얻는법
- 설정 파일 내에 하드코딩되어있음
- DHCP 사용 < Dynamic Host Configuration Protocol >
DHCP
- 네트워크에 접속시 IP주소를 Host가 동적으로 받아오기
- 사용중인 주소의 갱신
- 주소 재사용 가능케함, 호스트 사용시에만 할당 가능
- 모바일 사용자 지원 / 자유로운 출입
Broadcast
- 특정 네트워크에 있는 모든 호스트가 받는 패킷
- Host ID가 다 1로 되어 있는 주소로 보낸다. < Broadcast IP/Address >
- 무조건 누구나 받을수 있는 패킷
작동법
- Host가 DHCP discover 메시지를 Broadcast 한다.
- DHCP 서버를 찾는다.
- DHCP 서버가 하나만 있지 않을수 있다.
- DHCP 서버 가 DHCP offer 메시지를 Broadcast 한다.
- Host가 사용 가능한 IP 주소를 알려준다.
- yiaddrr : 사용 가능한 주소
- lifetime : IP를 사용가능한 시간
- Host가 DHCP request를 통해 IP주소를 요청한다.
- Broadcast를 통해 DHCP서버에 그 주소를 쓰겠다고 알린다, 또한 Broadcast를 사용한다.
- DHCP 서버 가 DHCP Ack로 응답한다.
DHCP는 subnet의 IP 주소를 할당하는것 외에 다른정보도 제공한다.
- 직접 연결된 라우터의 주소 : Gateway, 외부망으로 나가기 위해 필요한 주소기도 하다.
- DNS 서버의 이름과 IP주소
- 네트워크 마스크
- 네트워크 주소 부분의 비트를 1로 치환한 것, IP 주소와 넷마스크를 AND연산을 하면 네트워크 주소를 얻을수 있다.
- 이를 통해 송수신시 같은 네트워크 내에서 일어나는것인지 확인해 직접 보내거나 라우터를 통해 전송할수 있다.
네트워크의 Subnet ip 얻는법
계층적 할당 ( Hierarchical addressing ) / Route aggregation
- 라우팅 할때, ISP와 하위 Organization에 네트워크 ID 부분이 점진적으로 커지는것을 이용
- 인터넷에서 ISP 네트워크 ID를 요청하면, ISP에서는 Organization의 네트워크 ID를 요청하는 식으로 라우팅 됨.
- 간략하고 직관적 라우팅이 가능하다.
ISP가 IP 할당 받는법
NAT / Network Address Translation
- 모든 로컬 네트워크 내의 장치가 외부에서 봤을때는 하나의 IP를 사용한다.
- 로컬 네트워크 상의 모든 장치들은 "사설/Private" IP 공간에서 로컬 네트워크에서만 사용가능한 IP주소를 부여받는다.
- 장점
- 모든 장치를 사용하는데 ISP로부터 부여받은 하나의 IP만 사용함
- 바깥과는 상관없이 내부의 IP주소를 변경할수 있다.
- 로컬 주소의 변경 없이 ISP를 바꿀수 있다.
- 로컬 기기의 주소가 직접 보이지 않아 안전하다.
구현
전송
- 보내는쪽 주소를 자신의 사설 IP + 임의의 포트로 해 보내면, 라우터가 이를 공인 IP + 임의의 포트로 보내주고 테이블에 작성
수신
- 받을때 테이블을 확인해 보낼때 썼던 공인 IP + 포트 조합을 찾아 다시 호스트 IP + 포트 로 바꾸어 네트워크 상 호스트에 전송
즉, 임의의 포트가 2번 설정되며, 각각의 포트 및 주소의 매핑은 NAT Translation table에 저장된다.
NAT Table
NAT은 논란이 많다
- 라우터는 Network layer까지만 프로세스 해야함
- IPv6을 사용해야함
- 양 끝단 연결을 위배함
- NAT 뒤의 서버에 접속하려면?
- 포트포워딩을 이용해 특정 포트는 특정 호스트에게 바로 직결하도록 할수 있다.
IPv6
ICN
- 통신을 원하는 개체가 통신 대상 호스트(host)의 주소에 기반한 통신이 아니라 정보 식별자를 기반으로 하는 통신 방법이다.
IPv4 <> IPv6 변환
- Tunneling : IPv6의 데이터그램이 IPv4의 페이로드로서 IPv4 로도 전송된다.
Generalized forwarding
- IP주소 뿐 아니라 헤더에 있는 다른 필드들을 가지고 어떤 액션을 할지 결정한다.
Flow table
- 라우팅 테이블과 유사하나 추가적인 정보들을 가지고 판단한다.
- match되는 조건과 그 조건에 맞을시 어떤 action을 취할지가 적혀있다.
- match
- 헤더의 필드를 보고 값이 패턴에 맞는지 확인한다.
- action
- match 조건 만족시 drop / forwarding / modify / 감싸서 특정 컨트롤러로 보낼지 결정한다.
* 와일드카드
- 패턴이 겹칠 경우를 대비, 우선순위가 지정되어 있어야 한다.
- 어떤 조건에 만족해 어떤 액션을 취할때 마다 어떤 조건-액션이 있었는지, 만족한 바이트의 전체 양은 얼마였는지 저장하는
카운터 또한 필요하다.
헤더 필드
- 링크, 네트워크, 트랜스포트 레이어를 모두 포함한다.
오픈플로우 추상화