네트워크 - dlstkdals123/MDC-Multi-hop-Distributed-Computing GitHub Wiki
마지막 수정일: 2025-06-03
Home: 🔗 매뉴얼
이 페이지에서는 하드웨어와 네트워크 연결을 설명합니다.
총 6개로 구성됩니다.
제품명 | 명칭 | IP | username | password | command |
---|---|---|---|---|---|
ipTime A3004TW | Router | 192.168.1.1 | root | coin@1015 | ssh [email protected] |
RaspberryPi 4B 4GB | Controller | 192.168.1.2 | node | coin@1015 | ssh [email protected] |
Jetracer:Jetson Nano 4GB(Jetracer) | Edge | 192.168.1.5 | node | coin@1015 | ssh [email protected] |
Jeton Nano 4GB(Nano) | Edge | 192.168.1.6 | node | coin@1015 | ssh [email protected] |
Jetson Orin 8GB(Orin) | Edge | 192.168.1.7 | node | coin@1015 | ssh [email protected] |
Desktop | Cloud | 192.168.1.8 | X | X | X |
Edge을 구분하기 위해 괄호 안의 이름으로 호칭하겠습니다.
username과 password는 ssh로 접속할 때 필요한 정보입니다.
<추후에 사진과 함께 업로드 예정입니다.>
-
cmd을 실행합니다.
-
password을 입력합니다.
리눅스에서 비밀번호를 입력할 때 화면에 출력되지 않습니다.
아래 사진도 비밀번호를 입력한 화면입니다.
-
ssh 연결을 확인합니다.
Router의 경우 아래와 같은 화면이 출력됩니다.
Edge의 경우 아래와 같은 화면이 출력됩니다. (비밀번호는 생략하였습니다. 🔗 환경설정#SSH-편리-기능)
-
모든 기기의 전원을 키고 연결합니다.
-
Router에 접속합니다.
-
네트워크 연결을 확인할 기기의 IP을 통해 다음과 같은 명령어를 실행합니다.
ping -c <패킷수> <IP>
packet loss가 100%일 경우 연결을 확인해야합니다.
-
Router ➡️ Cloud(192.168.1.8)
해당 연결에서 packet loss가 100%라면 다음을 참조하세요. 🔗 환경설정#Ping
Cloud을 제외한 모든 기기는 원격으로 접속합니다.
Controller보다 MDC을 먼저 실행할 경우 Requested network info..
가 Controller가 실행될 때까지 반복됩니다.
- 디렉토리를 아래의 명령어로 이동합니다.
cd Desktop/MDC-Multi-hop-Distributed-Computing
- 가상환경을 아래의 명령어로 활성화합니다.
. /home/node/sdn/bin/activate
- 프로그램을 아래의 명령어로 실행합니다.
python program/Controller.py
- 아래와 같은 화면이 나옵니다.
config 이후에 출력되는 정보는 job 정보와 MDC 실행 순서에 따라 조금씩 다를 수 있습니다.
모든 MDC을 실행했을 때 각각에 대해서 성공적으로 응답했다는 메세지가 출력되면 성공입니다.
- 디렉토리를 아래의 명령어로 이동합니다.
cd Desktop/MDC-Multi-hop-Distributed-Computing
- 프로그램을 아래의 명령어로 실행합니다.
이 실습에서는 작동 여부만을 확인하기 위해 저장된 영상을 보내주는program/VideoSender.py
을 실행합니다.
python3 program/VideoSender.py
- 아래와 같은 화면이 나오면 성공입니다.
- 디렉토리를 아래의 명령어로 이동합니다.
cd Desktop/MDC-Multi-hop-Distributed-Computing
- 프로그램을 아래의 명령어로 실행합니다.
python3 program/MDC.py
- 아래와 같은 화면이 나오면 성공입니다.
- 디렉토리를 아래의 명령어로 이동합니다.
cd Desktop/MDC-Multi-hop-Distributed-Computing
- 가상환경을 아래의 명령어로 활성화합니다.
. /home/node/sdn/bin/activate
- 프로그램을 아래의 명령어로 실행합니다.
python3 program/MDC.py
- 아래와 같은 화면이 나오면 성공입니다.
여러 기기, 주로 Controller에서 github에 접속하기 위해서는 네트워크에 연결되어야 합니다.
직접 네트워크에 연결하는 방법도 있겠지만 인터넷 연결이 가능한 랜선은 한정적이기 때문에 Cloud을 이용해서 네트워크에 연결합니다.
ICS을 통해 연결하는 방식도 존재하지만, 해당 방식은 IP주소를 192.168.137.1로 고정시키는 문제점을 가지고 있습니다.
메뉴얼에서는 Cloud의 ip을 192.168.1.8로 하기 때문에, Nat 설정을 설명합니다.
Cloud는 192.168.1.x로부터 오는 인터넷 연결 요청을 라우팅해야합니다.
- powershell을 관리자 권한으로 실행합니다.
- 아래의 명령어를 통해 변수 할당을 합니다.
$internalPrefix = "192.168.1.0/24"
- 아래의 명령어를 통해 Nat 설정을 합니다.
필요한 경우 "MDC"에서 이름을 바꿀 수 있습니다.
New-NetNat -Name "MDC" -InternalIPInterfaceAddressPrefix $internalPrefix
- 아래의 명령어를 통해 설정을 확인할 수 있습니다.
Get-NetNat
Nat 이름 변경:
- Nat을 삭제할 경우, 아래의 명령어를 입력합니다.
Remove-NetNat -Name "ZubaNAT"
- Nat의 이름을 변경하고 싶을 경우에 간단히 삭제 후 재생성을 합니다.
New-NetNat -Name "MDC" -InternalIPInterfaceAddressPrefix $internalPrefix
인터넷 Route 오류: 0.0.0.0/0 으로 연결된 라우팅이 여러 개일 경우 인터넷 연결이 안될 수 있습니다.
- 아래의 명령어를 통해 확인합니다.
Get-NetRoute -DestinationPrefix 0.0.0.0/0
- 만약, 여러 개의 Route가 뜬 경우 사용하지 않는 라우팅의 InterfaceIndex을 이용하여 삭제합니다.
Remove-NetRoute -InterfaceIndex 3 -DestinationPrefix 0.0.0.0/0
중복된 IP 주소: 192.168.1.8
로 MDC 네트워크의 IPv4를 수동으로 설정할 때 192.168.1.8로 설정이 안될 수 있습니다.
오류 메세지: "IP 주소는 네트워크 카드마다 고유해야합니다. [고급] 대화 상자의 IP 주소 목록에서 중복된 IP 주소를 제거하십시오."
- 아래의 명령어를 통해 MDC에 연결되어 있는 주소가 2개 이상인 지 확인합니다.
Get-NetIPAddress -AddressFamily IPv4 | Sort-Object IPAddress
- 원치 않는 IP 주소를 삭제합니다.
Remove-NetIPAddress -InterfaceAlias "MDC" -IPAddress 192.168.137.1 -Confirm:$false
게이트웨이 설정을 Cloud(192.168.1.8)으로 바꾸어야 합니다.
- http://192.168.1.1/ 로 접속합니다.
Username: root
Password: coin@1015
OpenWrt 화면으로 redirect 되어야 합니다.
- Network - Interfaces
- Interfaces 중에서 lan에 Edit - General Settings을 아래와 동일한 값으로 수정합니다.
Protocol: Static address
Device: br-lan
Bring up on boot: 체크
IPv4 address 192.168.1.1
IPv4 netmask: 255.255.255.0
IPv4 gateway 192.168.1.8
- Advanced Settings에서 아래를 수정합니다.
Use custom DNS servers: 168.126.63.1
- DHCP Server에서 아래를 수정합니다.
DHCP-Options: 3,192.168.1.8
- Save & Apply을 통해 저장합니다.
- Router에 접속하여 ping 테스트를 합니다.
ping -c 5 8.8.8.8
Controller에서는 NetworkManager을 통해 IP을 설정합니다.
- 아래의 명령어를 통해 연결된 프로필 이름을 확인합니다.
이때, 무선연결은 DEVICE가 wlan0, 유선연결은 eth0에 해당하는 NAME을 확인합니다.
nmcli connection show
기기 | IP | Device | 예상이름 |
---|---|---|---|
Controller | 192.168.1.2 | wlan0 | OpenWrt-phy0-ap0-2.4g |
Jetracer | 192.168.1.5 | wlan0 | OpenWrt-phy0-ap0-2.4g 1 |
Nano | 192.168.1.6 | eth0 | eth0 |
Orin | 192.168.1.7 | eth0 | Wired connection 1 |
예상 이름과 다르다면 아래의 명령에서 이름을 수정해주시길 바랍니다.
- 아래의 명령어를 통해 수정하고 재부팅합니다. (필요시 이름 수정)
sudo nmcli connection modify "OpenWrt-phy0-ap0-2.4g" ipv4.gateway 192.168.1.8
sudo nmcli connection modify "OpenWrt-phy0-ap0-2.4g" ipv4.dns "168.126.63.1 202.30.38.10"
sudo nmcli connection down "OpenWrt-phy0-ap0-2.4g" && sudo nmcli connection up "OpenWrt-phy0-ap0-2.4g"
password: coin@1015
- 아래의 명령어를 통해 확인합니다.
ip route
위에서부터 Controller, Jetracer, Nano, Orin입니다.
아래의 두 문장이 출력되면 됩니다.
default via 192.168.1.8 dev
device
proto static metricmetric_number
192.168.1.0/24 devdevice
proto kernel scope link src192.168.1.x
metricmetric_number
- 아래의 명령어를 통해 인터넷 연결 테스트를 확인합니다.
첫 문장이HTTP/2 200
이면 성공입니다.
curl -I https://github.com