본문 바로가기

ComputerScience/Network

컴퓨터통신 - 15. 이더넷(유선LAN)

728x90

1. 이더넷 개요

- LAN의 대명사로 수많은 기술들을 평정한 기술이다.

- 2계층의 다중접근의 예이다.

- 여러 노드가 하나의 bus를 공유하는 상황이고 저 공유하는 링크를 버스라고 한다. 이 모양을 버스 토폴로지 라고 한다.

- 기술적으로는 CSMA/CD라고도 부른다.

- CS : carrier sense : 반송 신호 감지

- MA : multiple access : 다중 접근

- CD : collision detection : 충돌 검출

- 여러 노드들이 하나의 버스를 같이 사용하다보면 충돌이 일어날 수 있다. 이 충돌을 막는 방법이 매체접근제어 MAC기술이다.

- 뒤에서 하나씩 다 배울 것이다 걱정말자.

2. 물리적 특성

- 이더넷은 버스 토폴로지로 구성된다. 케이블의 한계를 극복하기 위해 repeater를 활용한다.

- 이런 방식은 경로가 하나로 결정되고 loop가 없다. 이런 구조를 tree 토폴로지라고 한다.

- 가로줄 한줄 한줄을 lan이라고 하고 lan들을 연결하는 세로선을 back bone이라고 한다.

- 현실세계에서는 이런 고전적 방법을 사용하지는 않는다.

- 위처럼 동축케이블로 전부를 연결하는 것보다 더 저렴한 utp + hub를 사용한다.

.

- 사실상 허브가 하나의 버스라고 보면된다. 가장 위쪽에 있는 큰 hub가 backbone hub이다.

- 이게 보편적인 lan의 모습이다.

3. 프레임 형식

- 비트들을 묶음으로 보내기 위해 감싼 것을 프레임이라고 했다.

- Preamble : 프레임이 가니까 준비하라는 비트들이다.

- Dest addr, Src addr : 이전에 배웠던 HDLC는 기본적으로 점대점 연결위에 전달되는 프레임이기 때문에 출발,목적지 주소가 필요가 없었다. 하지만 이더넷에서는 버스를 타고 어디서 왔고 어디로 가는지 주소가 필요하다. 

- 이더넷 기술이 50년가까이 장수할 수 있었던 비결중 하나는 주소를 위해 48비트(6바이트)의 큰 공간을 할당해 놓은 것이다. (고갈 위협이 없음)

- 각각에 어댑터에 대해서 48비트 전세계 유일한 주소가 할당되고 이는 하드웨어의 id로도 활용이 된다.

- 이더넷은 기브로드캐스팅이 기본이다. 목적지 주소가 전부 1로 구성되면 브로드캐스팅을 하겠다는 것이다. 즉 여기서 주소만 할당해주면 유니캐스팅이 구현되는 것이다.

- 참고로 dest addr이 0으로 시작하면 유니캐스트 1로 시작하면 멀티캐스트이다.

 

- 위에서 말했다시피 어댑에서는 모든 프레임을 수신한다. 자기가 필요한 내용만 걸러서 수신하는 것이다. 

- 당연히 목적지 주소가 자신의 유니캐스트 주소라면 받아들인다.

- 프레임이 브로드캐스트 주소로 지정되어있으면 받아들일 것이다.

- 자신이 해당하는 멀티캐스트라면 받아들인다.

- 위의 조건에 해당하지는 않더라도 promiscuous mode(무차별모드)일 때는 모든 프레임을 받아들이다. (관리자를 위한 기능이지만 보안에 위협이 되는 악용이 가능하다)

4. 전송 알고리즘 (Transmitter Algorithm)

- 버스를 공유하고 있기 때문에 누가 어떻게 쓸것이냐를 관리하는 알고리즘이 필요하고 MAC이 이에 해당한다.

- 신호등처럼 누군가가 제어를 해줄수도 있지만 MAC처럼 알아서 경쟁하는 방식이 있을 수 있다. 아니면 누가 얼마 동안 버스를 사용하겠다 등의 예약 방식이 있을 수 있다.

 

- 이더넷은 경쟁방식을 채택하고 있다.

- CS : carrier sense는 지금 링크를 누가 점유 하고 있는지 sense하는 것을 말한다.

 

- 확인해봤더니 아무도 링크를 지나가고 있지 않다면 그 회선은 idle상태인 것이다. 이 상태라면 바로 신호를 보내게 된다.

하지만 마냥 계속 사용할 수는 없으니 제약을 걸어두게 된다. 메시지 사이즈(body의 길이)의 상한선을 1500바이트로 제한한다.

- 또한 연속해서 프레임을 보내려면 9.6마이크로초만큼 기다려야 한다. 

- 이렇게 제약을 걸어 carrier가 비도록 하여 다른 노드에게 기회를 주게 된다.

 

- pulse가 지나가고 있다면 (회선이 사용중)

- 유휴 상태가 될때까지 기다렸다가 즉시 전송할 수 있다. 링크가 노는 시간을 줄일 수는 있으나 비는 시간을 노리고 있던 여러 노드들이 동시에 보내는 일이 생길 수 있다.

