October 01, 2020
์ฐธ๊ณ ๋์: ์ปดํจํฐ ๋คํธ์ํน : ํํฅ์ ์ ๊ทผ. 7ํ. James F. Kurose , Keith W.Ross ์ง์
ํผ์ด ๋ผ๊ณ ๋ถ๋ฅด๋ ํธ์คํธ๋ค์ด ํด๋ผ์ด์ธํธ๋ ๋๊ณ , ์๋ฒ์ ์ญํ ์ ํ๊ธฐ๋ ํ๋ค.์๊ฐ ํ์ฅ์ฑ(Self-Scalability) ๋ฅผ ์ ๊ณตํ๋๋ฐ, P2P๋ ์ด๋ค ํธ์คํธ๊ฐ ํ์ผ์ ๋ด๋ ค๋ฐ๋ ๊ฒ๊ณผ ๋์์ ๋ค๋ฅธ ํผ์ด๋ค์๊ฒ ์
๋ก๋ ํ๊ธฐ ๋๋ฌธ์ ๋คํธ์ํฌ์ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์๊ฒ๋๋ค.NF/์๋ฒ์ ์
๋ก๋ ์๋ ์ ํผ์ด๋ค ์ค ๊ฐ์ฅ ๋ค์ด๋ก๋ ์๋๊ฐ ๋๋ฆฐ ํผ์ด์ ์๋์ ๋ฐ๋ผ ์ฌ๋ถ๋ฐฐ์๊ฐ์ด ๊ฒฐ์ ๋์ง๋ง, P2P ๊ตฌ์กฐ์์๋ NF/์๋ฒ์ ์
๋ก๋ ์๋ + ์
๋ก๋๋ฅผ ํ๋ ๋ชจ๋ ํผ์ด๋ค์ ์
๋ก๋ ์๋์ ํฉ ๊ณผ ํผ์ด๋ค ์ค ๊ฐ์ฅ ๋ค์ด๋ก๋ ์๋๊ฐ ๋๋ฆฐ ํผ์ด์ ์๋ ์ ๋ฐ๋ผ ์ฌ๋ถ๋ฐฐ ์๊ฐ์ด ๊ฒฐ์ ๋๋ค.์ค์์ง์ค๋ ๋ฐฉ์์ ์ผ๋ถ ์ฑํํ P2P ๊ตฌ์กฐ์ด๋ค.Napster์ ์ด์๋ฐฉ์์ ๋๋ต์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ๋ค.
์ด๋์ ์์นํด์๋์ง์ ๋ํ ์ ๋ณด๋ฅผ ์ง์ค์์ผ์ ํผ์ด๋ค์ด ์ํ๋ ์ ๋ณด๋ฅผ ๋๊ฐ ๊ฐ์ง๊ณ ์๋์ง ๋น ๋ฅด๊ฒ ํ์
ํ ์ ์๋๋ก ํ๋ ์ฅ์ ์ด ์๋ค.Query Flooding ์ด๋ผ๋ ๋ฐฉ์์ ์ฌ์ฉํ๋ ์์ ํ P2P ๋คํธ์ํฌ ์์คํ
์ด๋ค. ์ฌ๊ธฐ์ ์์ ํ๋ค๋ ๊ฒ์ ์ค๊ฐ์ ๋ค๋ฅธ ์ค์ ์๋ฒ์ ๋์์ด ์์ด ํผ์ด๋ผ๋ฆฌ ๊ณง๋ฐ๋ก ํต์ ์ ํ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.Overlay Network ๋ฅผ ์ฌ์ฉํ๋ค.flooding ์ด๋ผ๊ณ ๋ถ๋ฅด๋ ์ง์๋ฅผ ๋ณด๋ด๊ณ back propagation ์ด๋ผ๊ณ ๋ถ๋ฅด๋ ์๋ต์ ์ฃผ๊ณ ๋ฐ๋๋ค.Servents(Server + Client) ๋ผ๊ณ ๋ ๋ถ๋ฅธ๋ค.Gnutella ๋ ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ผ๋ก ํธ์คํธ๋ฅผ ๋คํธ์ํฌ์ ํผ์ด๋ก ์ฐธ์ฌ์ํจ๋ค.
GnuCache ์๋ฒ์ ์ ์ํด์ ํ์ฌ ๋คํธ์ํฌ์ ์ฐธ์ฌ ์ค์ธ ๋ค๋ฅธ ํผ์ด๋ค์ ๋ฆฌ์คํธ๋ฅผ ๋ฐ์์จ๋ค.Gnutellan Connect์์ฒญ์ ๋ณด๋ธ๋ค.Gnutella OK ์๋ต์ ๋ณด๋ธ๋ค.ping ๋ฉ์ธ์ง๋ฅผ ์ด์ ํผ์ด๋ค์๊ฒ ๋ณด๋ด๋๋ฐ, ์ด ๋ฉ์ธ์ง๋ฅผ ๋ฐ์ ํผ์ด๋ค์ pong ๋ฉ์ธ์ง๋ก ์๋ตํ๊ณ , ์์ ์ด ๋ฐ์ ping ๋ฉ์ธ์ง๋ฅผ ์์ ์ ์ด์ ํผ์ด๋ค์๊ฒ ๋ค์ ๋ณด๋ธ๋ค.Gnutella ๊ฐ ์ด๋ค ์ ๋ณด๋ฅผ ํผ์ด๋ค๋ก๋ถํฐ ์ฐพ์ ๋๋ ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ ๊ฑฐ์น๋ค.
Query Flooding์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.Gnutella ๋ ๋จ์ํ ๊ตฌ์กฐ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค๋ ์ฅ์ ์ด ์์ง๋ง, query flooding ์ ๊ณ์ ๋ฐ๋ณตํด์ผํ๊ธฐ ๋๋ฌธ์ ์ํ๋ ์ ๋ณด๋ฅผ ์ฐพ๋๋ฐ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆด ๊ฐ๋ฅ์ฑ์ด ๋๋ค. ๋ํ ์ํ๋ ์ ๋ณด๋ฅผ ์ป์ง ๋ชปํ๋ฉด ๊ณ์ํด์ ์ฟผ๋ฆฌ๋ฅผ ์ ํํ๊ธฐ ๋๋ฌธ์ ์๋ชปํ๋ฉด broadcast storm์ ๋ง๋ค์ด ์ ์ฒด ํธ๋ํฝ์๋ ํฐ ์ํฅ์ ์ค ์ ์๋ค.
limited-scope query flooding์ ์๊ฐํ ์๋ ์์ง๋ง, ์ด๋ ๊ฒ ํ๋ฉด ํผ์ด๋ค์ ๋ง์ด ์ ์งํ๋ ๊ฒ์ด ์๋ฏธ๊ฐ ์์ด์ง๊ฒ ๋๋ค.Free Riding ํ์ด์ด ๋ฐ์ํ๋ค.super-peer๋ฅผ ๋ง๋ค์ด ์ด์ํ๋ ๋ฐฉ์์ด๋ค.super-peer ๋ฟ์ด๊ณ ๋ค๋ฅธ ํผ์ด๋ค์ super-peer์ TCP ์ฐ๊ฒฐ๋ก ์ฐ๊ฒฐ๋์ด ์๋ ํํ์ด๋ค.torrent ๋ผ๊ณ ๋ถ๋ฅด๊ณ tracker ๋ผ๋ ๋ฆฌ์คํธ๋ฅผ ๊ด๋ฆฌํด์ ํ์ฌ ์ด๋ค ํผ์ด๊ฐ ๋คํธ์ํฌ์ ์ฐธ์ฌํ๊ณ ์๋์ง ๊ธฐ๋กํ๋ค. ๊ทธ๋ฆฌ๊ณ torrent ์ ์ฐธ์ฌํ๊ณ ์๋ ํผ์ด๋ค์ ์ฃผ๊ธฐ์ ์ผ๋ก ์์ ์ ํ๋์ํ๋ฅผ tracker์ ์๋ ค์ ํด๋น ๋ฆฌ์คํธ์ ์์ ์ ์ ์ง์ํจ๋ค.chunk ๋ผ๊ณ ํ๋ค.๋นํธํ ๋ ํธ๋ ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ผ๋ก ํผ์ด๋ค๊ณผ ํ์ผ๋ถ๋ฐฐ๋ฅผ ๊ด๋ฆฌํ๋ค.
50๊ฐ์ ์์์ ํผ์ด๋ค๊ณผ TCP ์ฐ๊ฒฐ์ ์ค์ ํ๋ค.์ฃผ๊ธฐ์ ์ผ๋ก ๊ทธ๋ค์ด ๊ฐ์ง๊ณ ์๋ chunk์ ๋ฆฌ์คํธ๋ฅผ ๋ฐ์์จ๋ค.์์ ์ด ๊ฐ์ง๊ณ ์์ง ์์ chunk๋ฅผ ๊ฐ์ง ํผ์ด๊ฐ ์๋ค๋ฉด ํด๋น ํผ์ด์๊ฒ chunk์ ๋ํ ์์ฒญ๋ฉ์ธ์ง๋ฅผ ๋ณด๋ธ๋ค.rarest first ์๊ณ ๋ฆฌ์ฆ์ ํตํด ๊ฒฐ์ ๋๋ค. ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ฉด, ํผ์ด๋ค์ด ์ ๊ฐ์ง๊ณ ์์ง ์์ chunk๋ค์ด ๋จผ์ ๋ถ๋ฐฐ๋๊ธฐ ๋๋ฌธ์ chunk์ ์ข
๋ฅ๊ฐ ํผ์ด๋ค์๊ฒ ๊ท ๋ฑํ๊ฒ ๋ถ๋ฐฐ๋ ์ ์๋ค.์ด์ ํผ์ด๋ค๋ก๋ถํฐ ์ด๋ค ์์ฒญ์ด ๋ค์ด์ค๋ฉด, ํผ์ด๋ ์์ ์๊ฒ ๊ฐ์ฅ ๋น ๋ฅธ ์๋๋ก chunk๋ฅผ ๋ณด๋ด๋ 4๊ฐ์ ํผ์ด๋ฅผ ์ ํํด์ ์์ ์ ํ์ผ์ ์ ๊ณตํ๋ค. ์ด๋ ๊ฒ ์ ์ ๋ 4๊ฐ์ ํผ์ด๋ฅผ Unchoked ํผ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
๋งค 10์ด๋ง๋ค ๊ฐฑ์ ๋๋ค.๊ทธ๋ฆฌ๊ณ ๋งค 30์ด๋ง๋ค ๋๋คํ๊ฒ ํ๋์ ํผ์ด๋ฅผ ์ ํํด์ chunk๋ฅผ ์ ์กํ๋ค. ์ด๋ ๊ฒ ๋๋คํ๊ฒ ์ ์ ๋ ํผ์ด๋ฅผ Optimistically Unchoked ํผ์ด๋ผ๊ณ ํ๋ค.
tit-for-tat(TFT) ๋ฐฉ์์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. ์ด ๋ฐฉ์์ด ์ฌ์ฉ๋์๊ธฐ ๋๋ฌธ์ ๋นํธํ ๋ ํธ๋ Free-Riding ๋ฌธ์ ๋ฅผ ์ต์ํํ ์ ์๊ฒ ๋๋ค.๋ฌธ์ ์ ์ P2P ๋คํธ์ํฌ์ ํผ์ด๋ค์ ๊ณ ์ ์ ์ด์ง ์๊ณ ํญ์ ๋ฐ๋ ์ ์๋ค๋ ๊ฒ์ธ๋ฐ ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ DHT๋ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ์ด์๋๋ค.
Consistent Hashing ์ด๋ผ๊ณ ํ๋ค.