본문 바로가기
컴퓨터 네트워크

컴퓨터 네트워크 19장 - 네트워크 계층의 기능 -

by ChocoPeanut 2017. 4. 23.

컴퓨터 네트워크 19

- 네트워크 계층의 기능 -

 

네트워크 계층의 기본 기능으로는 라우팅이라고 할 수 있다. 라우팅은 송수신 호스트 사이의 패킷 전달 경로를 선택하는 역할을 한다. 라우팅 과정 중에 수반되는 기능으로는 혼잡 제어나 패킷 분할/병합이 있을 수 있다. 라우팅을 위해서 라우팅 테이블을 가지고 있는데 네트워크 구성 형태에 관한 정보를 관리하는 공간이다

혼잡이라고 하는 것은 네트워크에 패킷 수가 과도하게 증가되는 현상으로 혼잡의 발생을 예방하거나 제거하는 기능을 혼잡 제어가 필요하다. 패킷의 분할과 병합은 상위 계층에서 내려온 데이터를 하위 계층인 MAC 계층의 프레임 구조에 정의된 형식으로 캡슐화 할 때 사용되는 기능이다. 송신 호스트에서 전송 전에 적절한 크기로 데이터를 분할하고 수신 호스트는 분할되어 수신한 데이터를 다시 병합한다.


네트워크 계층에서 제공하는 서비스는 연결형 서비스 비연결형 서비스로 나누어 질 수 있다. 연결형 서비스는 데이터 전송 전에 데이터의 전송 경로를 미리 결정하는 것이고 비연결형 서비스는 데이터의 전송 경로를 사전에 결정하지 않고 패킷 단위로 결정하는 것을 나타낸다. 비연결형 서비스는 패킷이 서로 다른 경로로 전송되므로 도착순서가 일정하지 않다. 따라서 상위 계층에서 순서를 재조정해야한다. 패킷 분실 가능성도 존재한다. 연결 경로가 정해져 있지 않으므로 상위 계층에서 패킷 분실 오류를 복구하는 기능이 필요하다. IPUDP가 대표적 예시이다. 연결형 서비스는 비연결형 서비스보다 신뢰성이 높다. 미리 경로가 설정되어 있으므로 패킷의 도착순서가 일정하다. TCP가 대표적인 예시가 되는데 전송 계층의 기능을 지원하는 연결형 프로토콜이다.



라우팅은 패킷의 전송 경로를 지정하는 행위이다. 전송 경로를 결정할 시에 공평 원칙효율 원칙을 만족시켜야한다. 다른 패킷의 우선 처리를 위해 다른 패킷이 손해를 보면 안 된다는 것이 공평 원칙이고 패킷의 평균지연시간이나 중간에 거쳐 가는 라우터의 수 등등 전체 네트워크의 효율성에 대해 고려한 것이 효율 원칙이다.


라우팅은 정적 라우팅동적 라우팅으로 나누어 질 수 있다. 정적 라우팅은 패킷 전송이 이루어지기 전에 경로 정보를 라우터가 미리 저장하여 중개하는 것을 말한다. 최적의 라우팅 정보를 개별 라우터에 저장하여 관리를 할 필요가 있다. 단점으로는 경로 정보의 갱신이 어려우므로, 네트워크 변화나 혼잡에 대처하기 힘들다는 점이 있다. 동적 라우팅은 라우터의 경로 정보를 네트워크 상황에 따라 적절하게 변경이 가능한 라우팅이다. 경로 정보 변경 주기에 따라 보완이 가능하다는 장점이 있지만 이로 인해 복잡한 작업이 추가되고 경로 정보의 수집과 관리로 인한 성능 저하가 발생할 수 있다.


라우팅에서 쓰는 패킷으로 HELLO 패킷과 ECHO 패킷이 있다. HELLO 패킷은 주변 라우터에 HELLO 패킷을 보내어 주변 경로 정보를 파악하는 용도로 사용된다. 이런 정보는 라우터의 초기화 과정에서 이웃한 라우터를 초기화하기 위해 사용된다. ECHO 패킷은 라우터 사이의 전송 지연 시간을 측정하는 용도로 사용된다. ECHO 패킷을 수신한 호스트는 송신 호스트에 즉각 회신하도록 설계되어 있어 전송 지연 시간을 유추할 수 있다. 하지만 개별 라우터에 도착하는 시간 차이로 인해 정보 불일치가 발생 가능성이 있다.


