Quietum - Audiophile network filter

Tzimisce

AVClub Fanatic
1 February 2007
36,520
127.0.0.1
Το QUIETUM είναι ένα audiophile φίλτρο δικτύου που κόβει την άσχετη κίνηση στο δίκτυο.
Βάζει μια "διάφανη γέφυρα" ανάμεσα στο router και το audio streamer, φιλτράροντας μόνο τα άσχετα πακέτα για να φτάνει λιγότερος θόρυβος στο streamer.

Πώς Λειτουργεί
Σύνδεση

Router → QUIETUM → Streamer.
Δεν αλλάζει τίποτα στο δίκτυο. Δεν παίρνει IP, δεν κάνει routing ή NAT. Πρακτικά δεν φαίνεται πουθενά στο δίκτυο, αλλά "κόβει" θόρυβο όπως Chromecast polling, UPnP floods και broadcasts που ενοχλούν τον επεξεργαστή του streamer.

Αποτέλεσμα:
Λιγότερα CPU interupts, σταθερότερο timing και καλύτερο playback.

Αλαμπουρνέζικα:
Hardware: Raspberry Pi Compute Module 4 (quad-core ARM Cortex-A72 @1.5GHz), με eth0 (upstream), eth1 (downstream via USB2Ethernet ή Waveshare Dual GbE), wlan0 για management AP (SSID: Quietum, subnet 192.168.99.0/24).

Data Plane:
Linux bridge br0 (eth0+eth1 enslaved), no IP/NAT/routing/conntrack. STP off για zero-delay. Router/streamer ίδιο subnet.

Firewall Engine:
Technology: nftables, bridge family.
Mode: Stateless — no conntrack, no connection state machine.
Policy: Default drop — μόνο explicitly allowed traffic.

Γιατί stateless;
Τα stateful firewalls διατηρούν state tables για κάθε connection. Κάθε πακέτο προκαλεί lookup στον πίνακα, παράγοντας CPU load και memory bus activity.
Σε ένα σύστημα που μοιράζεται με audio streamer, αυτό δημιουργεί unpredictable interrupt load.
Το stateless ruleset αξιολογεί κάθε πακέτο έναντι σταθερών port rules χωρίς state allocation — το overhead είναι σταθερό και ελάχιστο.

Hardcoded Rules:
Always Allowed: ARP, mDNS (UDP 5353), DNS (UDP/TCP 53), NTP (UDP 123), HTTP/HTTPS (TCP 80/443 για streaming APIs), LMS και Eversolo control ports.
Always Blocked: Chromecast (TCP 8008/8009) λόγω συνεχούς multicast polling και SSDP (UDP 1900) για την αποφυγή UPnP broadcast storms.
User-Configurable Protocols:

Sound Profiles:
Υπάρχουν τρία profiles για την "επιθετικότητα" του firewall:
Strict: Κόβει επιπλέον discovery noise (LLMNR, NetBIOS). Για dedicated streaming setups.
Balanced: Το default profile. Μπλοκάρει ό,τι δεν είναι ρητά allowed.
Compatibility: Επιτρέπει IGMP group management και ευρύτερο SSDP για streamers που απαιτούν UPnP discovery.

Core Allocation:
CPU 0: OS, system services
CPU 1: OS, system services
CPU 2: OS, FastAPI/uvicorn backend
CPU 3: Αποκλειστικά για NIC IRQs + softirq + nftables evaluation + bridge forwarding.
Το management backend έχει pinned affinity στα cores 0-2, αφήνοντας το CPU 3 να ασχολείται μόνο με το data path.

CPU 3 Isolation
Ο Scheduler δεν χρησιμοποιεί την CPU 3
Καταργούνται periodic OS interrupts
RCU work offloaded αλλού
IRQs γίνονται kernel threads
NIC threads:
SCHED_FIFO priority 99 (μέγιστη προτεραιότητα)


NIC Hardware Tuning
Όλα τα settings γίνονται μέσω udev rules για persistence:
GRO, LRO, TSO, GSO: Όλα OFF για να αποφευχθεί το batching των πακέτων.
Interrupt coalescing: OFF (rx-usecs 0) για άμεσο IRQ firing με την άφιξη κάθε πακέτου.
RX/TX ring buffer: Μειωμένο στα 256 entries για λιγότερο buffering και lower latency.
RPS / XPS: Pinned στο CPU 3 για να αποφευχθούν τα cross-CPU packet hand-offs.

