stinger2k
Lieutenant
- Registriert
- Feb. 2016
- Beiträge
- 620
Mellanox Peer-to-Peer Einrichtung
Unraid <-> Windows
Vorwort:Dieser Guide richtet sich an die Leute die Daten sehr schnell im Heimnetz hin- und herschaufeln, oder wie ich einfach einen kleinen Server als NAS am laufen haben oder auch mit Parsec z.B. von einem leistungsfähigerem PC mit nativer Auflösung und High-Refresh-Rate sowie geringer Latenz streamen wollen.
Mein Szenario lag hierbei, dass ich zwei PCs habe mit jeweils einer Grafikkarte zum zocken (in meinem Fall in PC1 eine RX6900XT und in PC2 eine RTX3090).
In jedem PC habe ich natürlich mehrere SSDs verbaut worauf z.B. auch meine Games liegen welche ich zurzeit gerne zocke, und ab und an mal auch mit Parsec zum gleichzeitigen Arbeiten vom einem zum anderen PC streamen möchte oder mal schnelle Benchmarks zum Vergleich ausführe.
Daher dachte ich mir wenn ich die SSDs in den Server bekomme und dann evtl. auch noch eine NVMe SSD als Cache dazu packe, könnte ich annähernd mit nativer Zugriffsleistung auf die Laufwerke, meine PCs erstens von einer NVMe befreien (spielt ne Rolle wenn man zu wenige PCIe-Lanes zur Verfügung hat um im zweiten oder dritten PCIe-Slot noch Karten betreiben möchte, da bei vielen Consumer-Boards die Lane-Verteilung dann entweder einen Slot deaktiviert oder eben auf eine niedrigere PCIe-Gen schaltet und daher Performance verloren geht.
Soviel zum Einsatzzweck, nun zu meiner Einkaufsliste für dieses Vorhaben. Ich schaute mich in der Bucht um und fand Mellanox Connect-x3 VPI Karten:
Achtung: wenn ihr 56GB/s nutzen wollt dann solltet ihr darauf achten ein Kabel mit der Bezeichnung MC2207130 (56Gbps) nehmen anstatt dem hier gezeigten MC2206130 (40Gbps).
Man findet oft Angebote mit dem Zusatz MCX354A-„QCBT“ oder MCX354A-„FCBT“ - gemeint ist damit, das im Ethernet-Modus die Karten mit 40GbE (FCBT-Variante) bzw./oder nur einem Viertel der Übertragungsrate also 10GbE (QCBT-Variante) arbeiten. Kaufen kann man beide Varianten da wir später noch durch „crossflashen“ der Firmware auch aus einer QCBT-Karte eine vollwertige FCBT Karte machen.
Das wars dann auch schon mit der Einkaufsliste, da diese Hardware aus dem (outdated) Server-Bereich kommt, gibt es davon zurzeit relativ viele Angebote.
Nach dem Einbau der Komponenten und der Verkabelung kommen wir nun zum Einrichtungsvorgang.
Was wir alles benötigen – dazu nachfolgend eine paar Links:
Firmware:
https://www.mellanox.com/support/firmware/connectx3en
Flashsoftware für die Kommandozeile:
https://www.mellanox.com/products/adapter-software/firmware-tools
Windows Treiber und Tools:
https://www.mellanox.com/products/adapter-software/ethernet/windows/winof-2
Unraid Mellanox-Firmware-Tools: (in den Community Apps die Mellanox-Firmware-Tools herunterladen)
Firmware-flash:
(auch um 10GbE Connect-x3 Karten auf Full Bandwith 40GbE zu nutzen)
Flashvorgang unter Windows:
(die Ausgabe von mst status bezeichnet den Controller den wir in flint angeben müssen)
Code:
mst status
flint -d mt4099_pci_cr0 -i "firmwaredatei.bin' -allow_psid_change burn
Flashvorgang unter Linux:
(hier sehen wir nach welche PCI-Id der Controller bekommen hat den wir wieder in mstflint angeben müssen)
Code:
lspci
mstflint -d 01:00.0 'firmwaredatei.bin' -allow_psid_change burn
Jetzt beide Karten in den Ethernet Modus setzen:
unter Linux:
Code:
mstconfig -d 01:00.0 s LINK_TYPE_P1=ETH
mstconfig -d 01:00.0 s LINK_TYPE_P2=ETH (nur bei den Dual-Port Karten)
unter Windows :
entweder im Gerätemanager unter Port Config oder in der Kommandozeile wie folgt:
Code:
mlxconfig -d mt4099_pciconf0 s LINK_TYPE_P1=ETH
mlxconfig -d mt4099_pciconf0 s LINK_TYPE_P2=ETH (nur bei den Dual-Port Karten)
Server-Schnittstelle konfigurieren wie folgt: (ohne Gateway-Adresse)
Für ein Peer-to-Peer Netzwerk (ohne Switch dazwischen) in der Windows Hosts-Datei die „beiden“ IP-Adressen hinzufügen:
´C:\Windows\System32\drivers\etc\hosts´
Code:
10.10.10.1 server
10.10.10.2 client
Nun sollte alles laufen und beide Geräte erreichbar sein und das Netzwerk mit 40 Gb/s laufen.
Damit läuft mal der grundlegende Verkehr zwischen den Peers, möchte man nun noch die Connect-x3 Karte nutzen und damit auch Internet über die Leitung des anderen Peers routen, müssen wir im Linux Server noch die Firewallregeln dafür festlegen und IPv4-Forwarding aktivieren.
Dazu gehen wir wie folgt vor…
(Voraussetzung dafür ist das
Code:
iptables
Also zuerst sehen wir mal nach wie die Schnittstelle heißt mit dem Befehl:
(wir suchen hier nach der IP-Adresse auf einer der Schnittstellen die wir vorher vergeben haben)
Code:
ifconfig
Nun wissen wir das die Schnittstelle br3 (falls Bridging aktiviert ist) heißt bzw. eth3 (wenn kein Bridging aktiviert ist)
Dies muss nachfolgend beachtet, und die farbig markierten Stellen mit dem Namen eurer Schnittstelle ausgetauscht werden.
Firewallregeln per iptables ergänzen: (192.168.0.0/24 steht hier für das Subnetz eures LAN-Netzwerks)
Code:
iptables -w -t nat -A POSTROUTING -s 192.168.0.0/24 -o br3 -j MASQUERADE && echo "iptables -w -t nat -A POSTROUTING -s 192.168.0.0/24 -o br3 -j MASQUERADE" >> /boot/config/go
iptables -w -t filter -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT && echo "iptables -w -t filter -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT" >> /boot/config/go
iptables -w -t filter -A FORWARD -i br3 -j ACCEPT && echo "iptables -w -t filter -A FORWARD -i br3 -j ACCEPT" >> /boot/config/go
Code:
iptables-save
wir öffnen nun mit vim oder nano die Datei
Code:
/etc/sysctl.conf
Code:
net.ipv4.ip_forward=1
Code:
sysctl -p
Am (Windows/Linux/whatever)-Client vergeben wir nun zusätzlich noch die IP-Adresse des Servers(Unraid) als Gateway und die Adresse des Routers als DNS-Server:
Nach einem Reboot des Windows-Clients sollte nun auch das Internet laufen und ihr könnt die Schnittstelle am Mainboard anderwärtig verwenden.
Wollt ihr auch aus eurem bestehenden Subnetz heraus auf den Adressbereich der Mellanox Karten zugreifen, müsst ihr hierzu eine statische Route im Router anlegen wie folgt:
Falls ihr aus einer VM am Unraid-Server eure Karte im PC nicht pingen könnt dann ist es auch hier notwendig mit Routen in erwähnter Form zu arbeiten und die Firewall Regel unter erweiterte Einstellungen -> Eingehende Regeln wie folgend zu aktivieren:
Falls erforderlich (wenn kein ping möglich ist zum Client-PC) dann noch hier wie folgt für -
- Linux Clients statische Route:
Code:
Ip route add 10.10.10.0/24 via 192.168.1.100
- Windows Clients statische Route:
Code:
route ADD -p 10.10.10.0 MASK 255.255.255.0 10.10.10.1
und damit sind wir fertig! 👍
Wenn euch diese Anleitung gefallen hat, oder ihr auch über andere Projekte in diesem Bereich erfahren wollt, lasst es mich wissen
Nachfolgend noch ein paar Eindrücke zur erfolgreichen Umsetzung:
SMB-Share als Netzlaufwerk eingebunden: (Samsung 840 Evo per SATA mit aktiviertem Cache)
Anhänge
Zuletzt bearbeitet: