Skip to content

chxxhn/nju_network_project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

18 Commits
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ›  nju_network_project

์ด ํ”„๋กœ์ ํŠธ๋Š” Switchyard๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋„คํŠธ์›Œํฌ์—์„œ ๋™์ž‘ํ•˜๋Š” ์ด๋”๋„ท ๋Ÿฌ๋‹ ์Šค์œ„์น˜์™€ ARP ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ผ์šฐํ„ฐ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค.
๋Ÿฌ๋‹ ์Šค์œ„์น˜ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” MAC ์ฃผ์†Œ ํ•™์Šต๊ณผ ๋‹ค์–‘ํ•œ ๊ด€๋ฆฌ ๊ธฐ๋ฒ•์„ ์ ์šฉํ•˜๊ณ , ๋ผ์šฐํ„ฐ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ARP ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ“Œ ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

ํ”„๋กœ์ ํŠธ ๋ช… ์„ค๋ช…
Project #1 - Learning Switch Implementation ๋„คํŠธ์›Œํฌ ํŒจํ‚ท์„ ๋ชฉ์ ์ง€๋กœ ํšจ์œจ์ ์œผ๋กœ ์ „๋‹ฌํ•˜๋Š” ์ด๋”๋„ท ๋Ÿฌ๋‹ ์Šค์œ„์น˜๋ฅผ ๊ตฌํ˜„
Project #2 - ARP ์š”์ฒญ ์ฒ˜๋ฆฌ ๋ผ์šฐํ„ฐ ARP ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ , ๋ผ์šฐํ„ฐ์˜ ARP ์บ์‹œ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„

๐Ÿ›  ํ”„๋กœ์ ํŠธ ์ƒ์„ธ

๐Ÿ“ Project #1 - Learning Switch Implementation (์ด๋”๋„ท ๋Ÿฌ๋‹ ์Šค์œ„์น˜ ๊ตฌํ˜„)

์ด ํ”„๋กœ์ ํŠธ๋Š” MAC ์ฃผ์†Œ ํ•™์Šต ๊ธฐ๋ฐ˜์˜ ๋Ÿฌ๋‹ ์Šค์œ„์น˜๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์œผ๋กœ, ํŒจํ‚ท์„ ๋ชฉ์ ์ง€ MAC ์ฃผ์†Œ์— ๋”ฐ๋ผ ์ „๋‹ฌํ•˜๋ฉฐ, ์•Œ ์ˆ˜ ์—†๋Š” ๋ชฉ์ ์ง€์˜ ๊ฒฝ์šฐ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ(ํ”Œ๋Ÿฌ๋”ฉ)ํ•ฉ๋‹ˆ๋‹ค.
๋‹ค์–‘ํ•œ ํŒจํ‚ท ์ „๋‹ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์šฉํ•˜์—ฌ ์ตœ์ ํ™”๋œ ๋Ÿฌ๋‹ ์Šค์œ„์น˜๋ฅผ ๊ฐœ๋ฐœํ•ฉ๋‹ˆ๋‹ค.

