Current project: RTC

RTC
Real-Time Compiler; SCADA & IoT management program

– soft-programmable (programmable while running)
– programming changes carry out via database continuously running, rules saved real-time to database
– the initial database is H2 (easy to change to MariaDB/MySQL or any of the 11 databases supported by Slick)
– When attaching to a SCADA/IoT source, it will measure the frequency data is received, and alert when data does not arrive timely
– receiving data is stored into a sparse spreadsheet-type representation, where it can be used like a spreadsheet using the internal language
-responses are real-time, for example, iptables filters or SCADA-style supervisory controls
GraphQL to support various JS presentations (or web) for graphic visualization; the visualization will work on any web-based device, instead of requiring an X based HMI (Human Machine Interface)
– This project has just started, but it shares a lot of code with Scanner project (same repo) — this is not my first time in a rodeo
– The IoT component reads rsyslog (including markers)


Components used:

– Scala 2.13.10, with Akka 2.7 and Slick 3.4.1
– Reflection (self-programming/compiling)
– Possible add-ons: Camel, Rhino & JProlog


Not decided (yet):

– Should RTC clean-up iptables on startup?
– RTC should conform to existing iptables (denyhosts & Fail2Ban)


Firewall rules:

– Trying to co-exist with pre-existing firewalls
– Trying to not deteriorate performance, despite potentially blocking half the internet (~2 billion IPs)
– Flush firewalls, esp (INPUT)
– Allow for pre-amble (policy, internal, DMZ, pre-established)
– Allow for “all ports” CHAIN
– Different port CHAINs (e.g. imap|pop3|smtp, web, VoIP)


Sheet/Canvas:

– The “materialized view” of this is going to be a spreadsheet, think Visicalc/Excel/LibreOffice Calc
– But another view is going to be SCADA graphic view using JavaScript libraries

Project on GitHub:

https://github.com/tanelio

Networking/connectivity history

I’ve been on the Internet for a while, starting in 1983 Finland, using an X.29 modem (and an X.3 PAD) for which I wrote software to get it connected to a local area network for my company to use. At the same time, I registered my first domain, https://otala.com

Since then I’ve connected in many ways, many modems (Nokia’s 9,600 baud modems were well ahead of the competition) though that escalated quickly to 14kbps and eventually 56kbs modems — until the ISDN modems came about (at 128,000 baud). In 1985 I was installing my Internet connectivity software in Sweden, only to realize that the local telco only allowed pulse dialing, AND that the dialing was offset by one… so to dial ‘1’ you’d need to dial ‘2’ (two pulses), and so forth. Clever anti-competitive measure — blocking all other phones/modems from use in Sweden.

Sometime in 1993, I ended up building, in C, a full TCP/IP stack to our network communication software — I followed the RFC’s carefully. After our software was deployed to Nokia, I got a mysterious bug report — after a while, 10-30 minutes of idle time, the software would suddenly blow up. As it turns out, people were talking to a DEC (Digital Equipment Corporation) machine, and when te connection was left idle, the DEC would send “an out-of-bound” TCP packet, to keep the connection alive — knowing that the packet would be discarded since it was so out-of-sequence… but my TCP stack didn’t want to throw anything away, so it tried to allocate enough buffer space to keep all packets within this “new window,” of course there wasn’t enough memory so it blew up. Don’t follow RFC’s blindly. Fail gracefully.

In 1995, working at GlobalCenter in Sunnyvale, we deployed modems (or CPE’s) for Dial-up, or ISDN, with TCP/IP that would distribute the connection to the entire local area network, along with a local mail server.

The bottom line, is that I grew weary of trusting ANY SINGLE ISP… and since 2000 I have always had two to four internet connectivity providers, with a self built router for traffic shaping, and fail-over. I’m going to write short essays on the various configurations, including my favorite hardware choices.