패킷스위칭 / 서킷스위칭

강한친구·2022년 9월 16일
0

컴퓨터 네트워크

목록 보기
2/19
post-thumbnail
post-custom-banner

네트워크 코어

네트워크 코어 : 패킷, 서킷, 스위칭, 인터넷 구조

라우터들로 이루어진 코어네트워크가 존재하고 이들을 연결하는 것이 전체 네트워크이다.
이러한 정보를 교환하는 방식에 두가지 방식이 있다.

Packet Switching

패킷은 큰 덩어리로 보낼 수가 없다.
그 이유는 몇가지가 있는데

  • 큰 덩어리를 보낼 때, 에러가 발생하면 이를 복원하는데 비용이 더 들어간다. 따라서 패킷을 쪼개서 보내는 것으로 복원비용을 절감할 수 있다.
  • 또한 너무 큰 패킷은 뒤에 있는 데이터들이 너무 긴 대기시간을 가지게 된다.
  • 이더넷에서 1500 바이트를 요구하기 때문에 애당초 패킷은 하나당 1500정도로 제한하는 것이 좋다.

만약, 1500 바이트보다 큰 패킷이 온다면 라우터에시 이를 fragmentation한다. 라우터는 이미 Forwarding, Routing을 수행하는데 여기에 fragmetation까지 해야한다면 이는 굉장히 큰 네트워크의 부담이다.

심지어 IPv6 에서는 아예 쪼개는 기능 자체가 빠져있다.

라우터의 데이터 포워딩

라우터의 가장 기본적인 역할은 들어온 패킷을 목적지 방향으로 보내는것이다.
이러한 판단을 위해 라우팅테이블이 존재하고, 헤더값을 기반으로 나가야하는 링크정보를 담고 있다.

포워딩 / 스위칭

포워딩이란 라우터 내부에서 일어나는 로컬액션이다.
패킷을 라우터 외부 링크까지 옮기는 작업이다.

라우팅

라우팅이란 라우터 혼자 수행하는것이 아닌 모든 라우터가 협력해서 주고받는 글로벌 액션이다. 자신의 정보를 자기 주변의 라우터들과 공유하면서 라우팅 테이블을 만드는것이다.

IP는 32비트중 앞의 몇자리는 네트워크 주소이고 나머지는 로컬 호스트 주소가 된다. 참고

앞부분을 보고 라우터들간의 정보공유를 통해 패킷이 오면 게이트웨이 라우터가 뒷자리를 파악 패킷을 올바르게 전송한다.

이 과정에서 라우팅 알고리즘이 작동한다. 참고

패킷스위칭에서 딜레이

패킷으로 보내게 되면, 기존에 말한것처럼 transmission delay가 생기게 된다. (L/R)
하나의 패킷이 보낼질 때,2비트는 이미 라인에 올라갔지만, 뒤에 8비트는 아직 라인에 올라가지못한 상태가 발생하고, 컷스루 방식같이 중간에 저장하지 않고 바로 보내게되면 패킷이 찢어지는 이상한 모양이 나온다.

Queueing

링크가 내보내는 속도보다 들어오는 양이 더 많아지만, 패킷은 쌓이고 큐가 생길수밖에 없다. 즉, 패킷 스위칭에서느 ㄴ올릴 수 있는 데이터량(유연한 버퍼 사이즈를 가진다고 표현)을 정해두지 않았고, 이에 버퍼가 데이터에 쌓이게 되면 로스가 발생하는 방식이다.

Circuit Switching

전화망을 이용하는 전달방식이다. 서킷 스위칭은 양을 이미 정해두고, 그 이상으로 사용할 수 없게 되어있다.
즉, 자원이 부족하면 아예 연결자체가 성립하지 않는것이다.
이에 경직성 문제가 심각해서 연결해놓고 사용하지 않으면 자원낭비가 심하다. 따라서 통화요금이 비싼것이다.

FDM, TDM

