네트워크 코어 : 패킷, 서킷, 스위칭, 인터넷 구조
라우터들로 이루어진 코어네트워크가 존재하고 이들을 연결하는 것이 전체 네트워크이다.
이러한 정보를 교환하는 방식에 두가지 방식이 있다.
패킷은 큰 덩어리로 보낼 수가 없다.
그 이유는 몇가지가 있는데
만약, 1500 바이트보다 큰 패킷이 온다면 라우터에시 이를 fragmentation한다. 라우터는 이미 Forwarding, Routing을 수행하는데 여기에 fragmetation까지 해야한다면 이는 굉장히 큰 네트워크의 부담이다.
심지어 IPv6 에서는 아예 쪼개는 기능 자체가 빠져있다.
라우터의 가장 기본적인 역할은 들어온 패킷을 목적지 방향으로 보내는것이다.
이러한 판단을 위해 라우팅테이블이 존재하고, 헤더값을 기반으로 나가야하는 링크정보를 담고 있다.
포워딩이란 라우터 내부에서 일어나는 로컬액션이다.
패킷을 라우터 외부 링크까지 옮기는 작업이다.
라우팅이란 라우터 혼자 수행하는것이 아닌 모든 라우터가 협력해서 주고받는 글로벌 액션이다. 자신의 정보를 자기 주변의 라우터들과 공유하면서 라우팅 테이블을 만드는것이다.
IP는 32비트중 앞의 몇자리는 네트워크 주소이고 나머지는 로컬 호스트 주소가 된다. 참고
앞부분을 보고 라우터들간의 정보공유를 통해 패킷이 오면 게이트웨이 라우터가 뒷자리를 파악 패킷을 올바르게 전송한다.
이 과정에서 라우팅 알고리즘이 작동한다. 참고
패킷으로 보내게 되면, 기존에 말한것처럼 transmission delay가 생기게 된다. (L/R)
하나의 패킷이 보낼질 때,2비트는 이미 라인에 올라갔지만, 뒤에 8비트는 아직 라인에 올라가지못한 상태가 발생하고, 컷스루 방식같이 중간에 저장하지 않고 바로 보내게되면 패킷이 찢어지는 이상한 모양이 나온다.
링크가 내보내는 속도보다 들어오는 양이 더 많아지만, 패킷은 쌓이고 큐가 생길수밖에 없다. 즉, 패킷 스위칭에서느 ㄴ올릴 수 있는 데이터량(유연한 버퍼 사이즈를 가진다고 표현)을 정해두지 않았고, 이에 버퍼가 데이터에 쌓이게 되면 로스가 발생하는 방식이다.
전화망을 이용하는 전달방식이다. 서킷 스위칭은 양을 이미 정해두고, 그 이상으로 사용할 수 없게 되어있다.
즉, 자원이 부족하면 아예 연결자체가 성립하지 않는것이다.
이에 경직성 문제가 심각해서 연결해놓고 사용하지 않으면 자원낭비가 심하다. 따라서 통화요금이 비싼것이다.
실제 전화통화에선 TDM을 이용한다.
1Gpbs의 링크
n명의 유저가 공유
1명의 유저가 한번에 100mbps를 사용함 (10명이 쓰면 1G)
각각의 유저가 항상 보내는게 아니라, 시간의 10%만 보내고, 나머지는 아무것도 안함
이러한 조건이 있을때, 어떤 서비스를 제공해야 더 많은 수용자를 받아들일 수 있을까?
n명중 k명이 0.1 확률로 동시에 보낼 확률은 (0.1)^k * (0.9)^n-k
그리고 n명중 k명을 뽑는 수식이 필요하다.
그리고 이 k값은 11명부터 n명까지의 확률을 전부 더해야한다.
따라서 수식은 다음과 같다.
패킷 스위칭에서는 에러확률 목표치를 정해두는데 여기서 목표치를 0.0004라 잡은 경우, 이 수식의 값이 목표치보다 작아야한다. 따라서 이에 대한 답은 35가 된다.
여기서 목표치를 늘리면 n의 값도 늘어날 수 있다.
패킷스위칭이 더 많이 받을 수 있다.
이는 가정에 따라 다르다.
지금까지는 10%확률로 간혈적으로 보내는 환경을 가정했지만, 만약 유저가 데이터를 지속적으로 보낸다면 서킷 스위칭이 더 좋은 선택이 될 것이다.
패킷스위칭은 서킷 스위칭에 비해 확률적으로 성능이 좀 낮겠지만(대신 더 많이 받긴 한다) 이를 다양한 기술로 극복해서
최종적으로는 Circuit Like Service를 제공하는것을 목표로 한다.
각 라우터에서 잡기술을 이용해서 이를 극복할 수 있다.