본문 바로가기

컴퓨터 네트워크/Computer Networking 정리

CH6 : Data Link Layer (3)

* 이 글에 관련된 모든 내용은 Computer Networking A Top-Down Approach 7th에서 가져온 내용이다. *

 

 

Ethernet


이더넷은 현재 유선 LAN시장에서 압도적 점유율을 보여준다. 

token LAN이나 ATM에 비해서 매우 간단하고, 더 가성비가 좋기 때문이다.

 

초창기 이더넷은 bus topology를 사용했다.

한 coxial cable을 주축으로 모든 host들이 연결되어있는 구조이다.

그러나 이 방식을 사용하면 모든 노드들이 같은 collision domain에 속하기 때문에 요즘은 star topology를 사용한다.

위처럼 node들이 하나의 swtich를 통해 공유되는 모습이다.

Frame format 


Ethernet

IEEE 802.3

 

Ethernet and IEEE 802.3


MAC Protocol을 사용한다.

 

back-to-back frames간에 96bit time을 기다린다. 

collision이 발생하면 32-bit의 jamming sequecne를 보내는데, 0101010101010 이런식으로 이루어져있다고 한다.

또한 1-persistent방식을 사용한다. 이 방식에대해선 이전글에서 자세히 설명했으니 읽고오자.

 

이더넷은 CSMA/CD 방식으로 구현이 되어있다. 이또한 이전글에서 자세히 설명했으니 읽고오자.

이더넷의 동작과정은 다음과 같다.

 

1. 어답터는 네트워크 레이어로부터 datagram을 받고 frame을 생성한다.

2. 만약 어답터가 channel이 idle하다고 판단하면 frame을 전송한다. 이때, 위에서 언급한 것처럼 96bit time동안 channel이 idle상태에 머물러있으면 그제서야 보낸다. 만약 channel이 busy하다면 계속 기다린다.

3. 만약 어답터가 frame을 전송중에 어떤 collision을 감지하지 못했다면 성공적으로 보낸 것이다.

4. 만약 어답터가 frame을 전송하던 중 collision을 감지하면 전송을 중단하고 jamming sequence를 보낸다.

5. 전송을 멈춘 후에 어답터는 expotential backoff 방식글 통해 재전송을 결정한다. 

 

Bianry expotential backoff 

어답터가 collision을 감지한 후에 어떻게 재전송을 처리할지에 대한 알고리즘이다.

기본적인 아이디어는 waiting time을 랜덤하게 선택하는 것이다.

 

만약 i번째 collision이 발생하면 0~((2^i)-1)까지의 slot time 중 하나를 선택해 기다린 후 재전송을 한다.

이때 1 slot time = 512bit = 51.2 us for 10M 이다.

 

예를 들어 어떤 어답터가 첫번째 collision을 감지했다면 [0, 51.2us]중 하나를 선택해 기다리고, 

만약 두번째 collision을 감지했다면 [0, 51.2us, 102.4us, 153.6us]중 하나를 선택해 기다린다.

 

wating time이 담긴 배열을 set이라고 표현하자.

주구장창 set의 크기를 늘릴 수 없으니 한계를 지정해놨다. 

10번 이상의 collision에 대해선 10번 collision과 같은 set을 사용한다. 

(11번이 발생해도 10번의 collision과 같이 취급)

또한 16번 이상의 collision에 대해서 controller는 더이상 전송을 보내지 않고 포기한다.

 

 

CSMA/CD의 효율성을 따지면 다음과 같다.

t(prop) : LAN안에서 가장 먼 두 노드간의 propagtion delay

t(trans) : MAX-SIZE의 frame을 보낼 때 걸리는 transmition time

 

t(prop)가 작고, t(trans)가 클 때 효율성이 좋은 것을 볼 수 있다.

 

 

그렇다면 위의 방식에서는 문제점이 없을까?

당연히 있다.

 

Capture effect

expotential backoff 방식때문에 문제점이 생긴다.

예를들어 다음과 같은 상황이다.

 

1. A와 B가 동시에 channel idle하다고 판단한 후 서로 데이터를 보내 충돌이 발생한다.

2. A와 B는 서로 첫번째 충돌이므로 [0, 51.2us]에서 wating time을 선택할 것이다. 이때 A는 0을 선택해 바로 재전송을 하고 B는 51.2us를 선택했다고 해보자.

