recent

Texteintrag:Leuchtfeuer Gondors 2009年03月08日 (日) 07時53分 Tags: Photos
Texteintrag:Google SoC 2007年04月12日 (木) 14時02分 Tags: Hecking
Texteintrag:BGP/Quagga: IPv4-Nexthops über IPv6-Peerings 2007年02月27日 (火) 02時10分 Tags: BGP, diac24, Hecking
Texteintrag:I²C Hacking: LM75 am DDC 2006年12月30日 (土) 14時13分 Tags: Hecking
Kommentareintrag:Kommentar zuClueless Coders 2006年02月12日 (日) 15時12分 von: Astro
Texteintrag:Clueless Coders 2006年02月12日 (日) 10時12分 Tags: Hecking, Gesellschaft
Übersicht über alle Einträge...

Leuchtfeuer Gondors

2009年03月08日 (日曜日, Antiverpeil 922) 07時53分
Tags: Photos

Google Summer of Code: "Implement advanced subtitle support for VLC"

2007年04月12日 (木曜日, Antiverpeil 226) 14時02分
Tags: Hecking

Ohne Worte:

<16362292aa042de5307d3998311c0@google.com>:
Subject: Congratulations!
To: equinox at diac24 net
From: gsoc at google com
Date: Thu, 12 Apr 2007 00:18:11 -0700

Dear Applicant,

Congratulations! This email is being sent to inform you that
your application was accepted to take part in the Summer of
Code. Please check your student home page in the SoC web
application at http://code.google.com/soc/student_home.html
to determine which of your applications was accepted.

BGP/Quagga: IPv4-Nexthops über IPv6-Peerings

2007年02月27日 (火曜日, Antiverpeil 182) 02時10分

Beim Aufbau des diac24.net-VPNs gab es hin- und wieder Punkte, an denen wir uns entscheiden mussten. Zum Beispiel mussten wir uns entscheiden, ob wir „numerierte” oder „unnumerierte” Tunnel verwenden. Numeriert bedeutet, dass jeder Tunnel sein eigenes /30er IP-Subnetz hat; unnumeriert bedeutet dass die Tunnel keine eigenen IPs haben sondern jeweils die „Haupt”-Adresse des Routers verwenden.

Die Entscheidung in dieser Angelegenheit wurde so ca. 2002 getroffen, als das VPN noch aus TroJan und mir bestand, und noch über OSPF statt BGP lief. Wir wollten nicht so viel Müll in unseren Routingtabellen und haben uns für unnumerierte Tunnel entschieden. Mittlerweile zweifle ich jedoch an dieser Entscheidung, und zwar aus diesen Gründen:

  • Wenn man einen Tunnel zu jemandem hat, und der Tunnel ausfällt, dann ist der Router des Gegenübers nicht erreichbar, auch wenn es noch andere Verbindungen gibt. Denn während die Routen zu Netzen hinter dem Router des Gegenübers verschwinden, bleibt die Route zum Router des Partners erhalten - und zeigt ins Leere.
  • Verschiedene Routingsoftware funktioniert mit unnumerierten Tunneln nicht richtig, insbesondere pimd». Das hat dann zu einer Reihe von Patches» geführt, aber nicht jeder hat die im Kernel...

Jedenfalls habe ich mich entschlossen, zwischen charon und dem SpaceBoyZ numerierte Tunnel auszuprobieren. Aber sehen wir uns erst mal an, wie das IPv4-Routing bisher funktioniert:

BGP über unnumerierte Tunnel

Auf den ersten Blick nichts besonderes. Was man im Bild allerdings nicht sieht, ist, dass das BGP-Peering über IPv6-Linklocals läuft. Also... woher nimmt der bgpd den Nexthop für IPv4? - Diese Frage hatte ich mir leider bisher noch nie gestellt. 15 Minuten und einige Verwunderung später kannte ich die Antwort:

BGP über numerierte Tunnel, ohne Patch

Nachdem ich nämlich dem Tunnel ein eigenes Subnet verpasst hatte, bekam ich plötzlich keine IPv4-Routen mehr. Das Peering selbst war in Ordnung, an den IPv6-Linklocals hatte sich ja nichts geändert und ich bekam korrekt meine IPv6-Routen. Die Fehlersuche ergab, dass die Routen in sh ip bg ne SBZ received-routes ordnungsgemäss erschienen, es aber nicht nach sh ip bg ne SBZ routes schafften. Die Neighbor-Übersicht zeigte 0 accepted prefixes. Ein genauerer Blick in received-routes enttarnte das Übel:

sh ip bg ne SBZ received-routes:
   Network          Next Hop      Metric LocPrf Weight Path
   172.22.24.0/28   172.22.24.1        1             0 64624 i

Einige Sucherei und Fragerei in #quagga» später hatte ich dann als Antwort dass ich IPv4 und IPv6 über getrennte Peerings laufen lassen soll. Der damit verbundene erhöhte Konfigurationsaufwand passte mir allerdings nicht wirklich in den Kram. Ausserdem war das schöne an den IPv6-Peerings dass man die unangetastet lassen konnte, auch wenn sich am Tunnel etwas ändert.