โœ” ๊ตฌํ˜„๋œ ๋Ÿฌ๋‹ ์Šค์œ„์น˜ ์ข…๋ฅ˜

  1. ๊ธฐ๋ณธ ๋Ÿฌ๋‹ ์Šค์œ„์น˜ (myswitch-1-BasicSwitch.py)

    • ์ถœ๋ฐœ์ง€ MAC ์ฃผ์†Œ๋ฅผ ํ•™์Šตํ•˜์—ฌ ํฌํŠธ๋ฅผ ๊ธฐ๋กํ•˜๊ณ , ๋ชฉ์ ์ง€ MAC ์ฃผ์†Œ๋ฅผ ํ™•์ธํ•˜์—ฌ ํŒจํ‚ท ์ „๋‹ฌ ์ˆ˜ํ–‰
    • ๋ชฉ์ ์ง€ MAC ์ฃผ์†Œ๋ฅผ ๋ชจ๋ฅผ ๊ฒฝ์šฐ ํ”Œ๋Ÿฌ๋”ฉ
  2. ํƒ€์ž„์•„์›ƒ ์ ์šฉ ๋Ÿฌ๋‹ ์Šค์œ„์น˜ (myswitch-2-TimeOut.py)

    • MAC ์ฃผ์†Œ ํ•™์Šต ์ •๋ณด์— **ํƒ€์ž„์•„์›ƒ(10์ดˆ)**์„ ์ ์šฉํ•˜์—ฌ ์˜ค๋ž˜๋œ ์ •๋ณด๋ฅผ ์ž๋™ ์‚ญ์ œ
    • ๋ถˆํ•„์š”ํ•œ MAC ์ฃผ์†Œ๊ฐ€ ๋‚จ์•„์žˆ์ง€ ์•Š๋„๋ก ๊ด€๋ฆฌ
  3. LRU ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ ์šฉ ๋Ÿฌ๋‹ ์Šค์œ„์น˜ (myswitch-3-LRU.py)

    • MAC ์ฃผ์†Œ ํ…Œ์ด๋ธ” ํฌ๊ธฐ๋ฅผ 2๊ฐœ๋กœ ์ œํ•œํ•˜๊ณ , ์˜ค๋ž˜๋œ MAC ์ฃผ์†Œ๋ฅผ ์‚ญ์ œํ•˜๋Š” ๋ฐฉ์‹ ์ ์šฉ
    • ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” MAC ์ฃผ์†Œ๋ฅผ ์œ ์ง€ํ•˜์—ฌ ๋„คํŠธ์›Œํฌ ์„ฑ๋Šฅ ๊ฐœ์„ 
  4. LTV ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ ์šฉ ๋Ÿฌ๋‹ ์Šค์œ„์น˜ (myswitch-4-LTV.py)

    • MAC ์ฃผ์†Œ๋ณ„ ํŠธ๋ž˜ํ”ฝ ๋ฐœ์ƒ๋Ÿ‰์„ ์ €์žฅํ•˜๊ณ , ๊ฐ€์žฅ ์ ์€ ํŠธ๋ž˜ํ”ฝ์„ ๋ฐœ์ƒ์‹œํ‚จ MAC ์ฃผ์†Œ๋ฅผ ์‚ญ์ œ
    • ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” MAC ์ฃผ์†Œ๋ฅผ ์šฐ์„ ์ ์œผ๋กœ ์œ ์ง€ํ•˜์—ฌ ์ตœ์ ์˜ ์„ฑ๋Šฅ ์ œ๊ณต

๐Ÿ“ Project #2 - ARP ์š”์ฒญ ์ฒ˜๋ฆฌ ๋ผ์šฐํ„ฐ

์ด ํ”„๋กœ์ ํŠธ๋Š” ๋ผ์šฐํ„ฐ๊ฐ€ ARP ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์œผ๋กœ, ARP ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์บ์‹œ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ธฐ๋Šฅ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
๋ผ์šฐํ„ฐ๋Š” ์ž์‹ ์˜ IP ์ฃผ์†Œ์— ๋Œ€ํ•œ ARP ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ฑฐ๋‚˜, ๊ธฐ์กด์˜ ARP ํ…Œ์ด๋ธ”์„ ์ฐธ์กฐํ•˜์—ฌ ์‘๋‹ต์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โœ” ๊ตฌํ˜„๋œ ๋ผ์šฐํ„ฐ ๊ธฐ๋Šฅ

  1. ARP ์š”์ฒญ ์บ์‹œ ๊ธฐ๋ฐ˜ ์ฒ˜๋ฆฌ (myrouter_handle_arp_req_cache.py)

    • ๊ธฐ์กด ARP ์บ์‹œ์— ์žˆ๋Š” IP ์ฃผ์†Œ์— ๋Œ€ํ•ด ARP ์‘๋‹ต์„ ๋ณด๋ƒ„
    • ARP ์š”์ฒญ์ด ๋“ค์–ด์˜ฌ ๊ฒฝ์šฐ ์†ก์‹ ์ž์˜ IP/MAC ์ •๋ณด๋ฅผ ํ•™์Šตํ•˜์—ฌ ์บ์‹œ์— ์ €์žฅ
  2. ๋ผ์šฐํ„ฐ์˜ ๋กœ์ปฌ ARP ์š”์ฒญ ์ฒ˜๋ฆฌ (myrouter_handle_arp_req_local.py)

    • ๋ผ์šฐํ„ฐ์˜ ์ธํ„ฐํŽ˜์ด์Šค IP ์ฃผ์†Œ์— ๋Œ€ํ•œ ARP ์š”์ฒญ์ด ๋“ค์–ด์˜ฌ ๊ฒฝ์šฐ ์‘๋‹ต์„ ๋ณด๋ƒ„
    • ๋ถˆํ•„์š”ํ•œ ํŒจํ‚ท ์ฒ˜๋ฆฌ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์š”์ฒญ์„ ์„ ๋ณ„ํ•˜์—ฌ ์ฒ˜๋ฆฌ

