네트워크 코어는 router 들 간의 연결된 집합이며, end system(host)를 연결해주는 역할을 한다. end system들은 네트워크 코어를 통해서 메시지를 주고 받을 수 있다.
그렇다면 네트워크 코어에서는 어떻게 데이터를 전송할까?
네트워크 코어에서 데이터를 전송하는 방법은 두 가지가 있다.
바로, 패킷 교환 방식(Packet Switching)과 패킷 교환 방식(Packet Switching)이다.
송신 종단 시스템에서 목적기 종단 시스템으로 메시지를 보내기 위해, 송신 시스템은 긴 메시지를 packet(패킷)이라고 하는 작은 데이터 단위로 분할한다.
이처럼 Packet Switching은 데이터를 패킷(packet)이라는 단위로 쪼개서 전송하는 방식이다.
각 패킷은 통신 링크와 패킷 스위치를 거치게 된다.
패킷은 링크의 최대 전송속도와 같은 속도로 통신 링크상에서 전송된다. 따라서 패킷 스위치가 R bits/sec의 속도로 링크상에서 L bits 패킷을 송신한다면, 그 패킷을 전송하는데 걸리는 시간은 L/R이다.
Q : 그럼 긴 메시지를 작은 패킷으로 분할하는데, 송신 시스템에서 통신 링크로 패킷을 내보낼 때는 전체 패킷을 한꺼번에 보내는 것인가?
A : 송신 시스템에서 통신 링크로 패킷을 보내는 데 걸리는 시간은 출력 버퍼의 용량, 출력 링크의 전송 속도, 패킷의 길이에 따라 다르다.
따라서 전송 시간을 단축시킬 수 있으며 전송 지연 또한 감소시킬 수 있다.
하지만, 묶음 전송을 하면 패킷 손실이 발생할 경우 전체 묶음이 손실될 가능성이 있기 떄문에 주의가 필요하다.
여기서 내가 의문점이 든 이유는 다음과 같다.
3개의 패킷을 보내는 데 각각의 패킷이 L bit인데 라우터가 전체 패킷을 받았을 때 시간이 L/R 밖에 되지 않는 것일까? 이는 1개의 패킷을 받을 때까지의 시간이 아닌가? 라는 의문이 들었다.
의문 해결은 다음과 같이 되었다.
위 예에서는 출력 버퍼의 용량이 충분하다는 가정하에 진행된 것 같다.
그렇기 때문에 패킷을 출력 링크로 바로 내보낼 수 있다.
따라서 3개의 패킷을 묶음 전송할 수 있기 떄문에 L/R 시간이 걸린 것이다.
하지만, 버퍼의 용량이 충분하지 않다면 어떨까?(한 번에 L 비트의 패킷만 출력링크로 보낼 수 있는 상황)
이 경우에는 출력 버퍼에 있는 각각의 패킷을 출력 링크로 내보내는 데 걸리는 시간을 계산해야한다.
따라서 각 패킷의 길이가 L bit 이고, 출력 링크의 전송 속도가 R이라면,출력 버퍼에서 출력 링크로 모든 버퍼를 내보내는 데 걸리는 시간은 3L/R 이다.
패킷은 다음 링크로 전송하기 전에 저장 한 뒤 전달하는 Store and Forward 방식을 따른다.
따라서 스위치가 출력 링크로 패킷의 첫 비트를 전송하기 전에 전체 패킷을 받아야 한다.
송신 시스템은 수신 시스템으로 전송할 3개의 패킷을 가지고 있으며, 각각의 L 비트로 구성된다.
송신 시스템은 패킷 1을 전송하였고, 패킷1이 이미 라우터에 도착하였다.
하지만, 라우터는 store and forward 방식을 채택하고 있기 떄문에, 패킷1(이미 도착한 패킷)을 출력 링크로 전송할 수 없다.
일부 패킷은 저장(store)한 후, 라우터가 패킷의 모든 비트를 수신한 후에만 출력 링크로 그 패킷을 전송(forward)한다.
우선 전파지연(두 라우터 사이의 거리를 전파 속도로 나눈 값)은 무시한다.
송신 시스템은 시간 0에 패킷을 전송한다. L/R 초 시간에 송신 시스템은 전체 패킷을 전송하였고, 전체 패킷이 라우터에 수신되고 저장되었다. (전파 지연이 없기 때문에 라우터 사이의 패킷 이동 시간은 제외한다.) L/R 초 시간에 라우터가 전체 패킷을 수신했기 때문에 라우터는 수신 시스템을 향해 출력 링크로 패킷을 전송한다. 따라서 2L/R 초 후에 수신 시스템은 전체 패킷을 수신할 수 있다.
패킷 스위치는 출력 버퍼(출력 큐)를 가지고 있으며, 출력 링크로 송신하려고 하는 패킷을 저장하고 있다.
송신 시스템에서 도착한 패킷이 특정 링크로 전송될 필요가 잇는데 그 링크가 다른 패킷을 전송하고 있다면, 도착한 패킷은 출력 버퍼에서 대기한다.
따라서, 패킷은 저장-후-전달 지연 뿐만 아니라, 출력 버퍼에서 큐잉 지연(queing delay)를 겪는다.
버퍼 공간의 크기가 유한하기 때문에 출력 버퍼가 전송을 위해 대기중인 다른 패킷들로 가득 차 있는 경우가 있을 수 있다.
이 경우에 출력 버퍼에 새로운 패킷이 들어오게 되면
이제 막 도착한 패킷 또는 출력 버퍼에서 출력 링크로 출력하기 위해 대기 중인 패킷이 폐기될 수 있다.
이를 패킷 손실이라고 한다.
라우터는 패킷을 받아서 여러 출력 링크 중 하나로 그 패킷을 전달한다.
그러면, 라우터는 어떻게 패킷을 어느 링크로 전달할지 결정하는 것일까?
종단 시스템은 IP 주소를 갖는다.
송신 종단 시스템이 패킷을 수신 종단 시스템으로 보내고자 할 때, 송신 종단 시스템은 패킷의 헤더에 수신 종단 시스템의 IP 주소를 포함한다.
이후 패킷이 라우터에 도착하면, 라우터는 목적지 주소를 조사하고 이 목적지 주소를 이용하여 전달 테이블을 검색한다. 그런 후에 라우터는 그 패킷을 출력 링크로 보낸다.
Q : 라우터가 전달 테이블을 이용하여 어떤 링크로 패킷을 내보낼지 결정하는 건 알겠다.
그럼 수신 종단 시스템에서 링크로 패킷을 어떤 기준으로 내보내는 것인가?
아니면 수신 종단 시스템은 링크를 단 1개만 가지고 있어서 어떤 링크로 내보낼 지 결정할 필요도 없는 것인가?
A : 우선, 수신 종단 시스템은 단 1개의 링크만 가지고 있지 않는다.
따라서 수신 종단 시스템도 라우터에 의해서 패킷이 전달될 링크를 선택한다.
목적지 주소(혹은 목적지 주소의 일부)를 라우터의 출력 링크로 매핑하는 테이블로
라우터는 전달 테이블을 이용하여 어떤 출력 링크로 패킷을 내보낼지 결정한다.
인터넷은 자동으로 전달 테이블을 설정하기 위해 여러 라우팅 프로토콜을 가지고 있다.
라우팅 프로토콜은 각 라우터로부터 목적지까지의 최단 경로를 결정하고 라우터에 전달 테이블을 설정하는데 이 최단 경로를 이용한다.(자세한 것은 5장에서)
회선 교환은 종단 시스템 간의 통신을 위해서 경로상에 필요한 자원(버퍼, 링크)은 통신 세션 동아에 확보 또는 예약된다.
그 결과, 링크 접속을 위해 기다릴 수 있다.
회선 교환의 대표적인 예시는 음성 통화이다. A와 B가 서로 통화하고 있을 때, C가 A 또는 B에게 전화하면 통화중입니다라고 통화할 수 없다.
패킷 교환 방식에서 라우터는 전달 테이블을 검색하여 패킷을 어떤 출력 링크로 보낼지 선택한다.
이 과정에서 특정 패킷이 링크를 확보하고 예약하는 방식은 아니다. 따라서 여러 패킷이 하나의 링크를 공유할 수 있는 것이고 그렇기 때문에 큐잉 지연과 패킷 손실이 발생한다.
송신자가 정보를 보내기 전에 네트워크는 송신자와 수신자 간의 연결을 설정해야 한다. 이 연결이 이루어지는 동안 네트워크 링크에 일정한 전송률을 예약한다.
따라서 송신자는 수신자에게 보장된 일정 전송률로 데이터를 보낼 수 있다.
두 호스트가 통신하고 싶을 때 네트워크는 두 호스트 사이에 종단간 연결(end-to-end connection)을 설정한다.
호스트 A가 호스트B와 통신하기 위해 네트워크는 먼저 2개의 링크 각각에 한 회선을 예약한다.
지정된 종단간 연결은 첫 번재 링크의 두 번째 회선을 사용하고, 두 번째 링크의 네 번째 회선을 사용한다.
링크와 회신의 차이점??포함관계인지가 궁금했다. 이 의문은 바로 아래에서 해결할 수 있다.
위 예에서 각 링크는 4개의 회선을 가지므로, 종단간 연결을 사용하는 각 링크에 대해, 그 연결은 연결이 지속되는 동안 링크 전체 전송 용량의 1/4을 얻는다.
링크는 주파수 - 분할 다중화(Frequendcy-Division Multiplexing, FDM) 혹은 시 - 분할 다중화(Time-Division Multiplexing, TDM)을 이용하여 각 회선를 구현할 수 있다.
주파수 영역이 일정 대역으로 분할한다. 이후 링크를 통해서 설정된 연결은 그 링크의 주파수를 공유한다.
따라서 하나의 회선을 주파수를 다르게 하여 여러 명이 사용할 수 있으며 각 지속적으로 대역폭을 얻을 수 있다.
시간을 일정 주기의 프레임으로 구분하고 각 프레임은 고정된 수의 시간 슬롯으로 나뉜다.
네트워크가 링크를 통해 하나의 연결을 설정할 때, 네트워크는 모든 프레임에서 시간 슬롯 1개를 해당 연결에 할당한다.
따라서 각 회선은 짧은 시간 동안(슬롯) 주기적으로 대역폭을 얻는다.
회선 교환과 달리 패킷 교환은 링크 자원을 예약하지 않고 네트워크로 보낸다.
만약에 패킷을 보낼 링크가 혼잡한 상황이라면
회신 교환의 경우 패킷은 패킷이 출력 버퍼로 내보내지지 않고 송신 쪽의 버퍼에서 기다려야 하고 지연이 발생한다.
패킷 교환의 경우 해당 링크가 아닌 다른 링크로 패킷을 보낸다.
따라서 회선 교환은 자원이 확보되기 떄문에 일정한 전송률은 보장해줄 수 있지만, 일정 시간내에 전달하는 것은 보장하지 못한다.