(지난시간)

링크레이어에서의 핵심적인 내용은 우리가, 네트워크 레이어할때까지만 해도 생각했던 것들, 게이트웨이 라우터로 나갈 때 가는 그 과정은 사실 브로드캐스트 미디엄이라는 것으로 인지하는 것이 중요하고, 브로드캐스트 미디엄이기 때문에 충돌이 발생하고 이러한 충돌을 어떻게 컨트롤 혹은 해결할 것인가에 대한 이슈가 있었다. 


그리고 맥 프로토콜에 대해서 이야기하였고, 이더넷에서 자주 사용되는 CSMA/CD를 얘기하였고 이 프로토콜의 핵심은 "프레임을 전송하기 이전에 채널을 듣고, 아무도 이야기하고 있지 않으면 프레임을 전송한다. 하지만 프레임을 전송하는 와중에 충돌이 발생하면 랜덤한 시간만큼 backoff 을 실시하고, 이 충돌이 자주 발생하는 경우 exponential 하게 증가시키면서 랜덤한 backoff 를 지속적으로 실시한다.


링크레이어의 전송단위인 프레임의 어드레스는 맥 어드레스이고, 48비트의 주소로써, 인터페이스를 지칭하는 고유의 주소이다. 그리고 이러한 주소는 링크레이어에서 사용하는 어드레스 주소이며, 다음 홉에 해당하는 목적지의 맥 어드레스를 알고 해당 맥 어드레스로 전송한다. 


다음 홉에 해당하는 노드의 맥 어드레스를 알아내기 위해서 필요한 것은 IP 주소를 MAC Address 를 알아야 하는데 이 과정은 ARP 라는 프로토콜을 이용하여 해결한다. 실제로 IP패킷을 전송할 때, 포워딩 테이블과 ARP 테이블을 확인한다.


(시작)

포워딩 테이블을 Look up 하여 next 를 알아내고, 이후 next 를 가지고 ARP 테이블을 참조한다. 포워딩 테이블은 어떻게 만드는가? distance vector 혹은 link state를 통해서 만든다. 하지만 그렇게 만들면서 자연스럽게 ARP 테이블도 같이 생성된다. 여기서 ARP 테이블에는 TTL 이라는 필드가 존재하며 해당 필드는 유효시간을 나타낸다. 


switch

요즘에는 스위치라는 디바이스를 통해서 다른 머신들을 같이 연결한다. 편리할 뿐만 아니라 collision domain을 분리시켜준다. 왼쪽의 그림을 보면 전체가 collision domain 이다. 브로드캐스트 미디엄이기 때문에 하나가 시그널을 전송하면 전체에 퍼지며 다수가 시그널을 전송하면 collision 이 발생한다. 반면에 오른쪽 그림은 개별적이기 때문에 시그널로 인한 collision 이 발생하지 않는다.



스위치는 호스트들이 인식할 수 없는 디바이스이다. 스위치로 인해 무엇이 가능하고 무엇을 제공하는가?

서로 다른 호스트들이 동시에 시그널을 보내는 경우, 스위치가 들어온 다수의 시그널에 대해서 정리해서 보내준다. 여기서 스위치는 프레임이 들어왔을 때, source 가 A이고 destination 이 A' 인 경우, A' 이 포트 중에 어느 포트에 붙어있는지 알아야 보내줄 수 있다. 이렇게 포트를 어떻게 알 것인가?? 


스위치 내에 스위치 테이블이라는 또 다른 형태가 존재하는데, 해당 MAC Address 는 어떤 포트에 붙어있는지 그에 대한 내용을 참조하여 전송하는 것이다. 라우터는 포워딩 테이블을 참조해서 포워딩하고, 이 포워딩 테이블을 생성하는 것은 라우팅 알고리즘(link state 와 distance vector)를 통해서 생성하였다. 동일하게 스위치 테이블도 생성하려면 어느 알고리즘을 이용하여야 한다. 이 알고리즘은 매우 단순한 기법을 통해서 만든다. 이름은 Self-Learning 이다.


들어온 source 가 어느 포트에 들어왔는지 파악한다. 그리고 destination 이 스위치 테이블에 없어서 전체 호스트에서 flooding 을 실시한다. 그 이후에 스위치 테이블을 갱신한다. flooding 은 스위치 테이블을 만들때 가장 처음 등장하는 개념이다. 이후에 flooding 은 안 나타난다.


Interconnecting Switches

