Computer Science/네트워크

[4. Link Layer] Multiple Access Protocol, CSMA/CD

밥은답 2023. 5. 8. 16:06
반응형

링크 레이어에서는 네트워크 계층에서 내려온 패킷을 개별 링크를 통해서 어떻게 전송 되는지에 대해 다룬다.

네트워크 계층의 패킷은 링크계층의 헤더가 붙어 하나의 Fragment 단위로 전송이 된다. 또한 다수의 호스트가 연결된 브로드캐스트

채널에서의 전송 충돌을 해결해야한다.

링크 계층은 Network Interface Controller(NIC)에 의해서 구현된다.

다중 접속 링크와 프로토콜

네트워크 링크는 Point to Point 링크와 Broadcast Link 두가지 종류가 있다.

우선 브로드캐스트 링크는 하나의 채널에 다수의 노드가 연결된 상태이기 때문에 동시에 여러 노드가 프레임을 전송하면

Multiple Access Problem이 발생하기 때문에 이 문제를 해결해야한다.

이러한 문제를 컴퓨터 네트워크에서 해결하기 위해서 사용하는 프로토콜이 Multiple Access Protocol이다.

두개 이상의 프레임이 충돌하면 신호를 받아도 해석하지 못하여 의미없는 신호가 된다.

다중접속 프로토콜 종류

1. 채널 분할 (Channel Partitioning)

채널 분할 프로토콜은 대역폭을 시간을 나누어서 사용하는 방식이다.

시간 프레임을 또 나누어 시간 슬롯으로 나누어서 사용하기 때문에 각 노드는 자신이 사용할 수 있는 시간이 있다.

이 프로토콜은 누구에게나 같은 시간을 할당하고 보낼 수 있는 기회를 주기 때문에 공정할 수 있지만 자신이 전송해야할 패킷의 개수와 상관없이 항상 일정한 시간을 기다려야 된다는 단점이 있다.

2. 랜덤 접속 (Random Access)

이 프로토콜에서는 각 노드들은 랜덤한 순서로 자신의 패킷을 전송한다. 랜덤으로 전송하기 때문에 충돌이 발생할 수 있기 때문에

충돌을 어떻게 해결할것인지가 중요한 문제이다.

충돌이 발생했다면 해당 패킷은 랜덤한 시간만큼 기다렸다가 재전송을 하게 된다. 하지만 여기서 얼만큼 기다려야하는지에 대한 문제가 발생한다.

기다릴 수 있는 시간의 범위가 매우 크기 때문에 매우 오래 기다렸다가 재전송해야하는 경우가 발생할 수 있다.

이 문제는 CSMA, CSMA/CD에서 다룬다

3. 순번 (Taking-turns)

순번 프로토콜은 마스터 노드가 각 노드에게 라운드 로빈 방식으로 폴링을 통해 전송할 수 있는 기회를 준다.

그렇기 때문에 충돌이 일어날 경우가 없다. 하지만 가장 큰 단점인 Single point failure이다.

마스터 노드에 문제가 생기면 연결된 모든 노드에도 문제가 생기게 된다.

CSMA & CSMA/CD (Carrier Sense Multiple Access, with Collision Detection)

랜덤 접속 프로토콜에서 발생할 수 있는 문제점은 서로 랜덤으로 패킷을 전송하기 때문에 충돌이 발생할 수 있다는 것이였다.

그러기 위해서는 두가지 규칙이 있다.

1. Listen Before Transmit

노드는 자신의 패킷을 전송하기 전에 Carrier Sense를 통해서 채널의 상태를 확인한다

2. 동시에 전송하면 중단한다

만약 충돌이 발생한다면 노드는 자신의 전송을 중단하고 랜덤한 시간을 기다린 이후 재전송을 하게 된다

채널 전파 지연 때문에 브로드캐스트 채널의 종단간에서는 충돌이 발생할 수 밖에 없다.

충돌이 발생하여 패킷이 제대로 전송되지 않았다면 문제가 발생한다.

이더넷 상황에서는 첫번째 게이트웨이 라우터까지 패킷을 전송하면, 라우터는 해당 패킷에 대한 어떠한 피드백을 제공하지 않는다.

즉 노드의 패킷이 제대로 전달 되었는지 아닌지 알 수 있는 방법이 없다. 그렇기 때문에 충돌 검출을 확실하게 하여 제대로 전송이 되었다는 확신이 필요하다.

그렇기 때문에 이더넷에서는 메시지 Frame 사이즈의 최소 길이를 강제하고 있다(64바이트 정도)

CSMA/CD

충돌이 발생하면 각 노드는 자신의 전송을 중단하고 랜덤한 시간을 기다린다고 했다. 그 이후 재전송을 하는데 고정 시간만큼 기다리면 충돌을 계속 발생한다. 그렇기 때문에 랜덤시간을 기다린다.

하지만 랜덤한 시간이 너무 크면 유휴 시간이 너무 크고, 너무 작다면 다시 충돌을 할 가능성이 높아진다.

그렇기 때문에 사용하는 것이 Binary Exponential Backoff(이진 지수적 백오프) 이다.

충돌을 많이 하면 할수록 기다리는 시간의 범위가 증가하게 된다.

반응형