Ungefähr eine halbe Stunde später war das Ergebnis dann dieser Patch». Die Änderung ist ziemlich minimal, anstatt einfach die Router-ID zu verwenden sucht der bgpd jetzt das Interface, über das das Peering geht, nach einer IP ab. Dadurch findet er die korrekte IP:

BGP über numerierte Tunnel, ohne Patch

Zufrieden betrachtete ich meine nun wieder gefüllte IPv4-Routingtabelle:

sh ip bg ne SBZ received-routes:
   Network          Next Hop      Metric LocPrf Weight Path
   172.22.24.0/28   172.22.255.253     1             0 64624 i

Der Erfassungsbereich des Patches schliesst nicht nur numerierte Tunnel ein; prinzipiell sind alle Fälle betroffen, wo über IPv6 gepeert wird und bei denen die BGP Router-ID nicht dem Nexthop entspricht. (Wenn ich das korrekt verstanden habe gab es da beim c3d2 wohl auch mal Probleme auf cthulhu)

Der Patch ist an die quagga-Mailingliste submitted, aber Antwort habe ich noch keine bekommen. Mittlerweile existieren im diac24.net 2 numerierte Links: René <--> equinox <--> SpaceBoyZ. Das Ganze scheint stabil zu funktionieren.

René war nett und hat ein OpenWrt-Package für Quagga 0.99.6 gebastelt. Ich war fauler und hab nur eins für 0.98.6 gebaut. Downloadlinks:

Happy Patching!

(23C3:) I²C Hacking: Die einfache Variante - LM75 am VGA-DDC

2006年12月30日 (土曜日, Antiverpeil 123) 14時13分
Tags: Hecking

Jaaaa, der 23C3 hier in Berlin eröffnet gerade mal eine sehr interessante Möglichkeit: Segor» ist nur einen Katzensprung entfernt. (Okay, der Katzensprung hat fast 2 Stunden verschlungen, aber naja.) Jedenfalls bekommt man bei Segor einiges an I²C-Devices.

Eines dieser I²C-Devices ist der LM75 (National)», der uns mit zugegeben eher schlechter Genauigkeit Temperaturen zwischen -55°C und +125°C über den I²C-Bus messen lässt. (Es gibt auch bessere I²C-Temperatorsensoren, den LM75 zu nehmen war pure Faulheit meinerseits.)

Wie ihr nun schon dem Titel entnehmen könnt, war meine Idee, den LM75 an den DDC-I²C anzuschliessen. Auf dem Fussboden von Saal 1 auf dem 23C3 zusammengelötet sieht das dann so aus:

LM75 am VGA-DDC-I²C

Praktischerweise hat sich die Anmerkung "selten +5V" auf der Wikipedia-Seite zum VGA-Anschluss» als unwahr erwiesen. Den Pufferkondensator hab' ich mir hackisherweise auch gespart, so dass einfach nur 4 Leitungen an 7 Pins zu verdrahten waren. (Die +5V-Leitung habe ich gleich noch auf die danebenliegenden Adresspins gelötet, sicherheitshalber.)

Um das ganze dann unter Linux anzusprechen benötigt man einen kleinen Kernel-Hack:

lm75_nonhwmon.patch:
--- old/drivers/hwmon/lm75.c   2006-12-11 20:32:53.000000000 +0100
+++ new/drivers/hwmon/lm75.c   2006-12-30 14:32:23.227463353 +0100
@@ -107,8 +107,6 @@
  
  static int lm75_attach_adapter(struct i2c_adapter *adapter)
  {
-       if (!(adapter->class & I2C_CLASS_HWMON))
-               return 0;
        return i2c_probe(adapter, &addr_data, lm75_detect);
  }

Das ist deshalb nötig, weil der DDC-I²C als Device-Klasse logischerweise nicht I2C_CLASS_HWMON gesetzt hat. Nach anwenden dieses Mikro-Kernel-Patches lädt man das lm75-Modul mit Angabe der I²C-Adresse:

insmod lm75.ko force_lm75=2,0x4f

Die Angabe 2,0x4f ist zu Verstehen als "Bus 2, Adresse 0x4f". Die Adresse entsteht dadurch, dass ich die Adresspins auf +5V gezogen habe (seht euch das Datenblatt an). Die Busnummer muss man ggf. herausfinden.
/sys/class/i2c-adapter/i2c-2/device/name sagt bei mir vga. Nachdem man nun das ganze am Laufen hat, kann man den Temperaturwert auslesen:

$ cat /sys/class/hwmon/hwmon0/device/temp1_input
19500
Temperatur auf dem 23C3

Wie bei allen Hardware-Monitoring-Treibern muss man den Wert noch durch 1000 teilen.

Upcoming: Ich hab' den natürlich die Temperatur hier auf dem 23C3 in ein RRD loggen lassen. Das bekommt ihr auch noch zu sehen, sobald's etwas aufbereitet ist.

photostream

image
Antiverpeilen: 1039日
creative commons Validome Strict XHTML 1.0 python powered
Copyright © 2005, 2006, 2007 by David L. (equinox)
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 2.0 Germany License
Creative Commons License

Impressum

      mode   index
      uri    
      offset 0