티스토리 뷰
네트워크 레이어
-데이터 평면(data plane) : 라우터 입출력 링크 과정(4장)
-제어 평면 (control plane) : 어떤 경로를 통해 통신을 구성할 것인가(5장)
송신 호스트에서 수신 호스트로 패킷을 전달해보자!
forwarding(나노초 단위)
-패킷이 라우터 input 링크에 도착했을 때 그 패키을 적절한 output 링크로 이동시키는 것. forwarding taable에 따른다.
-데이터 평면에서 구현되는 가장 중요하고 기본적인 기능
routing(조금 더 긴 초 단위)
-송신자가 수신자에게 패킷을 전송할 때 어떤 라우팅 경로(routing route)를 통해서 전송할 것인지 결정하는 것. 주변의 정보 공유에 의해서.(분산 라우팅 알고리즘) 이루어진다.
-경로를 결정하는 알고리즘을 라우팅 알고리즘이라고 한다. 네트워크 제어 평면에서 구현된다.
forwarding - data plane -직접 가기
routing - control plane -길찾기
방법 두 가지
1.기존 전통적인 라우팅 알고리즘(Traditional Legacy Network)
협조적 알고리즘이다. 라우터들이 자율적으로 forwarding을 진행한다.
2. 요즘 신기술 SDN (Softward-Defined Networking)
소프트웨어가 정의하는 방식. 원격의 서버에서 실행된다.
control plane을 분리해서 중앙으로 분리시켜놓는다.
각 라우터에는 data plane만 존재하고, control plane은 원격서버에서 작동된다. (원격으로 forwarding table을 나눠준다.)
기존 방식은 복잡하고, 길이 바뀌기도 해서 안 맞을 떄가 있다.
새로운 방식에서는 중앙에서 모든 상황을 판단하니까 효율적이지만 하나의 서버가 모든 것을 감당하기 때문에 불안요소가 있다. 전통적 방식은 한 번 사면 단체로 구매하고, 한 회사가 독점하지만, SDN은 값싸고 좋은 제품이 많다.
네트워크 계층에서 제공하는 서비스
1. 보장된 전달
2.지연 제한 이내의 보장된 전달
3.순서화 패킷 전달
4.최소 대역폭 보장
5. 보안 서비스
하지만 인터넷 네트워크 (IP)계층은 "최선형 서비스(best effort)를 제공한다. 신뢰적 전송 등을 보장하는 transport 계층의 UDP, TCP와는 다르다. 데이터가 없어지거나, 늦거나, 시간 차이가 나거나(jitter가 크다.), 도착 순서가 바뀌거나...(경로가 다를 경우) 결국 아무것도 보장하지 못하는 것. 하지만 많이 쓰인다.
네트워크 레이어는 ALL-IP. 대체불가. 보장이 안되는 편이어도 심플하기 떄문에 널리 퍼졌다.
네트워크 중요 요소 '라우터'
Router 구조
-입출력 포트, 스위치 구조, 라우팅 테이블
-입력 포트 사이 스위치 구조를 통해 패킷을 전달한다.
-입력 포트->스위치 구조(라우팅 프로세서의 포워딩 테이블)->출력 포트
1.Input port 구조
(1) line termination : 전기적 신호를 데이터로 바꿔주는 물리 계층
(2) link layer : 데이터 잘 왔나 확인 (checksum, error detection)
(3) lookup : forwarding queueing 역할. 알맞은 출력 포트로 보낸다. line speed 요구
2.Switching fabrics(스위치 구조)구조
-line speed×port개수 만큼 빨라야한다.
(1) memory : 저가형 라우터. 메모리 주소에 읽기, 쓰기 가능. 메모리 대역폭에 따른 속도에 한계. 사용하진 않음
(2) bus : input port memory에서 out port memory까지 공유 버스 구조. clock speed. 버스 대역폭에 따른 속도 한계. 지금도 사용됨
(3) crossbar : interconnection 형식. parellel 병렬 processing. 실제로 가장 많이 사용. 여러 데이터 동시에 사용 가능. 길이 많으니까!
-그래도 목적지가 겹치게 되면 1개가 block. buffering이 필요함.
-패킷도 대기 상태가 발생하고, queue를 이용한다.(HOL 발생)
3.Output Port 구조
(1) datagram buffer : queueing. 스위치의 속도가 빠르기 때문에 아래 작업 대기가 생길 수 있다.
(2) link layer protocol : protocol frame으로 만들어 send
(3) line termination : 전기신호로 바꾼다.
그래서 애초에 data가 한 쪽 port로 몰리지 않게 분배한다.
->Scheduling Machanism
(1-1) FCFS :선입선출(FIFO). 버퍼의 앞에서부터 패킷을 꺼낸다. 그러나 만족해야하는 지연 시간이 패킷들의 서비스마다 다르다. 또한 패킷 drop이 일어날 수 있다. (tail, priority, random 방식이 있다.)
(1-2) priority : 어떤 서비스, 기관에 우선순위를 준다. 우선순위마다 queue가 있다. 하지만 네트워크 중립성을 해칠 우려가 있다.
(1-3)Round Robin(RR) : 특정 혜택 없이, 공평하게 돌아가면서 queueing 시킨다. traffic 상관없이! 하지만 수가 적은 클래스가 더 유리하다.
(1-3) weighted fair queueing : 앞선 두 queue를 모두 구현한다. RR하되, 우선순위를 준다. 우선순위 비율에 따라, RR도, Priority도 될 수 있다.
그림을 유심히 보자!
앞선 모든 건 IP protocol 기반이다.
router의 기반, 참고사항이 되는 IP protocol에 대해 알아보자!
네트워크 레이어의 구조
routing protocol : 네트워크 레이어의 핵심. routing protocol을 통해 forwarding table을 만든다.
forwarding table : 네트워크 레이어의 핵심 2.
IP protocol : routing protocol의 역할을 위해서, IP protocol의 정보가 꼭 필요하다. 핵심의핵심(주소 규칙, 데이터그램 형식, 패킷 처리 규칙 )
ICMP protocol : IP에 에러가 발생하면, 알려준다.(packet이 없어지거나, 등 )
IP datagram의 구조
-length : header-payload전체길이.
-fragmentation : 간편화
-time to live : IP 패킷이 node를 거치는 횟수.
-upper layer : 상위 계층의 protocol이 어떤 것인지 알려줌. 해석 방식이 달라짐.(TCP, UDP)
-header checksum : checksum. TTL 때문에 매번 바뀌는 값이 된다.->IPv6등장배경
-src, dst IP address
IP fragmentation, reassembly
-network link는 MTU를 갖고있다. max.transfer size-largest possible link - level frame
-link 종류마다 MTU가 다르다.
큰 패킷 =>작은 패킷으로 쪼개자.
-사이즈에 맞춰 쪼개서 전송하기를 framgementation ,도착해서 합치는 것을 reassembly
4000byte datagram을 1500byte로 쪼개보자.
length, ID, fragflag, offset값을 들여다보자.
-length : 4000->1500(or1040(앞선 조각의 헤더사이즈가 20byte씩 차지하기 때문에 뒤로 밀려서 포함))
-ID : 쪼개져있어도 원래 하나의 패킷이었음을 나타낸다.
-fragflag : 어디까지 fragmentation되어있는지 알린다. 마지막은 0 나머지는 1
-offset : data의 시작 위치를 알린다. 1500byte중 20 byte가 헤더로, 1480/8=185 185가 시작위치이다. 나중에 조립하는 요도로도 사용된다.
IPv4 addressing
IP address에 대하여!
-호스트, 라우터 인터페이스에게 고유의 32 비트 주소를 부여한다.
-인터페이스란 호스트/라우터와의 물리적 연결을 가능하게 하는 것
-호스트의 인터페이스 1, 라우터의 인터페이스 다수
-서브넷이 IP주소 결정
->서브넷
라우터1, 호스트 다수를 인터페이스로 연결한 네트워크이다. 서브넷 내의 호스트들은 일부의 동일한 IP주소를 할당받게 되고, 나머지 자리 숫자를 통해 각각의 호스트를 구별하게 된다.
IP주소의 구조
CIDR 방식
네트워크주소 (클래스,서브넷), 호스트 주소로 구성된다.
네트워크 주소는 같은 IP들로 묶여있다. 즉 내가 보내고자 하는 패킷이 존재하는 네트워크가 어디 있는지를 확인하기 위함이고, 호스트 주소는 네트워크 안에서 실질적인 호스트가 누구인지 확인한다.
클래스란?
네트워크 주소와 호스트 주소는 클래스 주소 체계마다 범위가 다르다.
첫번째 bit가 0이라면 class A
첫번째 bit가 1이고 두번째 bit가 0이라면 class B
첫번째 bit가 1이고 두 번쨰 bit가 1이고 세 번째 bit가 0이면 class C
A class의 경우
IP주소의 앞부분, 네트워크부분은 126개. 전체 1과 전체 0은 뺀다.(특정 상황에 쓰인다.)
다른 class도 마찬가지다.
class 나타내는 데 1bit, 네트워크 나타내는 데 7bit, 호스트 address는 24bit
A class 8/24
B class 16/16
C class 24/8
시작 주소 | 마지막 주소 | Num of Host | Num of network | ||
A class(0,1bit) | 0.0.0.0 | 127.255.255.255 | 2^24(1600만 개) | 126 | |
B class(10,2bit) | 128.0.0.0 | 191.255.255.255.255 | 2^16(65,534) | 2^14(16,000) | |
C class(110,3bit) | 192.0.0.0 | 1101.1111.255.255 | 2^8(256) | 2^21(200만) |
클래스는 비효율적이고, 클래스가 한정되어있어서 적절한 class에 할당하기 어려운 단점이 있다. 따라서 현재는 사용하지 않고 있다.
그래서 IP address 얻는 방법
DHCP(Dynamic Host Configuration Protocol)
서버에서 동적으로 주소는 얻어오는 것. host에게 자동으로 네트워크를 찾게 해 준다. 주소가 꼭 필요할 떄만(인터넷에 접속 중일때만) 그때그때 얻어오는 것. 효율성 중시. 그렇기에 IP주소가 낭비되지 않도록 lifetime도 함께 넘겨준다.
어떤 사용자가 네트워크에 접속하는 순간 DHCP서버가 자신이 갖고 있는 주소 pool 중에서 현재 사용하고 있지 않은 주소를 할당해주는 프로토콜
동작과정
1. (discover)host Broadcast : is there a DHCP server out there?
2.(offer) Broadcast : I'm a DHCP server! Here's an IP address you can use
3.(request) Broadcast: OK. I'll take that IP address!
4. (ACK) Broadcast : OK. You've got that IP address
제일 처음에는 클라이언트에 IP주소가 할당되어있지 않기 때문에 source주소는 0.0.0.0, DHCP 서버 주소는 255.255.255.255 (broadcastIP, 해당 네트워크 안의 모든 컴퓨터들로 전송. 그래도 하나에만 request 보낼 수 있다.)
서버가 사용가능한 IP주소를 말한다(broadcast) 클라이언트는 transaction ID 체크
클라이언트가 대답한다. (broadcast) 아직 사용 허락을 받지 않았기 때문에, 똑같이 0.0.0.0 sorce로 broadcasting
서버에서 ACK를 보낸다. 이제 IP주소를 사용할 수 있게 되었다. lifetime 존재. 이 시간이 지나면 다시 IP 사용 허가를 받아 와야 한다. 이 떄, DNS서버의 이름과 주소, first-hop router의 IP address를 함께 가질 수 있게 된다. 따라서 외부 전달 메세지를 라우터를 통해 전달할 수 있고, 인터넷에 접속하기 위해 데이터를 보낼 수 있게 되었다.
DHCP는 어느 계층에 딱 속해 있다고 말할 수 없이 애매하다. 전송 프로토콜로는 UDP를 사용하고 네트워크를 통해서 전송을 하게 된다. 전송된 메세지가 DHCP 서버에 도착하면 헤더가 다 깨지면서 DHCP응용층으로 넘어가게 된다.
IP주소가 어떻게 할당될까?
유일무이한 기관 ICANN에서 IP주소를 관리하는데, 14억개를 지역별로 분배한다.
->디바이스가 이미 80억개 이상이라 IP주소 고갈이 된 지 오래다.
->NAT(Network Address Trans). 적은 IP주소로 많은 컴퓨터에 연결할 수 있는 기술. 네트워크 주소를 바꿔준다.
내부의 컴퓨터끼리는 구분이 가야 하는데, 라우터 외의 컴퓨터 끼리는 구별이 안 가도 되지 않나?
안쪽에서만 서로 구별 되는 IP주소, ID를 가지면 되겠다.
내부에서는 private IP, 외부로 전송할 때는 Public IP(공통)
외부로 전송하기 전, network transalation table을 만들어 놓고 public IP와 포트 번호를 사용해서 밖으로 내보낸다. request에 대한 답을 받아올 땐, 목적지 부분의 주소를 번역해서 private IP로 전송해준다.
여러 번 보냈을 때 구분은 port부분의 ID로 한다.
-장점NAT를 사용하면 네트워크 상태, 몇 개의 컴퓨터가 연결되어있는지, 취약점이 다 숨겨지기 때문에 보안이 좋다. 그냥 IP주소가 딸랑 있을 뿐이라서
-단점 : 동시에 이용할 수 있는 컴퓨터의 수가 port 개수만큼이다. 특히 특정 app에 따로 할당된 port도 있기 떄문에 그 수는 더 적어진다.
IPv6!!
IP 주소가 부족한 문제는 계속된다. NAT나 DHCP는 드라마틱한 효과는 주지 못했다. 근본적으로 주소 개수 자체를 늘리면서 IPv6가 등장하였따.
IPv6 header의 특징
-전체 40Byte
-src, dst address 16byte
-나머지 헤더가 8byte
-주소의 길이는 길어졌고, 나머지 부분은 짧아졌다!
-no flag, no offset , no checksum, no fragmentation
-Flow level IPv6에서는 source 프로세스가 있고, 다른 원격 컴퓨터에 receiver 프로세스가 있다고 하면 이 사이에 흘러가는 이 IP데이터그램들에 같은 flow label을 부여해서 하나의 flow로 취급할 수 있게 되었다.
-외우지마 ver, priority, flow label, payload len, next hdr, hot limit
네트워크 Error Reporting
ICMP
호스트와 라우터간 네트워크 계층 정보 통신을 위한 프로토콜. 에러 리포팅과 네트워크 진단 기능
type, code, 8byte msg
-Traceroute명령어는 IP TTL 헤더를 가진 IP 데이터그램을 전송, 해당 TTL은 전송될때마다 1씩 증가한다.
도착하면
-라우터는 데이터그램을 무시하고, source에게 TTL expired ICMP를 보낸다.
N번째에 딱 닿으면 다시 처음으로 돌아갔따가 이제 N+!번쨰를 목표로 다시 전송.
ICMP 메시지가 souce에 고착하면 소스에선 RTT를 기록해 지연 정도를 측정한다.
-DST에 UPD segments가 도착하면 멈출 수 있다.
-ICMP msg에 type3, code3 port unreachable이 돌아오거나, 소스 코드를 통해 멈출 수 있다.
Tunneling
바뀌어도 IPv4와 IPv6가 호환되어야 함.
IPv6에서 IPv4로 들어가는 구간을 따로 저장해두었다가 그 부분에서 IPv4헤더를 붙여서 보내는 방식.
IPv6이지만, 일반적인 IPv4로 보이게 된다.(헤더+페이로드지만, 그냥 페이로드로 보인다.)
터널이 끝나면 헤더를 떼어내고 전송한다.
SDN
지금까지 알아본 라우터의 기능들은 모두 패킷의 목적지 주소만을 기반으로 포워딩을 결정했다. 하지만 '소프트웨어 정의 네트워킹(software defined networking)'은 최근 네트워크 계층 기능과 링크 계층 기능을 통합함으로서 라우터가 더 다양한 기능을 할 수 있도록 하였다. 이는 위에서 언급한 match & action 을 통해 구현되는데, 패킷의 헤더를 분석해 어떤 부분이 일치하는지 찾고, 해당 헤더에 따른 행동을 하여 다양한 기능을 수행한다. 이 기능은 단순한 포워딩에서 패킷을 삭제하는 드롭핑, 패킷의 값을 다시 쓰는 수정, 로드 밸런싱, 특정한 호스트에서의 패킷만 수신하는 방화벽 등이 있다. 이렇게 소프트웨어 기반 네트워크는 라우터를 단순히 패킷을 포워딩하는 역할에서 벗어나 다양한 기능을 동작하는 미들 박스로써의 기능을 할 수 있게 하였다. 이같은 기능은 다음 장인 네트워크 계층의 제어 평면에서 활동하는 SDN 컨트롤러가 전반적으로 관리한다. 네트워크 관리자는 이렇게 통합된 라우터들의 단일 컨트롤러를 사용해 각각의 라우터들을 조작할 필요가 없어 관리가 한 층 더 용이해진다.
'강의내용 복습 > 컴퓨터 네트워크' 카테고리의 다른 글
컴퓨터 네트워크 7-1 wireless network(작성중) (0) | 2022.12.18 |
---|---|
컴퓨터 네트워크 6-2(작성중) (0) | 2022.12.18 |