Το 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
Βάζει μια "διάφανη γέφυρα" ανάμεσα στο 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

