Category (Click)
개발보드 덕질하기

2.5 Gbps 이더넷 SBC를 찾아서.. NanoPi R5C 핸즈온

 차완기 - @12/17/2023, 12:18:00 AM

2.5 Gbps 이더넷 지원 SBC를 찾아서..

NAS의 업그레이드 이후 작은 홈랩을 계속 구축하고 있습니다.
VPN, 사설 DNS 등 대부분의 시스템이 TrueNAS SCALE의 k8s에서 돌아가고 있는 상황인데요, NAS가 꺼져버리면 외부 접속은 물론 집 안에서 인터넷도 불가하다는 문제가 있었습니다.
이런 치명적인 문제를 해결하기 위해 NAS 본연의 기능과 관련이 없는 다른 컨테이너들은 다른 하드웨어로 옮겨주기로 마음을 먹게 되었습니다.
VPN - WireGuard
Reverse Proxy - Nginx Proxy Manager
사설 DNS - Pi-hole
이를 위한 위한 하드웨어로 여러 가지를 고민하게 되었는데요, Home Assistant Green을 구매하며 일자리를 잃은 Raspberry Pi 4를 먼저 떠올리게 되었죠.
그러나, 가장 치명적인 문제가 있었으니 바로 이더넷의 속도였습니다.
슬슬 2.5 Gbps 내부망으로 넘어가기 위한 준비를 진행중인 와중에 내부망의 역방향 프록시를 담당할 하드웨어가 기가비트에 머물러 있으면 내부망 속도를 올리는 것이 의미가 없기 때문이었죠.
Two Tiny Dual-Gigabit Raspberry Pi CM4 Routers - Jeff Geerling [link]
PCIe를 지원하는 CM4의 라우터 보드도 조금 찾아보았으나, 2.5 Gbps를 지원하는 메이저한 제품은 없어 보였습니다.
조금 눈을 돌려 라즈베리파이 대안 SBC를 둘러보던 중 찾게 된 브랜드가 바로 NanoPi였습니다.
FriendlyElec라는 중국 제조사에서 만드는 제품이었는데요, 대부분의 제품이 2개 이상의 이더넷 단자를 달고 있었고 R5 이후 모델부터는 2.5 Gbps 이더넷을 지원하고 있었습니다.
2.5 Gbps를 지원하는 가장 저렴한 모델인 NanoPi R5C를 구매하기로 하였습니다.
알리익스프레스에서 구매했고, 당시 가격은 배달비 포함 $72.63였습니다. 한화로 10만원 정도 나왔습니다.

NanoPi R5C

사양

1년쯤 전 RK3588로 SBC 커뮤니티를 뒤흔든 RockChip의 RK3568B2 프로세서가 탑재되어 있었습니다.
프로세서: RK3568
MPU: 4x Cortex-A55@2.0 Ghz
GPU: Mali-G52 (OpenGL ES 1.1/2.0/3.2, Vulkan 1.0/1.1, OpenCL 2.0 Full)
NPU: 0.8 TOPS (데이터시트 상에서는 1 T)
RAM: 1/2/4 GB LPDDR4X
eMMC: 0/8/32 GB
스토리지: UHS-I 지원
USB: 3.2 Gen 1 x2
전원: 5 V, USB Type-C
New Single Board Computer M1 - [링크]
모델명 뒤에 붙은 B2가 궁금해 검색해보니 반도체 수급 불안정을 해결하기 위해 만들어진 variant라는것 같습니다. 메탈 히트 스프레더 대신 일반적인 IC 뚜껑을 달고 있다고 하네요.
두 프로세서의 데이터시트를 살펴보았을 때 구성은 모두 동일해 보였습니다.

언박싱 및 분해(?)