라우팅 테이블은 라우터가 패킷의 적절한 경로를 찾기 위한 가장 기본적인 도구이다. 목적지 호스트와 다음 홉에 대한 정보를 가지고 있다. 목적지 호스트는 패킷의 최종 목적지가 되는 호스트의 주소를 의미하고 다음 홉은 목적지 호스트까지 패킷을 전달하기 위한 인접 경로를 의미한다.


라우팅을 처리하는 방법으로 여러 가지가 있다.


먼저 소스 라우팅은 송신 호스트가 패킷의 전달 경로를 결정하는 방식으로 전송 경로는 전송 패킷 내부에 기록된다.


산 라우팅은 라우팅 정보를 분산하여 관리하는 방식으로 호스트의 개수가 많아질수록 효과적이다.


중앙 라우팅은 특정 호스트(RCC: Routing Control Center)가 모든 라우팅 정보를 관리하는 방식이다. 송신 호스트는 패킷 전송 전에 RCC에게 경로 정보를 얻어서 소스 라우팅으로 전송한다. 호스트 개수가 많아질수록 RCC에 부하가 걸릴 수 있으므로 비효율적이라고 할 수 있다.


계층 라우팅은 분산 라우팅과 중앙 라우팅의 조합으로 특정 부분들을 나누어 처리하는 방식이다. 네트워크 규모가 커질수록 매우 효과적이다.

 

혼잡 제어와 흐름 제어를 비교해보면 흐름 제어는 송수신 호스트 사이의 전송 속도 문제를 처리하는 방법이고 혼잡 제어는 네트워크에서의 전송 능력 문제를 해결하는 방법이다. 따라서 흐름 제어는 끝과 끝 호스트 사이의 문제가 되겠고 혼잡 제어는 호스트와 흐스트 사이의 모든 망 안에서의 문제가 될 수 있다.



혼잡의 원인으로 타임아웃 기능에 의한 패킷의 재전송이 될 수 있다. 초기 혼잡 과정에서 타임아웃 시간이 작으면 혼잡도가 급격히 증가한다. 패킷 도착순서가 다른 상황에서 패킷을 분실 처리하면 타임아웃이 증가해서 혼잡이 증가할 수밖에 없다. 의도적으로 피기배킹을 사용하면 응답 시간이 느려져 타임아웃이 증가한다. 패킷 생존 시간을 작게 하면 패킷이 강제로 제거되어 타임아웃이 증가할 수도 있다.


라우팅 알고리즘은 혼잡이 발생하지 않는 경로를 배정하도록 설계해야한다. 혼잡이 발생하는 경로를 선택하게 되면 혼잡이 주변으로 확대될 수 있다.

혼잡 제어에서 트레픽 성형이라는 것이 있는데 패킷 발생 정도를 네트워크에서 예측 가능한 정도로 조절하는 것을 의미한다. 혼잡의 발생은 트레픽이 특정 시간에 집중되는 버스트 현상으로 발생을 하는 경우가 많으므로 이를 조절하는 것이 필요하다. 이러한 트레픽 성형을 해주는 알고리즘이 바로 리키 버킷 알고리즘이다. 깔대기라는 버퍼를 사용하여 송신 호스트에서 나오는 데이터의 가변율을 고정율로 협상하여 일정한 전송률을 가지게 만들어 트레픽을 줄이는 알고리즘이다.



혼잡 제거는 특정 지역의 혼잡이 다른 지역으로 확대되지 않도록 하는 작용이다. 혼잡 제거를 위한 방식으로 자원 예약 방식과 ECN 패킷 방식이 존재한다. 자원 예약 방식은 호스트와 서브넷이 미리 네트워크 자원의 사용 정도를 협상하여 사전 예약하는 것을 의미한다. 하지만 이런 점은 자원이 낭비가 될 가능성이 존재한다. ECN 패킷 방식은 출력 경로를 사용하는 빈도를 모니터하여 한계치가 넘어가면 송신 호스트에게 주의 표시를 보내준다. ECN 패킷을 받은 호스트는 ECN 패킷이 더 이상 오지 않을 때까지 송신 패킷 양을 줄인다.