Network-layer functions

  1. 포워딩(Forwarding)
    • 기능: 라우터의 입력에서 적절한 라우터 출력으로 패킷을 이동
    • data plane
    • 설명: 포워딩은 라우터의 들어오는 링크에서 나가는 링크로 패킷을 보내는 과정이다. 이는 포워딩 테이블을 기반으로 하여 실제 데이터가 네트워크를 통해 이동하는 것을 처리한다.
  1. 라우팅(routing)
    • 기능: 패킷이 출발지에서 목적지까지 가는 경로를 결정한다.
    • control plane
    • 설명: 라우팅은 패킷이 목적지에 도달하기 위해 취해야 할 경로를 결정하는 작업이다. 이는 라우팅 알고리즘과 프로토콜을 사용하여 패킷이 효율적이고 정확하게 네트워크를 통해 전달되도록 한다.

network control plane을 구성하는 두 가지 접근 방식

  1. 라우터별 제어(전통적 방식)
  2. 논리적으로 중앙집중화된 제어(소프트웨어 정의 네트워킹, SDN)

Per-router control plane

  1. Individual routing algorithm(개별 라우팅 알고리즘)
    • 각 라우터마다 개별적으로 라우팅 알고리즘이 존재하고, 이들이 control plane 에서 상호작용한다.
    • 각 라우터마다 독립적으로 라우팅 테이블을 관리하고 업데이트한다.

Software-Defined Networking (SDN) control plane

  1. 원격 컨트롤러(Remote Controller)
    • 중앙집중화된 컨트롤러가 모든 라우터의 포워딩 테이블을 계산하고 설치한다

  1. 구성요소
    • Remote Controller: 네트워크 중앙에서 모든 라우터의 forwarding table을 관리한다.
    • CA(Controller Agent): 라우터에 설치된 agent로, 컨트롤러와 통신하여 forwarding table를 받는다.
    • local forwarding table: 컨트롤러가 제공한 정보를 기반으로 라우터에서 패킷을 포워딩하는 데 사용된다.

Routing Protocols

  • Routing Protocol goal:
    • 목표: 보내는 호스트에서 받는 호스트까지 네트워크의 라우터를 통해 'good' path를 결정하는 것
    • 경로: 초기 source 호스트에서 최종 목적지 호스트까지 패킷이 거치는 라우터의 시퀀스
    • 좋은 경로: 비용이 적거나. 가장 빠르거나. 가장 혼잡하지 않은 경로
    • 라우팅: 상위 10개 네트워크 챌린지 중 하나로 언급됨

Graph abstraction: link costs

Routing Algorithm classification

  1. How fast do routes change?(경로가 얼마나 빨리 변경되는가?)
    • Static(정적): 경로가 시간이 지나면서 천천히 변경된다.
    • Dynamic(동적): 경로가 더 빨리 변경되며, 주기적인 업데이트나 링크 비용 변화에 반응하여 변경된다.
  2. Global or decentralized information?(전역 또는 분산된 정보?)
    • Global(전역): 모든 라우터가 완전한 토폴로지와 링크 비용 정보를 가지고 있다.
    • Decentralized(분산): 정보 교환과 계산 과정이 반복적으로 이루어지며. 라우터는 처음에 연결된 이웃 라우터에 대한 링크 비용만 알고 있다.
      • "distance vercotr algorithm": 라우터는 이웃 라우터와의 정보 교환을 통해 경로를 점진적으로 계산한다. 처음에는 이웃 라우터에 대한 링크 비용만 알고있으며, 반복적인 정보 교환을 통해 전체 경로 정보를 얻게 된다.

Dijkstra's link-state routing algorithm

  1. centralized(중앙화된)
    • 네트워크 토폴로지와 링크 비용이 모든 노드에 알려져 있다.
    • "링크 상태 브로드 캐스트"를 통해 달성된다.
    • 모든 노드는 동일한 정보를 가진다.
  2. Least Cost Paths
    • 한 노드(출발지)에서 다른 모든 노드로의 최소 비용 경로를 계산한다.
    • 이 과정에서 포워딩 테이블이 생성된다.
  3. Iterative(반복적인)
    • k번의 반복 후. k개의 목적지에 대한 최소 비용 경로를 알게 된다.
  4. Notation(표기법)
    • cx,y: 노드 x에서 y로의 직접 링크 비용. 직접 연결된 이웃이 아닐 경우 무한대로 설정된다.
    • D(v): 출발지에서 목적지 v까지의 최소 비용 경로의 현재 추정치
    • p(v): 출발지에서 v까지의 경로에서의 이전 노드
    • N' : 최소 비용 경로가 확정적으로 알려진 노드의 집합

  • Least-Cost-Path Tree: 이전 노드를 추적하여 최소 비용 경로 트리를 구성한다.
  • Ties: 동일한 비용의 경로가 있을 수 있으며, 이는 임의로 선택될 수 있다.

Dijkstra's algorithm:discussion

  1. algorithm complexity
    • 다익스트라 알고리즘은 각 반복에서 모든 노드를 검사해야 하므로 기본적으론 O(n2)의 시간 복잡도를 가진다.
    • 더 효율적인 구현을 통해 O(nlogn)의 시간 복잡도를 달성할 수 있다.
  2. message complexity
    • 각 라우터는 링크 상태 정보를 다른 모든 라우터에 브로드캐스트해야한다.
    • 효율적인 브로트캐스트 알고리즘을 사용하면 메시지 복잡도는 O(n2)가 된다.

Dijkstra's algorithm: oscillations possible

  1. 링크 비용과 트래픽 볼륨
    • 링크 비용이 트래픽 볼륨에 의존할 때, route oscillations이 발생할 수 있다.
  2. 샘플 시나리오
    • 목적지 a로의 라우팅에서, 트래픽이 노드 d,c,e에서 각각 1,e(1보다 작음), 1의 비율로 돌아온다.
    • 링크 비용은 방향성이 있으며, 트래픽 볼륨에 따라 달라진다.

Distance vector algorithm

  • Bellman-Ford(BF) 방정식을 기반으로 한 거리 벡터 알고리즘(Distance Vector Algorithm)에 대해 설명하고 있다.
  • Dynamic 프로그래밍을 이용하여 최소 비용 경로를 계산한다.

  • Dx(y): 노드 x에서 노드 y까지의 최소 비용 경로의 비용
  • cx,y: 노드 x에서 이웃 노드 v로의 직접 링크 비용
  • Dy(y): 노드 v에서 노드 y까지의 최소 비용 경로의 추정 비용

Bellman-Ford Example

Dx(y) : x에서 y까지의 최소 비용 경로의 비용
cx,v: 노드 x에서 이웃 노드 v까지의 직접적인 링크 비용
Dx(y): 노드 v에서 y까지의 추정된 최소 비용 경로의 비용

방정식: Dx(y) = minv{cx,v + Dv(y)}

방정식 해석

  1. min: 방정식에서 x의 모든 이웃 v를 대상으로 최소값을 계산한다.
  2. cx,v: 노드 x에서 이웃 노드 v까지의 직접적인 링크 비용
  3. Dv(y): 이웃 노드 v에서 목적지 y까지의 추정된 최소 비용 경로

Distance Vector Algorithm

주요 개념

  1. 거리 벡터의 전송
    • 일정 시간마다 각 노드는 자신의 거리 벡터(각 목적지까지의 추정 최소 비용)를 이웃노드들에게 전송한다.
    • 거리 벡터는 노드가 알고 있는 모든 목적지에 대한 현재 최적 경로 비용을 포함한다.
  2. 거리 벡터의 수신 및 업데이트
    • 노드 x는 이웃으로부터 새로운 거리 벡터를 수신할 때마다, Bellman-Ford 방정식을 사용하여 자신의 거리 벡터를 업데이트한다.
    • Dx(y) <- minv{cx,v + Dv(y)}
  3. 수렴성
    • 자연스러운 조건하에서는, 각 노드 x에서 목적지 y까지의 추정된 최소 비용 경로 Dx(y)는 실제 최소 비용 경로 dx(y)로 수렴하게 된다,

Distnace Vector Algorithm

각 노드의 작업 과정

  1. 기다림(Wait for)
    • 각 노드는 지역 링크 비용의 변화 또는 이웃 노드들로부터 메시지 수신을 기다린다.
  2. 재계산(recompute)
    • 이웃으로부터 받은 거리 벡터(DV) 정보를 사용하여 자신의 거리 벡터를 재계산한다.
  3. 알림(notify)
    • 만약 어떤 목적지에 대한 거리 벡터가 변경되었으면, 그 변경 사항을 이웃 노드들에게 알린다.

특성

  1. 반복적이고 비동기적(iterative, asynchronous)
    • 각 지역 반복은 다음의 원인으로 발생한다.
      • 지역 링크 비용의 변화
      • 이웃으로부터 받은 거리 업데이트 메시지
  2. 분산적이고 자기 정지(distributed, self-stopping)
    • 각 노드는 자신의 거리 벡터가 변경되었을 때만 이웃 노드들에게 알린다.
    • 이웃 노드들도 필요할 때만 그들의 이웃 노드들에게 알린다.
    • 알림을 받지 않으면 아무런 행동을 하지 않는다.

Distance Vector:Example

  1. 초기 설정
    • 모든 노드는 자신과 직접 연결된 이웃 노드들에 대한 거리 벡터를 초기화한다.
    • 직접 연결되지 않은 노드들에 대한 경로 비용은 무한대로 설정된다.
  2. 정보 교환 및 업데이트
    • 일정 시간마다 또는 이웃 노드들로부터 거리 벡터를 업데이트를 받을 때마다, 각 노드는 자신의 거리 벡터를 갱신하고 이를 이웃 노드들에게 전송한다.
    • Bellman-Ford 방정식을 사용하여 각 노드는 이웃 노드들로부터 받은 정보를 바탕으로 최적 경로를 다시 계산한다.
  3. 수렴
    • 이 과정을 반복하면, 네트워크 내의 모든 노드는 모든 목적지까지의 최적 경로를 찾게 된다.
    • 최종적으로 모든 노드는 목적지까지의 최소 비용 경로 정보를 갖게 된다.

Distance Vector: Link Cost Changes

link cost changes

  • node는 local link cost의 변화를 감지한다.
  • 변화가 감지되면 routing info를 업데이트하고, local DV를 재계산한다.
  • DV가 바뀌면, 이웃들에게 알린다.
  • good nnew travels fast
    • t0: y가 link-cost 의 변화를 감지한다. 그리고 DV를 업데이트하고 이웃들에게 알린다.
    • t1: z는 y로부터 업데이트를 받는다. 그리고는 z의 테이블을 업데이트하고, x에 대한 최소 비용을 계산하고 DV를 이웃들에게 전달한다.
    • t2: y는 z의 업데이트를 받고, distance table을 업데이트한다. y의 최소비용은 바뀌지 않는다. 그렇기에 이를 z에게 메시지를 보내지 않는다.

  • bad news travels slow
    • y는 x로의 cost가 60인 것을 바로 알 수 있다. 허나 z는 x로의 cost가 5 인것으로 알고 있다. 그래서 y는 "노드 x로 가는 나의 새로운 비용은 6이 될 것이다. (노드 z를 경유해서)라고 계산하고, 노드 z에게 새로운 비용 6을 알린다.
    • 노드 z는 노드 y를 통해서 노드 x로 가는 경로의 새로운 비용이 6임을 알게 되어, "노드 x로 가는 나의 새로운 비용은 7이 될 것이다. (노드 y를 경유해서)라고 계산하고, 노드 y에게 새로운 비용 7을 알린다.
    • 노드 y는 노드 z를 통해 노드 x로 가는 경로의 새로운 비용이 7임을 알게 되어 "노드 x로 가는 나의 새로운 비용은 8이 될 것 이다.(노드 z를 경유해서)라고 계산하고, 노드 z에게 새로운 비용 8을 알린다.
    • 이러한 과정이 반복되면서 비용이 계속 증가한다.
      • 노드 z는 비용이 8이 되고, 노드 y에게 9를 알림
      • 노드 y는 비용이 9가 되고, 노드 z에게 10을 알림
      • 계속된다...

Comparison of LS and DV algorithms

message complexity

  • LS(Link State)
    • n개의 라우터가 있을 때 O(n^2) 메시지가 전송된다.
  • DV(Distance Vector)
    • 이웃 간의 교환만 필요하다
    • 수렴 시간은 상황에 따라 다르다.

수렴 속도(speed of Convergence)

  • LS(Link State)
    • O(n^2) 알고리즘이며 O(N^2) 메시지가 필요하다.
    • 경로의 진동(oscillations)이 발생할 수 있다.
  • DV(Distance Vector)
    • 수렴 시간은 상황에 따라 다르다.
    • 라우팅 루프가 발생할 수 있으며 무한 루프 문제(count-to-infinity problem)가 존재한다.