FDM

  • Frequency Division Multiplexing
  • 주파수 대역을 용도별로 나눠서 분할 사용한다

TDM

  • 시간을 나눠서 주파수를 다 쓸 수 있지만, 시간대로 나눠서 사용한다
  • 실제로는 시간대가 매우 짧기 때문에 불편함을 느끼지 않는다,

실제 전화통화에선 TDM을 이용한다.

두 방식의 자원활용도 비교

1Gpbs의 링크
n명의 유저가 공유
1명의 유저가 한번에 100mbps를 사용함 (10명이 쓰면 1G)
각각의 유저가 항상 보내는게 아니라, 시간의 10%만 보내고, 나머지는 아무것도 안함

이러한 조건이 있을때, 어떤 서비스를 제공해야 더 많은 수용자를 받아들일 수 있을까?

서킷스위칭

  • 한순간이라도 100메가를 넣는 유저에게 각 라인을 동시에 쓸 경우를 대비한 파이프를 열어둬야하기때문에, 최대 10명만이 사용할 수 있다.

패킷 스위칭

  • 동시에 10명이 들어오면 1gpbs가 꽉 차게 되겠지만, 이는 확률적인 문제이다.
  • n 명일때, 11명 (수용인원 이상)이 사용할 확률이 얼마나 되는지 구해얗나다.

풀이

n명중 k명이 0.1 확률로 동시에 보낼 확률은 (0.1)^k * (0.9)^n-k

그리고 n명중 k명을 뽑는 수식이 필요하다.

그리고 이 k값은 11명부터 n명까지의 확률을 전부 더해야한다.

따라서 수식은 다음과 같다.

패킷 스위칭에서는 에러확률 목표치를 정해두는데 여기서 목표치를 0.0004라 잡은 경우, 이 수식의 값이 목표치보다 작아야한다. 따라서 이에 대한 답은 35가 된다.

여기서 목표치를 늘리면 n의 값도 늘어날 수 있다.

결론

패킷스위칭이 더 많이 받을 수 있다.

그래서 패킷스위칭이 최고인가?

이는 가정에 따라 다르다.
지금까지는 10%확률로 간혈적으로 보내는 환경을 가정했지만, 만약 유저가 데이터를 지속적으로 보낸다면 서킷 스위칭이 더 좋은 선택이 될 것이다.
패킷스위칭은 서킷 스위칭에 비해 확률적으로 성능이 좀 낮겠지만(대신 더 많이 받긴 한다) 이를 다양한 기술로 극복해서
최종적으로는 Circuit Like Service를 제공하는것을 목표로 한다.

버퍼 발생 상황에서의 기술

각 라우터에서 잡기술을 이용해서 이를 극복할 수 있다.

1. 들어온 순서대로 내보내는 FIFO를 꼭 쓸 필요가 없다

  • 가령 패킷 사이즈를 구분해서 작은 패킷들부터 먼저 서비스를 해주면 큰 패킷만 대기하고 작은 수십개의 패킷들은 딜레이에서 벗어날 수 있다, (스케줄링, 그리디 알고리즘)

2. Fairness 측면

  • 데이터를 많이 받지 못한 유저에게 패킷을 먼저 보내주는 방식으로 쓸 수 있다.

3. Loss를 꼭 해야하는가

  • 버퍼양이 넘치더라도 꼭 드랍시키거나 늦게 온 경우를 자르는게 아니라, 이상적인 로스를 찾아내야한다.
  • 이론상 맨 앞에 있는 버퍼를 떨구면 효율이 제일 좋다. 대기중이던 각 패킷은 하나씩 앞으로 이동하면서 전체적인 딜레이는 줄어들게 된다. (물론 떨어진 맨 앞 친구는 억울하다)
    최근에는 네트워크 장비가 발달하면서 이런 잡기술들이 굳이 필요는 없어졌지만, 그만큼 유동적인 트래픽이 생겼기 때문에 이러한 아이디어들은 가끔씩 유용하다.
post-custom-banner

0개의 댓글