๐Ÿš€ ์‹คํ–‰ ๋ฐฉ๋ฒ•

Switchyard ํ™˜๊ฒฝ์—์„œ ๊ฐ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# Project #1 - Learning Switch ์‹คํ–‰
$ python3 myswitch-1-BasicSwitch.py
$ python3 myswitch-2-TimeOut.py
$ python3 myswitch-3-LRU.py
$ python3 myswitch-4-LTV.py

# Project #2 - ARP ์š”์ฒญ ์ฒ˜๋ฆฌ ๋ผ์šฐํ„ฐ ์‹คํ–‰
$ python3 myrouter_handle_arp_req_cache.py
$ python3 myrouter_handle_arp_req_local.py

๐Ÿ“š ๋ฐฐ์šด ์ 

  • ๋„คํŠธ์›Œํฌ ํŒจํ‚ท ์ฒ˜๋ฆฌ ์›๋ฆฌ: ๋Ÿฌ๋‹ ์Šค์œ„์น˜์™€ ๋ผ์šฐํ„ฐ์˜ ๋™์ž‘ ๋ฐฉ์‹ ๋ฐ ํŒจํ‚ท์˜ ํ๋ฆ„์„ ์ดํ•ดํ•จ.
  • MAC ์ฃผ์†Œ ํ•™์Šต ๋ฐ ๊ด€๋ฆฌ: ํŒจํ‚ท์˜ ์ถœ๋ฐœ์ง€ MAC ์ฃผ์†Œ๋ฅผ ํ•™์Šตํ•˜๊ณ , ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ์„ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ตํž˜.
  • ๋ผ์šฐํ„ฐ์˜ ARP ์š”์ฒญ ์ฒ˜๋ฆฌ: ๋ผ์šฐํ„ฐ๊ฐ€ ARP ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹๊ณผ, ์บ์‹œ๋ฅผ ํ™œ์šฉํ•œ ์ตœ์ ํ™” ๊ธฐ๋ฒ•์„ ํ•™์Šตํ•จ.
  • Switchyard ํ™œ์šฉ ๊ฒฝํ—˜: ๋„คํŠธ์›Œํฌ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ํ™˜๊ฒฝ์—์„œ ์ง์ ‘ ํŒจํ‚ท์„ ์†ก์ˆ˜์‹ ํ•˜๊ณ , ๋„คํŠธ์›Œํฌ ์žฅ๋น„์˜ ๋™์ž‘์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒฝํ—˜์„ ์Œ“์Œ.

๐Ÿ“ข ์ฐธ๊ณ  ์ž๋ฃŒ

  • Switchyard ๊ณต์‹ ๋ฌธ์„œ: https://github.com/usi-systems/switchyard
  • Computer Networking: Principles, Protocols, and Practice - Olivier Bonaventure
  • RFC 826 - Address Resolution Protocol (ARP)
  • TCP/IP Illustrated, Volume 1 - W. Richard Stevens

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages