참고도서: 컴퓨터 네트워킹 : 하향식 접근. 7판. James F. Kurose , Keith W.Ross 지음
데이터를 이동시키는 방식
링크와 스위치를 통해서 데이터를 이동시키는 방법은 Circuit Switching(회선 교환) 과 Packet Switching(패킷 교환)으로 나뉜다.
Packet Switching(패킷 교환)
어떤 두 end system이 정보를 서로 송수신하게 되면 해당 데이터들은 패킷 이라는 작은 세그먼트로 나뉘어서 전달되게 된다. 그리고 전달되는 과정에서 앞서 공부했던 Communication Link 와 Packet Switch 를 거쳐서 데이터는 이동된다.
패킷 교환은 여러 사용자들이 네트워크 자원을 공유하고 이 자원들은 요청이 들어올 때마다 할당된다. 이런 자원할당 방식을 on demand 방식이라고 한다.
페킷 교환은 회선 교환처럼 미리 자원을 예약하거나 연결을 설정하지 않아도 되기 때문에 효율적이지만 여러 리소스들이 한번에 들어왔을 때, 감당을 못할 수도 있다. 이런 현상을 conjestion 이라고 한다.
패킷은 링크의 bandwidth를 하나의 패킷에 대해 모두 사용하기 때문에 링크의 최대 전송 속도와 같은 속도로 전송된다. 이 때문에 패킷을 수신하는 목적지가 R bit/sec 의 속도로 L bits의 패킷을 송신한다면, 해당 패킷을 전송하는데 걸리는 시간은 L/R 이 된다.
Store-and-Forward Transmission(저장-후-전달)
대부분의 패킷 스위치에서 사용하는 방식이다.
스위치가 패킷의 첫 비트를 링크로 전송하기 전에 해당 패킷의 비트를 모두 다 가지고 있어야 한다.
따라서 만약 어떤 두 end system 사이에 하나의 패킷 스위치가 있고, 링크의 전송속도가 R bit/sec 이며, L 비트로 이루어진 3개의 패킷이 있다면, 스위치에 패킷이 전달되는 시간은 L/R 이 될 것이다. 그리고 첫 패킷이 완전히 도착한 시점부터는 스위치가 목적지로 패킷을 보내기 시작하기 때문에, 전체 지연 시간은 첫 패킷을 저장하는 시간 L/R + 목적지로 보내는 시간 L/R = 2L/R이 된다.
위와 같은 상황에서 3개의 패킷이 모두 전달되는 데에 걸리는 시간을 계산해보면, 첫 패킷이 목적지에 전달되기 까지는 2L/R의 시간이 걸리지만, 스위치에서 목적지로 패킷이 전달되는 동안 소스에서 스위치로 두번째 패킷이 동시에 전달되기 때문에 두번째 패킷부터 는 L/R의 지연시간으로 패킷을 전달할 수 있게된다. 따라서 전체 지연시간은 첫번째 패킷의 지연시간 2L/R + 두번째 패킷의 지연시간 L/R + 세번째 패킷의 지연시간 L/R = 4L/R 이 된다.
정리해보면, end system 간 패킷 전달에 사용되는 지연시간은 다음과 같이 표현할 수 있다: 링크의 개수 X L/R
Queing Delay and Packet Loss(큐잉 지연과 패킷 손실)
앞서 본 것 처럼 스위치는 패킷을 전달받아서 목적지로 보내주는 역할을 해야하는데, 스위치에 많은 패킷들이 몰릴 경우에 스위치는 이 패킷들을 무한히 받아들일 수는 없다. 이렇게 사용 가능한 리소스 이상의 패킷이 들어오는 경우를 conjestion 이라고 한다.
따라서 스위치는 출력 버퍼라는 대기열을 만들어두고 현재 어떤 패킷을 전송중이라면, 새로 들어온 패킷을 버퍼에 넣어 대기시킨다. 이때 큐에서 패킷이 대기하면서 발생하는 지연시간을 Queing Delay(큐잉 지연)이라고 한다.
만약 출력버퍼가 가득 차서 더 이상 새로운 패킷을 스위치에 대기시킬 수 없는 상황을 packet loss 라고 한다. 이때는 방금 들어온 새로운 패킷이나 대기열에서 대기중이던 패킷을 하나 지워주어야 한다.
Forwarding Table and Routing Protocol(전달 테이블과 라우팅 프로토콜)
라우터에 들어온 패킷을 다른 링크로 전달하려고 할 때, 라우터는 해당 패킷의 목적지가 어디인지 알고 있어야 어느 링크로 전달할지를 판단할 수 있다. 이렇게 목적지를 결정하는 것을 routing 이라고 한다.
이를 위해서 각 패킷들은 header에 목적지 정보를 포함하고 있는데, 이 정보는 우리가 잘 알고있는 IP 주소 이다.
라우터는 이 header 정보와 목적지 주소를 맵핑하는 Forwarding Table(전달 테이블)을 가진다. 이 전달 테이블에 따라 다음 라우터로 패킷을 전달하는 과정을 forwarding이라고 한다.
뒤에서 더 자세히 다루겠지만, 이 전달 테이블은 라우팅 프로토콜을 통해 자동적으로 만들어지고, 항상 데이터를 전달할 수 있는 최단 거리를 가지려고 노력하게 된다.
Datagram Networks
데이터그램 네트워크는 stateless switch 방식의 패킷 스위칭이다. stateless switch 방식은 스위치(라우터) 내에서 상태를 가지는지에 따라 결정된다.
각 패킷은 라우팅 테이블에 따라 독립적으로 전달되고 이 때문에 각 패킷은 목적지 주소에 대한 정보를 항상 가지고 있어야한다. 여기서 독립적으로 전달된다는 것의 의미는 각 패킷이 목적지 주소가 같다고 해서 반드시 같은 경로로 이동할 필요가 없다는 것이다. 라우팅 테이블은 주기적으로 최단거리를 파악해서 테이블을 업데이트하기 때문에 경로는 언제든지 달라질 수 있다.
경로가 달라진다는 것은 또 패킷이 목적지에 도착하는 순서 또한 달라질 수 있다는 것을 의미한다.
데이터그램 네트워크는 Connectionless Model 이라고 부르기도 한다.
Virtual Circuit Networks
Virtual Circuit Networks는 데이터가 전송되기 전에 송신자와 목적지 사이에 가상의 연결을 설정한다.
따라서 circuit switching 처럼 자원을 예약할 수 있지만 해당 자원을 완전하게 보장받지는 못한다.
Circuit Switching 처럼 빠른 패킷교환과 QoS 가 가능하지만 동시에 회선교환의 단점처럼 연결을 설정하기 위해 생기는 지연시간이 발생한다.
Circuit Switching (회선 교환)
Circuit Switching 방식은 end system 간의 통신에 필요한 모든 자원을 미리 예약한다. 이렇게 미리 자원을 요청해 예약해서 사용하는 방식을 예약(Reserve) 방식이라고 한다.
어떤 정보가 전달되기 전에 송신자와 수신자 간에는 연결(circuit)이 먼저 설정되어야 한다. 그리고 동시에 송수진자 사이에 일정한 전송률(transmission rate)를 예약한다. 따라서 송신자와 수신자는 보장된 속도로 데이터를 주고받을 수 있게된다.
Circuit Switching 에서 링크 내의 한 회선은 Frequency-Division Multiplexing(FDM) 혹은 Time-Division Multiplexing(TDM) 방식으로 구현된다.
Frequency-Division Multiplexing(FDM)
FDM 방식은 주파수 대역을 나누어서 한 채널에 여러 정보들을 담아 전달할 수 있게 한다.
Link layer Switch에서 전화선을 통해 전달된 정보들의 주파수 대역을 서로 겹치지 않게 설정하고 해당 정보들을 합쳐서 링크로 보낸다.
Time-Division Multiplexing(TDM)
동일한 대역폭 하나를 시간 슬롯으로 나눠서 채널에 할당한다.
Packet Switching vs. Circuit Switching
패킷 교환은 회선 교환과는 다르게 예약을 하지 않고 필요할 때만 자원을 사용하기 때문에 처리할 수 있는 데이터의 양이 훨썬 더 많다.
반면에 회선교환은 정보교환에 사용되는 자원들이 모두 예약되어야 하기 때문에 자원을 최대로 활용할 수 있고 QoS(Quality of Service) 가 보장된다는 장점이 있다.