5장 토큰 링

zoo_gathers·2024년 12월 5일

컴퓨터 네트워크

목록 보기
12/20


토큰 링에 대해서 살펴보자.

토큰 링 구조는 점대점으로 연결한 호스트가 순환 구조 형태로 LAN을 구성한다.

이때 링 주위에는 항상 토큰이라고 불리는 제어 프레임이 일정한 방향으로 순환하며

데이터 프레임을 전송하고자 하는 호스트는 먼저 토큰을 획득해야 데이터 프레임 전송이 가능하다.

전송된 데이터 프레임은 링을 한 바퀴 순환하면서 수신 호스트에게 전달되고, 다시 송신 호스트로 돌아오게 되며

이때 송신 호스트는 받은 데이터 프레임을 회수하고 토큰을 다시 링에 흘려 보낸다.


토큰 링 프레임은 데이터 프레임과 토큰 프레임으로 구분할 수 있다.

토큰 프레임은 위 (a)와 같이 SD, AC, ED로 구성되어 있다.

데이터 프레임은 (b)와 같이 구성되어 있다.

데이터 프레임의 경우 이전에 봤던 구조와 비슷하지만 AC와 FS라는 새로운 필드가 추가된 것을 확인할 수 있다.

그리고 토큰 링 방식에서는 호스트들 중에서 하나를 관리자로 뽑는데 이를 모니터 호스트라고 한다.

이 모니터 호스트는 링 네트워크의 관리자로 네트워크의 원활한 동작을 유지하는 기능을 수행하고 네트워크에 오류가 발생했을 때 복구하는 역할도 진행한다.


위 내용을 보면 모니터로 지정된 호스트는 링 네트워크의 원활한 동작 유지 기능과 예기치 않은 오류를 복구하는데

예시를 확인해보자.


예시 1

링에 데이터 프레임을 전송하는 호스트가 없음에도 토큰 프레임이 사라지는 오류가 발생할 수 있는데

이때 모니터 호스트는 토큰 프레임을 새로 생성해 다른 호스트가 정상적으로 데이터 프레임을 전송할 수 있도록 해결한다.


예시 2

일반적으로 호스트에서 전송한 데이터 프레임은 한 번 순환하면 송신 호스트에 의해 링에서 제거되어야 하는데 그렇지 않고 무한정 순환하는 경우

모니터 호스트가 이를 제거해 무한정 순환하는 것을 막는다.


위 과정은 LLC 계층에서 MAC 계층으로 전송 요청이 내려온 LLC 프레임을 토큰 링 프레임의 구조로 캡슐화하는 과정을 설명한다.

위 내용을 보면 LLC 계층에서 내려온 프레임이 MAC 계층의 토큰 링 프레임에서 DATA에 기록되는 것을 확인할 수 있고 앞과 뒤로 토큰 링 헤더와 토큰링 트레일러가 붙는 것을 볼 수 있다.


여기서도 SD와 ED는 프레임의 시작과 끝을 의미하고

이때 End Delimiter 필드에는 I와 E라는 두 종류의 비트가 정의 되는데

I 비트는 데이터 프레임을 여러 개로 나누어 전송하는 경우에 사용하고

I 비트의 경우 1로 지정하여 여러 개로 나뉘어진 프레임이 전송 중임을 알리고

I 비트가 0으로 표시된 프레임이 도착하면 이는 마지막 프레임이라는 것을 알려준다.

데이터의 크기가 크면 데이터를 여러 개로 나누어 전송하는 경우가 있는데 이때 수신 호스트는 나뉘어진 데이터를 받게 되면 어디서부터 어디까지가 나뉘어진 데이터인지 알지 못한다.

이때 end delimiter에 표시된 I 비트를 통해 1이면 나뉘어진 데이터임을 확인하고 수신 호스트가 다음 데이터를 기다리게 된다.

이후 I비트가 0인 데이터가 오면 마지막인 데이터로 인식해 나뉘어진 데이터를 수신할 수 있게 되는 것이다.

E 비트는 간단하게 그냥 오류 검출용으로 이용된다는 것만 알아두면 된다.


다음으로는 AC 필드를 확인해보자.

AC는 access control이라는 이름으로 여러 가지 제어 기능을 수행하기 위해서 사용된다.

AC 필드는 1바이트 즉 8비트가 할당되며

위 사진과 같이

맨 앞에 3비트는 우선순위를 위해 사용하고

T는 이 프레임이 데이터 프레임인지 혹은 토큰 프레임인지를 알려준다.

M은 앞에서 언급했던 모니터 호스트가 사용하는 비트이다.

마지막 뒤에있는 3개의 R은 예약을 제어하는 비트이다.

예약은 큰 의미가 아니라 그냥 아직 어떤 역할로 쓸지 정하지 않았다는 의미로 단순 미정이다.

그래서 그냥 미리 할당만 해놓고 큰 의미가 없는 부분이다.

R 부분은 나중에 IEEE 시리즈에 대해 회의를 거쳐 추가가 될 것이다.


위에서 간단하게 말했지만 다시 보면

