BSR 연결 중개

BSR 연결 중개

개요

BSR은 하나의 리소스에 대해 두 개의 채널로 동작합니다. 각 채널은 연결 방향이 서로 반대로 수립되어, 서버/클라이언트로 구분할 수 없는 P2P구조로 동작합니다.

BSR의 통신을 중계하기 위해서 DRX도 두 개의 채널을 사용하는데, DRX간 연결 과정이 더해지면 연결이 총 6개로 늘어납니다.
로컬 DRX에서는 원격 DRX와 원격 BSR의 연결 상태를 제외한 4개의 연결만 확인 할 수 있습니다.

연결 구조

drx-ctl connections all
------------------------------------------------------------------------------------------- Name Type local-bsr-ip State local-drx-ip State remote-drx-ip ------------------------------------------------------------------------------------------- r0-node2-node1 data (local-bsr) -established-> (local-drx) <-bridged----- (remote-drx) r0-node2-node1 meta (local-bsr) <-established- (local-drx) -----bridged-> (remote-drx) ------------------------------------------------------------------------------------------- All connections : 2, Established : 2

각각의 리소스는 완전히 독립되어 작동하며, 하나의 리소스는 두개의 채널로 구성됩니다. 위의 출력에서 첫번째 채널이 Acceptor, 두번째 채널이 Connector에 해당합니다.
하나의 채널은 두 개의 연결(로컬 BSR, 원격 DRX)을 관리합니다.

각 채널의 연결을 원격 BSR까지 통합하여 표현하면 다음과 같습니다.

  • Acceptor

    • 리소스 파일의 outside IP/Port를 통해 원격 DRX의 접속을 받는다.

    • 리소스 파일의 inside IP/Port를 통해 로컬 BSR의 접속을 받는다.

  • Connector

    • 원격 DRX의 outside IP/Port로 접속한다.

    • 로컬 BSR에 접속한다.

각각의 채널은 DRX간 연결시 채널 유형(meta/data)이 정해지지 않은 상태이며, BSR과의 연결이 수립되면 BSR로부터 채널 유형을 받습니다..

접속 상태

분류

상태 값

채널

설명

동작

준비 중

allocating

전체

BAB 메모리 할당 중

메모리 할당이 완료되면 bridging 상태로 전환

DRX간 연결

bridging

전체

원격 DRX와 연결 시도 중

연결이 완료되면 bridged 상태로 전환

bridged

전체

원격 DRX와 연결됨

상태 변경 후 즉시 waiting/connecting 상태로 전환

BSR과의 연결

waiting

Acceptor

BSR의 연결을 기다리는 중

BSR과 연결되면 connected 상태로 전환

connecting

Connector

BSR로 연결 중

원격 DRX로부터 채널 유형을 받아 BSR에 접속
BSR과 연결되면 establishing 상태로 전환

connected

Acceptor

BSR와 연결됨

BSR로부터 채널 유형을 받아 원격 DRX에 전달하고 establishing 상태로 전환

establishing

전체

연결 수립중

Connector: 원격 DRX로 연결 수립 이벤트를 전달하고 established 상태로 전환
Acceptor: 원격 DRX로부터 연결 수립 이벤트를 받으면 established 상태로 전환

established

전체

연결이 수립됨

BSR의 통신 데이터를 중계한다

연결 중지

close_pending

전체

연결을 닫기 전의 정리 단계

BAB에 남아있는 데이터를 전달하고 stopping 상태로 전환

stopping

전체

연결 닫는 중

현재 연결을 닫고 stopped 상태로 전환

stopped

전체

연결이 닫힘

재 연결을 준비하고 bridging 상태로 전환

일반적인 상태변화 순서

정상적인 연결시 채널별 상태 변화는 다음과 같습니다.

연결이 끊길 경우의 상태 변화:

  • 로컬 BSR과의 연결이 끊긴 경우

    1. 연결 종료를 위해 두 채널 모두 stopping 상태로 전환된다. (data 채널은 BAB를 비우기 위해 먼저 close pending 상태를 거치게 된다.)

    2. 연결을 종료하는 작업이 완료되면 stopped 상태로 전환된다.

    3. 로컬 BSR과의 재 연결을 위해 connecting / waiting 상태로 전환된다.

  • 원격 BSR과 원격 DRX 사이의 연결이 끊긴 경우

    1. 위의 로컬 BSR과의 연결이 끊긴 경우의 상황이 원격 DRX에서 발생하면서, 로컬 DRX도 같은 순서로 stopping, stopped를 거쳐 connecting / waiting 상태로 전환된다.

    2. 로컬 BSR은 재 연결이 가능하므로 즉시 BSR로부터 접속이 이루어진다.

      1. Acceptor에 BSR이 연결되어 connected를 거쳐 establishing 상태로 전환된다.

      2. Connector는 원격 DRX가 원격 BSR과 연결되지 않았으므로 connecting 상태로 유지된다.

  • 원격 DRX와의 연결이 끊기는 경우

    1. 연결 종료를 위해 두 채널 모두 stopping 상태로 전환된다. (data 채널은 BAB를 비우기 위해 먼저 close pending 상태를 거치게 된다.)

    2. 연결을 종료하는 작업이 완료되면 stopped 상태로 전환된다.

    3. 원격 DRX와의 재 연결을 위해 bridging 상태로 전환된다.

상태값에 따른 동작 상황 분석

Acceptor 채널

Connector 채널

상황 분석

allocating

allocating

TX BAB의 크기가 매우 크거나 가상 메모리에 할당되어 속도가 느린 경우 볼 수 있다.

bridging

bridging

원격 DRX가 종료되었거나, 로컬 DRX와 원격 DRX가 서로에게 접속할 수 없다.

bridging

connecting

로컬 DRX에 원격 DRX가 접속할 수 없다.

waiting

bridging

원격 DRX에 접속할 수 없다.

waiting

connecting

로컬 BSR의 리소스가 연결중 상태가 아니거나 로컬 DRX에 접속할 수 없다.

establishing

connecting

로컬 BSR은 연결되나 원격 DRX가 원격 BSR에 연결할 수 없다.

established

connecting

로컬 BSR에서 로컬 DRX에는 연결이 되지만 로컬 DRX가 로컬 BSR에 연결할 수 없다.

establishing

established

원격 BSR에서 원격 DRX에는 연결이 되지만 원격 DRX가 원격 BSR에 연결할 수 없다.

waiting

established

로컬 DRX에서 로컬 BSR로 연결은 되지만 로컬 BSR이 로컬 DRX에 연결할 수 없다.

established

connecting

원격 DRX에서 원격 BSR로 연결은 되지만 원격 BSR가 원격 DRX에 연결할 수 없다.