Αν είμαστε σε usb2ethernet δεν δουλεύει το coalescing, ούτε το ring buffer, λόγω του ότι μπαίνει το πρωτόκολλο του USB στη μέση.

Πάμε τώρα στο πρακτικό κομμάτι.
Το image βρίσκεται εδώ.
Χρειάζεται μία κάρτα SD τουλάχιστον 16GB (για να είμαστε σίγουροι). Προσωπικά δουλεύω το disk imager αλλά δεν νομίζω να υπάρχει θέμα και με το balena etcher (ίσως να θέλει αποσυμπίεση; ).
Πρέπει να μπει σε κάποιο rpi 4 (δεν έχω κάνει build για 5, αν χρειαστεί το κάνουμε) με δύο ethernet ports ή μία ethernet και ένα usb2ethernet.
Το application βρίσκεται εδώ.
Το κατεβάζουμε και το κάνουμε install στο κινητό μας.

Όταν θα κάνει boot το RPI, δημιουργείται ένα wifi Quietum. Μπαίνουμε με password "tzimisce" (τι άλλο).
Καλό είναι να μην έχουμε data ανοιχτά γιατί κάποιες φορές κολλάει η εφαρμογή.
Τότε θα μπει το application online.
Στην πρώτη σελίδα έχουμε το learning mode.
Μπορούμε να πατήσουμε το start, να αρχίσουμε να παίζουμε μουσική με όποιο δυνατό τρόπο έχουμε και αυτό θα καταγράψει τις πόρτες που χρησιμοποιούμε.
Αφού παίξουμε με το streamer, πατάμε stop και βλέπουμε τις πόρτες. Με apply περνάει στο configuration ότι είδε.
Πιο κάτω, το κουμπί settings μας πάει στα... settings.
Εκεί έχουμε τη δυνατότητα να είναι σε protected mode ή bypass.
Πιο κάτω τα προφίλ Strict - Balanced - Compatibility (αναφέρονται πιο πάνω)
Ακόμη πιο κάτω, οι επιλογές για το ποιο service θέλουμε να ανοίξουμε. Roon, Spotify Connect, Tidal Connect κλπ. + μία custom όπου μπορούμε να βάλουμε όποια πόρτα θέλουμε να ανοίξουμε (TCP ή UDP) μόνοι μας.
Και τέλος, το Apply changes (που δεν πρέπει να ξεχνάμε), link προς το dashboard και το about που μπορούμε να δούμε αν έχει βγει καινούργιο apk ή κάποιο update για την πλατφόρμα.
Αφού γίνουν οι ρυθμίσεις, αν θέλουμε να δούμε ξανά internet πρέπει να βγούμε από το wifi Quietum.

Πρακτικά είναι σε beta mode, αλλά ακόμη και στο δικό μου δίκτυο που θεωρώ ότι έχω κόψει τα πάντα, μία διαφορά την άκουσα όσον αφορά το background και την τοποθέτηση των οργάνων.
Αν κάποιος θέλει να παίξει και έχει διαθέσιμο rpi, δοκιμάζει και λέει εντυπώσεις (σαν beta tester) :)

Enjoy
 
Όσο ένα RPI και ένα usb to ethernet.
Θεωρώ ότι ένα καλό τροφοδοτικό θα κάνει δουλίτσα, αυτό θα το δούμε αύριο βέβαια.
Οπότε μιλάμε (με σημερινές τιμές που έχουν πάει όλα στα ύψη λόγω ΑΙ), κάπου στα 60-70€;
 
Αν δούμε ότι το καλύτερο τροφοδοτικό κάνει δουλειά θα σχεδιάσω ένα custom CM4 ή CM5 μηχάνημα ειδικά για αυτή τη χρήση.
Όταν επιτρέψει ο χρόνος μου, φυσικά. :P

Πάντως σαν ιδέα είναι εξαιρετική.
 
Είμαι σχεδόν σίγουρος ότι μία πιο καθαρή λύση από το κλασικό packάκι και με πιο audiophile friendly υλικά θα κάνει διαφορά.
Το σκασμένο έβρισκε να κάνει drop πακέτα ακόμη και στο δικό μου δίκτυο.
1 κάθε κάποια δευτερόλεπτα μεν, αλλά έβρισκε.
 
