K 개발자

네트워크 계층의 기능 본문

OS/네트워크

네트워크 계층의 기능

ddingz 2021. 7. 30. 22:47

연결형 서비스와 비연결형 서비스

연결형·비연결형 서비스

네트워크 계층이 전송 계층에 제공하는 서비스는 크게 두 가지이다.
패킷을 전송하기 전에 송수신 호스트 사이에 연결을 설정하는 연결형 서비스와 연결 설정 없이 데이터를 패킷 단위로 전송하는 비연결형 서비스이다.

비연결형 서비스

비연결형 서비스Connectionless Service는 패킷의 전달 순서, 패킷 분실 여부 등에서 연결형 서비스보다 신뢰성이 떨어지는 전송 방식이다.
따라서 전송 계층에서 네트워크 계층의 비연결형 서비스를 이용할 때는 연결형 서비스를 이용하는 경우보다 자체적으로 오류 제어와 흐름 제어 기능을 더 많이 수행해야 한다.
비연결형 서비스를 이용해 패킷을 전송하면 패킷이 서로 다른 경로를 통해 목적지 호스트로 전달되기 때문에 패킷이 도착하는 순서가 일정하지 않을 수 있다.
따라서 상위 계층인 전송 계층은 수신한 패킷의 순서를 재조정하는 기능이 필요하다.

연결형 서비스

연결형 서비스Connection-oriented Service는 상대적으로 신뢰성이 높은 서비스로, 패킷을 전송하기 전에 연결을 미리 설정하여 송신하는 방식이다.
비연결형 서비스와 달리 전달되는 패킷들이 모두 동일한 경로를 이용하기 때문에 목적지에 도착하는 패킷의 순서가 송신된 순서와 동일하다는 특성이 있다.


라우팅

패킷의 전송 경로를 지정하는 라우팅Routing은 네트워크 계층의 가장 중요한 역할이다.
라우팅은 들어온 패킷을 어느 출력 경로를 통해 다음 호스트로 전달해야 가장 효과적인지 결정하는 것이다.

정적·동적 라우팅

  • 정적 라우팅
    정적 라우팅Static Routing은 송수신 호스트 사이에서 패킷 전송이 이루어지기 전에 경로 정보를 라우터에 미리 저장하여 중개하는 방식이다. 패킷을 중개하기 위한 최적의 경로 정보는 라우터별로 저장하여 관리하는데, 운용 중인 네트워크의 구성에 변화가 생기면 이에 적절하게 대처할 수 없다는 문제점이 있다. 즉, 라우터에 보관된 경로 정보가 고정되어 변화된 정보를 갱신하기가 쉽지 않으며, 특히 네트워크 내부의 혼잡도를 반영할 수 없다는 단점이 있다.
  • 동적 라우팅
    동적 라우팅Dynamic Routing은 라우터에서 사용하는 경로 정보를 네트워크 상황에 따라 적절하게 변경하는 방식으로, 경로 정보의 변경 주기에 따라 계속 보완할 수 있다. 따라서 현재의 네트워크 상황을 고려해 최적의 경로 정보를 선택할 수 있지만, 경로 정보를 수집하고 관리하는 등의 복잡한 작업이 추가로 필요하다. 이는 네트워크에 새로운 부하를 가해 성능에 부정적인 영향을 미친다.

HELLO/ECHO 패킷

라우터의 초기화 과정에서 가장 먼저 할 일은 이웃 라우터의 경로 정보를 파악하는 것이다.
각 라우터는 이웃에 연결된 라우터에 초기화를 위한 HELLO 패킷을 전송해 경로 정보를 얻는다.

라우터 사이의 전송 지연 시간을 측정하기 위해서 ECHO 패킷을 전송하는데, ECHO 패킷을 수신한 호스트는 송신 호스트에 즉각 회신하도록 설계되어 있다.
이런 과정을 반복하고, 측정값의 평균을 구해 해당 라우터까지의 전송 지연 시간을 유추할 수 있다.
지연 시간을 측정하는 과정에서 측정 시점의 네트워크 트래픽 정도에 따라 결과가 달라질 수 있기 때문에 측정 오차의 차이를 어떻게 해석할지는 신중히 판단해야 한다.

라우팅 테이블

라우팅 테이블