알루미늄 재잘의 검은색 케이스가 부착된 채로 배송되었습니다.
전면에는 2개의 USB와 상태 LED가, 측면에는 micro-SD카드 슬룻이, 후면에는 Type-C 전원 커넥터와 듀얼 2.5 Gbps 이더넷 포트, 마지막으로 HDMI 단자가 달려있었습니다.
케이스가 붙어있다? 그럼 분해해야겠죠 ㅋ
나사 하나를 풀었더니 뒷판이 떨어져나왔습니다.
옵션인 무선 랜카드를 위한 M.2 E Key 슬룻이 가장 먼저 눈에 들어오네요. M.2 바로 아래에는 eMMC 모듈이 달려있었습니다.
약간의 힘을 주니 케이스에서 SBC가 떨어져 나왔습니다. RK3568B2 프로세서에 써멀패드가 꽤 튼실하게 붙어있었네요. USB Type-C 단자 아래에는 RockChip의 PMIC가 보였습니다.
RK3568 탑재 SBC 사진 보기 (펼치기)
써멀패드를 분리해 RK3568B2 프로세서를 들쳐냈습니다. 앞서 언급한 내용과 같이 히트스프레더 대신 검은색 IC칩으로 되어있었습니다.
옆으로는 LPDDR4X 메모리가, 위로는 PCIe to 2.5 Gbps 이더넷 컨트롤 IC 한 쌍이 보였습니다.

부팅 및 Debian 설치

판매 페이지에 따르면 기본적으로 OpenWrt 기반의 NanoPi 전용 OS인 FriendlyWrt가 설치되어 있다고 합니다. 오픈소스 라우터 OS로 보이는데요, 일단 정상 여부를 확인하기 위해 한쪽에는 공유기를, 다른 한쪽에는 PC를 연결해주었습니다.
지금 보니 WAN에 PC를 연결했네요 ㅋㅋㅋ...
공유기는 기가비트인 반면 PC는 2.5 Gbps를 지원해 이렇게 초록 불이 들어온 것을 확인할 수 있었습니다.
FriendlyWrt의 웹 UI입니다. 이정도면 정상작동한다고 봐도 무방하겠죠. 지금은 FriendlyWrt에 관심이 없으니 얼른 밀어버리고 Debian을 설치하기로 했습니다.
1.
micro-SD카드에 OS를 설치해 자동으로 eMMC에 Flashing
2.
기본 설치된 FriendlyWrt 웹 UI에서 eMMC Tools를 실행해 OS 이미지를 업로드 및 Flashing
3.
PC와 NanoPi를 A to A 케이블로 직결하고 전용 툴을 이용해 Flashing
NanoPi는 위와 같이 대략 3가지의 eMMC OS 설치 방식을 지원하는데요, 저는 이 중 가장 간단해 보이는 두 번째 방법을 사용했습니다.
공식 이미지 다운로드 페이지에서 rk3568-sd-debian-bookworm-core-6.1-arm64-20231213.img.gz 파일을 다운로드한 뒤 eMMC Tools에 업로드했습니다.
이 화면에서 5분 정도 더 기다려야 했습니다. 그세를 못참고 재부팅해서 처음부터 다시..했죠..

데비안 부팅 & 간단 벤치마크

CLI만 지원하는 core 버전을 설치했기 때문에 ssh를 통해 접근했습니다. 기본 사용자 이름과 패스워드는 동일하게 pi 입니다. 패스워드가 Nano면 완벽했을텐데 말이죠 ㅋㅋ

apt update 오류 해결