스위치를 샀는데, 8포트를 사서 7명이 연결했지만 이후에 20명으로 늘어난 경우, 스위치를 하나 더 구입해서 연결하면 된다. 스위치끼리 연결시켜 랜의 규모를 계층적으로 키우는 것이다. 이를 네트워크 레이어의 관점에서 말하면 하나의 네트워크 망을 연결하고 있는 것이다. 네트워크의 관점에서는 스위치를 인식하지 못하고 있다.


여기서, 다른 스위치에 있는 호스트로 프레임을 전송하기 위해선 어떻게 하는 것인가 질문이 생긴다. 사실 이 과정또한 Self-Learning 을 통해서 해결하고 있다.


multi-switch 환경에서는 가장 최초에 flooding 실시하여 self-learning 을 실시하고 이후에는 일어나지 않는다. 왜냐하면 source 에 대한 destination 이 flooding 을 통해 결정되기 때문이다.


학교도 사실 하나의 네트워크, 서브넷인데 그 네트워크 망 사이에 학생들은 스위치로 연결되어 있다. 사실 next hop 은 게이트웨이 라우터이지만 게이트웨이 라우터가 직접적으로 연결된것은 아니지만 switch 로 게이트웨이 라우터로 연결되어 있다.


질문)

실제로 눈에 보이는 가정용 무선 공유기와 스위치의 차이점은 무엇인가?

허브는 physical layer 의 디바이스이다. 우선적으로 비교할 것은 스위치와 공유기의 차이이다. 

공유기의 프로토콜 스택은 애플리케이션 레이어까지 있는 작은 컴퓨터의 개념이다. 사실 IP 가 하나 제공되는 회선을 하나의 컴퓨터에 연결해야하지만 그렇게 하지 않고 공유기에 연결하였다. 그리고 해당 무선 공유기에는 NAT 가 작동하여 가상의 IP 를 생성해서 여러 디바이스에게 IP를 부여하는 것이다.


집에서 흔히 보이는 공유기는 사실 하나의 라우터같은 개념이다. 하지만 애플리케이션 레이어까지 있다면 하나의 작은 컴퓨터이다. 하지만 스위치는 공유기의 기능만 하는 것이 아니라 사실 여러 호스트들을 엮어준 개념이다.


만약 사람이 더 늘어나는 경우, 가상 IP 주소가 더 필요한 경우는 어떻게 되는가?


공유기에 공유기를 꽂는다는 질문)

라우터와 라우터가 연결된 개념이다. 그렇게 된다면 하나의 서브넷와 하나의 서브넷이 생성되고 서로간의 prefix 가 달라진다. 호스트가 늘어나는 경우 확장하는 경우는 두가지이다. 라우터를 붙여서 확장하던지 혹은 스위치를 붙여서 확장하던지를 결정해야 한다. 해당 결정은 서브넷이 생기는 유무를 결정한다.


결론적으로 집에서 쓰는 공유기는 라우터이며, 라우팅이 일어나서 외부로 전송되는 것이다.


DHCP 서버가 게이트웨이 라우터에서 동작하며 DHCP Request 를 해야한다.(브로드캐스트) 


Data Center Networks

브라우저에 www.google.com 을 치면 하나의 프로세스상에서 처리를 한다. 하지만 많은 사람들이 request 를 할 것이고, 이 과정에서 하나의 프로세스가 처리할 것은 아니다. 이 뒷단에는 어떻게 되어있는가? 궁금한다.


실제로 구글같은 인터넷 서비스하는 회사를 보면, 구글에 들어오는 entry 는 동일하여도 실제로 request 를 처리하는 서버는 무수히 많아서 가장 노드가 적은 서버가 처리하는 모습이다. 그리고 이러한 서버들은 수만개, 수백만개가 있으며 이 서버들에 대한 연결은 스위치로 계층화시켜서 연결되어 있다. 스위치로 계층화 시키면 모든 것이 연결 가능하다.


사용자가 많으면 많을수록 계층화를 시켜서 처리하되, 그 이음새의 역할은 스위치가 담당하는 것이다.


시나리오

아래의 그림을 글로써, 말로써 설명하기


정리 )

  • switch 란 무엇인가

  • switch table 이란 무엇인가

  • flooding 이란 

  • 무선 공유기와 스위치의 차이점은 무엇인가

  • 공유기에 공유기를 꽂는다면 어떻게 되는가

  • 가상의 IP 주소가 더 필요한 경우는 어떻게 행동으로 옮겨야 하는가


Posted by doubler
,