패킷 전송 과정에서 라우터들이 적절한 경로를 쉽게 찾도록 하기 위한 가장 기본적인 도구로 라우팅 테이블Routing Table을 사용한다.
라우팅 테이블에 포함해야 하는 필수 정보는 (목적지 호스트, 다음 홉)의 조합이다.
'목적지 호스트'에는 패킷의 최종 목적지가 되는 호스트의 주소 값을, '다음 홉'에는 목적지 호스트까지 패킷을 전달하기 위한 이웃 라우터를 지정한다.
즉, 목적지까지 도달하는 여러 경로 중에서 효과적인 라우팅을 지원하는 경로가 있을 수 있는데, 이 경로에서 바로 다음 홉Hop에 위치한 라우터의 주소를 기록한다.

라우팅 정보의 처리

  • 소스 라우팅
    패킷을 전송하는 호스트가 목적지 호스트까지 전달 경로를 스스로 결정하는 방식을 소스 라우팅Source Routing이라 한다. 소스 라우팅을 지원하려면 송신 호스트의 라우팅 테이블에서 패킷을 수신 호스트까지 전달하기 위한 경로 정보를 관리해야 하며, 이러한 경로 정보를 전송 패킷에 기록해야 한다. 중간 라우터에서는 전송 패킷에 포함된 경로 정보를 이용해 패킷을 중개함으로써 최종 목적지까지 올바르게 전달할 수 있다. 소스 라우팅 방식은 모든 라우팅 정보를 송신 호스트가 관리하므로 중간에 있는 라우터들은 라우팅 테이블을 따로 관리할 필요가 없다.
  • 분산 라우팅
    분산 라우팅Distributed Routing은 라우팅 정보가 분산되는 방식으로 패킷의 전송 경로에 위치한 각 라우터가 효율적인 경로 선택에 참여한다. 이 방식의 장점은 네트워크에 존재하는 호스트의 수가 많아질수록 다른 방식보다 효과적일 수 있다는 것이다. 라우터가 관리하는 경로 정보는 다음 경로를 선택하기 위한 내용을 포함하는데, 네트워크 상황에 따라 적절히 변경하는 동적 특징이 있다.
  • 중앙 라우팅
    중앙 라우팅Centralized Routing은 RCCRouting Control Center라는 특별한 호스트를 사용해 전송 경로에 관한 모든 정보를 관리하는 방식이다. 패킷 전송을 원하는 송신 호스트는 반드시 RCC로부터 목적지 호스트까지 도착하기 위한 경로 정보를 미리 얻어야 한다. 이 정보를 이용해 송신 호스트는 소스 라우팅과 동일한 원리로 패킷을 전송한다. 중앙 라우팅의 장점은 경로 정보를 특정 호스트가 관리하기 때문에 다른 일반 호스트가 경로 정보를 관리하는 부담을 줄일 수 있다는 것이다. 그러나 네트워크의 규모가 커짐에 따라 RCC에 과중한 트래픽을 주어 전체 효율이 떨어질 수 있다는 단점이 있다.
  • 계층 라우팅
    계층 라우팅Hierarchical Routing은 분산 라우팅 기능과 중앙 라우팅 기능을 적절히 조합하는 방식으로, 전체 네트워크의 구성을 계층 구조 형태로 관리한다. 일반적으로 네트워크 규모가 계속 커지는 환경에 효과적이다.

혼잡 제어

흐름 제어와 혼잡 제어

네트워크에 존재하는 전송 패킷의 수가 많아질수록 네트워크의 성능은 자연스럽게 감소한다.
이와 같은 성능 감소 현상이 급격하게 악화되는 현상을 혼잡Congestion이라 하고, 혼잡 문제를 해결하기 위한 방안을 혼잡 제어Congestion Control라 한다.
흐름 제어Flow Control는 송신 호스트와 수신 호스트 사이의 논리적인 점대점 전송 속도를 다루지만 혼잡 제어는 더 넓은 관점에서 호스트와 라우터를 포함한 서브넷에서 네트워크의 전송 능력 문제를 다룬다.

혼잡의 원인

혼잡이 일어나는 주요인은 전송 시간 초과에 의한 타임아웃Timeout 기능을 통해 패킷들이 재전송되는 데 있다.
특히 혼잡 초기에 패킷의 전송 지연이 점점 증가할 때, 타임아웃 값이 너무 작으면 혼잡도가 급격히 증가할 우려가 있다.
따라서 네트워크에 혼잡 징후가 보이면 이를 감지해 타임아웃 시간을 늘리는 방안이 필요하다.

패킷의 도착 순서가 뒤바뀌면 수신 호스트는 패킷을 보관하거나 그냥 버릴 수도 있다.
그런데 패킷을 버리면 패킷 재전송 현상이 발생해 네트워크 혼잡도를 높이는 원인이 된다.

