f.zz.de
archives / 2017 /

03

Random number generator

Posted Tue 07 Mar 2017 01:16:14 PM CET Florian Lohoff in

Es ist schon spannend wie man sich so die Karten legen kann und das monatelang nicht findet. Ich habe für das Monitoring mit Icinga2 einen interface check in c++ geschrieben der alle möglichen Dinge pollt. D.h. nicht nur die Standard ifAdminStatus oder ifOperStatus sondern auch ifIn/OutPackets, Bytes, Errors, Discards etc. Dann gibt es Schwellwerte die überwacht werden. Zusätzlich polle ich noch die optischen Pegel der SFPs d.h. rxPower, txPower, Current und Temperature.

Das ganze fliesst dann über eine Influxdb in ein Grafana um es sich ansprechend ansehen zu können.

Leider hatte ich seit dem Umzug von einer VM auf richtige Hardware das Problem das immer wieder sporadisch Messwerte fehlten oder auch auch mal kaputt waren d.h. eindeutig falsche Messwerte. Die Fehlermeldungen die ich jedoch sah war "SNMP Timeout" als wenn das Gerät nicht antworten würde.

Also mit tcpdump mal nachgesehen und nein - Es werden alle requests beantwortet. Nach einer Schleife mit der SNMP library snmp++, in der das timeout handling auch noch kaputt war, war ich noch ratloser als vorher.

Bis ich heute mal debug logging eingebaut habe und feststellte das zu dem Zeitpunkt wenn die SNMP Timeouts auftreten alle Requests für das Device eine identische RequestID haben.

Die RequestID wird typischerweise dafür verwendet, das das Target retransmits erkennen kann. D.h. sollte es einen SNMP Request bekommen wird die Antwort erzeugt und diese Antwort zusammen mit der RequestID in einen cache gepackt. Sollte dann ein transmit kommen wird der request mit der Antwort aus dem cache beantwortet um ein paar CPU cycles zu sparen.

Wenn jetzt natürlich unterschiedliche Interfaces und EntitySensors gepollt werden, und alle mit einer identischen RequestID, dann kommen natürlich willkürliche Antworten zurück, je nachdem welcher Request zuerst bearbeitet wurde.

Wenn die Anzahl der Variable bindings aber nicht passt wird jedoch natürlich die Antwort verworfen. Wenn jedoch die Antwort passt d.h. es ist auch Interface oder auch ein EntitySensor werden die Daten durcheinandergewürfelt. TengigabitEthernet0/0/1/0 daten tauchen dann auf TengigabitEthernet0/2/3/2 auf ... Das alles absolut unvorhersagbar und willkürlich.

Des Rätsels Lösung war, das der random number generator initialisiert werden muss. In Wirklichkeit ist das ja nur ein "Pseudo Random Number Generator" PRNG. Dieser erzeugt für ein Seed immer dieselbe Reihe an Zufallszahlen.

Wenn man den Random Number Generator jetzt mit "time(0)" initialisiert, kommt natürlich für alle Prozesse die in derselben Sekunde gestartet werden identische Zufallszahlen bei raus. Es fehlt an Entropie.

Der schnelle fix ist ein

std::srand(std::time(0)^getpid());

gewesen. Der nimmt dann nicht nur die Zeit sondern ein XOR zwischen Zeit und Process ID. Immer noch nicht optimal, aber zumindest fixed es das Problem das zeitgleich gestartete Prozesse identische Zufallszahlen verwenden.

Cognitive Load

Posted Wed 08 Mar 2017 12:42:26 PM CET Florian Lohoff in

Sehr spannender und eigentlich offensichtlicher Artikel zur Softwareentwicklung. Der Titel finde ich bringt es aber ganz besonders auf den Punkt.

Wenn Funktionen oder Methoden beim ersten Blick nicht offenbaren was ihr Zweck oder Sinn ist, macht der Softwareentwickler einen Fehler. Die Struktur ist falsch oder die Abstraktion ist zu komplex oder das Problem ist falsch zerlegt.

Writing good code: how to reduce the cognitive load of your code

Die Antwort auf den Rest

Posted Wed 08 Mar 2017 12:51:11 PM CET Florian Lohoff in

Das nächste Jahr bin ich dann mal die Antwort nach dem Leben, dem Universum und dem ganzen Rest, und natürlich mit Handtuch.

git fix - read later

Posted Sun 12 Mar 2017 05:23:51 PM CET Florian Lohoff in

Nur um es mal zu verlinken - Muss ich mir bei gelegenheit im Detail ansehen und auch mal ausprobieren.

dont amend - fix

WWW::Mechanize

Posted Tue 21 Mar 2017 09:04:52 PM CET Florian Lohoff in

Nach einer halben Stunde rumhampeln mit LWP::UserAgent, HTTP::Request, HTML::TreeBuilder um die Anmeldeseite von Roundcube auseinanderzudröseln um das Monitoring um die Cross-Site-Scripting protection drumherum hinzubekommen Stolpere ich über WWW::Mechanize .... Nach 11 Zeilen Fertig. Es kann so einfach sein - Noch ein bischen Nagios::Plugin drumherum und fertig ist der Check ...

my $mech=WWW::Mechanize->new();
$mech->get($np->opts->uri);
my $r=$mech->submit_form(
                form_number => 1,
                fields => {
                        _user => $np->opts->username,
                        _pass => $np->opts->password
                }
        );