앞에 PPP비트는 우선순위 비트로 토큰의 우선순위보다 높은 프레임을 전송할 수 있도록 하는 우선순위 비트이다.

해당 비트가 000인 경우엔 우선순위가 가장 낮고

해당 비트가 111인 경우엔 우선순위가 가장 높은 것임을 알 수 있다.


T 비트인 토큰 비트는 데이터 프레임과 토큰 프레임을 구분하기 위해서 사용되고 토큰 프레임은 0으로 표기된다.


M비트는 모니터 비트로 모니터 호스트가 사용하는 비트이다.

위에서 말했던 예시로 진행되는 순서를 정리해보자

  1. 특정 데이터 프레임이 링을 무한정 순환하는 현상이 발생할 수 있음
  2. 이를 방지하기 위해서 링에 연결한 호스트 중에서 특정 호스트를 모니터로 지정
    (모니터 호스트는 이미 지정되어 있음)
  3. 모니터 호스트는 기본적으로 M비트가 0이지만 데이터 프레임이 자신을 지날 때 M비트를 1로 지정
  4. M비트가 1인 프레임이 다시 모니터 호스트를 지나가면 해당 프레임이 한 번 순환했다는 의미로 인식
  5. 해당 프레임을 링에서 제거하여 순환 현상을 방지

위 Frame control의 경우 이전에 토큰 버스에서도 한 번 확인을 했었다.

8비트로 이루어져 있고 맨 앞에 2비트를 사용해서

제어용 MAC 프레임인지

혹은

LLC 프레임인지(위 LLC 계층에서 내려온 데이터인지)

확인한다.

앞에 TT 비트가 00일 경우엔 제어용 프레임으로 확인하는데

제어용 프레임에도 종류가 다양하게 존재하기에 뒤에 6개의 CCCCCC 비트를 통해서 제어 명령의 종류를 구분하도록 한다.
(제어용 프레임 중 하나가 토큰 프레임임)

TT 비트가 01인 경우엔 상위 LLC 계층에서 전송을 요구한 LLC 프레임을 알 수 있다.


다음으로 Frame status 필드는 위에서 트레일러의 맨 끝에 위치한 것을 확인했다.

이 Frame status는 수신 호스트가 송신 호스트에 응답할 수 있도록 하는 필드로 아래를 통해 이해해보자.


Frame status는 8비트로 구성되며 2개의 플래그 비트인 A와 C 필드로 정의된다.


A 비트의 용도는 수신 호스트가 링 네트워크에서 제대로 동작하는지 확인하는 용도로

데이터 프레임의 수신 호스트의 주소가 자신과 다르면 링 인터페이스를 그냥 넘기고 같으면

A 비트에 1로 표시를 하는 것이다.

A 비트가 1로 표시되었다는 것은 수신 호스트가 데이터를 제대로 전송 받았다는 것을 말한다.


그럼 C 비트는 무엇을 의미하냐?


C 비트는 데이터가 수신 호스트에 도착을 했는데 수신 호스트가 데이터를 버퍼에 넣었냐 넣지 않았냐를 의미한다.

간단히 수신 호스트에 도착한 데이터를 수신 호스트가 버퍼에 넣으면 C의 값이 1이 되는 것이다.


정리하면

너가 보낸 데이터가 나한테 왔고 내가 그 데이터를 버퍼에 넣었으면

AC가 11이 되는 것이고

너가 보낸 데이터를 내가 받았는데 그 데이터를 버퍼에 넣지 않았어 라고 하면

AC의 값은 10이 되는 것이다.


이렇게 2개의 플래그 비트인 AC를 통해서 수신 호스트가 송신 호스트에게 너가 보내준 데이터를 받았는지, 버퍼에 저장을 했는지 알려주는 역할로 사용한다.


위 PPT를 보면 더 쉽게 이해할 수 있다.

A 비트가 0인 상태로 돌아오면 송신자는 네트워크에 무언가 이상이 생겼음을 알 수 있음.

정리
=>
송신 호스트 A가 데이터를 수신 호스트 C에게 보냄
A가 보낸 데이터를 B를 지나는데 B는 자신에게 온 데이터가 아님은 확인
C는 데이터가 자신에게 온 것임을 확인하고 A 비트를 1로 변환
C는 받은 데이터를 버퍼에 저장하기 위해 버퍼에 데이터를 저장하고 C 비트를 1로 변환

하지만 C 호스트의 경우 버퍼가 가득차서 데이터를 버퍼에 저장하지 못하는 상황이 생기기도 함.

이때 송신 호스트는 AC 비트가 10인 데이터를 받게 됨.


결과적으로 송신 호스트가 받았을 때 AC 비트가 모두 11인 경우에만 정상적으로 데이터 전달이 완료된 것임.

A와 C 중에서 하나라도 0인 경우는 무언가 문제가 있는 것이고

A와 C 둘 다 0인 경우는 수신 호스트가 링에서 이탈 된 경우를 말한다.


profile
전공: 소프트웨어, 관심 분야: LLM, NLP, 지식 그래프

0개의 댓글