견고성(Robustness)

  • 라우터가 오작동하거나 손상되었을 때 어떻게 되는지에 대한 비교
  • LS(Link State)
    • 라우터가 잘못된 링크 비용을 광고할 수 있다.
    • 각 라우터는 오직 자신의 테이블만 계산한다.
  • DV(Distance Vector)
    • DV 라우터는 잘못된 경로 비용을 광고할 수 있다.("나는 모든 곳으로 정말 낮은 비용의 경로를 가지고 있다.): black-holing 문제
    • 각 라우터의 테이블이 다른 라우터들에 의해 사용되기에 오류가 네트워크를 통해 전파될 수 있다.






Making Routing Scalable

현재까지의 라우티 연구 - 이상적(Idealized)

  • 모든 라우터가 동일하다고 가정
  • 네트워크가 "평평하다(flat)"고 가정
  • 실제로는 그렇지 않음



확장성 문제(Scale: Billions of Destination)

  • 모든 목적지를 라우팅 테이블에 저장할 수 없음:
    • 라우티 테이블에 모든 목적지를 저장하는 것은 불가능
  • 라우팅 테이블 교환이 링크를 압도할 것
    • 모든 라우터가 모든 목적지에 대한 정보를 교환하면 네트워크 링크가 과부하될 수 있다.



관리적 자율성(Administrative Autonomy)

  • 인터넷: 네트워크의 네트워크
    • 인터넷은 여러 네트워크로 구성된 네트워크이다.
  • 각 네트워크 관리자는 자신의 네트워크에서 라우팅을 제어하고자 할 수 있음
    • 각 네트워크 관리자는 자신이 관리하는 네트워크 내에서 라우팅을 제어하고 싶어할 수 있다.






Internet approach to scalable routing

  • 인터넷은 확장 가능한 라우팅을 위해 라우터들을 "자율 시스템(Autonomous Systems, AS)" 또는 "도메인"으로 알려진 영역으로 집계합니다.



Intra-AS (Intra-Domain) 라우팅

  • 동일한 AS 내에서의 라우팅
    • 네트워크 내에서 라우팅을 의미한다.
    • AS 내부의 모든 라우터는 동일한 인트라-도메인 프로토콜을 실행해야 한다.
    • 다른 AS에 있는 라우터들은 서로 다른 인트라-도메인 라우팅 프로토콜을 실행할 수 있다.
    • 게이트웨이 라우터(Gateway Router)
      • 자신의 AS의 "가장자리"에 위치하며, 다른 AS에 있는 라우터와 연결된 링크를 가진다.



Inter-AS(Inter-Domain)

  • AS 간 라우팅:
    • 여러 AS 간의 라우팅을 의미한다.
    • 게이트웨이 라우터는 인트라-도메인 라우팅뿐만 아니라 인터-도메인 라우팅도 수행한다.






Internonnected ASes



포워딩 테이블(Forwarding Table)

  • 포워딩 테이블의 구성
    • 포워딩 테이블은 Intra-AS routing 및 Inter-AS routing 알고리즘에 의해 구성된다.
    • 인트라-AS 라우팅 (Intra-AS Routing)
      • AS 내부의 목적지에 대한 항목을 결정합니다.
    • 인터-AS 라우팅 (Inter-AS Routing)
      • 외부 목적지에 대한 항목을 결정하는 데 인트라-AS 라우팅과 함께 사용됩니다.



라우팅의 예

  • AS1, AS2, AS3 간의 라우팅:
    • 그림에서 AS1, AS2, AS3이 서로 연결된 모습입니다.
    • 각 AS는 내부 라우팅(Intra-AS Routing)을 통해 자체 네트워크 내부의 데이터를 처리하고, 외부 라우팅(Inter-AS Routing)을 통해 다른 AS와의 데이터를 처리합니다.

 






Inter-AS routing: a role in intradomain forwarding

  • AS1 내부의 라우터가 AS1 외부로 향하는 데이터그램을 수신한다.
    • 이 라우터는 AS1 내의 게이트웨이 라우터로 패킷을 전달해야 한다. 그러나 어느 게이트웨이 라우터로 보내야 할까?



  • AS1 inter-domain routing의 역할
    1. 목적지 학습
      • AS1 인터-도메인 라우팅은 AS2와 AS3를 통해 도달 가능한 목적지를 학습해야 합니다.
    2. 접근성 정보 전파
      • 이 접근성 정보를 AS1 내의 모든 라우터에게 전파해야 합니다.






Inter-AS routing: routing within an AS

AS(Autonomous Systems) 내에서 사용되는 일반적인 라우팅 프로토콜에 대해 설명한다.

  1. RIP(Routing Information Protocol)
    • 고전적인 DV 기반 프로토콜
    • 거리 벡터는 30초마다 교환된다.
    • 더 이상 사용되지 않음

 

  1. EIGRP(Enhanced Interior Gateway Routing Protocol):
    • DV 기반 프로토콜
    • Cisco 장비에서 주로 사용된다.

 

  1. OSPF (Open Shortest Path First)
    • 링크 상태 라우팅 프로토콜
    • 각 라우터는 전체 네트워크 토폴로지를 알고 있으며, 다익스트라 알고리즘을 사용하여 최단 경로를 계산
    • 다양한 링크 비용 메트릭을 지원(대역폭, 지연)
    • 보안: 모든 OSPF 메시지는 인증되어 악의적인 침입을 방지
    • IS-IS 프로토콜은 ISO 표준이며, OSPF와 본질적으로 동일






OSPF(Open Shortest Path First) routing

주요 특징

  1. 공개 표준("Open")
    • OSPF는 공개적으로 사용할 수 있는 프로토콜



  1. 클래식 링크 상태 라우팅(classic link-state)
    • 링크 상태 광고(Link-State Advertisements)
      • 각 라우터는 OSPF 링크 상태 광고를 전체 자율 시스템(AS)의 다른 모든 라우터에게 전송
      • 이는 TCP/UDP를 사용하지 않고 직접 IP를 통해 이루어진다.
    • 다양한 링크 비용 매트릭 지원
      • OSPF는 대역폭, 지연 시간 등 다양한 링크 비용 메트릭을 지원한다.
    • 전체 토폴로지 인식
      • 각 라우터는 네트워크의 전체 토폴로지를 알고 있으며, 다익스트라 알고리즘을 사용하여 포워딩 테이블을 계산한다.



  1. 보안(Security)
    • 모든 OSPF 메시지는 인증되어 악의적인 침입을 방지한다.






Hierarchical OSPF



  • 두 계층 구조(Two-Level Hierarchy)
    • 로컬 영역(Local Area)
    • 백본(Backbone)

 

  • 링크 상태 광고(Link-State Advertisements)
    • 링크 상태 광고는 해당 영역 내에서만 또는 백본 내에서만 플러딩(전송)된다.

 

  • 노드의 토폴로지 인식
    • 각 노드는 해당 영역의 상세한 토폴로지를 알고 있으며, 다른 목적지로 가는 방향만을 알고 있다.



구성 요소

  1. 로컬 라우터(Local Routers)
    • LS 플러딩: 링크 상태 광고는 해당 영역 내에서만 플러딩된다.
    • 라우팅 계산: 영역 내에서의 라우팅을 계산
    • 패킷 포워딩: 영역 외부로 가는 패킷은 영역 경계 라우터를 통해 포워딩된다.



  1. 영역 경계 라우터(Area Border Routers)
    • 자신의 영역 내 목적지로의 거리를 요약하여 백본에 광고한다.



  1. 백본 라우터(Backbone Routers)
    • 백본 내에서 OSPF를 실행
    • 백본은 전체 네트워크의 중심 역할을 한다.



  1. 경계 라우터(Boundary Routers)
    • 다른 AS와 연결된다.






routing among ISPs: BGP



Internet inter-AS routing: BGP(Border Gateway Protocol)

  • BGP 개요
    • BGP(Border Gateway Protocol): 사실상의 inter-domain 라우팅 프로토콜이다.
      • "인터넷을 하나로 묶는 접착제"라고 불린다.



  • BGP의 역할
    • 서브넷이 자신의 존재와 도달할 수 있는 목적지를 인터넷의 다룬 부분에 광고할 수 있도록 한다.
      • "나는 여기 있고, 내가 도달할 수 있는 곳과 그 방법은 이것이다."



  • BGP가 각 AS에 제공하는 기능
    1. eBGP(External BGP)
      • 이웃 AS로부터 서브넷 도달 가능 정보를 얻는다.
    2. iBGP(Internet BGP)
      • 도달 가능 정보를 모든 AS 내부 라우터에게 전파
    3. 경로 결정
      • 도달 가능 정보와 정책에 기반하여 다른 네트워크로의 "좋은" 경로를 결정






eBGP, iBGP connections






BGP basics

 

BGP Session

  • 두 개의 BGP 라우터("peer")가 반영구적인 TCP 연결을 통해 BGP 메시지를 교환한다.
    • 서로 다른 목적지 네트워크 프리픽스(destination network prefixes)로 가는 경로를 광고한다.
    • BGP는 "경로 벡터(path vector)" 프로토콜이다.
  • 예: AS3 게이트웨이 3a가 AS2 게이트웨이 2c에게 path AS3, X를 광고할 때, AS3는 AS2에게 X로 가는 데이터그램을 전달할 것을 약속한다.








Path attributes and BGP routes



  • BGP advertised route: prefix + attributes
    • prefix: 광고되는 목적지를 나타낸다.
    • 중요한 두 가지 속성
      1. AS-PATH: 접두사 광고가 통과한 자율 시스템(AS)의 목록
      2. NEXT-HOP: 다음 홉 AS로 가는 특정 내부 AS 라우터를 나타낸다.



  • policy-based routing
    • 경로 광고를 수신하는 게이트웨이는 수입 정책(import policy)을 사용하여 경로를 수락하거나 거부한다.
      • e.g. AS Y를 통해 절대 라우팅하지 않도록 설정
    • AS 정책은 또한 다른 인접 AS에 경로를 광고할지 여부를 결정






BGP path advertisement

  1. AS2 라우터 2c가 경로 광고를 수신
    • AS2의 라우터 2c는 AS3의 라우터 3a로부터 AS3, X 경로 광고를 eBGP를 통해 수신한다.
    • 이 광고는 AS3가 목적지 X로 가는 경로를 가지고 있음을 나타낸다.

 

  1. AS2 정책에 따라 경로 수락 및 전파
    • AS2 정책에 따라, AS2의 라우터 2c는 AS3, X 경로를 수락하고, iBGP를 통해 이 경로를 모든 AS2 라우터에게 전파한다.
    • 이로써 AS2 내부의 모든 라우터는 AS3, X 경로를 알게된다.

 

  1. AS2 정책에 따라 경로 광고
    • AS2 정책에 따라, AS2의 라우터 2a는 eBGP를 통해, AS2, AS3, X 경로를 AS1의 라우터 1c에게 광고한다.
    • 이제 AS1도 X로 가는 경로를 알게 된다.



gateway router는 destination에 대한 multiple paths에 대해 학습할 것이다.

  • AS1의 게이트웨이 라우터 1c는 AS2의 라우터 2a로부터 AS2, AS3, X 경로를 학습한다.
  • 또한, AS1의 게이트웨이 라우터 1c는 AS3의 라우터 3a로부터 직접 AS3, X 경로를 학습한다.
  • 정책 기반 경로 선택: AS1의 정책에 따라, 게이트웨이 라우터 1c는 AS3, X 경로를 선택하고, iBGP를 통해 AS1 내의 모든 라우터에게 광고한다.






BGP messages

  • BGP(Border Gateway Protocol) 메시지는 peer 간에 TCP 연결을 통해 교환된다. 이러한 메시지는 BGP 피어 간의 경로 정보 교환과 연결 상태를 유지하는 데 사용된다.
  • BGP 메시지 유형
    1. OPEN: - 기능: 원격 BGP peer에 TCP 연결을 열고, 발신 BGP 피어를 인증한다. - 용도: BGP 세션을 초기화하고 연결을 설정한다.
    2. UPDATE: - 기능: 새로운 경로를 광고하거나 기존 경로를 철회한다. - 용도: 경로 정보를 갱신하고 BGP 피어 간에 최신 경로 정보를 전달한다.
    3. KEEPALIVE: - 기능: 업데이트가 없는 경우에도 연결을 유지한다. 또한 OPEN 요청을 확인(ACK)한다. - 용도: BGP 세션이 살아있음을 확인하고, 정기적으로 연결 상태를 점검한다.
    4. NOTIFICATION - 기능: 이전 메시지에서 발생한 오류를 보고하거나 연결을 종료하는 데 사용 - 용도: 오류 발생 시 이를 보고하고, 필요 시 연결을 종료하여 문제를 해결




BGP path advertisement



  • AS1의 라우터 1a, 1b, 1d는 iBGP를 통해 라우터 1c로부터 "목적지 X로 가는 경로는 1c를 거쳐 간다"는 정보를 학습하낟.
  • 라우팅 테이블
    • AS1의 라우터 1d는 라우팅 테이블에서 목적지 X로 가기 위해 인터페이스 1을 사용해야 함을 알게 된다.
    • 이 정보는 OSPF intra-domain 라우팅을 통해 라우터 1d에게 전달된다.




 

  • 라우팅 테이블
    • AS1의 라우터 1d
      • AS1의 라우터 1d는 라우팅 테이블에서 목적지 X로 가기 위해 인터페이스 1을 사용해야 함을 알게 된다.
      • 이 정보는 OSPF intra-domain 라우팅을 통해 라우터 1d에게 전달된다.


    • AS1의 라우터 1a
      • OSPF 인트라-도메인 라우팅을 통해 목적지 1c로 가기 위해 인터페이스 2를 사용해야한다.
      • 목적지 x로 가기 위해서는 1c를 거쳐야 하므로 인터페이스 2를 사용한다.






Why different Intra-, Inter- AS routing?

Policy

  • inter-AS:
    • 관리자는 네트워크를 통해 트래픽이 어떻게 라우팅되는지, 누가 라우팅하는지에 대한 제어를 원한다.
    • 다수의 관리자가 존재하기에 각 AS의 정책이 중요하다.
  • intra-AS
    • 단일 관리자에 의해 관리되므로 정책의 중요성이 상대적으로 적다.





Scale

  • 계층적 라우팅:
    • 계층적 라우팅은 라우팅 테이블 크기를 줄이고, 업데이트 트래픽을 감소시킨다.
    • AS 내부에서는 네트워크를 더 작은 단위로 나눌 수 있어 효율적이다.





성능(Performance)

  • Intra-AS
    • 성능에 집중할 수 있다.
    • AS 내부에서는 트래픽이 최적의 경로를 따라 이동하도록 성능 최적화가 가능하다.
  • Inter-AS
    • 정책이 성능보다 우선한다.
    • 다른 AS와의 관계, 계약 조건 등이 성능보다 중요한 역할을 한다.






BGP: achieving policy via advertisements

  • ISP는 고객 네트워크로의 트래픽만 라우팅하려고 한다.
    • 다른 ISP 간의 중계 트래픽을 전달하고 싶어하지 않는다.
    • 이는 일반적인 "실제" 정책이다.

단계별 설명

  1. 광고 경로
    • A는 경로 A, w를 B와 C에 광고한다.
      • A는 자신이 w로 가는 경로를 가지고 있음을 B와 C에 알린다.

 

  1. 정책 결정:
    • B는 경로 B, A, w를 C에 광고하지 않기로 선택한다.
      • B는 C,B,A,w 경로에 대한 "수익"을 얻지 못한다. C,A,w는 B의 고객이 아니기 때문이다.
      • 따라서 C는 C,B,A,w 경로를 알지 못하게 된다.

 

  1. 경로 선택:
    • C는 경로 C, A, w를 통해 w로 가는 경로를 선택합니다 (B를 사용하지 않음)
      • C는 A를 통해 w로 가는 경로를 알고 있으며, B를 통해 가는 경로를 사용하지 않습니다.






BGP: achieving policy via advertisements(more)



  • A,B,C: 제공자 네트워크(Provider Networks)
  • x,y,z: 제공자 네트워크의 고객(Customer Networks)
  • x: 두 네트워크에 연결된 듀얼 홈드(Dual-Homed)고객



정책(Policy)

  • ISP는 다른 ISP 간의 중계 트래픽을 전달하지 않고 고객 네트워크로의 트래픽만 라우팅하려고 한다.
  • 이는 일반적인 "실제" 정책이다.
  • x가 B에서 C로 가는 경로를 광고하지 않음
    • x는 B에서 C로 가는 트래픽을 라우팅하고 싶지 않습니다.
    • 따라서 x는 B에서 C로 가는 경로를 광고하지 않습니다.
    • 결과적으로, B는 x를 통해 C로 가는 경로를 알지 못하게 된다.






BGP route selection

  • BGP 라우터는 목적지 AS로 가는 여러 경로에 대해 학습할 수 있으며, 다음 기준을 기반으로 최적의 경로를 선택한다.
  1. 로컬 우선순위 값 속성(Local Preference Value Attribute): 정책 결정(Policy Decision)
    • 네트워크 관리자가 특정 경로에 우선순위를 부여하는 값
    • 정책 결정에 따라 우선순위가 높은 경로를 선택한다.



  1. 가장 짧은 AS-PATH(Shortest AS-PATH)
    • 경로에 포함된 AS의 수가 가장 적은 경로를 선택한다.
    • 일반적으로 가장 적은 수의 AS를 통과하는 경로가 더 빠르고 효율적이다.



  1. 가장 가까운 NEXT-HOP 라우터(Closest NEXT-HOP Router): 핫 포테이토 라우팅(Hot Potato Routing)
    • 다음 홉 라우터가 가장 가까운 경로를 선택한다.
    • 트래픽을 빠르게 외부 네트워크로 전달하는 것을 목표로 한다.



  1. 추가 기준(Additional Criteria)
    • 위의 기준으로 경로를 선택할 수 없을 때 사용되는 추가적인 기준이다.
    • 이는 다양한 네트워크 조건에 따라 다를 수 있다.






SDN(Software defined networking)

  • 인터넷 네트워크 계층의 전통적인 구현 방식
    • 분산된 라우터 기반 제어(Distributed, Per-Router Control)
      • 전통적으로 인터넷 네트워크 계층은 분산된 각 라우터에 의해 제어되었다.
      • 단일체(monolithic) 라우터
        • 스위칭 하드웨어를 포함하고, 인터넷 표준 프로토콜(IP, RIP, IS-IS, OSPF, BGP 등)의 고유 구현을 실행한다.
        • 전용 라우터 운영 체제(e.g. Cisco IOS)에서 작동한다.
      • 미들박스(Middleboxes)
        • 방화벽, 로드 밸런서, NAT 박스 등 다양한 네트워크 계층 기능을 수행하는 장치들이다.



  • 2005년경: 네트워크 제어 평면 재고에 대한 새로운 관심
    • 네트워크 제어 평면을 재고하려는 새로운 관심이 일어났다.
    • 이는 네트워크의 유연성과 효율성을 높이기 위한 노력의 일환






Pre-router control plane

 

개별 라우팅 알고리즘 구성 요소

  • 각 라우터마다 개별 라우팅 알고리즘 구성 요소가 존재한다.
  • 이 구성 요소들은 제어 평면에서 상호 작용하여 포워딩 테이블을 계산한다.



구성 요소 및 동작 방식

  • 제어 평면(Control Plane)
    • 라우팅 알고리즘이 실행되는 영역
    • 각 라우터는 제어 평면에서 라우팅 정보를 계산하고, 이를 바탕으로 포워딩 테이블을 작성한다.

 

  • 데이터 평면(Data Plane)
    • 패킷이 실제로 전달되는 영역
    • 포워딩 테이블의 값을 기반으로 패킷을 적절한 출력 포트로 전달한다.

 

  • 포워딩 테이블(Forwarding Table)
    • 도착하는 패킷 헤더의 값을 기반으로 출력 포트를 결정한다.
    • e.g. 도착 패킷의 헤더 값이 0111 일 때 출력 포트가 2번으로 설정되어 있으면, 패킷은 2번 포트로 전달된다.






Software-Defined Networking(SDN) control plane

 

SDN(Software-Defined Networking)

  • 전통적인 네트워크와 달리 SDN에서는 중앙 집중식 컨트롤러가 네트워크 제어를 담당한다.
  • 컨트롤러는 네트워크 전반의 라우팅 결정을 내리고, 각 라우터에 포워딩 테이블을 설치한다.



구성 요소 및 동작 방식

  1. 리모트 컨트롤러(Remote Controller)
    • 네트워크 전반을 제어하는 중앙 집중식 장치
    • 네트워크 상태와 요구에 따라 포워딩 테이블을 계산한다.
    • 각 라우터에 포워딩 테이블을 설치한다.


2. **포워딩 테이블 설치** - 리모트 컨트롤러가 계산한 포워딩 테이블을 각 라우터에 설치한다. - 라우터는 컨트롤러로부터 받은 포워딩 테이블을 사용하여 패킷을 전달한다.
3. **제어 평면(Control Plane) 및 데이터 평면(Data Plane)** - 제어 평면: 리모트 컨트롤러가 네트워크 전반의 라우팅 결정을 내리는 영역이다. - 데이터 평면: 라우터가 포워딩 테이블을 사용하여 패킷을 전달하는 영역이다.
4. **CA(Control Agent)** - 각 라우터에 있는 제어 에이전트로, 리모트 컨트롤러와 통신하여 포워딩 테이블을 설치받고 실행한다.




Software Defined Networking(SDN)

논리적으로 중앙 집중화된 제어 평면

  1. 쉬운 네트워크 관리
    • 라우터의 잘못된 구성 방지: 중앙에서 일관된 제어가 가능하므로, 각 라우터의 개별적인 구성 실수를 방지할 수 있다.
    • 트래픽 흐름의 유연성: 중앙 집중식 제어로 인해 트래픽 흐름을 더 유연하게 관리할 수 있다.

 

  1. 테이블 기반 포워딩(Table-Based Forwarding)
    • OpenFlow API: 테이블 기반 포워딩을 통해 라우터를 "프로그래밍"할 수 있다.
    • 중앙 집중식 프로그래밍:
      • 테이블을 중앙에서 계산하고 각 라우터에 분배하는 방식으로, 더 쉽게 관리할 수 있다.
    • 분산 프로그래밍
      • 각 라우터마다 분산된 알고리즘(프로토콜)을 구현하여 테이블을 계산하는 방식은 더 어렵고 복잡하다.

 

  1. 오픈 (비동점적) 제어 평면 구현
    • 혁신 촉진
      • 개방형 표준을 통해 다양한 혁신이 이루어질 수 있다.
      • "1000개의 꽃이 피게 하라"는 철학을 반영하여, 다양한 기술과 아이디어가 자유롭게 발전할 수 있도록 한다.






Traffic engineering: difficult with traditional routing



질문과 대답

  • Q: 네트워크 운영자가 u에서 z로 가는 트래픽이 u-v-w-z 경로를 따르기를 원한다고 가정하자. 대신 u-x-y-z 경로를 피하고자 한다.
  • A: 트래픽 라우팅 알고리즘이 경로를 재계산하도록 링크 가중치를 다시 정의해야 한다.(또는 새로운 라우팅 알고리즘이 필요할 수도 있다.)



제어의 한계

  • 전통적인 라우팅에서 링크 가중치는 트래픽 엔지니어링을 제어할 수 있는 유일한 "조절기"이다.
  • 이는 라우팅 경로를 세밀하게 제어하는 데 충분하지 않다.






Traffic engineering: difficult with traditional routing



질문과 대답

  • Q. 네트워크 운영자가 u에서 z로 가는 트래픽을 u-v-w-z와 u-x-y-z 경로로 분할하고자 한다면(로드 밸런싱) 어떻게 해야하는가?
  • A. 전통적인 라우팅 방식에서는 이를 할 수 없으며, 새로운 라우팅 알고리즘이 필요하다.






Traffic engineering: difficult with traditional routing



질문과 대답

  • Q. w가 z로 가는 파란색 트래픽과 빨간색 트래픽을 다르게 라우팅하려면 어떻게 해야할까?
  • A. 목적지 기반 포워딩과 링크 상태(LS) 및 거리 벡터(DV) 라우팅으로는 이를 할 수 없다.






Software defined networking(SDN)

 

 

  1. 일반화된 "흐름 기반" 포워딩(Generalized "Flow-Based" Forwarding)
    • e.g. OpenFlow
    • 네트워크 스위치가 흐름 단위로 트래픽을 처리한다.
    • 각 흐름에 대해 포워딩 규칙을 설정하고, 이러한 규칙은 중앙 집중식 컨트롤러에 의해 관리된다.

 

  1. 제어 평면과 데이터 평면의 분리(Control Plane and Data Plane Separation)
    • 제어 평면(Control Plane): 네트워크 트래픽의 경로를 결정하고, 포워딩 규칙을 설정하는 논리적 영역
    • 데이터 평면(Data Plane): 실제로 데이터 패킷을 전달하는 물리적 영역
    • 이 두 영역을 분리함으로써 네트워크의 유연성과 관리 효율성을 높인다.

 

  1. 데이터 평면 스위치 외부의 제어 평면 기능(Control Plane Fucntions External to Data-Plane Switches)
    • 네트워크의 제어 기능이 데이터 평면 스위치 외부에 위치한 중앙 집중식 컨트롤러에 의해 수행된다.
    • 리모트 컨트롤러(Remote Controller): 네트워크 전체의 제어 기능을 중앙에서 관리하며, 포워딩 규칙을 계산하고 배포한다.

 

  1. 프로그래밍 가능한 제어 어플리케이션(Programming Control Applications)
    • 라우팅(Routing), 접근 제어(Access Control), 로드 밸런싱(Load Balancing) 등
    • 중앙 컨트롤러에서 실행되는 다양한 제어 어플리케이션이 네트워크의 다양한 요구를 충족시킨다.
    • 네트워크 관리자가 필요에 따라 제어 어플리케이션을 프로그래밍하여 네트워크 동작을 최적화할 수 있다.






Software defined networking(SDN)

데이터 평면 스위치(Data-Plane Switches)

  1. 역할 및 특징
    • 빠르고 간단한 상용 스위치(Fast, Simple, Commodity Switches)
      • 일반적인 하드웨어에서 구현되는 데이터 평면 포워딩을 수행한다.
      • 일반화된 데이터 평면 포워딩(Generalized Data-Plane Forwarding)
        • 특정 프로토콜에 구애받지 않고 다양한 유형의 트래픽을 처리할 수 있다.
        • e.g. 섹션 4.4에서 설명된 방식



  1. 흐름 테이블(Flow Table)
    • 컨트롤러 감독 하에 계산 및 설치(Computed and Installed Under Controller Supervision)
      • 중앙 집중식 컨트롤러가 각 스위치에 설치할 흐름 테이블을 계산하고, 이를 설치한다.



  1. API 및 프로토콜
    • 테이블 기반 스위치 제어를 위한 API
      • e.g. OpenFlow
      • 제어 가능한 것과 그렇지 않은 것을 정의
    • 컨트롤러와의 통신을 위한 프로토콜
      • e.g. OpenFLow
      • 스위치와 컨트롤러 간의 통신을 위한 표준 프로토콜






Software Defined Networking(SDN)

 

 

SDN 컨트롤러(SDN Controller, Network OS)

  1. 네트워크 상태 정보 유지(Maintain Network State Information)
    • SDN 컨트롤러는 네트워크의 전체 상태 정보를 유지합니다.
    • 네트워크의 트래픽 흐름, 링크 상태, 스위치 상태 등의 정보를 중앙에서 관리한다.

 

  1. 북향 API를 통한 네트워크 제어 어플리케이션과의 상호 작용(Interacts with Network Control Applications "Above" via Northbound API)
    • 네트워크 제어 어플리케이션(Network-Control Application)
      • 라우팅, 접근 제어, 로드 밸런싱 등의 어플리케이션이 포함된다.
    • 북향 API(Northbound API)
      • SDN 컨트롤러와 네트워크 제어 어플리케이션 간의 통신을 위한 인터페이스이다.

 

  1. 남향 API를 통한 네트워크 스위치와의 상호 작용(Interacts with Network Swithches "Below" via Southbound API)
    • SDN 제어 스위치(SDN-Controlled Switches)
      • SDN 컨트롤러의 명령에 따라 작동하는 네트워크 스위치이다.
    • 남향 API
      • SDN 컨트롤러와 네트워크 스위치 간의 통신을 위한 인터페이스이다.

 

  1. 분산 시스템으로 구현(Implemented as Distributed System)
    • 성능(Performance)
      • 네트워크의 성능을 최적화하기 위해 SDN 컨트롤러는 분산 시스템으로구현된다.
    • 확장성(Scalability)
      • 네트워크 규모에 따라 쉽게 확장할 수 있도록 설계된다.
    • 장애 내성(Fault-Tolerance)
      • 네트워크 장애에 대한 내성을 갖추고 있다.
    • 견고성(Robustness)
      • 네트워크의 견고성을 유지하기 위해 분산 시스템으로 운영된다.






Software Defined Networking

 

 

네트워크 제어 어플리케이션

 

  1. Brains of Control
    • 네트워크 제어 어플리케이션은 제어 기능을 구현하는 핵심 요소이다.
    • SDN 컨트롤러가 제공하는 하위 수준의 서비스와 API를 사용하여 네트워크 제어 기능을 수행한다.
    • 이러한 어플리케이션은 라우팅, 접근 제어, 로드 밸런싱 등 다양한 제어 작업을 처리한다.



  1. 언번들된(Unbundled)
    • 네트워크 제어 어플리케이션은 라우팅 벤더나 SDN 컨트롤러와 별개로 제 3자에 의해서 제공될 수 있다.
    • 이는 네트워크 관리자가 특정 벤더에 종속되지 않고 다양한 어플리케이션을 선택하여 사용할 수 있게 한다.






Components of SDN controller

'학교수업 > 컴퓨터망' 카테고리의 다른 글

Chapter7: Wireless and Mobile Networks  (4) 2024.07.14
Chapter6: The Link Layer and LANs  (0) 2024.07.12
Chapter4: Network Layer-Data Plane  (0) 2024.07.04
Chapter3: Transport Layer-2  (0) 2024.07.04
Chapter3: Transport Layer  (0) 2024.07.03

Network Layer services and protocols

  1. 송신 호스트에서 수신 호스트로의 전송 세그먼트
    • 송신자
      • 세그먼트를 데이터그램으로 캡슐화한다.
      • 데이터그램을 링크 계층으로 전달한다.
    • 수신자
      • 세그먼트를 전송 계층 프로토콜로 전달한다.
  1. 모든 인터넷 장치(호스트, 라우터)에서의 네트워크 계층 프로토콜
    • 네트워크 계층 프로토콜은 모든 인터넷 장치(호스트와 라우터)에 존재한다.
  1. 라우터의 역할
    • 라우터는 IP 데이터그램의 헤더 필드를 검사한다.
    • 라우터는 데이터그램을 입력 포트에서 출력 포트로 이동시켜 데이터그램이 끝에서 끝으로 전송될 수 있도록 한다.

Two key network-layer functions

네트워크 계층 기능

  1. 포워딩(Forwarding)
    • 역할: 라우터의 입력 링크에서 적절한 출력 링크로 패킷을 이동시키는 과정이다.
    • 비유: 고속도로의 한 교차로를 통과하는 과정이라고 생각할 수 있다.

2. **라우팅(Routing)** - 역할: 출발지에서 목적지까지 패킷이 이동할 경로를 결정하는 과정 - 라우팅 알고리즘을 사용하여 경로를 결정 - 비유: 출발지에서 목적지까지의 여행 계획을 세우는 과정으로 생각할 수 있다.

Network layer: data plane, control plane

데이터 플레인(Data Plane)

  • 로컬, 라우터별 기능
    • 데이터 플레인은 각 라우터에서 로컬로 작동하는 기능이다.
    • 라우터의 입력 포트에서 도착한 데이터그램이 라우터의 출력 포트로 어떻게 전달될지를 결정한다.
    • 예시 그림에서는 도착한 패킷 헤더의 값을 기반으로 데이터그램이 어떻게 전달되는지를 보여준다.

컨트롤 플레인(Control Plane)

  • 네트워크 전체의 논리
    • 컨트롤 플레인은 네트워크 전체에서 작동하는 논리이다.
    • 데이터그램이 출발지 호스트에서 목적지 호스트까지 여러 라우터를 통해 어떻게 라우팅될지를 결정한다.
    • 두 가지 컨트롤 플레인 접근 방식이 있다.
      • 전통적인 라우팅 알고리즘(Tranditional Routing Algorithms): 라우터에서 구현된다.
      • 소프트웨어 정의 네트워킹(Software-Defined Networking: SDN): (원격) 서버에 구현된다.

Per-router control plane

라우터별 컨트롤 플레인

  • 각 라우터에는 독립적인 라우팅 알고리즘이 있다.
  • 이 라우팅 알고리즘은 라우터 간의 상호 작용을 통해 네트워크 전체의 데이터를 관리한다.

컨트롤 플레인과 데이터 플레인의 상호작용

  • 슬라이드의 그림은 컨트롤 플레인과 데이터 플레인의 구조를 보여준다.
  • 컨트롤 플레인: 네트워크의 상위 레벨에서 라우터 간의 경로를 결정하는 데 사용된다.
  • 데이터 플레인: 각 라우터에서 패킷이 실제로 이동하는 경로를 처리한다.

라우팅 알고리즘

  • 각 라우터에는 라우팅 알고리즘이 구현되어 있다.
  • 이 알고리즘은 도착하는 패킷의 헤더 값을 기반으로 로컬 포워딩 테이블을 참조하여 적절한 출력 포트를 결정한다.

로컬 포워딩 테이블

  • 라우터의 로컬 포워딩 테이블은 도착하는 패킷 헤더 값과 그에 대응하는 출력 포트를 나타낸다.
  • 예를 들어, 헤더 값 0100은 출력 포트 3으로 설정되어 있다.

Software-Defined Networking(SDN) control plane

SDN은 네트워크의 데이터 흐름을 중앙에서 제어할 수 있도록 하는 접근 방식이다.

  1. 원격 컨트롤러(Remote Controller)
    • 원격 컨트롤러는 라우터의 포워딩 테이블을 계산하고 설치한다.
    • 이는 네트워크의 중앙 집중식 관리와 제어를 가능하게 한다.
  1. 포워딩 테이블 설치
    • 원격 컨트롤러는 각 라우터에 포워딩 테이블을 설치한다.
    • 이는 네트워크 전체의 데이터 흐름을 효과적으로 관리할 수 있게 한다.
  1. 컨트롤 플레인과 데이터 플레인의 구분
    • 컨트롤 플레인은 라우터 간의 경로를 결정하고 관리한다.
    • 데이터 플레인은 실제로 패킷이 이동하는 경로를 처리한다.

Network Service Model

Q. 송신자에서 수신자로 데이터그램을 전송하는 "채널"에 대한 서비스 모델은 무엇인가?

개별 데이터그램을 위한 서비스 예시

  1. 보장된 전달(Guaranteed Delivery)
    • 데이터그램이 반드시 목적지에 도달할 것을 보장한다.
  2. 40밀리초 이하의 지연으로 보장된 전달(Guaranteed Delivery with Less Than 40 msec Delay)
    • 데이터그램이 40밀리초 이하의 지연으로 목적지에 도달할 것을 보장한다.

데이터그램 흐름을 위한 서비스 예시

  1. 순서대로 데이터그램 전달(in-order Datagram Delivery)

    • 데이터그램이 전송된 순서대로 도착하도록 보장한다.
  2. 흐름에 대한 최소 대역폭 보장(Guranteed Minimum Bandwidth to Flow)

    • 특정 흐름에 대한 최소한의 대역폭을 보장한다.
  3. 패킷 간 간격 변화에 대한 제한(Restrictions on Changes in INter-packet Spacing)

    • 패킷 간 간격의 변화를 제한하여 일정한 간격으로 데이터그램이 전달되도록 한다.

인터넷 Best Effort 서비스 모델

  • 인터넷의 Best Effort 서비스 모델은 데이터그램의 전달을 최선의 노력으로 수행하지만, QoS 측면에서 어떠한 보장도 제공하지 않는다.
  • Best Effort 모델에서는 다음과 같은 사항에 대해 보장이 없다
    1. 성공적인 데이터그램 전달(Successful Datagram Delivery)
    2. 전달의 타이밍 또는 순서(Timing or Order of Delivery)
    3. 종단 간 흐름에 사용 가능한 대역폭(Bandwidth Available to End-to-End Flow)

Relections on best-effort service

Best-Effort 서비스 모델이 인터넷의 널리 채택되고 왜 성공하는 가?

  1. 간단한 메커니즘(Simplicity of Mechanism)

    • Best-Effort 서비스 모델의 단순함은 인터넷이 널리 배포되고 채택될 수 있도록 했다.
    • 복잡하지 않은 구조로 인해 구현과 관리가 용이
  2. 충분한 대역폭 제공

    • 충분한 대역폭이 제공되면 실시간 어플리케이션(e.g. 통화, 비디오)의 성능이 대부분의 경우에 "충분히 좋은" 상태를 유지할 수 있다.
    • 이는 Best-Effort 모델에서도 실시간 서비스가 어느 정도 품질을 유지할 수 있음을 의미한다.
  3. 분산된 어플리케이션 계층 서비스

    • 데이터 센터와 컨텐츠 배포 네트워크(CDN)와 같은 분산된 어플리케이션 계층 서비스는 클라이언트 네트워크에 가깝게 연결되어 있다.
    • 이러한 서비스는 여러 위치에서 제공될 수 있어 사용자가 더 나은 서비스를 받을 수 있다.
  4. "Elastic" 서비스의 혼잡제어

    • 탄력적인 서비스의 혼잡 제어는 네트워크의 혼잡을 관리하고 전체 성능을 향상시키는 데 도움이 된다.

Router architecture overview

  1. 라우터 입력 포트(Router Input Ports)

    • 데이터그램이 라우터에 들어오는 포트이다.
    • 각 입력 포트는 패킷을 처리하고, 올바른 출력 포트로 전달하기 위해 준비한다.
  2. 고속 스위칭 패브릭(Hight-Speed Switching Fabric)

    • 입력 포트에서 출력 포트로 패킷을 전달하는 고속 스위칭 메커니즘이다.
    • 이 패브릭은 매우 짧은 시간(나노초 단위) 내에 패킷을 전달할 수 있다.
  3. 라우터 출력 포트(Router Output Ports)

    • 데이터그램이 라우터를 떠나 목적지로 향하는 포트이다.
    • 출력 포트는 패킷을 최종 목적지로 전달하기 위해 준비한다.
  4. 라우팅 프로세서(Routing Processor)

    • 라우팅의 라우팅 및 관리 기능을 수행하는 프로세서이다.
    • 소프트웨어적으로 구현되며, 밀리초 단위의 시간 프레임 내에서 동작한다.

두 가지 주요 플레인

  1. 포워딩 데이터 플레인(Forwarding Data Plane)

    • 하드웨어적으로 구현되어 있다.
    • 패킷이 입력 포트에서 출력 포트로 이동하는 과정을 처리한다.
    • 나노초 단위의 시간 프레임 내에서 매우 빠르게 동작한다.
  2. 라우팅 및 관리 컨트롤 플레인(Routing and Management Control Plane)

    • 소프트웨어 적으로 구현되어 있다.
    • 네트워크의 라우팅 경로를 결정하고, 관리 기능을 수행한다.
    • 밀리초 단위의 시간 프레임 내에서 동작한다.

Input port functions

  1. 라인 종단(Line Termination)
    • 물리 계층(Physical Layer)
      • 비트 수준의 수신을 처리한다.
      • 전송 매체로부터 신호를 수신하고 이르 디지털 비트 스트림으로 변환한다.
  1. 링크 계층 프로토콜(Link Layer Protocol)
    • 링크 계층(Link Layer)
      • e.g. 이더넷
      • 수신된 프레임을 처리하고, 네트워크 계층으로 데이터를 전달한다.
  1. Loopup, Forwarding, Queueing
    • 탈중앙화 스위칭(Decentralized Switching)
      • 헤더 필드 값을 사용하여 입력 포트 메모리에 있는 포워딩 테이블을 조회해 출력 포트를 찾는다. 이를 "match plus action"이라고 한다.
      • 목표는 line speed에서 입력 포트 처리를 완료하는 것이다.
      • destination-based forwarding: destination IP address를 기반으로 forward하는 것(전통적)
      • generalized forwarding: header field 값을 기반으로 forword하는 것
    • Input Port Queueing
      • 데이터그램이 스위칭 패브릭으로 전달되는 속도보다 더 빨리 도착하면 큐에 저장된다.
      • 이를 통해 혼잡을 방지하고 데이터그램 손실을 최소화한다.

Destination-based forwarding

포워딩 테이블 구조

  • 목적지 주소 범위(Destination Address Range)

    • 라우터는 도착하는 패킷의 목적지 주소를 기반으로 출력 링크 인터페이스를 결정한다.
    • 각 범위는 특정 링크 인터페이스로 매핑된다.
  • 링크 인터페이스(Link Interface)

    • 특정 목적지 주소 범위에 해당하는 출력 포트

Q. 만일 주소범위가 제대로 나눠지지 않는다면?

  • 포워딩 테이블에서 주소 범위가 겹치거나 깔끔하게 나누어지지 않으면 특정 목적지 주소가 여러 범위에 속할 수 있다.

Longest prefix matching

라우터가 목적지 주소에 대해 포워딩 테이블 항목을 찾을 때 사용하는 최장 접두사 일치(Longest Prefix Match) 메커니즘을 설명한다.

정의: Longest Prefix Match

  • 주어진 목적지 주소에 대해 포워딩 테이블 항목을 찾을 때, 가장 긴 주소 접두사와 일치하는 항목을 사용한다.

위의 예에서 link interface는 0과 1이다.

Switching fabric

  1. 스위칭 패브릭의 역할
    • 입력 링크에서 적절한 출력 링크로 패킷을 전송한다.
    • 이는 라우터 내부에서 데이터가 효율적으로 전달되도록 한다.
  1. 스위칭 속도(Switching Rate)
    • 패킷이 입력에서 출력으로 전송되는 속도이다.
    • 종종 입력/출력 라인 속도의 배수로 측정된다.
    • 예를 들어, N개의 입력 포트가 있는 경우, 이상적인 스위칭 속도는 라인 속도의 N배이다.
    • 이는 라우터가 동시에 여러 입력 포트에서 들어오는 패킷을 처리할 수 있도록 하기 위함이다.

Switching via memory

  1. 초기 세대 라우터(First Generation Routers)
    • 전통적인 컴퓨터 구조: 스위칭이 CPU의 직접적인 제어 하에 이루어진다.
    • 패킷 복사: 패킷은 시스템의 메모리에 복사된다.
    • 속도 제한:
      • 메모리 대역폭에 의해 속도가 제한된다.
      • 각 데이터그램당 두 번의 버스 교차가 발생한다.

Switching via a bus

  1. 버스를 통한 데이터그램 전송

    • 입력 포트 메모리에서 출력 포트 메모리로 데이터그램을 전송하는 과정이 공유된 버스를 통해 이루어진다.
  2. 버스 경합(Bus Contention)

    • 스위칭 속도는 버스 대역폭에 의해 제한된다.
    • 여러 포트가 동시에 버스를 사용하려고 하면 버스 경합이 발생하여 스위칭 속도가 감소할 수 있다.
  3. 32 Gbps 버스

    • e.g. Cisco 5600 라우터는 32 Gbps의 버스를 사용하여 액세스 라우터로서 충분한 속도를 제공한다.

Switching via interconnection network

  1. 크로스바(CrossBar), 클로스(Clos) 네트워크:
    • 이러한 상호 연결 네트워크는 원래 멀티프로세서 시스템에서 프로세서를 연결하기 위해 개발되었다.
    • 라우터에서도 사용되어 고속 스위칭을 가능케 한다.
  1. 다단계 스위치(Multistage Switch)
    • 다단계 스위치는 n * n 스위치로, 여러 단계의 작은 스위치들로 구성된다.
    • 예를 들어, 8 * 8 스위치는 더 작은 크기의 스위치들로 구성되어 있다.
  1. 병렬성 활용(Expoiting Parallelism)
    • 데이터그램을 고정 길이 셀로 분할하여 입력한다.
    • 이 셀들은 패브릭을 통해 스위칭되고, 출구에서 다시 데이터그램으로 재조립된다.
    • 병렬 처리를 통해 스위칭 성능을 향상시킬 수 있다.

Switching via interconnection network

주요 내용:

  1. 확장(Scaling)
    • 여러 개의 스위칭 "평면(plane)"을 병렬로 사용하여 확장할 수 있다.
    • 병렬 처리를 통해 스위칭 속도와 성능을 향상시킬 수 있다.
  1. Cisco CRS 라우터
    • 기본 유닛: 8개의 스위칭 평면을 사용한다.
    • 각 평면은 3단계 상호 연결 네트워크로 구성된다.
    • 수백 Tbps에 달하는 스위칭 용량을 제공한다.






Input port queuing

input port에서 발생하는 queuing 현상과 Head-of-Line(HOL) 블로킹에 대해 설명한다.


  1. 스위치 패브릭 속도와 입력 포트:
    • 스위치 패브릭의 속도입력 포트의 총합보다 느리면 입력 큐에서 큐잉이 발생할 수 있다.
    • 입력 버퍼 오버플로우로 인해 큐잉 지연과 데이터그램 손실이 발생할 수 있다.


  1. Head of Line(HOL)블로킹
    • queue의 앞 부분에 있는 데이터그램이 다른 데이터그램의 전진을 방해하는 현상이다.






================================================================

Output port queuing

  1. 버퍼링(Buffering)

    • 스위치 패브릭에서 데이터그램이 링크 전송 속도보다 빠르게 도착할 때 버퍼링이 필요하다.
    • 드롭 정책(Drop Policy)
      • 버퍼가 가득 차면 어떤 데이터그램을 버릴지 결정하는 정책이다
      • 혼잡이나 버퍼 부족으로 인해 데이터그램이 손실될 수 있다.
  2. 스케줄링 규칙(Scheduling Discipline)

    • 큐에 있는 데이터그램 중 어떤 것을 전송할지 선택하는 규칙이다.
      • 우선순위 스케줄링(Priority Scheduling)
        • 누가 최고의 성능을 받을지 결정하는 과정이다.
          • 네트워크 중립성 문제와 관련될 수 있다.

================================================================

  • 버퍼링은 arrival rate가 output line speed를 넘을 때 발생한다.
  • queueing(delay) and loss는 output buffer의 overflow 때문이다.





Buffer Management

  1. 버퍼 관리(Buffer Management)

    • Drop
      • 버퍼가 가득 찼을 때 어떤 패킷을 추가하고, 어떤 패킷을 드롭할지 결정하는 과정
      • 테일 드롭(Tail Drop): 도착한 패킷을 드롭한다.
      • 우선 순위(Priority): 우선순위에 따라 패킷을 드롭하거나 제거한다.
    • Marking
      • 혼잡을 신호하기 위해 어떤 패킷을 마크할지 결정한다.(ECN, RED)
  2. 큐잉과 스케줄링(Queuing and Scheduling)

    • 큐잉은 패킷이 도착하여 대기하는 영역을 관리한다.
    • 스케줄링은 대기 중인 패킷 중 어떤 것을 먼저 전송할지 결정한다.




Packet Scheduling:FCFS

*packet scheduling: *

  • FCFS
  • Priority
  • round robin
  • Weighted Fair Queueing: 각 큐에 가중치를 부여하여 공정하게 전송

FCFS: 패킷이 도착한 순서대로 출력 포트로 전송된다.






Scheduling Policies: priority



우선순위 스케줄링

  • 도착한 트래픽을 분류하고 클래스별로 큐에 저장
  • 패킷 헤더의 다양한 필드를 분류에 사용할 수 있다.
  • 가장 높은 우선순위 큐에 있는 패킷부터 전송
  • 우선순위 클래스 내에서는 FCFS 방식으로 처리






Scheduling policies: round robin

라운드 로빈 스케줄링

  • 도착한 트래픽을 분류하고 클래스별로 큐에 저장
  • 패킷 헤더의 다양한 필드를 분류에 사용할 수 있다.
  • 서버는 주기적으로 각 클래스 큐에 스캔하며, 각 클래스에서 하나의 패킷을 차례대로 전송한다.
  • 모든 클래스 큐가 동일하게 처리되므로 공정한 스케줄링이 가능하다.


트래픽 분류(Traffic Classification)

  • 도착한 트래픽은 분류되어 각 클래스 큐에 저장된다.
  • e.g. 높은 우선순위 트래픽, 보통 우선순위 트래픽, 낮은 우선순위 트래픽


주기적 스캔 및 전송(Cyclic Scanning and Transmission)

  • 서버는 주기적으로 각 클래스 큐를 스캔한다.
  • 각 클래스에서 하나의 패킷을 선택하여 전송한다.
  • 각 클래스 큐가 돌아가며 패킷을 전송하게 된다.






Scheduling polices: weighted fair queueing

Weighted Fair Queuing(WFQ)

  • 일반화된 라운드 로빈
  • 가중치 부여(Weighting)
    • 각 클래스 i는 가중치 wi를 가지며, 각 주기에 가중치에 비례한 양의 서비스를 받는다.
    • 각 클래스가 받은 서비스의 비율은 다음과 같다.
  • minimum bandwidth 보장(per-traffic-class)






Sidebar: Network Neutrality

네트워크 중립성이란 무엇인가?

  1. 기술적 관점

    • ISP(인터넷 서비스 제공자)가 자원을 어떻게 공유하고 할당해야 하는지에 관한 것
    • 패킷 스케줄링, 버퍼 관리 등이 이러한 자원 할당을 위한 메커니즘이다.
  2. 사회적, 경제적 원칙

    • 자유로운 표현 보호
    • 혁신과 경쟁 촉진
  3. 법적 규칙과 정책의 시행






Network Layer: Internet

네트워크 계층 기능

  1. 경로 선택 알고리즘(Path-Selection-Algorithms)
    • 라우팅 프로토콜(OSPF, BGP) 및 SDN 컨트롤러에서 구현된다.
    • 경로 선택 알고리즘은 데이터그램이 목적지까지 가는 최적의 경로를 결정한다.


  1. IP 프로토콜(IP Protocol)
    • 데이터그램 형식(Datagram Format)
      • 데이터그램의 구조를 정의
    • 주소 지정(Addressing)
      • 데이터그램이 올바른 목적지에 도달하도록 주소를 지정한다.
    • 패킷 처리 규칙(Packet Handling Coventions)
      • 데이터그램이 네트워크를 통해 올바르게 전송되도록 처리 규칙을 정의한다.


  1. ICMP 프로토콜(ICMP Protocol)
    • 오류 보고(Error Reporting)
      • 데이터그램 전송 중 발생하는 오류를 보고
    • 라우터 신호(Router Signaling)
      • 라우터 간 신호 전달을 관리한다.


  1. 포워딩 테이블(Forwarding Table)
    • 데이터그램을 다음 목적지로 전달하기 위한 경로 정보를 저장한다.





IP Datagram foramt






IP addressing: introduction

  • IP addressing:

    • 32비트 식별자
    • 각 호스트나 라우터 인터페이스에 할당된다
    • e.g. 223.1.1.1
  • 인터페이스

    • 호스트/라우터와 물리적 링크 간의 연결을 의미한다.
    • 라우터는 보통 여러 개의 인터페이스를 가진다.
    • 호스트는 보통 하나 또는 두 개의 인터페이스를 가진다.(e.g. 유선 이더넷, 무선 802.11)









Subnets

  1. 서브넷이란?
    • 라우터를 거치지 않고 물리적을 서로 도달할 수 있는 장치 인터페이스들의 집합이다.
    • e.g. 같은 네트워크 스위치나 WiFi 기지국에 연결된 장치들


  1. IP주소의 구조(IP Addresses Have Structure)
    • 서브넷 부분(Subnet Part)
      • 같은 서브넷에 속한 장치들은 공통된 상위 비트를 가진다.
    • 호스트 부준(Host Part)
      • 나머지 하위 비트들은 호스트를 식별하는 데 사용된다.











  1. 서브넷의 정의 방법
    • 각 인터페이스를 호스트나 라우터에서 분리하여 고립된 네트워크 "섬"을 만든다.
    • 이렇게 고립된 네트워크를 "서브넷"이라고 부른다.


  1. 서브넷 구성

    • 서브넷 마스트(Subnet Mask)

      • '/24'는 상위 24비트가 서브넷 부분임을 나타낸다.

    • 서브넷 예시

      • 223.1.1.0/24: IP 주소 범위는 223.1.1.0에서 223.1.1.255까지.
      • 223.1.2.0/24: IP 주소 범위는 223.1.2.0에서 223.1.2.255까지.
      • 223.1.3.0/24: IP 주소 범위는 223.1.3.0에서 223.1.3.255까지.








  1. 서브넷의 위치
    • 네트워크 내에서 여러 서브넷이 존재한다.
    • 각 서브넷은 라우터와 호스트를 포함하며, 특정 IP 주소 범위를 가진다.



  1. /24 서브넷 주소(What are the /24 Subnet Addresses?)
    • 각 서브넷의 주소는 /24 서브넷 마스크를 사용하여 정의된다.
    • /24 서브넷 마스크는 상위 24비트가 서브넷 부분임을 나타낸다.









IP addressing: CIDR

  1. CIDR 정의
    • CIDR은 Classless InterDomain Routing의 약자로, "cider"로 발음된다.
    • 주소의 서브넷 부분의 길이를 임의로 지정할 수 있다.



  1. 주소 형식(Address Foramt)
    • 주소 형식은 a.b.c.d/x 형태로, 여기서 'x'는 서브넷 부분의 비트 수를 나타낸다.
    • e.g. 200.23.16.0/23



  1. 서브넷 부분과 호스트 부분(Subnet Part and Host Part)
    • 주소의 앞부분은 서브넷 부분이고, 뒷부분은 호스트 부분이다.
    • e.g. 200.23.16.0/23의 경우, 앞의 23비트가 서브넷, 나머지 비트는 호스트부분이다.









IP Addresses:How to Get One?

  1. 두 가지 질문(Two Questions)
    • Q1. 호스트가 자신의 네트워크 내에서 IP주소를 어떻게 얻는가?(호스트 주소 부분)
    • Q2. 네트워크가 자체적으로 IP 주소를 어떻게 얻는가?(네트워크 주소 부분)



  1. 호스트가 IP 주소를 얻는 방법(How Does a Host Get IP Address)
    • 시스템 관리자에 의해 고정 설정(Hard-Coded by Sysadmin)
      • 시스템 관리자가 구성 파일(e.g. UNIX의 /etc/rc.config)에서 IP 주소를 고정 설정한다.
    • DHCP(Dynamic Host Configuration Protocol)
      • DHCP 서버로 부터 동적으로 IP 주소를 얻는다
      • plug and play 방식을 자동 설정









DHCP: Dynamic Host Configuration Protocol

  1. 목표(Goal)
    • 호스트가 네트워크에 연결될 때 네트워크 서버로부터 동적으로 IP 주소를 받는다.
    • 사용 중인 주소의 임대를 갱신할 수 있다.
    • 주소의 재사용을 허용한다.(연결된 동안에는 주소를 유지)
    • 네트워크에 가입하고 탈퇴하는 모바일 사용자를 지원



  1. DHCP 개요
    • DHCP discover 메시지
      • 호스트가 네트워크에 가입할 때 브로드캐스트로 DHCP discover 메시지를 보낸다.(선택사항)
    • DHCP offe 메시지
      • DHCP 서버가 IP 주소를 제안하는 DHCP offer 메시지로 응답한다.(선택사항)
    • DHCP request 메시지
      • 호스트가 DHCP 서버에 IP 주소 요청 메시지를 보낸다.
    • DHCP ack 메시지
      • DHCP 서버가 IP 주소를 할당하는 DHCP ack 메시지를 보낸다.









DHCP: Client-Server Scenario

  1. DHCP 서버의 위치(DHCP Server Location)
    • DHCP 서버는 보통 라우터와 함께 위치한다.
    • 라우터에 위치한 모든 서브넷에 IP 주소를 할당한다.



  1. DHCP 클라이언트의 동작(DHCP Client Operation)
    • 네트워크에 새로 연결된 DHCP 클라이언트가 IP 주소를 필요로 한다.
    • DHCP 클라이언트는 네트워크에 연결될 때 DHCP 서버와 상호작용하여 IP 주소를 얻는다.









DHCP client-server scenario

  1. DHCP discover(탐색)
    • 클라이언트: DHCP 서버가 있나요? 라는 메시지를 브로드 캐스트한다.
    • 이는 네트워크에 DHCP 서버가 있는지 탐색하는 단계이다.


  2. DHCP offer(제공)
    • DHCP 서버: 나는 "DHCP 서버입니다. 사용할 수 있는 IP 주소가 여기에 있습니다." 라는 메시지를 브로드캐스트한다.
    • DHCP 서버는 사용 가능한 IP 주소를 클라이언트에게 제안한다.


  3. DHCP reqeust(요청)
    • 클라이언트: "알겠습니다. 이 IP 주소를 사용하고 싶습니다!" 라는 메시지를 브로드캐스트한다.
    • 클라이언트는 제안된 IP 주소를 사용하겠다고 요청한다.


  4. DHCP ACK(승인)
    • DHCP 서버: "알겠습니다. 이 IP 주소를 할당했습니다." 라는 메시지를 브로드캐스트한다.
    • DHCP 서버는 클라이언트에게 IP 주소를 할당하고 이를 확인한다.









DHCP: more than IP addresses

DHCP가 반환하는 추가 정보

  • 클라이언트를 위한 첫 홉 라우터의 주소(Address of First-Hop Router for Client)
    • 클라이언트가 네트워크 상에서 통신을 시작할 때 사용하는 첫 번째 라우터의 IP 주소



  • DNS 서버의 이름과 IP 주소(Name and IP Address of DNS Server)
    • 클라이언트가 도메인 이름을 IP주소로 변환할 때 사용하는 DNS 서버의 정보



  • 네트워크 마스크(Network Mask)
    • 네트워크와 호스트 부분을 구분하는 서브넷 마스크









DHCP: example

DHCP가 실제로 어떻게 작동하는가?

  1. 노트북 연결(Connecting Laptop)
    • 노트북을 네트워크에 연결하면 DHCP를 사용하여 IP주소, 첫 홉 라우터의 주소, DNS 서버의 주소를 얻는다.



  1. DHCP 요청 메시지(DHCP REQUEST Message)
    • DHCP REQUEST 메시지는 UDP에 캡슐화되고, 다시 IP에 캡슐화되고, 최종적으로 이더넷에 캡슐화된다.
    • 이는 메시지가 전송될 때 여러 프로토콜 계층을 통해 포장되는 과정을 나타내다.



  1. 이더넷 프레임 브로드캐스트(Ethernet Frame Broadcast)
    • 이더넷 프레임은 네트워크 상에서 브로드캐스트된다. 목적지 주소는 'FFFFFFFFFFFF'(모든 노드에게 전송됨)이다.
    • DHCP 서버가 실행 중인 라우터에게 이 프레임을 수신한다.



  1. 프레임 디멀티플렉싱(Frame Demultiplexing)
    • 이더넷 프레임이 IP로 디멀티플랙싱되고, IP는 UDP로 디멀티플랙싱 된다.
    • 최종적으로 UDP는 DHCP로 디멀티플랙싱된다.
    • 이는 각 프로토콜 계층이 데이터 단위로 상위 계층으로 전달하는 과정을 설명한다.





  1. DHCP 서버 응답(DHCP Server Reply)
    • DHCP 서버는 클라이언트의 IP 주소, 첫 홉 라우터의 IP 주소, DNS 서버의 이름과 IP 주소를 포함한 DHCP ACK 메시지를 작성한다.
    • 이 메시지는 클라이언트에게 전송된다.



  1. DHCP 서버 응답 캡슐화(Encapsulated DHCP Server Reply)
    • DHCP ACK 메시지는 여러 프로토콜 계층을 통해 캡슐화되어 클라이언트에게 전달된다.
    • 클라이언트에서 해당 메시지를 수신하고 각 계층을 통해 디멀티플렉싱하여 DHCP 메시지를 처리한다.



  1. 클라이언트 정보 획득(Client Information Acquisition)
    • 클라이언트는 이제 자신의 IP 주소, DNS 서버 이름과 IP 주소, 첫 홉 라우터의 IP 주소를 알게 된다.









IP addresses: how to get one

Q. 네트워크가 IP 주소의 서브넷 부분을 어떻게 얻는가?
A. 네트워크는 ISP가 할당한 주소 공간의 일부를 받는다









Hierarchinal addressing: route aggregation

계층적 주소 지정: 경로 집계

  1. 계층적 주소 지정
    • 계층적 주소 지정은 라우팅 정보를 효율적으로 광고하는 것을 가능케한다.
    • 이는 여러 개의 작은 네트워크 주소를 하나의 큰 주소로 집계하여 라우팅 테이블 크기를 줄이는 데 도움을 준다.

===================59,60,61,62 페이지 생략======================================









NAT:network address translation

네트워크 주소 변환(NAT)의 개념과 작동 방식을 설명함

  • NAT의 개념
    • 로컬 네트워크의 모든 장치는 "사설" IP 주소 공간(10/8, 172.16/12, 192.168/16 프리 픽스)를 사용한다.
    • 이런 사설 IP 주소는 로컬 네트워크에서만 사용할 수 있다.
    • NAT는 로컬 네트워크의 모든 장치가 외부 세계에 대해 단 하나의 IPv4 주소를 공유하도록 한다.
    • 예를 들어, 가정 네트워크 주소가 10.0.0.0/24 인 경우, 모든 장치는 외부 세계에 대해 138,76,29,7의 단일 NAT IP 주소를 사용하게 된다.



  • 로컬 네트워크와 외부 인터넷
    • 로컬 네트워크 내의 장치들은 로컬 IP 주소를 사용한다. e.g. 10.0.0.1, 10.0.0.2, 10.0.0.3
    • 이 장치들이 인터넷과 통신할 때, NAT 라우터는 이들의 로컬 IP 주소를 공인 IP 주소(138.76.29.7)



  • 데이터그램 전송
    • 로컬 네트워크를 떠나는 모든 데이터그램은 동일한 NAT IP 주소(138.76.29.7)를 가지지만, 각 데이터그램은 다른 소스 포트 번호를 가진다.
    • 로컬 네트워크 내에서 송수신되는 데이터그램은 여전히 로컬 주소(10.0.0.0/24)를 사용한다.



  • NAT의 장점
    • 단 하나의 IP 주소: 모든 장치에 대해 공급자 ISP로부터 단 하나의 공인 IP 주소만 필요한다.
    • 내부 주소 변경: 외부 세계에 알릴 필요 없이 로컬 네트워크 내 호스트의 주소를 변경할 수 있다.
    • ISP 변경 용이: 로컬 네트워크 내 장치들의 주소를 변경하지 않고도 ISP를 변경할 수 있다.
    • 보안: 로컬 네트워크 내부의 장치는 외부 세계에서 직접적으로 주소가 지정되거나 보이지 않는다.









NAT: network address translation

NAT 라우터의 구현 방식

  1. NAT 라우터의 역할
    • NAT 라우터는 투명하게 다음과 같은 작업을 수행해야 한다.



  1. 출발 데이터그램(outgoing datagrams)
    • 모든 출발 데이터그램의 소스 IP 주소와 포트 번호(NAT IP 주소, 새로운 포트 번호) 로 대체
    • 원격 클라이언트/서버는 (NAT IP 주소, 새로운 포트 번호)를 목적지 주소로 사용하여 응답한다.



  1. NAT translation table에 기억
    • 모든 (소스 IP 주소, 포트 번호)(NAT IP 주소, 새로운 포트 번호) 의 번역 쌍을 NAT 번역 테이블에 저장한다.



  1. 도착 데이터그램(incoming datagrams)
    • (NAT IP address, new port #)을 (source IP address, port #)로 replace
    • 모든 도착 데이터그램의 목적지 필드를 NAT 테이블에 저장된 대응하는 (소스 IP 주소, 포트 번호)로 대체한다.











NAT: network address translation

논란과 현황



논란

  1. 라우터 처리 계층 문제
    • 라우터는 원래 3계층(네트워크 계층)까지만 처리해야 한다고 여겨진다.
    • 그러나 NAT는 포트 번호를 변경하는 등 4계층(전송 계층)까지 처리한다.



  1. 주소 부족 문제
    • IPv6를 통해 주소 부족 문제를 해결해야 한다고 주장
    • IPv6는 더 많은 IP 주소를 제공하여 NAT 없이도 충분히 네트워크를 구성할 수 있다.



  1. 종단 간 논쟁 위반
    • NAT는 네트워크 계층 장치가 포트 번호를 조작하여 종단 간 통신의 투명성을 위반한다.
    • 이는 종단 간 논쟁(end-to-end argument)을 위반하는 행위로 여겨진다.



  1. NAT traversal 문제
    • 클라이언트가 NAT 뒤에 있는 서버와 연결하고자 할 때 NAT traversal 문제가 발생한다.
    • 이는 NAT가 외부에서 들어오는 트래픽을 적절히 전달하기 어렵게 만든다.



허나



NAT는 현재 널리 사용되고 있다.

  • 가정용 네트워크와 기관 네트워크에서 광범위하게 사용된다.
  • 4G/5G 셀룰러 네트워크에서도 NAT가 사용된다.






IPv6: motivation

등장배경:

  • IPv4 주소 공간 고갈: 32비트의 IPv4 주소 공간이 완전히 할당될 것이 예상되었다.
    • IPv4 주소 공간은 약 43억 개의 고유 주소를 제공한다.
    • 인터넷 사용자와 장치의 폭발적인 증가로 인해 IPv4 주소가 부족해졌다.
  • 처리 및 포워딩 속도 향상: 40 바이트 고정 길이 헤더를 사용하여 처리 속도를 높였다.
  • 흐름에 대한 네트워크 계층 처리 기능: 다양한 네트워크 계층에서 흐름(flow)을 다르게 처리할 수 있는 기능을 제공한다.









IPv6 datagram format



IPv4와 비교에서 없는 것

  • checksum이 없다.: 라우터에서 처리 속도를 높이기 위해 체크섬 필드가 제거되었다.
  • no fragmentation/reassemply: IPv6는 단편화와 재조립을 지원하지 않는다. 대신, 상위 계층에서 이 기능을 처리한다.
  • no option: IPv4에서는 다양한 옵션을 제공했지만, IPv6에서는 이러한 옵션이 제거되고 대신 상위 계층이나 다음 헤더 프로토콜에서 제공된다.









Transition from IPv4 to IPv6

IPv4에서 IPv6로의 전환은 네트워크 인프라 전반에 걸쳐 일괄적으로 이루어질 수 없기에 점진적인 전환 방법이 필요하다.

  • 주요 내용
    • 모든 라우터의 동시 업그레이드 불가: 모든 라우터를 동시에 업그레이드할 수 없으며, 이를 위한 "flag day" 같은 날을 정할 수도 없다.
    • 혼합 운영: 네트워크 IPv4와 IPv6 라우터가 혼재된 환경에서 운영될 수 있다.



  • 터널링(Tunneling)
    • 터널링 정의: 터널링은 IPv6 데이터그램을 IPv4 데이터그램의 페이로드로 운반하는 방법이다. 이는 "패킷 안의 패킷" 방식으로 작동한다.
    • 운영 방식: IPv4 헤더는 소스 및 목적지 주소를 포함하고, 이 IPv4 헤더 안에 IPv6 데어터그램 전체가 포함된다. IPv6 데이터그램 내부에는 다시 IPv6 헤더 필드와 UDP/TCP 페이로드가 포함된다.
    • 터널링의 활용: 터널링은 4G/5G 네트워크와 같은 다른 컨텍스트에서도 광범위하게 사용된다.



  • 도식 설명
    • IPv4 헤더 필드: 소스 주소와 목적지 주소가 포함된 IPv4 헤더가 데이터그램의 맨 앞부분을 차지한다.
    • IPv6 데이터그램: IPv4 헤더 뒤에는 IPv6 데이터그램이 포함되며, 여기에는 IPv6 헤더 필드와 UDP/TCP 페이로드가 포함된다.
    • 페이로드: 최종적으로 IPv4 페이로드로 감싸진 전체 패킷이 전송된다.











Generalized forwarding: match plus action

주요 내용

  • 포워딩 테이블: 각 라우터는 포워딩 테이블(또는 플로우 테이블)을 포함한다.
  • "매치 플러스 액션" 추상화: 도착하는 패킷의 비트를 매치하고, 특정 동작을 취한다.
    • 목적지 기반 포워딩: 목적지 IP 주소에 기반하여 포워딩을 수행한다.
    • 일반화된 포워딩: 여러헤더 필드가 액션을 결정할 수 있으며, 다양한 액션이 가능하다.






포워딩 테이블(Forwarding Table)

  • 포워딩 테이블 역할: 도착하는 패킷의 특정 비트를 확인하고, 그에 맞는 액션을 결정한다.
  • 일반화된 포워딩: 단순히 목적지 IP 주소뿐만 아니라, 여러 헤더 필드도 고려할 수 있다.
  • 가능한 액션들
    • 드롭(drop): 패킷을 폐기합니다.
    • 복사(copy): 패킷을 복사한다.
    • 수정(modify): 패킷의 내용을 수정한다.
    • 로그(log): 패킷을 로그에 기록









Flow Table abstraction

  • 플로우(Flow): 헤더 필드 값에 의해 정의된다.(링크 계층, 네트워크 계층, 전송 계층의 필드 포함)



  • 일반화된 포워딩(Generalized Forwarding): 단순한 패킷 처리 규칙을 포함한다.

    • 매치(Match) : 패킷 헤더 필드에서 패턴 값을 매칭한다.
    • 액션(Action): 매치된 패킷에 대해 다음과 같은 동작을 수행할 수 있다.
      • drop: 패킷을 폐기함
      • forward: 패킷을 전달함
      • modify: 패킷을 수정함
      • send to controller: 매치된 패킷을 컨트롤러로 보낸다.
    • Priority: 겹치는 패턴을 구별한다.
    • Counters: 바이트 수와 패킷 수를 세어준다.
  • 그림

    • Flow Table: 라우터의 매치 + 액션 규칙을 정의
    • match: 패킷의 헤더 필드를 매칭
    • 액션: 매치된 패킷에 대해 정의된 액션을 수행
    • src = ..., dest=3.4..: forward(2번 포트로 전달)
    • src=1.2.., dest=...: drop(패킷 폐기)
    • src=10.1.2.3, dest=...: controller로 전송






OpenFlow: 플로우 테이블 항목

주요 내용

  • Match(매치): 패킷의 헤더 필드 값을 기준으로 매치
  • Action(액션): 매치된 패킷에 대해 수행할 동작을 정의
    1. 패킷을 특정 포트로 전달
      1. 패킷 폐기
      2. 헤더 필드 수정
      3. 캡슐화하여 컨트롤러로 전달
  • Stats(통계): 패킷과 바이트 카운터를 포함









OpenFlow: examples











OpenFlow abstraction

  • match + action
    • 이 추상화는 다양한 종류의 네트워크 장치를 통합하는 개념이다. 모든 네트워크 장치는 특정 조건을 매칭하고, 그에 따른 행동을 수행한다.



  • Router(라우터)
    • match(매칭)
      • 가장 긴 목적지 IP 접두사(longest destination IP prefix)를 매칭한다. 즉, 목적지 IP 주소가 특정 범위에 속하는지를 확인한다.
    • action(행동)
      • 해당 링크로 패킷을 전달한다(forward out a link)



  • Switch(스위치)
    • match(매칭)
      • 목적지 MAC 주소(destination MAC address)를 매칭한다. 즉, 이더넷 프레임의 목적지 MAC 주소를 확인한다.
    • action(행동)
      • 패킷을 전달하거나 (forward) 모든 포트로 전송(flood)한다.



  • Firewall(방화벽)
    • match(매칭)
      • IP 주소와 TCP/UDP 포트 번호를 매칭한다. 즉, 특정 IP 주소와 포트 번호로 들어오는 패킷을 확인한다.
        • action(행동)
        • 패킷을 허용하거나 (permit) 차단한다. (deny)



  • NAT(Network Address Translation, 네트워크 주소 변환)
    • match(매칭)
      • IP 주소와 포트를 매칭한다. 즉, 내부 네트워크의 특정 IP 주소와 포트를 확인한다.
    • action(행동)
      • 주소와 포트를 재작성 (rewrite)한다. 즉, 내부 네트워크 주소를 외부 네트워크 주소로 변환한다.









OpenFlow example









Generalized forwarding : summary

match plus action: Abstraction

  • 개념: 패킷 헤더의 비트를 다양한 계층에서 일치시키고 해당하는 동작을 수행하는 추상화
  • 매칭: 링크, 네트워크, 전송 계층의 여러 필드에 대해 매칭한다.
  • 로컬 액션: 패킷을 드롭, 포워드, 수정, 컨트롤러로 보낼 수 있다.
  • 네트워크 전반의 동작: 네트워크 전체의 동작을 "프로그래밍"할 수 있다.



network programmability

  • 간단한 형태: 패킷당 "처리"를 프로그래밍할 수 있다.
  • 역사적 배경: 활성 네트워킹에서 시작되었다.
  • 오늘날: 더 일반화된 프로그래밍을 의미하며, P4와 같은 도구를 사용한다.









Middleboxes

  • Middlebox; 일반적인 IP 라우터의 표준 기능 외에 다른 기능을 수행하는 중간 장치이다. 이러한 장치는 소스 호스트와 목적지 호스트 사이의 데이터 경로에 위치한다









Middleboxes everywhere!

주요 middlebox의 종류와 용도

  1. NAT(Network Address Translation)
    • 용도: 여러 장치들이 하나의 공인 IP 주소를 공유하도록 함
    • 사용처: 가정, 셀룰러 네트워크, 기관 네트워크



  1. Application-specific Middleboxes
    • 용도: 특정 어플리케이션의 성능 및 보안을 위해 설계된 중간 장치
    • 사용처: 서비스 제공자. 기관 네트워크, CDN(컨텐츠 전송 네트워크)



  1. Firewalls, IDS(Intrusion Detection Systems)
    • 용도: 네트워크 보안을 강화하고 침입을 탐지 및 차단
    • 사용처: 기업, 기관, 서비스 제공자, ISP(인터넷 서비스 제공자)



  1. Load Balancers
    • 용도: 트래픽을 여러 서버에 분산하여 부하를 균등하게 분배
    • 사용처: 기업 네트워크, 서비스 제공자, 데이터 센터, 모바일 네트워크



  1. Caches
    • 용도: 자주 사용하는 데이터를 로컬에 저장하여 접근 속도를 향상
    • 사용처: 서비스 제공자, 모바일 네트워크, CDN






Middleboxes



초기 Middlebox

  • 초기 형태: 초기 Middlebox는 독점적인 하드웨어 솔루션으로, 폐쇄된 시스템을 사용했다.


Whitebox 하드웨어로의 이동

  • Whitebox 하드웨어: 오픈 API를 구현한 범용 하드웨어로의 전환이 진행되고 있다.
    • 독점 하드웨어 탈피: 기존의 독점적인 하드웨어 솔루션에서 벗어나고 있다.
    • 프로그래밍 가능한 로컬 액션: 'match+action' 메커니즘을 통해 로컬에서 프로그래밍 가능한 작업을 수행할 수 있다.
    • 소프트웨어 혁신: 소프트웨어에서의 혁신과 차별화로 나아가고 있다.


SDN(Software Defined Networking)

  • 중앙 집중식 관리: 논리적으로 중앙 집중식 제어 및 구성 관리를 제공하며, 종종 사설 또는 공용 클라우드에서 수행된다.


NFV(Network Functions Virtualization)

  • 프로그래머블 서비스: Whitebox 네트워킹, 계산 및 저장소를 통해 프로그래밍 가능한 서비스를 제공한다





The IP hourglass

하나의 네트워크 계층 프로토콜(IP)

  • 인터넷에서 사용되는 유일한 네트워크 계층 프로토콜은 IP(Internet Protocol)이다.
  • IP는 전 세계의 수십억 개의 인터넷 연결 장치에 의해 구현되어야 한다.

인터넷의 "love handles"

  • 인터넷이 시간이 지나면서 네트워크 내부에서 동작하는 다양한 중간 장치(middleboxes)가 등장했다.

'학교수업 > 컴퓨터망' 카테고리의 다른 글

Chapter6: The Link Layer and LANs  (0) 2024.07.12
Chapter5 Network Layer: Control Plane  (0) 2024.07.09
Chapter3: Transport Layer-2  (0) 2024.07.04
Chapter3: Transport Layer  (0) 2024.07.03
Chapter2: Application Layer-2  (0) 2024.07.03

Connection-oriented transport: TCP

  • segment structure
  • reliable data transfer
  • flow control
  • connection management



TCP: overview

  • Point-to-Point
    • 한 송신자와 한 수신자 간의 통신
    • 일대일 연결



  • Reliable, In-Order Byte Stream
    • 신뢰할 수 있고, 순서가 맞는 바이트 스트림 전송
    • 메시지 경계 없음(연속된 바이트 스트림으로 처리)



  • Full Duplex Data
    • 양방향 데이터 흐름을 지원
    • 동일한 연결에서 동시에 송수신 가능
    • MMS(Maximum Segment Size): 하나의 세그먼트에서 전송할 수 있는 최대 데이터 크기



  • Cumulative ACKs(Acknowledgements)
    • 누적 확인 응답
    • 특정 번호까지의 모든 패킷을 확인 응답하는 방식



  • Pipelining
    • 여러 패킷을 동시에 전송하는 기술
    • TCP 혼잡 제어 및 흐름 제어 메커니즘을 통해 윈도우 크기 설정



  • Connection-Oriented
    • 연결 지향적 통신
    • 데이터 교환 전에 제어 메시지를 주고받아 송신자와 수신자의 상태를 초기화하는 핸드셰이킹 과정 필요



  • Flow Controlled
    • 흐름 제어
    • 송신자가 수신자를 과부하시키지 않도록 전송 속도 조절









TCP segment structrue

  1. Source Port #(출발지 포트 번호)
    • 세그먼트를 송신하는 장치의 포트 번호



  1. Dest Port #(목적지 포트 번호)
    • 세그먼트를 수신하는 장치의 포트 번호이다.



  1. Sequence Number(순서 번호)
    • 바이트 스트림 내의 바이트에 순서를 매기는 데 사용된다. 이는 세그먼트의 첫 번째 바이트의 번호를 나타낸다.



  1. Acknowledgement Number(확인 응답 번호)
    • 송신자가 다음에 받을 것으로 기대하는 바이트의 순서 번호이다. 이 번호는 수신 측에서 데이터가 제대로 도착했음을 확인하는 역할을 한다.



  1. Header Length
    • TCP 헤더의 길이를 나타냅니다. 단위는 32비트 워드이다.



  1. Flags

    • 제어 비트로 구성되어 있으며, 각각의 비트는 특정한 제어 정보를 나타낸다.
      • C, E: 혼잡 알림(Congestion Nofitication)
      • U: 긴급 포인터(Urgent Pointer)
      • A: 확인 응답(ACK)
      • P: 푸시(Push)
      • R: 재설정(RST)
      • S: 동기화(SYN)
      • F: 종료(FIN)


  2. Receive Window(수신 윈도우)

    • 수신 측이 수신할 준비가 된 데이터의 최대 바이트 수를 나타낸다. 이는 흐름 제어에 사용된다.



  1. Checksum(체크섬)
    • 오류 검출을 위해 사용된다. 데이터와 헤더가 전송 중에 손상되지 않았는지 확인한다.



  1. Urgent Data Pointer(긴급 데이터 포인터)
    • 긴급 데이터의 끝을 가리키는 포인터이다. 긴급 데이터는 보통의 데이터보다 우선 처리된다.



  1. Options(옵션, 가변 길이)
    • 선택적 필드로, TCP 연결에 대한 추가 정보를 제공할 수 있다.



  1. Application Data(응용 데이터, 가변 길이)
    • 응용 프로그램에서 전송하는 실제 데이터









TCP sequence numbers, ACKS

Sequence numbers(순서 번호)

  • 정의: TCP는 바이트 스트림을 전달할 때 각 바이트에 번호를 매긴다. 이 번호를 통해 송신 측과 수신 측은 각 바이트가 데이터 스트림 내에서 어디에 위치하는지 알 수 있다.
  • 기능: 세그먼트의 첫 번째 바이트의 순서 번호를 지정하여 데이터의 정확한 순서를 유지하고 손실된 데이터를 재전송할 수 있게 한다.



Acknowledgements(확인 응답)

  • 정의: 수신 측이 다음에 받을 것으로 기대되는 바이트의 순서 번호를 송신 측에 알려주는 메커니즘이다.
  • 기능: 누적 ACK를 사용하여 현재까지 제대로 수신한 데이터의 마지막 바이트 다음에 올 바이트의 순서 번호를 송신 측에 알려준다. 이는 데이터의 손실이나 오류를 감지하고 재전송을 요청할 수 있게 한다.



중요한 질문 및 답변

  • Q: 수신 측이 순서가 뒤섞인 세그먼트를 어떻게 처리하는가?
  • A: TCP 사양은 이에 대해 명시적으로 규정하지 않으며, 구현자에게 맡겨진다.









TCP sequence numbers, ACKs

  1. 사용자가 'C'를 입력
    • 호스트 A의 사용자가 문자 'C'를 입력
    • 호스트 A는 이 데이터를 포함한 TCP 세그먼트를 생성
    • 이 세그먼트의 순서 번호(seq)는 42, 확인 응답 번호(ACK)는 79, 데이터는 'C'이다.
    • 이 세그먼트는 호스트 B로 전송된다.


  2. 호스트 B가 'C'를 수신하고 에코
    • 호스트 B는 seq=42인 세그먼트를 수신한다.
    • 호스트 B는 이 세그먼트를 확인 응답(ACK)한다. 확인 응답 번호(ACK)는 43이다.(다음에 기대되는 바이트의 순서 번호)
    • 호스트 B는 데이터 'C'를 에코(반복)한다. 새로운 새그먼트를 생성하여 호스트 A로 보낸다.
    • 이 세그먼트의 순서 번호(Seq)는 79, 확인 응답 번호(ACK)는 43, 데이터는 'C'이다.


  3. 호스트 A가 에코된 'C'를 수신
    • 호스트 A는 Seq=79인 세그먼트를 수신
    • 호스트 A는 이 세그먼트를 확인 응답(ACK)한다. 확인 응답 번호(ACK)는 80이다.(다음에 기대되는 바이트의 순서 번호)









TCP round trip time, timeout

Q. TCP timeout 값을 어떻게 설정할 것인가?

  • RTT보다 길어야 함: RTT(Round Trip Time)보다 길어야 한다. 그러나 RTT는 변동한다.
  • 너무 짧은 경우: 타임아웃이 너무 짧으면 조기 타임아웃이 발생하여 불필요한 재전송이 일어날 수 있다.
  • 너무 긴 경우: 타임아웃이 너무 길면 세그먼트 손실에 대한 반응이 느려질 수 있다.



Q. RTT를 어떻게 추정할 것인가?

  • SampleRTT: 세그먼트 전송 시점부터 ACK(확인 응답) 수신 시점까지의 시간을 측정한다
    • 재전송된 세그먼트는 무시한다.
  • SampleRTT 변동: SampleRTT는 변동하기에, 추정된 RTT를 더 부드럽게 만들고 싶다.
    • 최근 여러 측정값을 평균화하여 사용한다. 단순히 현재의 SampleRTT만을 사용하지 않는다.



스크린샷 2024-07-04 001104.png
12.6 kB






  1. Exponential Weighted Moving Average(EWMA)
    • 과거 샘플의 영향을 지수적으로 감소시킨다.
    • 최신 SampleRTT에 더 많은 가중치를 두어, 네트워크 상태의 변동에 빠르게 반응할 수 있도록 한다.



  1. 이전 샘플의 영향 감소
    • 오래된 SampleRTT의 영향력이 지수적으로 빠르게 감소하여, 최근의 네트워크 상태를 더 정확히 반영할 수 있다.



  1. 알파 값의 일반적 설정:

    • α는 일반적으로 0.125로 설정됩니다. 이는 최근의 SampleRTT가 ExtimatedRTT에 어느 정도 영향을 미치는지를 결정한다.






타임 아웃 간격 설정

  • ExtimatedRTT: 예측된 RTT 값
  • DevRTT: SampleRTT가 EstimatedRTT로부터 벗어난 정도를 나타낸 값
  • Safety margin: 타임아웃 간격을 결정할 때 추가되는 여유 시간



타임아웃 간격을 예측된 RTT에 "안전 마진"을 더한 값입니다. 네트워크의 변동성을 고려하여, 타임 아웃 간격은 예측된 RTT와 DevRTT의 합으로 설정된다.






DevRTT 계산

  • β: 일반적으로 0.25로 설정되는 가중치
  • SampleRTT: 실제 측정된 RTT 값
  • EstimatedRTT: 예측된 RTT 값



DevRTTSampleRTTEstimatedRTT의 차이의 절대값을 사용하여 계산됩니다. 이는 예측된 RTT로부터의 편차를 측정하여, 타임아웃 간격 설정 시 변동성을 반영하는 데 사용된다.









TCP Sender(simplified)

event1: data received from application

  • 세그먼트 생성: 수신한 데이터를 바탕으로 세그먼트를 생성한다
    • 순번(seq #): 세그먼트 내 첫 번째 데이터 바이트의 바이트 스트림 번호이다.
  • 타이머 시작: 타이머가 이미 실행 중이 아니라면 시작한다.
    • 타이머는 가장 오래된 ACK되지 않은 세그먼트를 기준으로 생각한다.
    • 만료 간격은 TimeOutInterval이다.



event2 : timeout 발생

  • segment 재전송: 타임아웃을 유발한 세그먼트를 재전송한다.
  • 타이머 재시작: 타이머를 다시 시작한다.



event3 : ACK 수신

  • ACK 확인: 수신된 ACK가 이전에 ACK되지 않은 세그먼트를 확인하는 경우
    • ACK 된 것으로 알려진 내용을 업데이트한다.
    • ACK 되지 않은 세그먼트가 여전히 있는 경우 타이머를 시작한다.






TCP: retransmission scenarios











TCP fast retransmit

  • 송신자가 동일한 데이터에 대해 3개의 추가 ACK(트리플 중복 ACK)를 수신하면, 송신자는 타임아웃을 기다리지 않고 확인되지 않은 세그먼트 중 가장 작은 순서 번호를 가진 세그먼트를 재전송한다.






TCP flow control

Q. What happens if network layer delivers data faster than application layer removes data from socket buffers





결과: 버퍼 오버 플로우

  • 버퍼가 가득 차면 더 이상 데이터를 수용할 수 없게 되어, 추가로 도착하는 데이터는 손실된다.
  • 이를 방지하기 위해 수신자는 송신자에게 윈도우 크기를 조정하도록 알려준다.
  • 송신자는 수신자가 수용할 수 있는 데이터 양을 초과하지 않도록 조절한다. 송신자는 수신자의 버퍼가 넘치지 않도록 데이터를 너무 많이, 너무 빨리 전송하지 않는다.
  • TCP는 수신자의 현재 버퍼 상태를 기반으로 송신자가 보낼 수 있는 데이터 양을 제어한다.



주요 내용

  1. 수신자의 버퍼 공간 광고
    • TCP 수신자는 자신의 여유 버퍼 공간을 TCP 헤더의 'rwnd(receive window)' 필드에 광고합니다.
    • 'rwnd'는 수신자가 현재 수용할 수 있는 데이터의 양을 나타낸다.
  2. RcvBuffer
    • 'RcvBuffer'의 크기는 소켓 옵션을 통해 설정되며, 일반적으로 기본값은 4096 바이트이다.
    • 많은 운영 체제는 'RcvBuffer' 크기를 자동으로 조정한다.
  3. 송신자의 데이터 전송 제약
    • 송신자는 ACK되지 않은('unACKed') 데이터의 양을 수신한 'rwnd' 값에 맞춰 제한한다.
    • 즉, 송신자는 'rwnd' 값보다 많은 데이터를 한 번에 전송하지 않는다.
  4. 버퍼 오버플로우 방지
    • 이러한 메커니즘을 통해 수신자의 버퍼가 넘치는 상황을 방지한다.











TCP connection management

TCP 연결 관리는 데이터 교환 전에 송신자와 수신자가 연결을 설정하는 과정을 의미한다. 이를 위해 "handshake"라는 과정이 필요하며, 이는 연결을 설정하기 위한 절차이다.



  1. 연결 설정 동의
    • 송신자와 수신자는 연결을 설정하는 데 동의한다. 이는 양쪽 모두가 연결을 설정하기를 원한다는 것을 알게 되는 과정이다.
  2. 연결 매개변수 합의
    • 양쪽은 연결 매개변수(e.g. 시작 시퀀스 번호 등)에 대해 합의한다.





e.g.

  • 왼쪽(client)
    • 어플리케이션은 새로운 소켓을 생성하여 호스트 이름과 포트 번호를 지정
    • e.g. Socket clientSocket = newSocket("hostname", "port number")
    • 네트워크 계층을 통해 연결을 설정하며, 어플리케이션 계층에서 연결 상태와 연결 변수를 관리한다.



  • 오른쪽(server)
    • 서버는 소켓을 생성하여 연결을 수락한다.
    • e.g. Socket connectionSocket = welcomeSocket.accept()
    • 서버 역시 네트워크 계층을 통해 연결을 설정하며, 어플리케이션 계층에서 연결 상태와 연결 변수를 관리한다.






Agreeing to establish a connection

Q. will 2-way handshake는 항상 network에서 동작하는가?



문제점:

  1. 가변 지연(variable delays): 네트워크 환경에서는 메시지가 도착하는 시간이 일정하지 않는다. 지연 시간이 가변적이므로 연결 설정이 불안정할 수 있다.
  2. 메시지 재전송(retransmitted message): 메시지 손실로 인해 request 메시지를 재전송하는 경우가 발생한다.
  3. 메시지 순서 변경(message reordering): 네트워크에서는 메시지가 순서대로 도착하지 않을 수 있다. 순서가 뒤바뀌면 핸드 셰이크 과정이 실패할 수 있다.
  4. 상대방의 상태를 알 수 없음(cant see other side): 송신자는 수신자의 상태를 직접 확인할 수 없다. 상대방이 메시지를 받았는지 확인하는 방법이 없기에, 핸드셰이크 과정이 중단될 수 있다.






2-way handshake scenarios

clinet는 처음 x, server는 나중의 x, 그렇기에 client가 연결을 끊어도 server는 그대로 연결되어 있다. 이는 리소스 낭비






TCP 3-way handshake

클라이언트 측 상태

  1. LISTEN
    • 클라이언트 소켓이 연결 요청을 기다리는 상태
    • 코드: 'clientSocket = socekt(AF_INET, SOCK_STREAM)(소켓 생성)
    • 코드: 'clientSocket.connect((serverName, serverPort))'(연결 요청)



  1. SYN_SENT
    • 클라이언트가 초기 순서 번호(x)를 선택하고 SYN 메시지를 서버로 보낸 상태이다.
    • 상태 전환: LISTEN -> SYN_SENT
    • 메시지: 'SYNbit=1, Seq=x'(SYN 메시지)



  1. ESTAB(Established)
    • 클라이언트가 서버로부터 SYN-ACK 메시지를 받고, 이에 대한 ACK를 서버로 보낸 후 연결이 설정된 상태
    • 상태 전환: SYN_SENT -> ESTAB
    • 메시지: 'ACKbit=1, ACKnum =y + 1'(ACK 메시지)





서버 측 상태

  1. LISTEN

    • 서버 소켓이 연결 요청을 기다리는 상태
    • 코드: 'serverSocket = socket(AF_INET, SOCK_STREAM)'(소켓 생성)
    • 코드: 'serverSocket.bind(('', serverPort))'(소켓 바인딩)
    • 코드: 'serverSocket.listen(1)'(연결 대기)
    • 코드: 'connectionSocket, addr = serverSocket.accept()' (연결 수락)

  2. SYN_RCVD

    • 서버가 클라이언트로부터 SYN 메시지를 받고, 초기 순서 번호(y)를 선택한 후 SYN-ACK 메시지를 클라이언트로 보낸 상태이다.
    • 상태 전환: LISTEN->SYN_RCVD
    • 메시지: 'SYNbit=1, Seq=y' (SYN-ACK 메시지)


  1. ESTAB(Established)
    • 서버가 클라이언트로부터 ACK 메시지를 받아 연결이 설정된 상태이다.
    • 상태 전환: SYN_RCVD -> ESTAB
    • 메시지: ACKbit=1, ACKnum=x+1(ACK 메시지)



3-Way Handshake 과정

  1. SYN(Synchronize)
    • 클라이언트가 서버로 SYN 메시지로 보내 연결을 요청한다.
    • 클라이언트: 'SYNbit=1, Seq=x'
    • 클라이언트 상태: LISTEN->SYN_SENT
    • 서버 상태: LISTEN->SYN_RCVD


  1. SYN-ACK(Synchronize-Acknowledge)
    • 서버가 클라이언트의 SYN 메시지를 받고, 초기 순서 번호(y)를 선택하여 SYN-ACK 메시지를 클라이언트로 보낸다.
    • 서버: 'SYNbit=1, Seq=y, ACKbit=1, ACKnum=x+1'
    • 클라이언트 상태: SYN_SENT
    • 서버 상태: SYN_RCVD


  1. ACK(Acknowledge)
    • 클라이언트가 서버의 SYN-ACK 메시지를 받고, 이에 대한 ACK를 서버로 보낸다.
    • 클라이언트: 'ACKbit=1, ACKnum=y+1
    • 클라이언트 상태: SYN_SENT->ESTAB
    • 서버 상태: SYN_RCVD -> ESTAB

Closing a TCP Connection

TCP 연결 종료 절차

  1. 양쪽에서 연결 종료 요청
    • 클라이언트와 서버는 각각 연결을 종료하기 위해 FIN 비트가 1로 설정된 TCP 세그먼트를 보낸다.


  1. FIN 수신 시 응답
    • FIN 세그먼트를 받은 쪽은 이를 ACK(승인)하여 응답해야 한다.
    • FIN을 수신하면, ACK 응답을 보낼 수 있으며, 이 ACK 응답은 자신의 FIN 요청과 함께 결합될 수 있다.


3. 동시 FIN 교환 처리 - 클라이언트와 서버가 동시에 FIN 세그먼트를 교환하는 상황도 처리할 수 있다.






Principles of congestion control

Congestion(혼잡)

  • 비공식적으로, 너무 많은 소스가 너무 많은 데이터를 너무 빠르게 보내서 네트워크가 처리하기에 부담스러워하는 것



발생 양상

  • 긴 진연 시간: 라우터 버퍼에 데이터가 줄을 서기에 발생
  • 패킷 손실: 라우터의 버퍼가 오버플로우 되어 패킷이 손실됨



혼잡 제어 vs 흐름 제어

  • 흐름 제어는 하나의 송신자가 하나의 수신자에게 너무 빠르게 데이터를 보내는 상황을 다룸
  • 혼잡 제어는 많은 송신자가 너무 빠르게 데이터를 보내는 상황을 다룸



중요성

  • 혼잡 문제는 네트워크 성능을 저하시킬 수 있는 주요 문제 중 하나로 간주됨(top-10-problem)









Causes/costs of congestion: scenario1

시나리오 개요

  • 이 시나리오는 네트워크 혼잡의 가장 단순한 형태를 설명한다.
    • 한 라우터와 무한 버퍼
    • 입력 및 출력 링크 용량:R
    • 두 개의 흐름이 존재
    • 재전송 필요 없음



네트워크 구성

  • Host A와 Host B는 데이터를 보내고 받은 호스트이다.
  • 라우터는 두 호스트 간의 데이터를 중계한다.
  • 무한 버퍼는 출력 링크에서 사용된다.
  • 입력 데이터 속도(λin): 호스트가 보내는 원래 데이터 속도
  • 출력 데이터 속도(λout: 네트워크를 통해 전달되는 실제 데이터 속도



Q: 도착 속도(λin)가 R/2에 접근하면?









Causes/costs of congestion: scenario2

시나리오 개요

  • 이 시나리오는 네트워크 혼잡의 또 다른 형태를 설명한다
    • 한 라우터와 유한 버퍼
    • 송신자가 분실된 데이터나 타임아웃된 패킷을 재전송함
    • application layer input = application layer output(λin = λout)
    • 전송 계층 입력은 재전송을 포함 (λ'in >= λin)






주요 개념

  • 라우터의 유한 버퍼
    • 버퍼는 제한되어 있기에 패킷이 손실될 수 있다.
    • 버퍼가 가득 차면 새 패킷은 드롭된다.



  • 재전송
    • 패킷은 손실되거나 타임아웃되면 송신자는 이를 재전송한다.
    • 따라서 전송 계층 데이터 속도(λ'in)는 원래 데이터 속도(λin)보다 커질 수 있다.



  • 어플리케이션 레이어와 전송 계층
    • 어플리케이션 레이어 입력과 출력은 동일하다(λin = λout)
    • 전송 계층 입력은 재전송된 데이터를 포함한다.(λ'in >= λin)









이상적인 상황

  • 네트워크 혼잡을 완화하기 위해 송신자가 라우터의 버퍼 상태를 완벽하게 알고 있을 때의 이상적인 상황
  • packet이 라우터에서 버퍼가 가득 차서 손실될 수 있다.
    • 송신자는 패킷이 손실되었음을 알게 되면, 손실된 패킷만 재전송한다.









Realistic scenario: un-needed duplicates

  • 주요 개념
    • 패킷 손실 및 재전송
      • 패킷이 라우터에서 버퍼가 가득 차서 손실될 수 있다.
      • 이로 인해 송신자는 손실된 패킷을 재전송해야한다.
    • 중복된 전송
      • 송신자가 타임아웃으로 인해 패킷을 중복해서 보낼 수 있다.
      • 이 경우, 동일한 패킷이 두 번 전송되고, 둘 다 수신되면 네트워크 자원이 낭비된다.
    • 네트워크 자원의 낭비
      • 불필요한 중복 전송으로 인해 네트워크 용량이 낭비된다.
      • 이는 필요한 패킷과 불필요한 중복 패킷 모두가 전달되어야 하기 때문이다.






  • 네트워크 혼잡으로 인해 발생하는 cost

    • 더 많은 작업(재전송)

      • 설명: 네트워크 혼잡이 발생하면 송신자는 손실된 패킷을 재전송해야 한다. 이로 인해 동일한 수신 속도를 유지하기 위해 더 많은 작업(즉, 재전송)이 필요하다.
      • 결과: 네트워크 리소스의 효율성이 저하되고, 송신자는 더 많은 패킷을 보내야하기에 추가적인 작업 부담이 발생한다.
    • 불필요한 재전송

      • 설명: 혼잡으로 인해 링크가 동일한 패킷의 여러 복사본을 전달하게 된다. 이는 원래 데이터 패킷과 재전송된 패킷이 모두 네트워크를 통해 전달됨을 의미한다.
      • 결과: 이러한 불필요한 재전송은 네트워크의 최대 도달 가능한 처리량을 감소시킨다. 네트워크가 중복된 패킷을 전송하는데 사용되기 때문에, 실제로 유용한 데이터가 전달될 수 있는 용량이 줄어든다.











Causes/costs of congestion: scenario 3

Q. 만일 λin(original data), λ'in(original data, plus retransmitted data)가 증가한다면?



A: 빨간색 데이터 스트림이 증가하면, 상단 라우터의 버퍼가 가득 차게 된다. 이로 인해 Host B에서 전송된 파란색 데이터 패킷이 라우터에 도달했을 때 모두 버려지게 된다. -> throughtput = 0



congestion의 또다른 비용

  • 패킷 손실 시 비용: 패킷이 손실되면, 그 패킷을 위해 사용된 모든 상류 전송 용량과 버퍼링이 낭비된다.









Causes/Costs of congestion: insights

  1. 처리량(throughput)은 용량(capacity)을 초과할 수 없다.
    • 네트워크의 처리량은 그 용량을 초과할 수 없다. 즉, 네트워크가 처리할 수 있는 최대 용량 이상으로 데이터를 보낼 수 없다.






  1. 용량에 근접할수록 지연이 증가한다.
    • 네트워크 용량에 가까워질수록 지연 시간이 증가한다. 이는 라우터와 네트워크 장비에서 패킷이 대기열에 머무르는 시간이 길어지기 때문이다.
    • 그래프에서 볼 수 있듯이, 입력률이 R/2에 도달하면 지연이 급격히 증가한다.






  1. 손실/재전송은 실질 처리량을 감소시킨다.
    • 패킷 손실과 재전송은 네트워크의 실질적인 처리량을 감소시킨다. 데이터가 손실될 때마다 재전송이 필요하고, 이는 네트워크의 효율성을 저하시킨다.
    • 그래프에서 손실이 발생하여 재전송되는 경우 실질 처리량이 감소하는 것을 볼 수 있다.






  1. 불필요한 중복은 실질 처리량을 더 감소시킨다.
    • 필요하지 않은 중복 패킷은 네트워크의 실질적인 처리량을 더욱 감소시킨다. 이는 동일한 패킷이 두 번 이상 전송되면서 발생하는 현상이다.
    • 네트워크가 이러한 중복된 패킷을 처리하는 동안 다른 중요한 데이터 전송이 지연될 수 있다.
    • 그래프에서 중복 패킷이 전송되면서 처리량이 감소하는 것을 볼 수 있다.






  1. downstream에서 손실된 패킷을 위한 upstream 전송 용량/버퍼링 낭비
    • 패킷이 하류에서 손실되면, 그 패킷을 상류에서 전송하기 위해 사용된 모든 용량과 버퍼링이 낭비된다.
    • 이는 네트워크 자원이 비효율적인 사용으로 이어진다.
    • 그래프에서 입력률이 증가함에 따라 처리량이 증가하다가, 일정 시점 이후 급격히 감소하는 것을 볼 수 있다. 이는 상류에서 낭비된 자원 때문이다.









Approaches towards congestion control

End-end congeston control

  • 명시적 네트워크 피트백 없음
    • 네트워크에서 혼잡 상황에 대한 직접적인 피드백을 제공하지 않는다.
    • 네트워크 라우터나 중간 장치가 혼잡 상황을 직접 알리지 않는다.
  • 관찰된 손실 및 지연을 통한 혼잡 추론
    • 네트워크 혼잡은 데이터 손실이나 지연 시간을 통해 추론된다.
    • 패킷 손실이 발생하거나 지연 시간이 증가하면, 송신자는 네트워크가 혼잡하다고 판단한다.
  • TCP의 접근 방식
    • TCP(Transmission Control Protocol)는 이러한 방식으로 혼잡 제어를 수행한다.
    • TCP는 데이터 전송 중 발생하는 손실이나 지연 시간을 관찰하여 혼잡 상황을 추론하고, 이에 따라 데이터 전송 속도를 조절한다









Network-assistsed congestion control:

  • 라우터의 직접 피드백
    • 라우터는 혼잡한 경로를 통해 흐르는 송신/수신 호스트에 직접 피드백을 제공한다.
    • 혼잡 상태를 실시간으로 감지하고, 이에 대한 정보를 송신자와 수신자에게 전달하다.



  • 혼잡 수준 또는 전송 속도 설정
    • 피드백은 네트워크의 혼잡 수준을 나타내거나. 명시적으로 송신 속도를 설정할 수 있다.
    • e.g. 혼잡 정도를 표시하여 송신자가 전송 속도를 줄이도록 유도하거나, 특정 전송 속도를 제안할 수 있다.



  • 혼잡 제어 프로토콜
    • 다양한 혼잡 제어 프로토콜이 네트워크 지원 혼잡 제어를 수행한다.
    • TCP ECN(Explicit Congeston Notification): TCP에서 혼잡 상황을 명시적으로 알리는 방식
    • ATM(Asynchronous Transfer Mode): 비동기 전송 모드에서 혼잡 제어를 수행하는 방식
    • DECbit: 라우터가 패킷 헤더의 비트를 설정하여 혼잡 정보를 전달하는 방식









TCP congestion control

TCP congestion control: AIMD

AIMD(Additive Increase, Multiplicatvie Decrease) 접근 방식

  • 송신자는 패킷 손실(혼잡)이 발생할 때까지 전송 속도를 증가시킬 수 있으며, 손실 이벤트가 발생하면 전송 속도를 감소시킨다.


  1. Additive Increase(AI)

    • 증가: 각 RTT(왕복 시간)마다 전송 속도를 1MSS(최대 세그먼트 크기)만큼 증가시킨다.
    • 목표: 손실이 발생할 때까지 전송 속도를 점진적으로 증가시켜 가능한 최대 대역폭을 찾는 것이다.

  2. Multiplicative Decrease(MD)

    • 감소: 손실 이벤트가 발생하면 전송 속도를 절반으로 줄인다.
    • 목표: 네트워크 혼잡을 신속히 완화하고, 손실 이벤트 후에도 신속히 회복할 수 있도록 한다.






TCP AIMD: more

Multiplicative Decrease(다중 감소) 세부 사항

  • 손실이 감지되었을 때 전송 속도 절반 감소
    • 세 배의 중복 ACK(TCP Reno): 손실이 세 배의 중복 ACK으로 감지될 때 전송 속도를 절반으로 감소시킨다.
    • 타임아웃으로 손실 감지 시(TCP Tahoe): 타임아웃으로 손실이 감지될 때 전송 속도를 1MSS(최대 세그먼트 크기)로 감소시킨다.


왜 AIMD인가

  • AIMD는 분산되고 비동기적인 알고리즘으로, 다음과 같은 이유로 사용된다.
    • 네트워크 전체에서 혼잡한 흐름 속도 최적화
      • 네트워크의 혼잡 상태를 효과적으로 관리하고 최적의 데이터 흐름을 유지한다.
    • 바람직한 안정성 특성
      • 안정적이고 예측 가능한 성능을 제공하며, 네트워크의 안정성을 보장한다.





TCP congestion control: details

TCP 전송 동작

  • cwnd 크기만큼 바이트를 전송하고, ACK를 받기 위해 RTT만큼 대기한 후, 추가 바이트를 전송한다.
  • 전송 속도: TCP rate ≈ cwnd/ RTT(bytes/sec)




TCP 전송 제약

  • TCP 전송자는 전송을 제한한다.
    • LastByteSent - LastByteAcked <= cwnd
  • cwnd는 네트워크 혼잡 상태를 관찰하여 동적으로 조정된다.(TCP 혼잡 제어를 구현함)






TCP slow start

TCP 느린 시작은 연결이 시작될 때 전송 속도를 기하급수적으로 증가시키는 알고리즘이다. 이는 초기 전송 속도를 천천히 증가시켜 혼잡을 방지하는 데 도움을 준다.



동작 원리

  • 초기 값: 처음에는 혼잡 윈도우(cwnd)가 1MSS(Maximum Segment Size)로 설정된다.
  • 속도 증가:
    • 매 RTT(Round-Trip-Time)마다 cwnd가 두 배로 증가시킨다.
    • 각 ACK를 받을 때마다 cwnd를 증가시켜 전송 속도를 높인다


요약

  • 초기 전송 속도는 느리지만, ACK를 받을 때마다 cwnd를 증가시키므로 전송 속도가 기하급수적으로 빠르게 증가한다.





TCP: from slow start to congestion avoidance

Q. 지수 증가(exponnential increase)에서 선형 증가(linear increase)로 언제 바뀌는가?
A: 'cwnd(혼잡 윈도우 크기)'가 타임아웃 전에 최대값의 절반에 도달했을 때

구현 세부사항

  • 변수 ssthresh
    • ssthresh는 혼잡 회피를 위해 설정되는 임계값
    • 패킷 손실 이벤트 발생 시, ssthread는 손실 이벤트 직전의 cwnd 값의 절반으로 설정된다.





Summary : TCP congestion control






TCP CUBIC

TCP CUBIC은 AIMD(가산적 증가, 곱셈적 감소) 방식보다 더 나은 대역폭을 탐색하는 방법을 제시한다.

Wmax

  • Wmax는 혼잡 손실이 감지된 전송 속도를 의미한다.
  • 병목 링크의 혼잡 상태는 아마도 많이 변하지 않았을 가능성이 크다.


새로운 접근 방식

  • 손실 발생 후 전송률/윈도우를 반으로 줄인 후, 처음에는 Wmax 까지 빠르게 램프업하지만, 이후에는 더 천천히 Wmax 에 접근한다.





TCP CUBIC은 AIMD보다 효율적으로 대역폭을 사용할 수 있는 알고리즘이다.

  • K
    • K는 TCP 윈도우 크기가 Wmax에 도달하는 시점을 나타낸다.
    • K 자체는 튜닝이 가능하다.
  • 증가 방식
    • W(윈도우 크기)는 현재 시간과 K 사이의 거리를 큐브 함수로 증가시킨다.
    • K에서 멀리 떨어져 있을 때는 더 큰 증가
    • K에 가까울 때는 더 작은 증가(신중한 증가)
  • TCP CUBIC의 장점
    • TCP CUBIC은 리눅스의 기본 설정이며, 인기 있는 웹 서버에서 가장 많이 사용되는 TCP이다.








TCP and the congested "bottlenet link"

  • TCP(classic, CUBIC): 두 가지 버전의 TCP 모두 패킷 손실이 발생할 때까지 전송 속도를 증가시킨다. 이 패킷 손실은 라우터의 출력에서 발생하며, 이를 "bottleneck link" 라고 한다.




  • 혼잡 이해(understanding congestion): 혼잡을 이해하려면 혼잡한 병목 링크에 집중하는 것이 유용하다.

  • insight: TCP 전송 속도를 증가시키면, 측정된 RTT(왕복 시간)가 증가하지만, 혼잡한 병목 링크에서는 종단 간 처리량이 증가하지 않는다.

  • goal: 종단 간 파이프를 "가득 채우되 더 가득 차지 않게" 유지하는 것이다. 이는 TCP 전송 속도가 병목 링크의 처리 용량을 초과하지 않도록 조절해야 한다는 의미이다.





Delay-based TCP congestion control

Delay-based TCP 혼잡 제어는 송신자와 수신자 간의 파이프를 "충분히 채우지만 더 많이 채우지 않기" 위해 병목 링크를 바쁘게 유지하면서 높은 지연과 버퍼링을 피하려고 한다. 이는 네트워크 경로의 혼잡 상태를 RTT(왕복 시간)를 통해 감지하고 제어하는 방식이다.

  1. RTTmeasured(측정된 RTT)

    • 현재 네트워크 경로의 왕복 시간을 측정한다.
  2. RTTmin(최소 RTT)

    • 혼잡하지 않은 경로에서 관찰된 최소 RTT이다. 이를 기준으로 혼잡하지 않은 상태를 판단한다.
  3. measured throughtput(측정된 처리량)

    • 최근 RTT 간격 동안 전송된 바이트 수를 측정된 RTT로 나눈 값이다.
  4. cwnd(혼잡 창)

    • 송신자가 네트워크 경로에 한 번에 보낼 수 있는 데이터 양을 제어하는 윈도우 크기이다. 혼잡 제어의 주요 변수이다.




지연 기반 접근 방식(Delay-based Approach)

  • 네트워크 혼잡을 유도하거나 강제적으로 패킷 손실을 일으키지 않고도 혼잡을 제어하는 방법이다.
  • RTTmin: 혼잡하지 않은 경로에서의 최소 RTT이다. 이는 네트워크의 최소 지연을 나타내며, 혼잡하지 않은 상태를 기준으로 삼는다.
  • 혼잡하지 않은 처리랑(uncongested throughtput):
    • 혼잡 창을 기준으로 한 혼잡하지 않은 상태의 처리량은 'cwnd / RTTmin' 으로 계산된다.




알고리즘

  • 측정된 처리량이 혼잡하지 않은 처리량에 "매우 가까운" 경우
    • 경로가 혼잡하지 않다고 판단하고 cwnd를 선형적으로 증가 시킨다.
  • 측정된 처리량이 혼잡하지 않은 처리량에 "훨씬 미치지 못하는" 경우
    • 경로가 혼잡하다고 판단하고 cwnd를 선형적으로 감소시킨다.








주요 포인트

  1. 혼잡 제어 without inducing/forcing loss
    • 패킷 손실을 유도하거나 강제하지 않고도 혼잡을 제어할 수 있다.
  2. Maximizing throughtput while keeping delay low
    • 네트워크 경로의 파이프를 충분히 채우지만 더 많이 채우지 않기 위해 최대 처리량을 유지한다.
    • 이는 지연을 낮게 유지하는 동시에 처리량을 최대로 유지하려는 것이다.
  3. 다수의 지연 기반 접근 방식을 사용하는 TCP
    • 여러 배포된 TCP가 지연 기반 접근 방식을 채택하고 있다.
    • 예를 들어, Google's 내부 백본 네트워크에서 배포된 BBR(Bottleneck Bandwidth and RTT) 혼잡 제어 알고리즘이 있다.








Explicit congeston notification(ECN)

Explicit Congestion Notification(ECN)은 TCP 네트워크에서 혼잡을 통지하는 네트워크 보조 혼잡 제어 메커니즘이다. 이를 통해 네트워크는 혼잡을 감지하고 이를 발신자에게 알릴 수 있다.

주요 포인트

  1. 네트워크-보조 혼잡 제어
    • 네트워크 라우터는 IP 헤더의 두 비트(ToS 필드)를 사용하여 혼잡을 표시한다.
    • 혼잡 표시를 위해 네트워크 운영자가 선택한 정책을 사용한다.

  1. 혼잡 지시
    • 혼잡 지시는 목적지로 전달된다.
    • 목적지는 ACK 세그먼트에서 ECE 비트를 설정하여 송신자에게 혼잡을 알린다.

  1. IP 및 TCP에서의 ECN 사용
    • IP 헤더의 ECN 비트 마킹과 TCP 헤더의 C, E 비트 마킹을 사용한다.

'학교수업 > 컴퓨터망' 카테고리의 다른 글

Chapter5 Network Layer: Control Plane  (0) 2024.07.09
Chapter4: Network Layer-Data Plane  (0) 2024.07.04
Chapter3: Transport Layer  (0) 2024.07.03
Chapter2: Application Layer-2  (0) 2024.07.03
Chapter2: Application Layer  (0) 2024.07.01

+ Recent posts