- 이런 상황을 피하고자 p-persistent라는 형태를 사용하기도 한다. 유휴상태를 발견 하자마자 특정 확률로 진입을 결정하는 것이다.

- 1-persistent이면 버스가 비자마자 바로 들어가는 것이다.

5. 충돌 (Collision)

- 이더넷은 전송 알고리즘으로 공격적인 경쟁방식을 채택한다고 했다.

- 이런 상황은 충돌위험이 있기 때문에 충돌에 대처할 수 있는 방법이 필요하다.

- CD (Collision Detection) : 유휴 상태를 인지하자마자 메시지를 전송하는데 전송 와중에도 누군가 신호를 보냈는지 회선을 계속 점검하는 것이다. 만약 전송 중에 충돌이 확인 되면 즉시 전송을 멈춘다.

- 위의 그림처럼 A가 프레임을 보냈고 버스를 다 덮기 직전인데 B가 CS로 비어있음을 확인하고 프레임을 보낸다.

- A가 충돌을 감지하려면 B의 신호가 A까지 도달해야 한다.

 

- 그럼 언제까지 충돌 감지를 진행해야 할까? 내가 보내려는 메시지가 완전히 버스를 점유할때까지 cd를 수행하면 되지만 통계적으로 최소 51.2 마이크로초동안 검사를 지속하면 된다고 한다.

- 즉 내가 51.2 마이크로 초동안 프레임을 보내면서 CD를 한다면 충돌이 발생했는지 여부를 확인하고 대처할 수 있다는 것이다. 

- 만약 51.2마이크로 초 이내에 전송이 끝나버리면 수신자의 위치에 따라 충돌 여부를 확신하기 어려울 수 있기 때문에 최소길이 규정이 추가된다. 브로드캐스트를 예로들면 가까이 있는 수신자는 수신 완료되고 멀리 있는 수신자에게 충돌이 났다면 어디서 충돌을 한건지 알기가 어려워진다.

- 즉 10Mbps 기준 전송 최소 프레임의 길이가 512비트는 되어야 한다는 것이다. 따라서 만약에 5바이트 정도의 적은 데이터만 보내더라도 이더넷은 padding으로 크기를 키워서 보낸다.

 

- 그럼 충돌이 감지 되면 어떻게 하는가?

- 충돌을 감지한 A는 jam signal("충돌났으니까 버려~)을 보내면서 즉시 프레임 전송을 멈춘다.

- 그 다음 지수 백오프(exponential backoff)를 수행한다.

- 첫번째 충돌 발생 : (0, 51.2 마이크로초) 중 하나 선택한다. 한명은 바로 보내고 다른 한명은 기다렸다가 보낸다.

- 두번째 충돌 발생 : (0, 51.2, 102.4, 153.6) 에서 선택해서 delay를 준다.

- n번째 충돌 발생 : random k * 51.2, k = 0...2^n -1

- 실험적으로 보통 16번 미만에서는 이 방식으로 해결이 된다.

6. 정리

- 이더넷의 프레임 전송 과정을 흐름도로 살펴보자.

- carrier sense 신호가 false이면 계속해서 busy waiting을 하며 신호를 보낼 기회를 노린다.

- 그렇게 기회를 얻으면 바로 프레임을 보내고 51.2 마이크로 초까지는 계속해서 충돌 발생을 감지한다.

- 감지가 안되었다면 바로 전송 완료로 설정하면 되지만 충돌이 발생했다면 jam sequence를 보내서 즉시 전송을 멈춘다. 이 즉시 멈춤으로써 link의 bandwidth를 아낄 수 있다.

- 이제 backoff로 다시 보낼 기회를 노린다.

7. 이더넷 사용경험

- 버스에 존재하는 패킷들의 길이 분포는 어떻게 될까?

- 관찰해봤더니 짧거나(약80) 긴(약 1500) 두가지 패킷이 두드러졌다. 이런 형태를 bimodal이라고 한다.

- 또한 버스가 10M라고 하면 최대한 과부화를 피하는 것을 권장한다. 예를들면 노드들로부터 버스로 입장하려고 하는 패킷들의 크기가 약 3M를 넘지 않도록 해서 효율을 30퍼센트 미만으로 떨어져야 이더넷의 성능이 보장될 수 있다.

- 과부화가 큰 환경에서는 버스의 크기를 키우는 것도 방법이겠지만 네트워크를 계속 쪼개는 것도 한가지 방법이다.

8. 이더넷 확장

- 이더넷은 계속해서 속도를 개선해 나가고 있다. 

- 스위칭 기능이 추가되었다. repeater대신 bridge를 활용하는 것이다.

- 두 링크를 브릿지로 연결한다. 만약 위에 링크에 출발 노드와 도착 노드가 존재하면 브리지는 아래 링크와 연결을 막는다. 이를 filtering이라고 한다. 반대로 위에 노드에서 아래 노드로 전달될때는 링크를 연결한다. 이렇게 repeater보다 더 똑똑하게 switch기능을 수행한다.

- 집에서 사용하는 공유기는 일종의 hub이다. 기존의 bus가 들어간게 아니라 훨씬 지능형인 switch가 들어있다.

728x90
반응형