패킷이 제대로 수신되었는지를 송신 호스트에 알려주는 응답 알고리즘도 혼잡에 영향을 준다.
즉, 수신한 패킷들에 대해 즉시 응답하는 방식을 사용하면 수신 패킷 모두에 대하여 개별 응답 패킷이 발생한다.
따라서 패킷 여러 개를 모아 하나의 응답으로 처리하는 방식이나 피기배킹Piggybacking을 사용하는 방식과 비교하면 혼잡도에 미치는 영향이 다르다.
그렇지만 피기배킹 방식을 사용하는 응답 방식은 혼잡이 발생했을 때 송신 호스트의 타임아웃 기능을 통한 재전송을 유발하여 혼잡을 오히려 가중시킬 우려도 있다.

라우팅 알고리즘도 혼잡에 영향을 미칠 수 있다.
예를 들어, 혼잡이 발생되고 있는 경로보다는 전송 트래픽이 적은 경로를 찾아 패킷을 전송하면 혼잡도를 줄일 수 있다.

패킷별로 네트워크에 존재할 수 있는 일정한 생존 시간을 지정해 이 시간을 초과하지 않도록 설계하는 것이 일반적이다.
수신 호스트에 도착할 가능성이 희박한 패킷의 생존 시간을 너무 크게 설정하면 네트워크에 불필요한 부하를 주는 문제점이 있고, 너무 작게 설정하면 수신 호스트에 도달하기도 전에 패킷을 강제로 제거하여 타임아웃을 통한 재전송이 발생할 수 있다.

트래픽 성형

혼잡은 트래픽이 특정 시간에 집중되는 버스트Burst 현상에서 기인하는 경우가 많다.
즉, 송신 호스트에서 전송하는 패킷의 양이 시간대별로 일정하게 발생하는 경우보다 패킷이 짧은 시간 동안 많이 발생하는 경우에 혼잡이 일어날 확률이 높다.
따라서 송신 호스트가 전송하는 패킷의 발생 빈도가 네트워크에서 예측할 수 있는 전송률로 이루어지게 하는 기능이 필요한데, 이를 트래픽 성형Traffic Shaping이라 한다.

리키 버킷 알고리즘

트래픽 성형과 관련된 알고리즘 중에서 유명한 것이 리키 버킷Leaky Bucket이다.
리키 버킷 알고리즘을 사용하면 송신 호스트로부터 입력되는 패킷이 시간대별로 일정하지 않아도, 즉 가변적이어도 일정한 전송률로 변경된다.

혼잡 제거

가상 회선 방식을 사용하는 서브넷Subnet에서 혼잡을 감지했을 때 이를 완화하는 가장 간단한 방법 중 하나는 혼잡이 사라질 때까지 연결 설정을 허락하지 않는 것이다.
그러나 실제 네트워크에서는 전체보다 일부 지점에서 혼잡이 발생하는 경우가 많다.
따라서 특정 지역에 혼잡이 발생하면 패킷의 전송 경로를 적절히 조정해줌으로써 혼잡이 발생한 곳을 거치지 않도록 가상 회선 연결을 설정하는 방안이 필요하다.

혼잡을 처리하는 또 다른 방식은 호스트와 서브넷이 가상 회선 연결 과정에서 협상하는 것이다.
즉, 전송 과정에서 사용하는 대역을 미리 할당받음으로써, 네트워크에서 수용 불가능한 정도로 트래픽이 발생하는 일을 사전에 예방하는 것이다.
이 방식의 문제점은 개별 연결이 예약한 전송 대역을 해당 사용자가 이용하지 않더라도 다른 사용자가 이용하지 못한다는 점이다.
따라서 이러한 자원 예약Resource Reservation 방식은 통신 자원을 낭비할 염려가 있다.

ECN 패킷

혼잡 처리와 관련된 또 다른 방식은 ECNExplicit Congestion Notification 패킷을 사용하는 것이다.
혼잡 지역에 위치한 라우터는 입력 선로로 들어온 패킷이 주의 표시된 출력 선로로 라우팅 되는 경우에 패킷의 송신 호스트에 ECN 패킷을 전송한다.
ECN 패킷을 수신한 송신 호스트는 데이터 패킷이 전송되는 경로에서 혼잡이 발생할 가능성이 있음을 인지하였으므로 전송 패킷의 양을 줄인다.

'OS > 네트워크' 카테고리의 다른 글

IP 프로토콜  (1) 2021.07.31
라우팅 프로토콜  (0) 2021.07.31
HDLC 프로토콜  (0) 2021.07.30
슬라이딩 윈도우 프로토콜  (0) 2021.07.30
데이터 링크 계층 프로토콜의 기초  (0) 2021.07.29
Comments