Membuat Switch Jaringan yang Dikelola Linux
(blog.brixit.nl)- Untuk mereplikasi struktur seperti di dalam router konsumen, di mana chip switch dikendalikan langsung oleh Linux, penulis merancang PCB switch gigabit berbasis RTL8367S dan menghubungkannya ke DSA/switchdev
- RTL8367S yang dipilih adalah chip switch gigabit 7 port dengan PHY terintegrasi pada 5 port; alih-alih port CPU khusus, port 0 dihubungkan ke Ethernet board Linux menggunakan kabel jaringan
- Dalam proses pembuatan hardware, rail daya disederhanakan menjadi 3.3V dan 1.1V, lalu berbagai jalur konfigurasi seperti pin pengaturan boot, EEPROM, SPI flash, dan port serial diuji
- Koneksi ke Linux memerlukan board PINE64 A64-lts, opsi kernel kustom, dan modifikasi Device Tree; setelah boot,
lan1hinggalan4muncul di bawaheth0seperti antarmuka jaringan lokal - Pendekatan ini cocok dengan alat yang sudah ada seperti Linux bridge dan
ethtool, tetapi sulit langsung digunakan pada PC/server umum atau antarmuka jaringan USB karena batasan Device Tree dan GPIO
Switch Terkelola dan Struktur DSA Linux
- Switch terkelola pada umumnya memungkinkan perubahan konfigurasi dan pemeriksaan status port melalui antarmuka web, sementara perangkat yang lebih mahal juga menyediakan antarmuka tambahan seperti telnet atau konsol serial
- Switch di dalam router konsumen juga dapat dilihat sebagai kategori tersendiri dari switch terkelola
- Router adalah perangkat Linux kecil yang memiliki chip switch di dalamnya
- Satu atau lebih port terhubung secara internal ke CPU, sedangkan sisanya diekspos ke luar sebagai port fisik
- Dengan menggunakan subsistem DSA dan switchdev di Linux, port yang terhubung ke switch dapat bertindak seperti port jaringan “lokal” sungguhan
- Antara SoC router dan switch diperlukan koneksi seperti SGMII atau RGMII serta bus manajemen seperti SMI atau MDIO
- Switch siap pakai biasa sulit dikendalikan dengan cara ini karena koneksi chip yang diperlukan tidak diekspos ke luar
Pembuatan Board Switch Berbasis RTL8367S
- Switch gigabit buatan sendiri ini menggunakan chip Realtek RTL8367S
- Ini adalah chip switch gigabit 5 port yang banyak digunakan
- Secara internal strukturnya sebenarnya 7 port; 5 port memiliki PHY terintegrasi dan 2 port ditujukan untuk koneksi CPU
- Datasheet hanya menyediakan informasi minimal, sehingga penulis juga merujuk skematik perangkat yang memakai chip Realtek serupa dan dokumen desain Ethernet
- Awalnya tampak diperlukan sekitar 7 net daya, tetapi dengan menggabungkan net yang rentang tegangannya tumpang tindih, konfigurasi yang hanya memakai regulator 3.3V dan 1.1V ternyata memungkinkan
- Karena Linux switchdev tidak mengharuskan koneksi CPU memakai port CPU khusus, desain ini menghubungkan port 0 ke board Linux menggunakan kabel
- Dari sudut pandang driver switchdev, seolah-olah tidak ada Ethernet PHY di tengahnya
Konfigurasi Chip Switch dan Trial-and-Error PCB
- RTL8367S memiliki beberapa jalur konfigurasi, tetapi hanya dari datasheet sulit memahami konfigurasi minimum agar berfungsi sebagai dumb switch biasa
- 8 pin yang dibaca saat start dibagi pakai dengan pin LED port
- Bus i2c dapat digunakan untuk menghubungkan chip EEPROM, tetapi berbagi pin dengan bus SMI yang diperlukan
- Bus SPI dapat menghubungkan NOR flash untuk menyimpan register konfigurasi atau firmware inti 8051 bawaan
- Port serial dinilai tidak akan berfungsi tanpa firmware 8051
- Board pertama dipesan sendiri, lalu pendekatannya adalah mencari kondisi operasi dengan mengubah koneksi solder
- Footprint chip flash dimasukkan, tetapi akhirnya tidak diperlukan
- Solder jumper dipasang pada pin konfigurasi
- LED dikecualikan karena sulit dibuat agar dapat dikonfigurasi
- Dokumen desain Ethernet gigabit menekankan kontrol impedansi dan pencocokan panjang yang presisi, tetapi desain fisik switch murah tampaknya tidak seketat itu
- Bagian yang dianggap lebih penting adalah pencocokan skew antar-pair jaringan
- Mencocokkan panjang total keempat pair jaringan satu sama lain dinilai tidak berguna
- Di dalam kabel jaringan pun rasio puntiran keempat pair berbeda, sehingga panjangnya memang sudah cukup berbeda
- Pada revisi board awal, Ethernet tidak bekerja karena penanganan kapasitor untuk mereferensikan center tap transformator sisi switch ke ground keliru
- Dalam pengujian, trace kecil dipotong untuk memutus short ke ground
- Pada konfigurasi pengujian, sistem tetap bekerja meskipun center tap dibiarkan floating
- Pada desain final, kapasitor tersebut ditambahkan
Switch Jadi dan Koneksi ke Linux
- Board yang selesai dibuat adalah switch gigabit dengan bentuk yang agak tidak biasa
- 4 port menghadap ke satu arah
- 1 port menghadap ke arah berlawanan dan digunakan untuk koneksi ke board Linux
- Daya disuplai melalui pin header 2.54mm
- Footprint konektor USB Type-C juga ditambahkan agar daya dapat diberikan tanpa kabel DuPont
- Board Linux untuk pengujian yang dipilih adalah PINE64 A64-lts
- Posisi konektornya kurang lebih sesuai dengan tata letak yang diinginkan
- Karena perubahan Device Tree diperlukan, platform non-x86 menjadi penting
- Kernel dibangun ulang karena modul terkait switch biasanya tidak diaktifkan
CONFIG_NET_DSA: Distributed Switch ArchitectureCONFIG_NET_DSA_TAG_RTL8_4: penandaan port untuk chip switch RealtekCONFIG_NET_SWITCHDEV: sistem driver switch jaringanCONFIG_NET_DSA_REALTEK,CONFIG_NET_DSA_REALTEK_SMI,CONFIG_NET_DSA_REALTEK_RTL8365MB: driver chip switch aktual
- Alih-alih memuat Device Tree overlay melalui U-Boot, Device Tree board A64-lts dipatch langsung
- Driver dimuat dengan string kompatibel
realtek,rtl8365rb - Driver ini mendukung beberapa chip switch Realtek, termasuk RTL8367S yang digunakan
- Definisi port CPU dari contoh dokumentasi dihapus, lalu 5 port switch biasa didefinisikan
- Driver dimuat dengan string kompatibel
port@0adalah port yang menghadap ke belakang dan terhubung ke&emacmilik A64-lts- Port lainnya terhubung ke masing-masing PHY di dalam chip switch
- Di bagian atas Device Tree didefinisikan 3 GPIO yang terhubung ke SDA/SCL dan Reset
Alat Jaringan Linux dan Batasannya
- Setelah boot, di Linux muncul antarmuka port switch yang didefinisikan di Device Tree bersama perangkat
eth0biasalan1@eth0lan2@eth0lan3@eth0lan4@eth0
- Agar benar-benar berjalan,
ip link set eth0 updan masing-masing antarmukalanharus dinaikkan - Integrasinya dengan alat jaringan Linux standar terasa natural
- Jika beberapa port
landimasukkan ke Linux bridge, switchdev menangani bridging port tersebut di dalam chip switch - Linux tidak perlu mem-forward traffic tersebut secara langsung
- Informasi link dapat dilihat dengan
ethtool lan3 ethtool -S lan3mengembalikan informasi status standar, termasuk paket yang sepenuhnya ditangani oleh switch
- Jika beberapa port
- Namun ada banyak batasan untuk penggunaan di lingkungan umum
- Harus membuat switch jaringan sendiri atau membuka switch yang ada untuk menemukan koneksi yang diperlukan
- PC atau server umum bukan konfigurasi berbasis Device Tree, dan pin GPIO yang dikendalikan kernel biasanya juga tidak tersedia
- Antarmuka jaringan USB sulit digunakan dengan metode ini karena tidak memiliki handle node Device Tree untuk ditetapkan sebagai port conduit
- Sebagian batasan mungkin dapat diakali, tetapi dibutuhkan lebih banyak dokumentasi tentang cara mengekspos GPIO melalui perangkat USB khusus atau memuat switchdev di lingkungan selain perangkat ARM
1 komentar
Komentar Hacker News
Misalnya, sepasang switch Dell OS9 lama adalah perangkat stackable lawas dengan 48 port 10Gb/s dan 4 port optik QSFP+ 40Gb/s, dan satu switch dapat menangani hingga 1,28Tb/s
Sekarang bisa didapat sekitar £1800 termasuk VAT dan bisa dipakai nyaris selamanya
Upaya seperti ini bagus, tetapi perlu juga mempertimbangkan bahwa vendor seperti Netgear menjual switch 8-port 1Gb dengan PoE di semua port sekitar £125
Dari sisi keekonomian proyek, jika waktu dihitung £20–50 per jam, produk jadi mungkin lebih masuk akal, tetapi jika tujuannya adalah proyek itu sendiri, harga tidak perlu terlalu dipikirkan
(1) https://i.dell.com/sites/doccontent/shared-content/data-shee...
(2) https://www.etb-tech.com/dell-force10-s4820t-10gbe-switch-os...
Harga ASIC-nya masih di kisaran yang bisa diperkirakan, dan meski saya tidak tahu angka pastinya, mungkin sekitar beberapa ratus dolar
Dokumentasi antarmuka perangkat lunaknya sangat buruk, dan karena pustakanya mendukung semua switch ASIC Broadcom, file
.aberukuran ratusan MB itu penuh dengan fungsi yang hanya mengembalikan error “tidak didukung pada perangkat ini”; kita tidak bisa tahu sebelum benar-benar memanggilnyaUntuk penggunaan yang lebih sederhana, Anda bisa mendapatkan router yang didukung OpenWRT dan kebanyakan memakai chip managed switch, lalu OpenWRT menyediakan antarmuka yang bagus untuk mengatur VLAN dan berbagai opsi
Namun dukungan untuk fitur seperti PoE atau port 10Gb/SFP+ bisa terbatas, dan saya tidak yakin kondisi saat ini
Namun proyek ini lebih mendekati managed switch buatan sendiri yang saya lihat pertama kali, bukan sekadar “menempelkan otak eksternal pada unmanaged switch”
Saya menduga performa sisi hardware akan lebih baik, tetapi tidak tahu apakah ada pengujian yang menunjukkan perbedaan nyatanya
Jika memakai adapter USB, USB adalah bus bersama dalam banyak aspek sehingga cepat mentok di bandwidth maksimum, apalagi data harus masuk ke CPU lalu keluar lagi
Switching secara software menambah waktu untuk memproses tiap paket dan mengirimkannya kembali ke tujuan yang benar, ditambah latensi dari antarmuka itu sendiri
Setiap adapter memiliki PHY jaringan dan hardware sendiri sehingga konsumsi daya naik, dan jika digabung dengan pemrosesan tambahan, penggunaan dayanya makin besar
Offloading hardware atau peningkatan performa lain juga kurang termanfaatkan, sehingga seluruh sistem lebih banyak terlibat dalam memindahkan paket
Dari sisi fitur, ini bergantung pada hardware yang dipilih; beberapa adapter USB gigabit murah tidak menjalankan fitur seperti VLAN dengan benar
Sebaliknya, jika memakai beberapa kartu PCIe, fiturnya bisa jauh lebih baik, tetapi mulai titik itu lebih mirip routing daripada switching
Switching tetap bisa berjalan meski OS host mati, dan jika digabung dengan watchdog serta pemulihan, kita bisa membuat sistem dengan ketersediaan lebih baik daripada bridge software, walaupun beberapa fungsi sempat tidak tersedia
Namun ini mengasumsikan chip switch itu sendiri tidak mati atau hang
Tergantung tujuannya, jika ingin memeriksa semua trafik yang melewati switch, 4 antarmuka jelas lebih baik
Jika switch berbasis host juga banyak berkomunikasi, 4 antarmuka menyediakan 4Gbps ke host, lebih menguntungkan daripada satu 1Gbps
Kartu quad 1G enterprise bekas bisa dibeli di eBay di bawah $15, dan saya lebih suka Silicom quad bypass 1g
PEG4BPI-SDFitur bypass-nya menarik dan tidak umum sehingga lebih murah, tetapi umumnya setelah sekali disetel seperti “NIC standar”, kartu itu bisa dipasang di tempat lain tanpa masalah besar
Produk awal lebih sulit dipakai karena vendor dan sub-vendor PCI ID terdeteksi sebagai Silicom, sedangkan kartu
-SDmemiliki Intel sebagai vendor ID dan Silicom sebagai sub-vendor, sehingga driver umum bisa menempelPort 4x10G punya lebih banyak hal untuk dikelola, dan tergantung sistem host, throughput software bridging mungkin tidak mencukupi
Kartu 10G quad-port sulit didapat, tetapi 2x10G bisa ditemukan dengan harga masuk akal jika menunggu
Switch melakukan packet switching di ASIC, bukan CPU, jadi hasilnya bergantung pada performa CPU, dan biasanya itu bukan cara yang efisien untuk memakai sumber daya komputasi yang ada
Namun jika mengabaikan usaha desain dan pembuatan, biaya hardware total bisa di bawah $100, dan kemungkinan lebih murah daripada komputer dengan beberapa antarmuka
Meski begitu, jaringan 1Gb/s sudah cukup tua
Bahkan hanya dengan komponen siap pakai, kita bisa membuat switch jaringan terkelola yang lebih besar dan lebih cepat dengan biaya sedikit di atas $200
Misalnya, dengan Odroid H4+ yang memiliki 2 port dan kartu ekspansi M.2 yang menambahkan 4 port Ethernet, kita bisa membuat switch 6 port 2.5Gb/s
Cara lain adalah memakai komputer kecil dengan CPU N100 dan 4 port 2.5Gb/s, yang bisa dibeli dari beberapa produsen Tiongkok pada kisaran harga ini
Komputer kecil serupa dengan 6 port 2.5Gb/s sedikit lebih mahal dan bisa sedikit di atas $300
Sepertinya sangat cocok untuk perangkat seperti ini, tetapi saya kehilangan minat karena hampir mustahil menyiapkan lingkungan lab
Jika switching dilakukan oleh CPU, bebannya besar, jadi menurut saya chip seperti itu memang diperlukan
88E6393Xberjalan dalam mode “sederhana/dikelola eksternal” tanpa firmwareBisa dipakai bersama Linux switchdev seperti perangkat dalam artikel ini
Diagram blok RouterBoard dipakai sebagai model untuk menunjukkan bagaimana switch hardware terhubung ke bagian lain sistem, tetapi kemudian tampaknya berargumen bahwa perangkat seperti itu mustahil atau sulit ditangani
Saya penasaran apakah di sini pernah benar-benar mencoba mendapatkan RouterBoard
OpenWRT mungkin bisa di-build untuk sebagian besar RouterBoard, dan 2011 juga kemungkinan cukup umum di pasar barang bekas
Pertanyaan yang lebih baik adalah apakah tujuannya sejak awal memang membuat sendiri dari nol, atau apakah ada alasan tertentu untuk menyingkirkan gagasan memakai hardware orang lain
Saya memakai diagram RB2011 karena menurut saya sederhana dan penjelasannya baik
Secara teknis, RB1100AHx4 yang memakai chip switch yang sama adalah contoh yang lebih baik, tetapi itu justru lebih membingungkan karena memakai dua port CPU bersama-sama dan mengklaim 2 link 1.25Gbps sebagai link 2.5Gbps sambil mengabaikan overhead encoding
Alasan membuat dari nol adalah biayanya masuk akal, dan perangkat ini harus masuk ke kotak perekaman video FOSDEM
Ada beberapa masalah khusus desain itu yang harus diselesaikan: harus mengekspos 4 port jaringan di panel depan casing sekaligus tetap terhubung ke SBC internal
Di dalam casing tidak banyak ruang untuk memasukkan passthrough sampai ke switch tanpa kabel loop eksternal untuk SBC, dan jika memakai switch sederhana, monitoring sistem juga tidak bisa dilakukan
Karena kami membuat cukup banyak kotak seperti ini, ini menjadi solusi yang masuk akal; jika mengabaikan waktu desain, ini memungkinkan karena merupakan pekerjaan sukarela
Masalahnya tampaknya ada kaitannya dengan NAND, dan seingat saya berbeda dari RouterBoard lain yang didukung
Seseorang telah mengusulkan solusi baru untuk masalah ini, tetapi belum digabungkan: https://forum.openwrt.org/t/wiki-cleanup-for-mikrotik-rb2011... serta thread lainnya