1.3 네트워크 코어 _ 패킷 교환과 회선 교환
네트워크 중간 부분은 어떻게 이루어져 있을까? 네트워크 코어는 라우터(=노드)들로 이루어져 있다. 노드들은 그물 형태로 상호연결되어 있다. 한 노드가 고장이 나더라도 나머지 노드들의 연결이 유지되어 있기 때문에 통신하는 데에 문제가 없게끔 네트워크가 이루어져 있다. 라우터는 데이터가 source에서 destination 까지 전달되기 위해 중간에서 다음 라우터로 전달(forwarding)해주는 역할을 한다. 어떤 패킷이 라우터에 도달하게 되면 패킷에 담겨있는 목적지 주소를 보고 경로 즉, 패킷을 보낼 링크를 판단한다(routing). 이러한 방식으로 중간 라우터를 걸쳐 end host에 데이터 패킷이 도달하게 된다. 코어 라우터에서 데이터를 전달하는 방식은 두가지가 있다. 바로 패킷 교환(packet switching) 과 회선교환( circuit switching)이다.
<용어정리>
* 라우팅(routing) : 라우터는 패킷의 정보를 보고 길을 안내해주는 고성능 컴퓨터이다. ip주소에 있는 목적지 네트워크 주소를 확인하여, 패킷이 거칠 source와 destination 간의 경로를 결정하는 것을 라우팅이라고 한다.
*전달(forwarding) : 라우터 입력으로 들어오는 패킷을 적절한 라우터 출력으로 보내는 것
*저장(store) : 라우터에 들어온 패킷이 대기 queue에 들어와 저장되는 것
*홉(hop) : 하나의 링크를 한 홉이라고 한다.
패킷 교환 (packet switching)
데이터를 일정한 단위로 쪼갠 것을 패킷이라고 하는데, 각 패킷은 링크 전체 용량을 사용해서 전송된다. 나뉘어진 패킷 하나하나는 동시에 가지 않고 각각 개별적으로 취급되어 움직인다. 패킷의 순서는 일정하지 않고, 어떤 패킷이 먼저 도착할지 모른다.L-bit 사이즈의 패킷을 capacity가 R bps 인 링크에 전송하는 데에 걸리는 시간은 L/R이 된다. 많은 패킷이 라우터로 몰려들어 처리하는 속도가 걸리기 때문에 패킷을 queue에 저장한다. 그것을 읽어서 패킷 안에 있는 목적지 주소를 보고 다음에 전송할 라우터를 결정한다. 이러한 데이터 전달 방식을 store-and-forward 방식이라고 한다. store-and-forward 방식에서는 패킷 하나가 온전히 라우터에 도착하고나서야 이 패킷을 forwarding 할 수 있다. 왜냐하면 패킷 전체를 받아야만 에러 검사를 거치고, 온전히 라우터에 도착했다는 판단이 들고 나야 forwarding을 할 수 있기 때문이다.
전체 end host에서 source - destination 까지의 전체 지연 시간을 계산하면 hop 수에 비례한다. 위에서 한 홉에 전달하는 데 걸리는 시간이 L/R 이라고 계산했다. 만약 2 hop이라면 2L/R 의 지연시간이 걸릴 것이다. hop 수가 늘어나면 이에 비례해서 source에서 destination 에 도달하는 시간이 늘어나게 된다.
패킷 교환의 단점은 지연시간이 발생할 수 있다는 것이다. 패킷이 라우터에 도착해서 queue에 저장되면 목적지 주소를 보고 결정을 하는데 패킷은 queue에서 전송을 기다리게 되고 시간이 지연된다. 또한 링크에 도착하는 데이터 용량이 링크의 capacity를 넘으면 메모리가 넘치게 되고, 그러면 패킷이 손실될 수도 있다.(큐잉 지연과 패킷 손실)
회선 교환(circuit switching)
패킷 교환 방식에서 패킷은 순서 없이 중구난방으로 라우터에 보내지게 된다. 그에 반해 source와 destination 간의 call을 위해 한 경로를 설정해서 네트워크 자원을 할당하는 방식이 회선 교환 방식이다. 하나의 source-destination 쌍(call)에 대해서 자원이 할당되고, 할당된 자원은 데이터의 전달이 없어도 절대로 다른 call과 공유되지 않는다. 대표적으로 유선 전화망에 회선 교환 방식이 사용되었다. (요즘에는 인터넷 통신이 빨라져 패킷교환방식으로 인터넷 전화를 많이 사용한다.) 통화 도중 수화기에서 아무런 대화가 오고가지 않아도 전화가 끊어지기 전까지는 다른 사용자가 그 회선을 사용할 수 없다는 것이다. 회선 교환 방식에는 패킷이라는 개념이 없고, 데이터가 들어오면 어떤 데이터 단위로 들어오든지 바로 다음 링크로 전달할 수 있다.
회선 교환 방식에는 주파수 분할 다중화 FDM(frequency division multipress)와 시분할 다중화 TDM(Time division multipress)가 있다. 둘 사이의 call을 설정한다는 것은 채널을 할당한다는 이야기이다. 채널을 구성하는 것은 주파수다. 다시 말해, 두사람이 통화를 한다면 독립적으로 자원을 할당받는데 그것이 주파수가 될 수 있다는 것이다. FDM은 주파수를 분리해서 할당하여 독립된 네트워크 자원을 할당받는 것이다. TDM은 전체 주파수가 통으로 한 쌍의 사용자한테 사용이 되어서 똑같은 시간간격을 두고 특정 시간동안에는 한 사용자의 데이터를 보내고, 또 다음 주기에는 다른 사용자의 데이터를 보내는 방식이다.
패킷교환과 회선교환 방식 중 어떤 것이 더 좋은 방식일까? 한 상황을 가정해 보자. capacity가 1Mbps인 링크가 있다. 각각의 사용자가 네트워크를 사용할 때 데이터를 전송하는 데에 100kbps 정도의 전송률이 필요하다. 사용자들은 항상 네트워크를 사용하고 있지는 않다. 우리가 웹에 접속해서 계속 클릭을 해서 새로운 정보를 얻는게 아니라 화면이 뜨고나면 그 화면을 계속 보는 행위를 생각해보자. 실제로 데이터가 전송되는 시간은 사용자가 인터넷을 사용하는 시간에 비해 매우 짧다는 것이다. 데이터를 받는 시간을 인터넷 사용 시간의 10%라고 가정을 해보자.
회선 교환 방식을 이용한 인터넷 서비스를 사용하면 몇명의 사용자를 수용할 수 있을까? 회선 교환망은 한번 자원이 할당되면 다른 사용자가 자원을 사용할 수 없다. 사용자가 필요한 데이터 용량이 100kbps 이므로 고정적으로 100kbps만큼의 채널을 할당해야 한다. 그렇다면 capacity가 1Mbps가 수용할 수 있는 사용자는 10명이 된다. 사용자가 링크를 사용하는 시간은 전체 사용시간의 10%라고 가정하였는데 그러면 사용시간의 90%는 100kbps가 낭비가 될 것이다.
패킷 교환 방식으로 인터넷 서비스를 사용한다고 가정하자. 만약에 10명이 넘는사람들이 동시에 데이터를 필요로 한다고 하면 링크의 용량은 1Mbps이므로 통신 속도가 느려질 것이다. 그러나 만약에 35명의 사용자가 인터넷 서비스에 접속해있어도 확률적으로 계산해보았을 때 10명 이상이 네트워크 활동을 할 확률은 0.04%밖에 되지 않는다. 즉, 35명의 사람들이 통신 속도에 불편을 느낄 확률이 0.04% 라는 것이다.
인터넷 서비스를 제공하는 사람의 입장에서는 같은 capacity로 더 많은 사용자를 수용할 수 있는 패킷 교환 방식이 더 좋을 것이다. 그러나 위의 상황에서 10명의 사용자가 동시에 접속할 확률이 조금이라도 있다면, 사용자들은 통신에 불편함을 겪을 수 있기에, 패킷 지연 시간이 발생하는 패킷 교환 방식보다는 항상 내가 필요로 하는 용량을 할당하여 제공해주는 회선 교환 방식이 좋을 것이다. 패킷 교환과 회선 교환은 장단점이 있으므로 필요로 하는 네트워크 코어를 잘 선택하면 된다.
1.4 인터넷 구조 Internet stucture
인터넷에는 각각 독립적인 네트워크들이 존재하고, 각각의 네트워크에는 지켜야하는 프로토콜이 있다. end system 들은 access ISPs( Internet Service Providers)를 통해 인터넷에 접속한다. ( ISP가 앤드호스트들에게 인터넷 접속점 (ip주소)을 제공해 준다.) access ISPs 에는 가정, 회사, 대학 네트워크, 모바일 네트워크 기지국 등이 있을 수 있다. access ISPs 들도 서로 연결되어있어야 호스트들 간의 패킷이 전달될 수 있어 인터넷에 접속이 된다. 그러다보면 네트워크는 굉장히 복잡해 진다. 복잡한 형태를 피하려면 중앙 집중적인 형태를 보여야 하지만, 중앙에 집중되면 중앙 서버 하나만 문제가 생겨도 네트워크가 마비되는 문제가 생긴다. 이러한 점을 고려하여 설계된 인터넷 구조를 살펴보자
전세계에 많은 access network가 있다. 이 access network를 전부 서로 연결하면 한 ISP가 파괴되어도 다른 ISP들 끼리 연결되어있기 때문에 전체 네트워크가 마비되지 않는다. 그러나 이 방법은 중간에 참여하는 access ISP가 세상에 존재하는 백만개의 ISP와 연결을 만드는 것이 사실상 불가능에 가깝다고 볼 수 있다. 즉, 확장성이 떨어진다.
그래서 중간에 코어 네트워크를 하나 만들자는 개념이 등장했다. 각 access ISP를 하나의 global ISP에 연결하는 방식이다. 그러면 access ISP들은 링크 하나만 유지하면 되고 global ISP의 라우터들끼리 연결되어 통신하므로 확장성이 훨씬 좋다. 이렇게 하나의 global ISP에 연결하는 설계를 할 경우에도 문제가 있다. 모든 데이터가 코어로 연결되기 때문에 이 한 ISP가 독점적인 네트워크를 가지게 되는데, 비용적인 측면에서도 독점적인 것은 좋지 않고, 이 global ISP 에 문제가 생기면 네트워크에 마비가 올 수 있다.
이러한 점때문에 많은 회사들이 global ISP 서비스에 참여하게 된다. ISP들이 늘어나면서 이러한 global ISP들끼리 연결을 하게되고(peering link), peering에 도움을 주는 IXP(Internet exchange point) 개념도 등장하게 된다. IXP는 서로 다른 ISP를 연결하는데, ISP간의 데이터 흐름을 원활하게 하기 위해 데이터의 흐름이 너무 많거나 적게 되지 않도록 조절한다. 미국같이 큰 나라들에는 지역의 네트워크를 모아서 서비스해주는 regional network도 나타나게 된다. 또한, google 이나 microsoft 같이 사용자가 요구하는 데이터양이 많은 컨텐츠 제공회사는 데이터센터 간의 동기화, 통신 비용 절약 등을 위해 자체 네트워크(content provider network)를 구축해 서비스를 제공하고 있다.
내가 사용하고 있는 네트워크 망을 조사해보았다. 네이버에 ip주소라고 치면 내 ip주소가 나오고, ip location을 찾는 사이트에 내 ip주소를 입력했더니 내 네트워크 명은 Xpeed 이고 엘지유플러스의 FTTx 네트워크라고 한다.
<traceroute>
traceroute 프로그램을 사용하면 사용자가 목적지 시스템까지 데이터를 전달하는 데 각 라우터들까지의 지연 시간과 경로를 확인할 수 있다. 각 라우터에 가상 패킷을 보내고 다시 돌아오는 시간을 측정하여 제공한다. 수신측까지 가는 경로 상의 i번째 라우터까지 가는 패킷을 3개 보낸다. i번째 라우터는 패킷을 송신측에 되돌려 보낸다. 송신측은 전송에서 응답까지의 시간을 측정하고 걸린 시간과 라우터의 정보를 띄워준다. 패킷을 3개 보냄으로써 각각 세번씩 전달해서 갔다 오는 시간의 평균을 정확하게 내도록 해준다. 이 명령어를 사용하면 데이터를 주고받는 경로를 확인할 수 있다. 윈도우에서는 tracert 라는 명령어를 사용한다. 갑자기 시간이 크게 뛰는 구간은 대륙간의 이동이라고 추측할 수 있다. * * * 로 보이는 라인은 손실되거나 라우터가 무응답했다는 의미이다.
'CS지식 > 컴퓨터네트워크' 카테고리의 다른 글
Application Layer_ principle of network applications (0) | 2023.04.10 |
---|---|
Network Security, Internet history (2) | 2023.04.06 |
컴퓨터 네트워크와 인터넷 (3) (0) | 2023.03.21 |
컴퓨터 네트워크 용어정리 과제(2주차) (0) | 2023.03.17 |
컴퓨터 네트워크와 인터넷(1) (2) | 2023.03.17 |