3. 그리고 그 후에 B가 A에게 다시 충돌을 하게 되면 A는 현재까지 충돌 횟수가 1이므로 [0, 51.2us]에서, B는 충돌 횟수가 2이므로 [0, 51.2, 102.4, 153.6]에서 고르게 될 것이다.

 

wait time 이 작은 것을 골라야 channel을 사용할 기회가 많아지는 것인데, 3번에서 더 작은 wait time을 선택할 확률은 A가 당연히 높다. 

결국, 첫 충돌에서 더 작은 wait time을 선택한 쪽이 점점 더 작은 wait time을 선택할 확률이 높아지는 것이다. (빈빅빈 부익부) 

 

Ethernet Types


이더넷의 타입에는 다음과 같은 종류들이 있다.

10Base5에서 10은 10M (전송 속도)를 나타내고 base는 base-band라는 뜻이다.

base-band의 반대말은 broad-band이다. 대충 느낌이 올것이다.

그리고 뒤의 5는 500m정도의 길이만큼 전송할 수 있다는 의미이다.

 

10BASE5

최대 segment길이가 500meter인데 이 의미는 위에서 말했듯이 하나의 이더넷으로 최대 500meter까지 연결할 수 있다는 것이다. 이를 늘리기 위해선 repeater를 사용해 이더넷끼리를 연결해야 하는데, 리피터는 최대 4개까지 사용할 수 있다.

즉 10BASE5에서 가능한 최대 이더넷의 길이는 약 2.5km이다.

 

또한 Minimum frame size는 64bytes로 고정이다.

이는 충돌 감지를 위함인데, 이전글에서 배웠듯이 host는 frame을 보내고 RTT동안 channel에서 충돌이 나는지 안나는지 확인해야 한다. 이를 위해서 timer가 필요하겠지요!

근데 프레임 크기를 최소 64byte로 잡아놓으면 굳이 타이머가 필요 없다.

 

64bytes = 512bits = 51.2us (us는 마이크로세컨드로 봐주세요)로 환산이 가능한데, 이는 이 이더넷 최대 길이 2.5km+4개의 repeater에 대한 RTT와 비슷하다. 

 

때문에 최소 64bytes를 보내면 자신이 패킷을 보내는 동안만 channel을 감시해도 되는 것이다. 

(만약 64bytes보다 작은 사이즈를 보내면 프레임을 보내는 시간이 RTT=51.2us보다 작으므로 프레임 보내는 시간 말고도 더 봐야하니까 따로 timer가필요)

 

처음에는 왜 MAX 사이즈가 아니라 MIN사이즈 일까 한참 고민했는데, 이해가 되었다.

 

10BASE5 vs 10BASE2

10Base5는 일단 선이 엄청 두껍다 (노란 두꺼운 선) 때문에 한 선에 host들을 추가할 때는 작은 핀같은걸 뚫어서 연결한다고 한다. (매우 hard)

10Base2는 가능 거리가 조금 짧은 대신에 선이 얇고, 추가하기도 쉽다. (slot형태)

 

10BASE-T vs 10BASE-F

 

 

Star topology


위에서 봤던 방식은 bus방식이었고, 여러 문제 때문에 요즘은 star방식을 사용한다.

잠깐 언급했었지만 하나의 허브나 스위치에 한포트에 하나의 호스트만 연결하여 사용한다. 때문에 충돌을 걱정하지 않아도 된다.

허브는 physical-layer repeater인데, frame buffering이 없다.

또한 충돌이 발생하지 않기 때문에 CSMA/CD방식도 필요가 없다. 단지 어답터가 충돌을 감지한다.

 

 

 

 

또한 더 빠른 이더넷들이 등장했었다. 표로만 살펴보자.

'컴퓨터 네트워크 > Computer Networking 정리' 카테고리의 다른 글

CH7 : WiFi (1)  (0) 2022.03.24
CH6 : Data Link Layer (4)  (0) 2021.12.08
CH6 : Data Link Layer (2)  (0) 2021.12.02
CH6 : Data Link Layer (1)  (0) 2021.12.01
패킷 전송(Packet Delivery)_ARP  (0) 2021.11.25