Αν έκανε drop μόλις 1 πακέτο ανά κάποια δευτερόλεπτα, αν βοήθησε στην ποιότητα ήχου, το έκανε για άλλο λόγο, όχι λόγω του load που θα δημιουργούσε το συγκεκριμένο πακέτο.

Ίσως "πλαγίως" μειώνει κάπως και τον ηλεκτρονικό θόρυβο.
 
Όσο ένα RPI και ένα usb to ethernet.
Θεωρώ ότι ένα καλό τροφοδοτικό θα κάνει δουλίτσα, αυτό θα το δούμε αύριο βέβαια.
Οπότε μιλάμε (με σημερινές τιμές που έχουν πάει όλα στα ύψη λόγω ΑΙ), κάπου στα 60-70€;
Μιας και τα 60-70 μου φαινονται λίγα, μακαρι να βρεθει καποιο μελος να κανονισει την ομαδική.....:ROFLMAO:
 
Συγχαρητήρια.
Ερώτηση,
θα τρέξει και σε Raspberry Pi Compute Module ή θα χρειαστεί κάποια τροποποίηση στα Ethernet interfaces;
 
Συγχαρητήρια.
Ερώτηση,
θα τρέξει και σε Raspberry Pi Compute Module ή θα χρειαστεί κάποια τροποποίηση στα Ethernet interfaces;

Ευχαριστώ
Δεν το έχω δοκιμάσει, αλλά δεν βλέπω το λόγο να μην το κάνει.
Φτάνει να είναι 4άρι και να έχει 2GB ram.
Απλά, αν είναι να συνδεθεί με usb to ethernet, θα πρέπει να υποστηρίζεται από linux με drivers.

Μιας και τα 60-70 μου φαινονται λίγα, μακαρι να βρεθει καποιο μελος να κανονισει την ομαδική.....:ROFLMAO:

Θα το δοκιμάσουμε αύριο. Αν δίνει καλή διαφορά, θα φτιάξω ένα για σένα σε βαντέχουλ sd card! 😂
 
Αν είμαστε σε usb2ethernet δεν δουλεύει το coalescing, ούτε το ring buffer, λόγω του ότι μπαίνει το πρωτόκολλο του USB στη μέση.
Άρα για το "full effect" θέλουμε CM + waveshare ethernet?

Αλλά πριν από αυτό, η κλασική μου ερώτηση: αν κάποιος δεν χρησιμοποιεί streaming services, υπάρχει χρησιμότητα;
 
  • Like
Reactions: Tzimisce
Άρα για το "full effect" θέλουμε CM + waveshare ethernet?

Αλλά πριν από αυτό, η κλασική μου ερώτηση: αν κάποιος δεν χρησιμοποιεί streaming services, υπάρχει χρησιμότητα;

Ναι, θέλει το full πακέτο. Γιατί με την usb δεν δουλεύει το coalescing και η ρύθμιση για τα ring buffers. Αλλά μπορεί να γίνει μία δοκιμή πριν πάμε σε αγορά για πιο safe.

Ναι, θα έχει διαφορά. Γιατί δεν είναι switch που θα κάνει κάποια γαλβανική απομόνωση ή θα κάνει reclock.
Είναι firewall που θα "κόψει" την άχρηστη κίνηση.


Όπως είπα όμως, αύριο θα δοκιμαστεί σε πιο θορυβώδες δίκτυο και θα δούμε τι ρόλο παίζει ένα καλό τροφοδοτικό (πιστεύω πως ναι).
Στο δικό μου δεν ήταν η μέρα με τη νύχτα γιατί κάνει πράγματα που κάνω ήδη. :)
 
Ακούσαμε το εργαλείο στην πρωτότυπη μορφή του

IMG_20260425_125014.jpg

Και με ζόρικο τροφοδοτικό

IMG_20260425_125025.jpg


Απ'ότι φαίνεται ένα "ήσυχο" δίκτυο δεν το έχει ιδιαίτερη ανάγκη, με τον κατάλληλο συνδυασμό στα ethernet cables ο ήχος του συστήματος μου άρεσε πιο πολύ με αυτό, παρά χωρίς αυτό.

Θα το ξανακούσω όταν θα έχω και το switch..

Το σίγουρο είναι ότι σε καμία περίπτωση δεν κάνει ζημιά στον ήχο και είναι μια καλή "ασφάλεια" για να έχει κάποιος το κεφάλι του ήσυχο..

Μετά το switch θα φτιάξω και ένα τέτοιο..