pi@NanoPi-R5C:~$ sudo apt update Get:1 http://mirrors.cloud.tencent.com/debian bullseye InRelease [116 kB] Get:2 http://mirrors.cloud.tencent.com/debian-security bullseye-security InRelease [48.4 kB] Get:3 http://mirrors.cloud.tencent.com/debian bullseye-updates InRelease [44.1 kB] Reading package lists... Done E: Release file for http://mirrors.cloud.tencent.com/debian/dists/bullseye/InRelease is not valid yet (invalid for another 288d 23h 10min 59s). Updates for this repository will not be applied. E: Release file for http://mirrors.cloud.tencent.com/debian-security/dists/bullseye-security/InRelease is not valid yet (invalid for another 353d 0h 16min 0s). Updates for this repository will not be applied. E: Release file for http://mirrors.cloud.tencent.com/debian/dists/bullseye-updates/InRelease is not valid yet (invalid for another 354d 14h 14min 54s). Updates for this repository will not be applied.
Shell
복사
벤치마킹을 진행하기 위해 몇몇 패키지를 다운로드하는데, apt update 명령부터 오류가 발생해 해결 방법을 정리해두었습니다.
pi@NanoPi-R5C:~$ sudo apt-get -o Acquire::Check-Valid-Until=false -o Acquire::Check-Date=false update Get:1 http://mirrors.cloud.tencent.com/debian bullseye InRelease [116 kB] Get:2 http://mirrors.cloud.tencent.com/debian-security bullseye-security InRelease [48.4 kB] Get:3 http://mirrors.cloud.tencent.com/debian bullseye-updates InRelease [44.1 kB] Get:4 http://mirrors.cloud.tencent.com/debian bullseye/contrib Sources [43.2 kB] Get:5 http://mirrors.cloud.tencent.com/debian bullseye/main Sources [8502 kB] Get:6 http://mirrors.cloud.tencent.com/debian bullseye/non-free Sources [81.0 kB] Get:7 http://mirrors.cloud.tencent.com/debian bullseye/main arm64 Packages [7951 kB] Get:8 http://mirrors.cloud.tencent.com/debian bullseye/main Translation-en [6236 kB] Get:9 http://mirrors.cloud.tencent.com/debian bullseye/contrib arm64 Packages [40.8 kB] Get:10 http://mirrors.cloud.tencent.com/debian bullseye/contrib Translation-en [46.9 kB] Get:11 http://mirrors.cloud.tencent.com/debian bullseye/non-free arm64 Packages [72.2 kB] Get:12 http://mirrors.cloud.tencent.com/debian bullseye/non-free Translation-en [92.4 kB] Get:13 http://mirrors.cloud.tencent.com/debian-security bullseye-security/main Sources [161 kB] Get:14 http://mirrors.cloud.tencent.com/debian-security bullseye-security/non-free Sources [784 B] Get:15 http://mirrors.cloud.tencent.com/debian-security bullseye-security/main arm64 Packages [255 kB] Get:16 http://mirrors.cloud.tencent.com/debian-security bullseye-security/main Translation-en [167 kB] Get:17 http://mirrors.cloud.tencent.com/debian-security bullseye-security/non-free Translation-en [472 B] Get:18 http://mirrors.cloud.tencent.com/debian bullseye-updates/main Sources [7428 B] Get:19 http://mirrors.cloud.tencent.com/debian bullseye-updates/main arm64 Packages [15.1 kB] Get:20 http://mirrors.cloud.tencent.com/debian bullseye-updates/main Translation-en [10.1 kB] Fetched 23.9 MB in 10s (2306 kB/s) Reading package lists... Done
Shell
복사

eMMC 속도 테스트

순차 읽기 쓰기
fio --randrepeat=1 --ioengine=libaio --gtod_reduce=1 --name=test --filename=fio.bin --bs=1M --iodepth=64 --size=1G --readwrite=readwrite
Plain Text
복사
전체 로그 보기
읽기: 226 MB/s, 215 IOPS
쓰기: 241 MB/s, 229 IOPS
랜덤 읽기 쓰기
fio --randrepeat=1 --ioengine=libaio --gtod_reduce=1 --name=test --filename=fio.bin --bs=1M --iodepth=64 --size=1G --readwrite=randrw
Plain Text
복사
전체 로그 보기
읽기: 68.1 MB/s, 64 IOPS
쓰기: 72.5 MB/s, 69 IOPS

Geekbench 6 벤치마킹

Geekbench 6 Linux/AArch64 프리뷰 버전을 다운로드해 벤치마킹을 진행했습니다.
$ wget https://cdn.geekbench.com/Geekbench-6.2.2-LinuxARMPreview.tar.gz $ tar xf Geekbench-6.2.2-LinuxARMPreview.tar.gz $ cd Geekbench-6.2.2-LinuxARMPreview $ ./geekbench6
Bash
복사

마무리

여기까지 NanoPi R5C를 알아보았습니다.
저렴한 가격에 넉넉한 이더넷 포트, 그리고 기본 제공되는 알루미늄 케이스까지 꽤나 괜찮은 경험이었던 것 같습니다.
이제 Docker를 설치해 홈랩에 던져놓을 일만 남았네요