라우터는 네트워크 코어를 구성한다. 라우터에 대해 자세히 알아보고 네트워크 계층 프로토콜인 IP에 대해서도 알아보자.
라우터 아키텍처
- 라우터는 Control Plane과 Data Plane으로 구성된다.
- Control Plane
- 라우터의 두뇌 부분에 해당한다.
- Control Plane의 프로세서가 라우팅 알고리즘을 실행하고 포워딩 테이블을 업데이트한다.
- 포워딩 테이블 : Input으로 들어온 패킷을 어떤 Output Port로 보낼지 적혀있는 테이블이다.
- 소프트웨어적이다.
- Data Plane
- 빠른 속도를 위해 하드웨어적으로 구현되어 있다.
- 데이터 전송을 담당한다.
- Input Port, Switching Fabric, Output Port로 구성되어 있다.
- Control Plane
Input Port
- 하위계층 레이어인 Physical Layer ( Line Termination)과 Link Layer도 포함되어 있다.
- 각각은 비트 신호를 프레임으로 생성하고, 한 링크를 잘 건너왔는지 분석한다.
- Look Up, Forwading, Queueing
- Datagram의 헤더 필드의 목적지와 Input port 메모리의 포워딩 테이블(이건 Control Plane이 업데이트한다.)을 봐서 어디로 갈지 (Output Link)를 결정하고 버퍼에 넣는다. (Queueing).
- 왜 버퍼에 넣을까?
- Switching Fabric에 들어가기를 기다린다.
- 여담으로 네트워크 얘기를 하다 보면 자꾸 버퍼가 나온다. 여러 시스템이 연결된 아키텍처에서는 시스템 간 파이프라이닝을 위해 버퍼가 필요하다는 것을 알 수 있다.
- Input 포트에서 하는 일을 요약하자면
- 링크를 건너온 데이터그램을 받아서 포워딩 테이블을 봐서 어디로 갈지 결정하고 대기시킨다.
Switching Fabric
- Switch 한다는 건 무엇일까?
- 맨 처음에 ISP 얘기를 할 때 모두가 모두에 대해 연결한다면 매우 비효율적이라고 했다.
- 네트워크들 사이에 ISP ( 라우터라고 생각하자)를 둠으로써 각 호스트들은 ISP에만 연결하면 다른 호스트들과 연결할 수 있었다.
- 여기서 ISP가 스위칭한다고 한다.
- Switching Fabric이란?
- 여러 개의 Input Port와 Output Port들을 스위칭하는 패브릭이다.
- 패브릭은 비유적인 표현이고 그냥 복잡한 회로 뭉태기라고 생각하자.
- Head of Line Blocking
- 스위칭 패브릭에 Input Port들에서 데이터가 들어오는 속도가 스위칭하는 속도보다 느리면 Input Port의 큐에 쌓인다.
- 한 Output Port에는 동시에 하나의 데이터그램만 지날 수 있으므로 같은 Output Port로 나가려 하는 두 Datagram이 동시에 Switching Fabric에 들어오는 경우 Output Port Contention이 생긴다. 이 경우 Contetion으로 인해 기다리는 데이터그램 뒤에 Contention이 없는 데이터그램은 Contetion이 없는데도 기다리게 된다.
- Switching Fabric의 종류
- Memory : CPU의 컨트롤을 직접적으로 받고 시스템 버스를 두 번 타야 하므로 느리다. 초기에 사용되었음
- Bus : Single Bus는 Bus Contention이 쉽게 발생한다.
- Interconnection : 여러 개의 버스를 교차해서 Bandwidth를 극복한다.
- 하드웨어의 처리속도를 높이기 위해 데이터그램을 Fixed Lengh Cell로 분할해서 속도를 높일 수 있다.
Output Port
- 마찬가지로 Link에 실어 보내기 위해 버퍼가 필요하다.
- 어느 것을 먼저 내보낼지 큐 스케줄링이 필요하다.
- 인터넷은 FCFS를 사용하나 다른 네트워크에선 우선순위 등을 사용할 수도 있음
라우터의 버퍼의 크기는 어떻게 해야 할까?
- 버퍼의 크기는 네트워크 패킷 흐름의 유동성에 비례해야 한다.
- 따라서 RTT * LinkCapacity를 생각할 수 있겠다.
- 통계적으로 Smooth 해질 수 있기 때문에 (CLT를 생각하자!) root(호스트의 수)로 나눠도 된다.
IP : Internet Protocol
- 말 그대로 인터넷 상에서 통신을 위한 프로토콜이다.
- 네트워크 레이어에는 세 가지 프로토콜이 있다.
- 라우팅 프로토콜 : RIP, OSPF, BGP
- 경로 계산 데이터를 주고받는다
- 즉 Control Plane과 관련이 있다.
- 나중에 하나씩 살펴보자!
- ICMP : Internet Control Message Protocol의 약자이다.
- 에러 리포팅, 컨트롤 메시지 교환 등을 한다.
- IP : Internet Protocol
- 주소, 데이터그램 형식, 패킷 핸들링을 담당한다.
- Data Plane과 관련이 있다.
- 라우팅 프로토콜 : RIP, OSPF, BGP
IP 헤더
- 프로토콜을 살펴볼 때 헤더를 보면 그 프로토콜이 무슨 기능을 하는지 알 수 있다.
- 하나씩 살펴보자
- TCP와 마찬가지로 20바이트 + a로 구성된다.
- ver : IPv4인지 v6인지 아이피 버전을 나타낸다.
- head len : 헤더의 길이를 4바이트 단위로 나타낸다.
- type of service : IP 패킷의 우선순위를 정한다.
- length : 헤더 + 데이터의 길이를 나타낸다.
- 16 bit id : 패킷의 ID로, 패킷이 분할되었을 때 재조립을 위해 사용된다.
- flgs : 패킷이 단편화되었는지 / 단편의 마지막인지 나타낸다.
- 세 비트로 구성
- 첫 번째비트는 0
- 두 번째비트는 단편화 유무에따라 1/0
- 세 번째 비트는 더 있는지 유무에 따라 1/0
- 단편화되어있고 자신이 마지막이면 010이다.
- fragment offset : 패킷 조립 시에 offset에 8을 곱한 값이 시작 위치가 된다.(300인 경우 2400부터)
- Time to live
- 처음에는 임의로 정해진 TTL값으로 시작해서(윈도우 : 128, 리눅스 : 64) 한 홉 당 1씩 감소한다.
- 0이 되면 패킷은 버려지고 ICMP로 송신자에게 알린다.
- 네트워크를 떠도는 패킷이 없도록 한다.
- Upper Layer : 상위 계층이 TCP인지 UDP인지 ICMP인지 알려준다.
IP 단편화와 재조립 ( Fragmentation, Reassembly )
- MTU : Maximum Transmission Unit
- 링크를 지날 수 있는 Frame의 최대 크기이다.
- 인터넷은 다양한 링크들로 구성되어 있으므로 각자 다른 MTU를 가진다.
- IP 패킷이 링크를 지날 때 그 링크의 MTU보다 크면 독립적인 Datagram으로 분할된다.
- 네트워크 코어의 복잡성을 줄이기 위해서 단편화가 일어나는 것은 어쩔 수 없지만 재조립은 최종 목적지에서 하게 된다.
- 4000 바이트 길이의 데이터그램이 1500 MTU의 링크를 지나면서 3개로 분할되는 과정을 살펴보자.
Length | ID | Fragemetation Flag | Offset |
4000 | x | 000 | 0 |
1500 | x | 011 | 0 |
1500 | x | 011 | 185 |
1040 | x | 010 | 370 |
- 4000 byte 길이의 데이터그램은 헤더 20 byte + 데이터 3980 바이트이다.
- 첫번째 단편화된 데이터그램은 0~1480바이트의 데이터를 나타낸다.
- 두번째 단편화된 데이터그램은 1480~2960바이트의 데이터를 나타내므로 offset은 1480 / 8 = 185
- 세번째 단편화된 데이터그램은 2960~3980바이트의 데이터를 나타내므로 offset은 2960 / 8 = 370
IP Addressing
- IP란?
- IP는 네트워크 인터페이스의 주소이다.
- IP는 서브넷 주소 + 호스트의 주소로 이루어져 있다.
- Subnet (서브넷) 이란?
- 라우터의 개입 없이 통신할 수 있는 네트워크이다.
- CIDR : Classless Inter Domain Routing
- 클래스에 따라 Subnet Portion이 정해진다. Subnet Portion이 작으면 더 많은 호스트를 수용할 수 있으므로
- 대형 기관에 적합하다.
- IP주소에 클래스를 별로 호스트 수를 정하면 낭비가 IP 주소 낭비가 심하다.
- 클래스 없이 Subnet Portion을 가변적으로 정하자.
더보기
본 게시물은 kocw 이화여자대학교 이미정 교수님의 컴퓨터 네트워크 강의를 듣고 정리한 글임을 밝힙니다.
내용상 틀린 부분이 있을 수도 있으며 이에 대한 책임을 지지 않습니다.
틀린 부분이나 오타 지적은 댓글로 남겨주세요.
'컴퓨터 네트워크' 카테고리의 다른 글
네트워크 16강 - ICMP 와 IPv6 (0) | 2020.08.12 |
---|---|
네트워크 15강 - IP 주소 할당 (0) | 2020.08.11 |
네트워크 13강 - Network Layer의 소개 (0) | 2020.08.10 |
네트워크 12강 - TCP part.3 (0) | 2020.08.10 |
네트워크 11강 - TCP part.2 (0) | 2020.08.10 |