Recent Posts
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 겨울 부산
- 달인막창
- PytestPluginManager
- JanusGateway
- JanusWebRTCServer
- 코루틴 컨텍스트
- 자원부족
- tolerated
- JanusWebRTCGateway
- 코루틴 빌더
- 티스토리챌린지
- taint
- python
- kotlin
- addhooks
- VARCHAR (1)
- 오블완
- table not found
- PersistenceContext
- preemption #
- 헥사고날아키텍처 #육각형아키텍처 #유스케이스
- pytest
- terminal
- vfr video
- JanusWebRTC
- Value too long for column
- 개성국밥
- 깡돼후
- mp4fpsmod
- Spring Batch
Archives
너와 나의 스토리
[CH.4] Network Layer - 라우터 내부 본문
반응형
Router architecture overview
라우터의 주요 2가지 기능:
- 라우팅 알고리즘/프로토콜(RIP, OSPF, BGP) 작동
- 들어오는 데이터그램을 나가는 링크로 포워딩 시킴
Input port function
검색을 통해 패킷의 출력 포트가 결정되면 패킷을 스위칭 구조로 보낼 수 있다.
match - 목적지 IP 주소를 찾음
action - 패킷을 스위칭 구조를 통해 지정된 출력 포트로 보냄
Switching fabrics
- 스위칭 구조를 통해 패킷이 입력 포트에서 출력 포트로 실제로 스위칭(즉, 전달)되므로 스위칭 구조는 라우터의 핵심이다.
- 패킷을 인풋 버퍼에서 적절한 출력 버퍼로 이송시킴
- switching rate: 패킷이 인풋에서 아웃풋으로 전송될 수 있는 속도
- switching fabrics의 3가지 타입
- CPU(라우팅 프로세서)를 직접 제어해서 스위칭하는 전통적인 방식이다
- 입/출력 포트는 전통적인 I/O 장치처럼 작동함
- 패킷이 도착하면 입력 포트는 라우팅 프로세서에게 인터럽트를 보내 패킷을 프로세서 메모리에 복사한다. (패킷은 시스템 메모리에 카피됨)
- 속도는 메모리 bandwidth에 의해 제한된다. (데이터그램 당 2 bus crossings)
- 데이터그램이 입력 포트 메모리에서 (라우팅 프로세서의 개입 없이) 공유 버스를 통해 출력 포트 메모리로 이동
- 모든 출력 포트에 패킷이 수신되지만 라벨과 일치하는 포트만 패킷을 유지한다.
- 라벨은 스위치 내에서 버스를 통과하기 위해서만 사용되므로 출력 포트에서 제거된다.
- 동시에 여러 패킷이 다른 입력 포트로 라우터에 도착하면 한번에 하나의 패킷만 버스를 통과할 수 있기 때문에 하나를 제외한 모든 패킷은 대기함
- bus contention: switching speed는 bus bandwidth에 의해 제한됨
속도: 메모리 << 네트워크
- bus bandwidth의 제약을 극복
- N개의 입력 포트를 N개의 출력 포트에 연결
- 각 수직 버스는 교차점에서 각 수평 버스와 교차하며 스위치 구조 컨트롤러에 의해 언제든지 열거나 닫을 수 있다.
- 여러 패킷을 병렬로 전달 가능
- 두 개의 서로 다른 입력 포트에서 나오는 두 개의 패킷이 동일한 출력 포트로 보내지는 경우 -> 한번에 하나의 패킷만 특정 버스에서 전송될 수 있으므로 나머지 하나는 입력포트에서 기다려야 한다.
Output ports
- 전송 속도보다 데이터그램 도착 속도가 더 빠르다면 버퍼링이 필요하다
- scheduling discipline은 전송되길 기다리는 (queued)데이타그램 사이에서 고른다
Output port queueing
- 버퍼가 커지면 라우터의 메모리가 소모될 수 있음
- 패킷을 저장할 수 있는 메모리가 없을 때 패킷 손실 발생
얼마나 많은 버퍼가 필요할까?
- 버퍼링: B, 평균 왕복 시간: RTT(250msec), C: 링크 용량
- B = RTT*C -> 상대적으로 작은 양의 TCP 흐름에 대한 큐잉 분석
- 많은 수의 TCP 흐름(n)이 링크를 통과할 때, 필요한 버퍼링은 $\frac{RTT*C}{\sqrt{N}}$이다
Input port queuing
- 입력 회선을 통해 도착하는 모든 패킷을 전송하기에 스위치 구조가 충분히 빠르지 않다면 -> queuing
- Head-of-the-Line(HOL) blocking:
- 입력 포트에 있는 서로 다른 2개의 패킷이 같은 출력 포트(빨간색)을 향해 간다. 이 중 한 패킷은 차단되고 입력 큐에서 기다려야 한다 => HOL blocking
출처: [Computer networking: A top-down approach, 6th]
반응형
'Computer Networks > 이론' 카테고리의 다른 글
Comments