minzzl
12강. [CH-02 Physical layer] Switching(스위칭) 본문
이번 글에서는 스위칭에 대해 알아보겠습니다.
만약 전화 2대가 있으면 줄 1개로 연결을 하면 통신이 가능합니다.
그런데 만약 전화가 계속해서 늘어난다면 각각을 모두 1:N 씩 연결하는 것은 매우 비효율적일 것입니다.
때문에 우리는 중간 지점에 다른 전화와 다른 전화를 연결하게 끔 해주는 것이 필요합니다. 선이 지나치게 늘어나면 비용 문제 뿐만아니라 복잡도가 늘어나기 때문입니다.
우리는 그래서 여러대의 전화기가 중간에, 1:1로 통신을 하기 위해 비싸기에, 임시적으로 연결을 만들어주는 스위치를 설치합니다.
아래 그림의 아라비아 숫자들이 없다면 모든 컴퓨터들을 1:1로 다 연결을 해주어야할 것 입니다.
이제 Swiching에 대해 자세히 알아봅시다.
Switching
즉 Switch란 여러개의 device 들이 존재할 때, 실제로는 각 device들이 1:1 연결이 아니더라도, 이를 중간에 두어 각 device들을 1:1 로 연결되도록 하기 위한 것입니다.
Switching에는 총 3가지 방법이 존재합니다.
1) Circuit switching
Circuit switching 방식은, 주로 전화네트워크에서 사용되며 전화선을 '회선'이라고 부르기 때문에 '회선 교환'이라고 합니다.
잠깐 회선 통식의 대표적인 방법인 PSTN에 대해 살펴보고 갑시다.
우리는 전화를 누군가에게 걸려고 전화기를 들었을 때 뚜-하는 소리가 들립니다. 이는 내가 지금 정상적으로 동작하고 있으니, 전화 번호를 눌러도 된다는 신호를 주는 것입니다. 이를 확인 한 후 우리는 전화번호를 누르기 시작합니다. 그러면 교환기는 가지고 있는 라인을 활용해 비어있는 선로를 통해 입력된 번호의 목적지까지로 연결을 합니다. 즉 한 교환기에서 다른 교환기까지 연결을 해 목적지 전화까지 가도록 만드는 것입니다. 이로써 송신자와 수신자 사이에는 연결이 맺어졌고 선이 할당됩니다.
만약 회선을 통해 통신을 주고 받고 있다면, 전화기와 교환기, 교환기와 회선은 그 통신을 점유하게 되어 교환기 사이의 회선 수가 많아야만 많은 수의 전화가 동시에 통화 할 수 있습니다. 즉 channel이 모두 할당되어 사용가능한 통신이 없다면 통신이 불가능합니다.
PSTN은 다음과 같은 순서를 따릅니다.
1) 연결을 설정한다.
2) 데이터를 보낸다.
3) 연결을 해제한다.
우리는 다수의 컴퓨터가 자유롭게 정보를 수신하기 위해 이 방법을 채택한다면, 연결이 보장되기 때문에 보장된 데이터 전송률을 제공합니다. 또한 채널 Access 지연시간이 없고 실시간 전송에 유리합니다.
그러나 필요한 회선의 수가 매우 많아집니다. 즉 망자원을 비효율적으로 사용하는 것이고, 접속 지연시간이 길어질 수도 있습니다. 따라서 우리는 컴퓨터네트워크에서는 회선 교환방식이 아닌 패킷 교환 방식을 채택합니다.
2) Packet switching
사실 Packet switching 방식에는 2가지가 있습니다.
(1) Datagram Approach
송신하고 싶은 데이터를 일괄적으로 한번에 보내지 않고 여럿으로 분할하여 송신합니다. 이렇게 분할한 데이터를 Packet이라고 부릅니다. 큰 데이터를 작게 나누어 송신하기 때문에 1개의 Packet을 보내는 시간은 매우 짧습니다. 그렇기 때문에 Packet이 회선을 점유하는 시간은 매우 짧아집니다. 이 말은 복수의 컴퓨터가 회선을 공유할 수 있게된다고도 말할 수 있습니다. 즉 망자원을 효율적으로 사용 할 수 있고 비용이 저렴해집니다.
그러나 이는 매번 통신을 할 때마다 그 시점에서 효율적인 경로를 선택하는 것이므로, 어떤 회선에서 패킷이 붐비는데에 또 패킷이 들어오면 지연이 생깁니다. 즉 보장된 데이터 전송률을 제공 할 수 없기 때문에 Qos 제공에 어려움이 있다는 단점이 있습니다.
그래서 등장한 것이 Virtual Circuit입니다.
(2) Virtual Circuit Approach
이는 Connection-Oriented로 동작합니다. 우선 Virtual이란 실제로는 존재하지 않지만, 존재하는 것처럼 보이게 만드는 것을 뜻합니다. 즉 우리는 실제로는 존재하지 않지만 마치 전용선이 할당된 것처럼 동작하도록 하는 것을 Virtual Circuit이라고합니다. 때문에 Circuit Switching 처럼 연결을 설정하고, 데이터를 보내고, 설정을 끊는 3단계 개념을 그대로 따라갑니다. 그래서 사용자는 이 선을 마치 나만 쓰는 것 같은 느낌을 받습니다. 실제로는 아닐지라도요, 그렇기 때문에 실제는 선을 점유하지 않지만 점유하고 있다고끔 느끼도록해주고, 그 선을 다른 사람과 공유할 수도 있습니다.
추가적으로 Virtual Packet의 특징은 패킷이 전송될 때 순서대로 패킷이 목적지에 도착한다는 것입니다.
이런 Virtual Circuit에는 2가지 방법이 있습니다.
- SVC (Switched Virtual Circuit) : 연결을 할 때마다 매번 해주어야하고 연결이 끝나면 반납합니다. 또한 각 연결마다 연결 경로는 달라질 수 있습니다.
- PVC (Permanent Virtual Circuit) : 영구적인 가산의 회선입니다. 이미 연결이 고정되어 있습니다.
Virtual Circuit의 연결을 확인하기 위해서는 아이디가 필요한데 이를 Virtual Circuit Identifier라고 부릅니다. 여러 개의 연결을 설정 할 때, 이 패킷을 어디로 들어와서 어디로 보내는지를 패킷의 헤더에 붙려서 VIC 값을 보고 스위치가 테이블에서 판단하게 되어 이를 상대편에 내보냅니다.
아래의 그림을 통해 살펴보겠습니다.
위 그림을 보면 Connection Setup 단계에서 Incomung 포트 1번으로 VIC 14번이 들어온 것은 포트 3번으로 VIC 22를 달아서 내보내라고 설정이 되어있습니다. 이는 실제 회선을 전용으로 하는 것이 아니고 가상으로 하는 것이기에 VCI 번호를 통해 가상의 회선을 만들 수 있습니다. 이러한 PVC는 이미 연결이 고정되어 있어 비용이 비싸며 송신지 1개, 수신지 1개로 밖에 설정을 못합니다.
그렇다면 어떻게 VIC통해 위와 같은 테이블을 만드는 것일까요?
아래의 그림을 통해 살펴봅시다.
한 번 경로가 연결되면, 테이블이 완성이 됩니다. 그 이후로는 데이터를 전송할 때 경로 설정을 해줄 필요가 없습니다.
1번 스위치에서 1번 포트로 VIC 14번이 들어오는 것은 3번 포트로 내보냅니다. 내보내는 것이 2번 스위치에 도착했을 때 1번 포트로 VIC 66으로 들어갑니다. 이를 역추적해서 1번 스위치 테이블의 outcoging 부분의 VCI는 66이며 이를 반복하면 각 테이블을 만들 수 있습니다.
그렇다면 이제 스위치라는 하드웨어의 구성을 한번 살펴보도록 합시다.
Circuit switching 방식과 Packet Switching 방식에 따라 하드웨어의 구성이 달라집니다.
먼저 Circuit Switching 방식의 스위치 하드웨어 구조부터 살펴보겠습니다.
Structure of Circuit Switching
앞서 이야기 했듯이 전화를 기반으로 하는 스위칭 방식입니다. 하드웨어 구성 방식에는 크게 2가지가 있습니다.
하나는 공간을 분할하는 스위칭이고, 하나는 시간을 나눠서 분할하는 스위칭입니다.
(1) Space Devision Switching
- 1. Crossbar Switch
1번과 4번을 연결하려면, 가운데 cross point를 바탕으로 옆으로 빼면된다.
3번과 2번을 연결하려면 3번과 4번의 크로스 포인트를 옆으로 젖히면 된다.
이것을 공간 분할 스위치라고 하는 이유는, 연결하려는 개수가 늘어날 수록 스위치 박스의 크기가 그 만큼 더 커지게 되기 때문에 공간적으로 매우 큰 영향을 받는 스위치이기 때문이다.
즉, 이 설계의 큰 단점은 요구되는 교차점의 수가 많다는 것이다. 예를 들어 1000개의 입력과 1000개의 출력을 연결하기 위해 1000000개의 교차점을 가지는 크로스바가 필요하다는 것입니다. 따라서 크로스바 교환기는 격자 형태로 m개의 입력과 n개의 출력을 연결하며 각 교차점에는 전기적인 마이크로스위치(트랜지스터)가 존재한다. 이런 요인은 크로스바의 크기를 증대시키기 때문에 크로스바를 비실용적으로 만듭니다.
이러한 단점을 극복하기 위한 해결책으로 크로스바를 여러 단계로 결합한 스위치가 등장합니다.
- 2. Multistage Switch
예시)
15개가 들어와서 묶여서 안에서 크루스 케이블이되고, 나갈 때도 15개가 됩니다. 그런데 보면 State 1에서 5개가 들어와서 2개가 나가고, Stage 2에서는 2개가 들어와서 2개가 나가고, State 3에서는 2개가 들어와서 5개가 나갑니다. 원래라면 15개가 들어가서 15개가 나오려면 15* 15 개의 cross point가 필요하지만 스위치를 여러단계로 나누어 결합함으로써 그럴 필요가 없어졌습니다.
총 크로스포인트는 (5X2)X3 + (2X2)X2 + (2X5)X3 = 78 개입니다.
225(15 X 15 )개에 비해 매우 효율적이고 비용이 저렴합니다.
그 다음은 시간을 활용해서 할당하는 방식입니다.
(2)Time Devision Switching
이는 시분할 다중화를 이용하여 수행합니다. 자주 이용되는 다중화 방법으로는 Time Slot Interchange와 TDM 버스가 있습니다.
우선 아래의 그림을 살펴봅시다. 상단의 그림은 Time Division Switch를 사용하지 않고 그냥 전송하고 있습니다만, 아래는 TSU를 통해 순서를 바꿔서 전송합니다. TSI란 기본의 A - B- C -D 로 전송되던 것을 다른 방식으로 전송되어 도착하게 만들어줍니다. 시간에 따라 다르게 전송되게 하면 보내는 순서와 상관없이 받는 측이 데이터를 받을 수 있게 됩니다.
실제 내부 구조는 다음과 같습니다.
TSI 안에 RAM이 있어서 일단 데이터를 저장한 후, 이것을 분류해서 상대방에게 보냅니다. 이렇게 하면 저장을 하기 때문에 Blocking 문제가 생기지 않습니다. 하지만 저장을 했다가 보내기 때문에 느립니다. 저장하는데 시간이 소요되기 때문입니다.
정리를 하자면
Space Division Switch는 전송 즉시 상대에게 도착한다는 장점이 있지만 크로스 포인트 때문에 비용이 비싸고 부피도 커집니다.
Time Division Switch는 크기도 작고 Blocking도 안 생기고 크로스 포인트도 없지만, 저장하고 보내기 때문에 속도가 느립니다.
때문에 이를 섞어서 쓰는 방법이 태어나기도 합니다.
Structure of Packet Switching
패킷 스위치는 input ports와 output ports, routing processor, 그리고 switching farbic이 있습니다.
이때 Switching farbic은 하드웨어로 입력으로 들어온 것을 출력의 어디로 내보낼 것인가를 결정합니다.
이 Switching Farbic을 어떻게 구성할 것인가를 고민해보아야합니다. 가장 흔히 사용되는 것이 Banyan Switch 입니다.
만약 5번에서 2번으로 나간다면, 제어 코드를 010으로 설정해주면 됩니다.
그런데 만약 동시에 입력이 2, 4, 5 가 되어버리면 같은 경로를 공유할 수 있는데, 다른 입력이 보내고 있으면 이미 쓰고 있어서 다른 입력이 사용하지 못하는 경우가 발상할 수도 있습니다. 즉 Banyan switch의 문제점은 internal collision, 내부충돌이 발생할 가능성이 있다는 것입니다. 2개 패킷이 목적지가 다르더라도 내부 충돌이 발생할 수 있습니다.
이를 해결하기 위해서는 목적지에 따라 패킷을 정렬하면 됩니다. 바로바로 생길 때마다 보내는 것이 아니라 목적지에 따라 새롭게 정렬하면 패킷이 동시에 들어와도 겹치는 일이 없게 됩니다. 다음의 그림처럼 말입니다.
'전공공부 > 데이터통신' 카테고리의 다른 글
번외. mmWave, MIMO, and Beamforming (0) | 2022.12.13 |
---|---|
번외. Evolution from 1G to 4G (0) | 2022.12.13 |
11강. [CH-03 Data Link layer] (0) | 2022.12.11 |
10강. [CH-02 Physical layer] Multiflexing(다중화) (1) | 2022.12.11 |