본문 바로가기

컴퓨터 네트워크/Computer Networking 정리

CH1 : Computer Networks and the Internet (2)

* 이 글에 관련된 모든 내용은 Computer Networking A Top-Down Approach 7th에서 가져온 내용이다. *

 

네트워크 코어


네트워크 코어는 end system간의 통신을 담당한다. 

이때 네트워크의 메시지 전달방식에는 크게 두가지가 있다. (Messeage-switching은 생략)

1. Circuit Switching(회선 교환 방식)

2. Packet Switching(패킷 교환 방식)

 

여기서 Packet Switiching은 다시 Datagram방식과 Virtual-Circuit방식으로 나뉜다.

 

 

 

Circuit Switching (회선 교환 방식)


이 방식은 end system간의 통신에서 어떤 링크를 사용중이라면 이 링크는 다른 end system에서 사용할 수 없게하는 방식이다. 즉 end system간의 통신이 이루어질때 그 링크를 독점해버린다. 

 

링크의 변화가 없기 때문에 performance를 보장해주는 것이 특징이다. 때문에 주로 전화에 사용된다. (내가 누구랑 전화하고 있으면 다른사람은 나랑 전화가 안되는 원리)

 

하지만 어떤 end system과 연결중이라면 다른 end system과는 연결할 수 없기 때문에 자원이 낭비된다는 단점이 있다. 

 

또한 미리 링크를 setup한 뒤에 데이터 전송이 이루어지기 때문에 setup하는 만큼의 시간과 release하는 만큼의 시간이 추가로 소요된다.

 

이 방식은 세가지 과정으로 이루어진다.

1. Circuit Esatblishment

  - 데이터를 전송하기 전에 end-to-end간의 circuit이 미리 형성되어있어야 한다. 

 

2. Data transfer (데이터 전송)

 

3. Circuit Release

 - 앞서 말했듯이 이 방식은 링크를 독점하기 때문에 데이터 전송이 끝나고 나면 형성했던 링크를 다시 해제시켜주는 과정이 필요하다.

 

 

형성된 하나의 데이터 링크를 통해 동시에 여러 시그널을 보내는 기술이 있다. 이를 Multiplexing이라고 한다.

이 Multiplexing 방식에는 두가지 방식이 있다. 다음과 같이 네명의 유저가 생성된 하나의 링크를 사용한다고 하자.

 

 

 

1. FDM(Frequency Division Multiplexing)

FDM방식은 주파수 별로 영역을 나눈다. 

주어진 시간을 모두 사용할 수 있지만 bandwidth가 좁아져 전송시간이 느려질 수 있다.

 

 

2. TDM(Time Divison Multiplexing)

TDM방식은 시간 별로 영역을 나눈다.

주어진 bandwidth를 모두 사용할 수 있지만 주어진 시간이 totalTime/N 이기 때문에 시간이 링크를 사용할 수 있는 적어진다는 단점이 있다.

 

 

Packet Switching(패킷 교환 방식)


Circuit Swtiching에선 어떤 데이터를 보낼 때 한 링크를 통해 그 데이터 전체를 보냈었다.

Packet Switching의 아이디어는 해당 데이터를 패킷단위로 쪼개 여러 링크를 통해 보낸다는 아이디어이다.

 

여러 링크를 통해 패킷들을 보내기때문에 Circuit Switching의 링크 독점문제를 해결할 수 있다. 또한 링크를 독점하지 않기 때문에 각 패킷들은 해당 링크의 bandwidth를 모두 사용할 수 있다.

 

이 방식은 store-and-forward 방식을 이용하는데 라우터나 스위치는 패킷의 일부분이 들어오면 해당 패킷을 모두 받을 때까지 패킷의 일부분을 저장했다가 패킷이 다 오면 그때 다음 노드로 전송한다.

 

 

오른쪽 그림과 같이 큐에 패킷들을 저장하고 빼는 과정에서 queueing delay가 발생할 수 있고 패킷이 손실될 수 있는 가능성도 있다.

 

데이터를 보내는 과정에서 routing과 forwarding이 사용된다.

 

routing : 패킷에 의해 얻어진 src와 dst의 루트를 결정한다. 

 

forwarding : router의 input에서 router의 output으로 패킷이 이동한다.

 

 

Circuit Swithching에서는 정해진 링크를 사용하기 위한 user의 수가 정해져 있지만 (파일크기/속도)

Packet Swithching에서는 더 많은 user가 네트워크에 참여할 수 있다.

 

또한 보다 간단하고 Circuit Swithcing에서 요구되었던 set up이 필요하지 않다. 

하지만 단점도 있다. 데이터를 패킷으로 쪼개 보내다보니 순서가 섞일 수 있어서 QoS를 보장해주지 않는다.

 

 

앞서 말했듯이 PacketSwitching방식에는 두가지 방법이 있다고 했다.

1. Datagram

2. Virtual-Circuit

 

Datagram Networks


일단 이 방식은 setup이 필요없다. 그때 그때마다 routing table을 통해 패킷을 전송할 루트를 변경하기 때문이다.

(그리디 알고리즘을 생각하면 된다.)

각 패킷은 독립적으로 forwarding한다. 어떤 두 패킷이 같은 src에서 왔을지라도 다른 링크로 forwarding할 수 있다.

또한 각 패킷은 완성된 목적지의 주소를 가지고 있고, 이 주소는 globally unique identifier이다.

 

 

 

각 링크에 따라 걸리는 시간이 다르기 때문에 도착한 패킷의 순서가 다를 수 있다. 즉 QoS를 보장해주지 않는다.

 

 

 

 

Virtual Circuit Networks


이 방식은 src와 dst간의 가상의 루트를 만들어 마치 Circuit Switching처럼 작동을 한다. 때문에 패킷이 도착하는 순서가 보장이 된다는 것이 큰 특징이다. 또한 데이터를 보내기 전 미리 path를 뚫어놓기 때문에 별도의 setup타임과 release타임이 필요하다.

 

그렇다면 Circuit Switching과 무엇이 다른가?

일단 이 방식은 각 스위치에 테이블이 존재한다. 이 테이블은 오고 나가는 패킷의 포트번호와 VCI번호를 저장하는데 이때 VCI는 global이 아닌 local identifier이다.

 

 

다음 그림과 같이 마치 가상메모리에서 페이징을 하는 것과 비슷한 형태로 루트를 설정한다.

 

또한 각 스위치에서 테이블을 유지하고 있는 것을 확인할 수 있다.

 

 

 

 

또 패킷단위로 데이터를 쪼개보내기 때문에 그 경로가 사용중이 아니라면 다른 end to end간의 통신에서도 사용될 수 있다는 점이 Circuit Swithcing과 다른점이다.

 

쉬운 이해를 위해 오른쪽 그림을 가져왔다.

 

출처 https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=no5100&logNo=220731348408

 

 

이러한 방식을 쓰게되면 각 스위치마다 라우팅테이블을 로컬하게 나누어서 가지고 있기 때문에 라우팅 테이블의 크기를 줄일 수 있다. 라우팅 테이블의 크기가 줄어든다는 것은 더 빠른 스위칭이 가능하다는 것이다.

또한 QoS를 보장해줄 가능성이 있고, 위에서 말했듯이 패킷의 순서가 보장된다.

그러나 단점도 있다. Circuit Switching 방식처럼 Setup 과정이 필요하고, 각 스위치는 정보를 유지하고 있어야 한다는 점이 있다.