if ($mech->status() ne 200) {
[ ... ]

Lektüre zur Nacht

Posted Thu 23 Mar 2017 10:32:52 AM CET Florian Lohoff in

MISRA C++:2008 Guidelines for the use of the C++ language in critical systems

220 Seiten

Bye bye SixXS

Posted Thu 23 Mar 2017 06:44:44 PM CET Florian Lohoff in

Lang lang ist es her das wir uns über SixXS mit IPv6 versorgen mussten. Jetzt da IPv6 überall verfügbar ist hust brauchen wir SixXS nicht mehr.

Dear Florian Lohoff,

TL/DR: SixXS is shutting down on 2017-06-06 (in ~10 weeks).

In 1999, Jeroen and I started SixXS, a project which aimed to provide IPv6 connectivity to users who wanted to learn about the network protocol and gain experience operating IPv6 networks. Our vision was to facilitate migration to IPv6 in content and access providers. [ ... ]

Veränderung

Posted Sat 25 Mar 2017 09:31:08 PM CET Florian Lohoff in

Digitale Identitäten entsorgen

Posted Sun 26 Mar 2017 09:05:04 AM CEST Florian Lohoff in

Man muss schon aufpassen in welcher Reihenfolge man Accounts in diversen Social Media und Plattformen löscht. Facebook Account ist so mit das letzte was man löschen sollte ist mir dann mal aufgefallen. Da hängen noch 23 dinge dran die man dann nicht mehr los wird. Gut das man den nochmal schnell aktivieren kann. Es sollte jetzt aber so einiges meiner Digitalen Identität weg sein.

Digitale Archaeologie

Posted Sun 26 Mar 2017 09:40:37 AM CEST Florian Lohoff in

Für die alten mediaWaysler unter euch die noch Schmalbandeinwahl mitgemacht haben. Es gab - ich wollte sagen - gibt immer noch das Neptun Frontent um dinge in den LDAP Einzutragen. Ich habe da noch dinge in meinem Password Safe gefunden und das ist alles scheinbar noch aktiv. Nicht die Schmalbandeinwahl - aber das Frontend.

Stichworte: leonardo, mwdsltest, Toyota, WinShuttle

Geht zurück bis in die frühen 2000er Jahre ... Das Frontend ist zwar komplett obsolete aber das hat in 10 Jahren keiner gemerkt, daher läuft das immer noch.

Tinyhouse 1

Posted Sun 26 Mar 2017 07:22:24 PM CEST Florian Lohoff in

Henris Tagwerk für heute ... Ein Mobiles Tinyhouse ... Mit Tür und Sitzbank ...

Programmer Competency

Posted Mon 27 Mar 2017 02:14:01 PM CEST Florian Lohoff in

Eine sehr spannende Matrix um sich selber in seinen Fähigkeiten mal einzuschätzen. Was fehlt mir selber als Softwareentwickler.

Es gibt auch eine Kritik in den Kommentaren die ich teilweise für Berechtigt halte. Bestimmte Bücher zu lesen ist nicht unbedingt ein Qualitätsmerkmal. Und "The mythical man month" ist ja auch nicht unbedingt Softwareentwicklung sondern eher Arbeitsorganisation und Informationsmanagement - Nichts desto trotz eine spannende Lektüre.

blog.rfc822.org

Posted Mon 27 Mar 2017 04:00:30 PM CEST Florian Lohoff in

So - Nach ein paar Jahren der Konservierung von Altdaten habe ich heute mein altes Blog mal entsorgt - blog.rfc822.org ist mal dann weg.

Fahrradsaison

Posted Mon 27 Mar 2017 06:09:18 PM CEST Florian Lohoff in

Targeted Ads

Posted Tue 28 Mar 2017 08:36:35 AM CEST Florian Lohoff in

Das ist echt spannend was da so läuft. Vorletzte Woche habe ich einen Tag in der Maschinenbaufirma eines Kumpels verbracht. Mein Telefon war nicht in den WLANs dort eingebucht. Trotzdem bekommen ich jetzt Werbung für Automatisierungstechnik.

Mittagspause

Posted Tue 28 Mar 2017 01:13:35 PM CEST Florian Lohoff in

Unfalldaten Gütersloh 2016

Posted Tue 28 Mar 2017 02:30:07 PM CEST Florian Lohoff in

Die Unfalldaten für den Kreis Gütersloh für 2016 sind da. Ich habe die ersten beiden Städte extrahiert und als Karte produziert.

Hier sind die Karten für Gütersloh und Rheda-Wiedenbrück.

Schiffsmeldungen

Posted Tue 28 Mar 2017 02:40:10 PM CEST Florian Lohoff in

Weil ich es gerade hier erwähnt habe. Ein schöner Film mit Kevin Spacey im wunderschönen Neufundland.

Vergrab es und erzähl es keinem

Zerstörung von Festplatten

Posted Wed 29 Mar 2017 06:13:06 PM CEST Florian Lohoff in

Ein Artikel auf Golem zum zerstören von Festplatten hat mich fragend hinterlassen? Warum nicht verschlüsseln und bei Bedarf nur das irgendwo Zentral gelagerte Key Material zerstören?

D.h. ich habe ein off-site system das die Keys der jeweiligen Block Storage Volumes hat und bei Bedarf den Systemen zur Verfügung stellt.

Dieses System muss gestoppt werden, und die Systeme die eine run-time Kopie des key materials halten im Speicher müssen abgeschaltet werden.

D.h. das iLO, iDrac, IPMI muss angewiesen werden das System abzuschalten - Nicht nur resetten - Das löscht den Speicher nicht, sondern abschalten. Wenn dann die Behörden mehrere Minuten brauchen an das System zu kommen helfen auch Kühlverfahren um das DRAM zu retten nicht mehr. Damit wäre ein System geschaffen was eine mehr oder minder beliebige Menge an Systemen, Disk Volumes oder Systemen innerhalb von 60 Sekunden unerreichbar macht.

Entsorgung

Posted Thu 30 Mar 2017 08:33:58 AM CEST Florian Lohoff in

2 Minuten suchen. 1 Kubikmeter für die Entsorgung.

Simplify your IT