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๊ณผ์˜ ์—ฐ๊ฒฐwaitingAcceptorBSR์˜ ์—ฐ๊ฒฐ์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ค‘BSR๊ณผ ์—ฐ๊ฒฐ๋˜๋ฉด connected ์ƒํƒœ๋กœ ์ „ํ™˜
connectingConnectorBSR๋กœ ์—ฐ๊ฒฐ ์ค‘

์›๊ฒฉ DRX๋กœ๋ถ€ํ„ฐ ์ฑ„๋„ ์œ ํ˜•์„ ๋ฐ›์•„ BSR์— ์ ‘์†
BSR๊ณผ ์—ฐ๊ฒฐ๋˜๋ฉดย establishing ์ƒํƒœ๋กœ ์ „ํ™˜

connectedAcceptorBSR์™€ ์—ฐ๊ฒฐ๋จ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 ์ฑ„๋„์ƒํ™ฉ ๋ถ„์„
allocatingallocatingTX BAB์˜ ํฌ๊ธฐ๊ฐ€ ๋งค์šฐ ํฌ๊ฑฐ๋‚˜ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น๋˜์–ด ์†๋„๊ฐ€ ๋Š๋ฆฐ ๊ฒฝ์šฐ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
bridgingbridging์›๊ฒฉ DRX๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ๊ฑฐ๋‚˜, ๋กœ์ปฌ DRX์™€ ์›๊ฒฉ DRX๊ฐ€ ์„œ๋กœ์—๊ฒŒ ์ ‘์†ํ•  ์ˆ˜ ์—†๋‹ค.
bridgingconnecting๋กœ์ปฌ DRX์— ์›๊ฒฉ DRX๊ฐ€ ์ ‘์†ํ•  ์ˆ˜ ์—†๋‹ค.
waitingbridging์›๊ฒฉ DRX์— ์ ‘์†ํ•  ์ˆ˜ ์—†๋‹ค.
waitingconnecting๋กœ์ปฌ BSR์˜ ๋ฆฌ์†Œ์Šค๊ฐ€ ์—ฐ๊ฒฐ์ค‘ ์ƒํƒœ๊ฐ€ ์•„๋‹ˆ๊ฑฐ๋‚˜ ๋กœ์ปฌ DRX์— ์ ‘์†ํ•  ์ˆ˜ ์—†๋‹ค.
establishingconnecting๋กœ์ปฌ BSR์€ ์—ฐ๊ฒฐ๋˜๋‚˜ ์›๊ฒฉ DRX๊ฐ€ ์›๊ฒฉ BSR์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†๋‹ค.
establishedconnecting๋กœ์ปฌ BSR์—์„œ ๋กœ์ปฌ DRX์—๋Š” ์—ฐ๊ฒฐ์ด ๋˜์ง€๋งŒ ๋กœ์ปฌ DRX๊ฐ€ ๋กœ์ปฌ BSR์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†๋‹ค.
establishingestablished์›๊ฒฉ BSR์—์„œ ์›๊ฒฉ DRX์—๋Š” ์—ฐ๊ฒฐ์ด ๋˜์ง€๋งŒ ์›๊ฒฉ DRX๊ฐ€ ์›๊ฒฉ BSR์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†๋‹ค.
waitingestablished๋กœ์ปฌ DRX์—์„œ ๋กœ์ปฌ BSR๋กœ ์—ฐ๊ฒฐ์€ ๋˜์ง€๋งŒ ๋กœ์ปฌ BSR์ด ๋กœ์ปฌ DRX์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†๋‹ค.
establishedconnecting์›๊ฒฉ DRX์—์„œ ์›๊ฒฉ BSR๋กœ ์—ฐ๊ฒฐ์€ ๋˜์ง€๋งŒ ์›๊ฒฉ BSR๊ฐ€ ์›๊ฒฉ DRX์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†๋‹ค.