Was taugen also diese Antigen-Tests die für Schnell- und Selbsttests eingesetzt werden? Prof. Drosten hat ja in seinem gestrigen Podcast auch auf die hohe Fehlerquote des Tests verwiesen. Hier lohnt es sich genau hin zu schauen …

Antigen- oder Lateral-Flow-Tests bekommen eine Probe eines Nasen/Rachenabstriches vorgelegt, die dann in einer Lösung langsam den Teststreifen entlang kriecht (das ist der lateral flow). In zwei Querstreifen befinden sich Farbstoffe, die an Sensormoleküle gebunden sind. Der weiter entfernte Querstreifen reagiert auf das Lösungsmittel und zeigt somit an, dass der Test korrekt benutzt wurde. Am eigentlichen Test-Querstreifen ist der Farbstoff an Antikörper gebunden, die spezifisch auf bestimmte Viruseiweiße reagieren. Derartige Antikörper sind auch Bestandteil des Immunsystems, sie dienen der Erkennung schädlicher Eindringlinge.

Problemfelder

Was kann dabei schief gehen?

Zunächst mal könnte es ein anderes Material geben, dass den Farbstoff zum Leuchten bringt. Säuren sind da beispielsweise geeignet. Deswegen sollte man einige Zeit vor einem Test nichts trinken (außer Wasser). Andere Krankheitserreger lösen den Antikörper nicht aus. Es ist jedoch denkbar, dass nahe Verwandte des SARS-CoV2 ebenfalls eine Reaktion hervor rufen. Praktisch bekannt sind solche Fälle bisher nicht.

Ist wenig Virusmaterial vorhanden, so gibt es nur eine sehr schwache oder gar keine Verfärbung des Teststreifens. Man könnte also eine schwache Linie für fälschlich negativ halten. Dass kein oder zu wenig Material vor liegt kann nicht nur daran liegen, dass die Person virenfrei ist, sondern auch an einem fehlerhaften Abstrich. Wer also nur kurz durch die Nase huscht, riskiert eine zu geringe Probenentnahme. Auch kann die Nase gerade frisch gereinigt worden (Nasenspray etc.) und so evtl. vorhandenes Virenmaterial beseitigt sein.

Darüber hinaus variiert die Virenmenge in den oberen Atemwegen während des Krankheitsverlaufs. So steigt die Virenlast erst einige Tage an (und der Test erkennt nichts), dann ist man infektiös (und der Test schlägt an). bekommt evtl. Symptome, weil sich das Virus in die Lunge verlagern (der Test schlägt nicht mehr an). Insbesondere die ersten Tage stellen ein Problem dar, denn obwohl der Test (gerade noch) negativ ist, ist man einige Zeit später schon infektiös.

Aber auch Umgebungseinflüsse können den Test beeinträchtigen. Ist es zu warm oder zu kalt, erfolgt die notwendige Nachweisreaktion nicht in der benötigten Stärke, der Test wird so unbrauchbar. Natürlich können auch Proben vertauscht werden. Und man sollte die Teststäbchen auch nicht mehrfach benutzen.

Fazit

Summiert man all diese Fehlermöglichkeiten auf, so stellt sich heraus, dass in der Praxis ein positiver Schnelltest fast immer auch eine positive PCR Bestätigung bekommt. Die Fälle in denen der Test falsch positiv ist, sind meist durch Fremdeinwirkung (z.B. Trinken von Cola oder Fruchtsaft) zurück zu führen. Andererseits sagt ein negativer Test wenig aus, denn an drei von acht Tagen des typischen Infektionsverlaufs bleibt er aufgrund der niedrigeren Virenlast negativ. Schlechte Abstriche und falsche Handhabung dazu, kann eine infizierte Person in 40% der Fälle fälschlich als negativ bewertet werden.

Kürzlich hat das RKI davon geschrieben, dass Geimpfte genauso angesehen werden sollen, wie negativ Getestete. Das ist in Anbetracht der gerade vorgenommen Ausführungen völlig verständlich: Geimpfte können sich zwar wieder infizieren und diese Infektion auch weiter geben, aber die Wahrscheinlichkeit dafür ist mit höchstens 10% deutlich kleiner als die 40% false-negative Wahrscheinlichkeit eines Schnelltests.

Das ist deutlich weniger als die Politik aus der Aussage heraus zu lesen versucht: Geimpfte sind also ebenso wenig wie negativ Getestete garantiert ungefährlich, sondern übertragen in einer vergleichbaren Größenordnung das Virus trotzdem weiter.

Der Krux mit den Prozenten

Nehmen wir ein Beispiel: In einer größeren Stadt wurden 10000 Schnelltests an einem Tag durchgeführt. Dabei wurden 20 positive Tests ermittelt. Die Inzidenz in der Gegend liegt bei 150.

Mit einer unbekannten Dunkelziffer (die die Anzahl der Infizierten nach oben treiben würde) und einer Vorselektion auf komplett symptomfreie Nutzer der Schnelltests (was die Anzahl nach unten treibt) ist es eine mögliche Annahme, dass sich diese beiden Effekte neutralisieren. Man kann also die Inzidenz direkt auf die Testmenge anwenden und würde somit 15 Infizierte unter den 10000 Test-Kandidaten erwarten.

Von den 15 Infizierten haben 40% ein falsch-negatives Ergebnis: 6 Personen bekommen also einen negativen Befund, obwohl sie aktive Virenträger sind. Die restlichen 9 Infizierten werden korrekt erkannt. Da aber 20 positive Tests vorliegen, sind elf Personen mit falsch-positiven Resultaten dazu gekommen.

Wenn man selbst zum Testen geht, interessiert man sich natürlich nur für die Wahrscheinlichkeit die der Test bei einem persönlich hat. Ob man infiziert ist oder nicht, weiß man ja nicht. Also gehört man zur Gesamtheit der getesteten Personen. Und da hat der Test also:

  • 11 von 10000 = 0,11% falsch-positive Wahrscheinlichkeit
  • 6 von 10000 = 0,06% falsch-negative Wahrscheinlichkeit

Hat man dann wirklich einen positiven Test (was erst mal unwahrscheinlich ist), dann kann der zu über 50% falsch-positiv sein. Diese massive Vergrößerung ist als bedingte Wahrscheinlichkeit bekannt und der menschlichen Intuition fremd.

Dieses Verschätzen der Intuition ist in die andere Richtung noch viel extremer. Aus der Angabe 40% nimmt man einfach an, dann 4000 Virenträger unerkannt durch die Tests kommen! Real sind es aber nur sechs Personen, also 1,5 Promille der intuitiven Vorstellung.

Schnelltests filtern also Infizierte aus der Masse heraus, verringern aber die Anzahl der Infizierten nicht ausreichend.

Die Verwendung von Schnelltests als Freigabe für Öffnungen und Treffen ist bei hohen Infektionszahlen schlicht fahrlässig. Nur bei niedrigen Inzidenzwerten eignen sich Schnelltests für diesen Zweck. Sie dienen dann dem Auffinden von noch unbekannten Infektionsclustern in einer fast komplett virenfreien Umgebung.

Aus aktuellem Anlass hier nochmal ein Hinweis auf die Auswirkung der Testanzahlen. Wesentlich ist dabei zunächst der Fakt, dass die Infektionen völlig unabhängig von der Teststrategie sind. Die Leute bekommen und haben das Virus auch dann, wenn man nicht testet. Mit Tests kann man sich der Infektionslage annähern, indem man möglichst viele Personen ermittelt, die infiziert sind. Man leuchtet also das Dunkelfeld aus.

Die Infektionen geschehen auch, wenn man nicht testet.

Dabei gibt es vier Gruppen von Personen:

  1. Menschen, deren Infektion schon bekannt ist (aus einem früheren Test). Diese werden regelmäßig wieder getestet, um zu erkennen, wann die Gefahr vorbei ist. Die Positivquote dieser Tests ist sehr hoch: Viele von denen, die bekanntermaßen infiziert sind, bleiben es auch noch für eine ganze Weile. Die Infektion verschwindet nur langsam aus dem Körper, auch wenn die ansteckende Phase schon lange vorbei ist.
  2. Menschen, die typische Covid19-Symptome haben. Diese werden hoffentlich schnell getestet, um Klarheit über ihren Zustand zu erhalten. Meist sind diese Personen noch ansteckend oder haben vor kurzem andere Menschen anstecken können. Auch hier ist die Positivquote der Tests hoch.
  3. Menschen, die durch Kontakte zu als infiziert bekannten Personen (aus Gruppe 2) sich angesteckt haben können. Diese Personen möglichst vollständig zu ermitteln ist Aufgabe des Gesundheitsamtes. Hier ist Geschwindigkeit so ziemlich das Wichtigste. Binnen 24h sollten alle potentiellen Kontaktpersonen benachrichtigt sein, egal ob es gerade Wochentag oder Wochenende ist. Digitalisierung hilft hier massiv. Diese Menschen sind zu testen, um weitere Ansteckungswege zu erkennen. (Zum Verhindern reicht Quarantäne.) Die Positivquote dieser Tests ist ziemlich niedrig, weil (Achtung Überschlag) eine Person zwar 40 Kontakte in zwei Wochen gehabt, aber nur einen oder zwei angesteckt hat (Positivquote bei 3%). Besonders heimtückisch sind Superspreader-Events, bei denen eine Person sehr viele andere angesteckt hat, beispielsweise bei einem längeren, lautstarken Aufenthalt mit vielen Personen in Innenräumen.
  4. Menschen, die sich auf noch unbekannten Wege angesteckt haben. Diese zu finden, ist sehr schwer. Hier kommen Schnelltests zur Vorselektion zum Einsatz, um schnell größere Menschengruppen auf verdächtige Virenausscheidungen zu überprüfen. Die Verdachtsfälle werden dann durch PCR-Tests validiert. Es kommt also bei Schnelltests auf den preiswerten Durchsatz an, nicht auf absolute Genauigkeit. Natürlich sollte der Schnelltest nicht zu viele falsch-negative Ergebnisse bringen, weil das die Ausbreitung der Infektion begünstigt. Eine zu hohe falsch-positiv Quote ist dagegen mehr ein Problem der Akzeptanz des Tests. Da der Schnelltest in einem Umfeld mit wenigen Fällen (niedrige Prävalenz) angewendet wird, ist seine erwartete Positivquote sehr niedrig (0,2% in Jena). Es ist also sinnvoll, Verdachtsgruppen mit höherer Prävalenz (z.B. Reiserückkehrer) komplett mit Schnelltests zu überprüfen.

Das kann man auch mal numerisch durch spielen.

Wenn also eine Positivquote an Tests von ca. 5% gemeldet wird, sind ausschließlich die Gruppen 1 bis 3 dafür verantwortlich. Positive Tests aus Gruppe 4 spielen fast keine Rolle. Vergrößert man jetzt die Anzahl der Tests in die Gruppe 4 hinein, so erhöht sich die Anzahl der gefundenen Infektionen nur sehr wenig.

Liegt die Positivquote bei höheren Werten, vielleicht sogar über 7% oder gar 10%, dann hat man die Gruppe 3 (Kontakte) nicht ausreichend untersucht. Mehr Tests führen also in dem Fall zu echt mehr gefundenen Infektionen, was aber auch dringend notwendig ist.

Liegt die Positivquote bei niedrigen Werten, vielleicht sogar unter 1%, dann hat man ein sehr umfassendes Bild der Infektionslage (unter der aktuellen Prävalenz). Dazu muss man vermutlich mehr als die Hälfte der Bevölkerung testen, denn die Positivquote kann nicht niedriger sein als die Prävalenz in der Bevölkerung. Alle gefundenen Fälle stecken keine neuen Menschen mehr unkontrolliert an, so dass das Virus sich nicht mehr ausbreiten kann. Dies ist die #NoCovid-Strategie. Erfolgreich durchgeführt kann man dann auch Millionen Menschen testen, ohne einen positiven Fall zu haben. Das Virus ist dann faktisch verschwunden.

Wenig erfreulich sind die Meldungen der letzten Tage, die in einer bedauerlichen Entscheidung Gestern mündeten. Ein Impfstoff wurde ausgesetzt, so dass sehr viel Unsicherheit in die aktuellen Impfvorgänge kommt (Impfungen fallen aus, auch notwendige Zweitimpfungen). Der Grund für diese Vorsichtsmaßnahme sind ein ungewöhnliche Häufung einer sehr speziellen Erkrankung (Sinusvenenthrombose).

Der Normalfall (ohne Impfung) wird so beschrieben: Die genaue Häufigkeit von Sinusthrombosen ist unbekannt. Es wird geschätzt, dass jährlich 3–5 Neuerkrankungen pro 1 Million Einwohner auftreten. Frauen sind im Verhältnis 3:1 häufiger als Männer betroffen. Das mittlere Erkrankungsalter liegt bei 30–40 Jahren.

Die aktuelle Beobachtung (nach Impfung mit AstraZeneca) spricht von 7 Neuerkrankungen pro 1 Million Einwohner. Es sind 6 Frauen und 1 Mann betroffen. Das Erkrankungsalter liegt bei 25–40 Jahren. Kurz gesagt liegt das gleiche Bild vor, wie bei dem Fall ohne Impfung (auch das gleiche Verhältnis und die Altersgruppe) Allerdings halt in den Wochen, in denen geimpft wird, nicht übers ganze Jahr. Es kann natürlich auch daran liegen, dass man sich als Geimpfter etwas genauer selbst beobachtet und damit bislang unentdeckte Thrombosen zum Arzt gelangen. Ein Faktor zehn, der hier auftritt wäre so leicht zu erklären.

Wenn über Spätfolgen oder Langzeitfolgen von Impfungen gesprochen wird, ist genau das gemeint: Sehr selten auftretende Effekte kann man nur beobachten, wenn man sehr viele Personen impft. Der Effekt tritt also erst spät und lange nach Impfbeginn ein, für den betroffenen Einzelfall allerdings binnen weniger Tage. Wer eine Woche nach einer Impfung beschwerdefrei ist, hat nichts mehr zu befürchten, der Impfstoff ist dann nicht mehr im Körper und das Immunsystem ist trainiert. Das unterscheidet eine Impfung (einmalige Aktion) von einem Medikament (häufige, dauerhafte Anwendung). Impfungen haben keine individuellen Langzeitfolgen, wenn man von der erreichten Immunität gegen die Krankheit absieht.Kleiner Einschub: Wenn man noch etwas länger beobachtet, wie in Großbritannien, dann verschwinden die Auffälligkeiten im statistischen Mittel wieder. Es wird interessant sein, ob eine Nachprüfung dort etwas findet.

Soweit zum wissenschaftlichen Teil der Geschichte und damit zur Überlegung des Paul-Ehrlich-Institutes, die für die Impfstoffsicherheit zuständig sind. Man beobachtet ein Verstärktes Auftreten einer sehr seltene Krankheit und vermutet einen Zusammenhang mit einem Impfstoff. So hatte man schon länger von Thrombosen nach Impfungen (bei allen Impfstoffen) gehört und sich beim PEI sicher gedacht: "Das ist immer noch um den Faktor 1000 weniger Risiko als ein Urlaubsflug nach Malle." Erst als es die doch sehr seltenen Sinusthrombosen wurden, war es Zeit zum Handeln.

Aus rein wissenschaftlicher Sicht ist es jetzt an der Zeit, zu untersuchen, ob überhaupt eine Zusammenhang besteht, also ob die Sinusthrombosen AN oder MIT der Impfung auftraten. Dazu braucht man einige Tage. Es ist im Sinne eines wissenschaftlichen Experimentes nun sinnvoll, diese paar Tage mit dem Impfen aufzuhören und das Ergebnis (AN oder MIT) abzuwarten. Möglicherweise handelt es sich um eine hormonelle Abhängigkeit, die für ältere Männer gar nicht zu treffen kann. Man könnte dann also die entsprechende Risikogruppe (junge Frauen, die hormonell verhüten) mit einem anderen Impfstoff impfen. Solche spezifischen Empfehlungen für bestimmte Gruppen sind völlig normal. So ist beispielsweise der BioNtec Impfstoff nicht für schwere Allergiker geeignet.

Und wenn man schon mal dabei ist die Gruppe der hormonell verhütenden jungen Frauen anzuschauen, dann ist dort die Sinusthrombose-Wahrscheinlichkeit bei 30 pro Million und Jahr, was so ziemlich genau der Beobachtung mit dem Impfstoff entspricht. Dann wäre der Impfstoff nicht mal schuld. Er wäre nur das Auswahlkriterium bei der Betrachtung der sowieso erfolgten Krankheitsfälle. Muss man halt untersuchen.

Apropos BioNtec: Lust auf die Liste der beobachteten Auffälligkeiten AN oder MIT Impfstoffen? Hier lang (und dann den Rest des Blogs)

Jetzt aber zur politischen Diskussion, die das eigentliche Ärgernis darstellt. Bekommt ein Gesundheitspolitiker die Information aus der Wissenschaft, dass das was auffällig ist und man besser mal ein paar Tage zurück tritt, dann kann man durchaus einen generellen Impfstopp anordnen. Diese Entscheidungen sind aber immer eine politische Abwägung von verschiedenen Auswirkungen. Würde dei Politik wirklich auf die Wissenschaft hören, hätten wir schon Ende September einen harten, kurzen Lockdown gehabt und wären in ein glückliches virenfreies Weihnachtsgeschäft Anfang Dezember gegangen, die wir mit unbeschwerten Feiern in der Familie gekrönt hätten.

Zur politischen Entscheidung gehört also die Abwägung. Wie viel und welchen Schaden richtet diese Entscheidung, das Impfen auszusetzen an? Schließlich ist Impfstoff generell knapp und die 3. Welle nimmt richtig Fahrt auf. Bereits geimpfte Personen werden von der 3. Welle verschont (sowohl als Infektionstreiber als auch als Kranke). Und man macht einen Impfstoff, den man schon mehrfach durch fragwürdige Kommunikation grundlos in ein schlechtes Licht gerückt hat, für größere Teile der Bevölkerung völlig kaputt. Und das wegen ein paar Tagen?

Hier kommt ein zweiter Faktor ins Spiel, der ebenso ärgerlich ist. Die Medien (nicht nur die sozialen). Quotengeil und aufmerksamkeitshaschend bauscht unsere Medienlandschaft jeden Einzelfall zu einer nationalen Katastrophe auf, anstatt ihrem journalistischen Anspruch gerecht zu werden: Fakten recherieren, Gefahren in ein Gesamtbild einsortieren und die Bevölkerung aufzuklären.

PS: Wer Verschwörungstheorien kommentieren will, schaut sich bitte zuerst die Preispolitik von AstraZeneca an und dann die Sponsorenliste der großen Parteien, die über die Gesundheit maßgeblich entscheiden.

Ein immer wieder geäußerter Verdacht besagt, dass man umso mehr positive Fälle bekommt, je mehr man mehr testet. Das klingt zunächst einleuchtend, ist aber nicht korrekt.

Modellierung

Zur Modellierung beziehe ich mich auf ein paar wohl fundierte Voraussetzungen:

  • Es gibt eine reale Inzidenz, d.h. ein bestimmter Prozentsatz der Bevölkerung ist aktuell infiziert.
  • Betrachtet wird ein Schnappschuss des Infektionsgeschehens, weitere Ansteckungen während dieser Zeit bleiben außen vor.
  • 20% der Infizierten hat Symptome.
  • Jeder Infizierte hat 3,2 weitere Menschen angesteckt.
  • 40% der Menschen, die Symptome haben, sind tatsächlich infiziert.
  • 5% der nachverfolgten Kontakte sind infiziert.
  • Der Test wirkt zu 100%, er erkennt eine Infektion zweifelsfrei.

Dies bedeutet, dass es einen unentdeckten Rest an Infektionen gibt, der nicht zu den 20% Symptomatischen oder den 64% angesteckten Kontakten gehört. 16% sind also ohne erkennbaren Bezug infiziert. In diesem Modell nehme ich eine Stadt mit 100000 Einwohnern, so dass die Anzahl der positiven Tests und die Inzidenzzahlen identisch sind. So setzen sich 1% Infizierte somit aus 200 Symptomatischen, 640 infizierten Kontakten und 160 unentdeckten Fällen zusammen. Insgesamt ist das eine reale Inzidenz von 1000.

Das Testregime geht strikt vor:

  • Zuerst werden symptomatische Personen getestet.
  • Sind noch Kapazitäten frei, so werden Kontaktpersonen getestet.
  • Sind dann noch Kapazitäten frei, so werden weitere Personen getestet.

Beginnt man mit wenigen Tests, so reicht die Testkapazität nicht aus, alle symptomatischen Personen zu testen.  Aber nicht alle Tests sind auch positiv.

corona tests 1

Die Anzahl der entdeckten Fälle steigt also linear mit der Anzahl der Tests an, wobei die Positivquote sich bei 40% einpegelt. Das ist genau der Wert, der für den Anteil der Infizierten unter den Symptomatischen vorgegeben war.

Erst, wenn alle 500 symptomatischen Personen auch getestet wurden, um die 200 (40%) Infizierten zu finden, kommen die Kontaktpersonen an die Reihe und die Positivquote sinkt. Man erreicht einen Inzidenzwert von 200,  der um den Faktor 5 zu niedrig ist. Ja, das ist genau die gern bemühte Dunkelziffer vom Frühjahr 2020.

corona tests 2

Auch jetzt muss wieder viel getestet werden, um alle Kontaktpersonen zu überprüfen. Wiederum steigt die Inzidenz mit den Tests linear an, diesmal aber langsamer, denn man liegt oft (zu 95%) falsch. Dabei werden aber schon die ersten Fälle entdeckt, die nichts mit den ursprünglichen Ansteckungsverhältnissen zu tun haben.

Hat man alle Kontaktpersonen durch stabilisiert sich die Inzidenz bei 840 (von real 1000). Die Positivquote ist inzwischen auf ca 7% gefallen. Die Dunkelziffer beträgt nach der Ausleuchtung der Kontakte nur noch bei 1,2. Man ist also schon ziemlich nahe dran.

corona tests 3

Weitere Tests hellen das Dunkelfeld immer weiter auf, die Positivqoute sinkt weiter, bis sie die realen 1% der Infektionsrate erreicht hat.

Fazit

Die Erhöhung der Tests führt zu erhöhten Inzidenzzahlen, indem die noch unentdeckten Fälle aufgedeckt werden. Die Anzahl der positiven Tests überschreitet dabei niemals die realen Fälle, es wird nur das Maß der Unbestimmtheit verringert.

Das geschieht in drei Stufen: Nach der Aufdeckung der symptomatischen Fälle kommt es zur ersten Stagnation, eine Erhöhung der Tests führt nicht mehr im gleichen Maße zu einer Erhöhung der positiven Fälle. Die Positivquote sinkt.

Nach der Aufdeckung der Kontakte kommt es zu einer weiteren Stagnation, eine Erhöhung der Tests führt nicht mehr im gleichen Maße zu einer Erhöhung der positiven Fälle. Die Positivquote sinkt weiter. Dabei ist schon fast das ganze Infektionsgeschehen sichtbar. Es sind dafür fast 10% der Bevölkerung zu testen.

Die restlichen 90% der Bevölkerung zu testen, führt zur Aufdeckung der restlichen 16% der Fälle und damit zum Erliegen der Ausbreitung. Bis zur nächsten Einschleppung.

Es ist nicht möglich, durch mehr Tests beliebig hohe Inzidenzen zu erreichen. Man kann eine Pandemie nicht herbei testen!

Ein realistischeres Beispiel

Ganz offensichtlich sind 1% Infektion in der Bevölkerung extrem viel. Dies würde bedeuten, dass in Folge dieses Geschehens ca. 20 Personen versterben (2% Tödlichkeit). Eine Inzidenz von 1000 ist weit mehr, als wir hier real erleben und hoffentlich auch nicht erleben müssen.

In Jena (ca. 100000 Einwohner) werden ca. 70 Leute in einer Woche positiv getestet. Dies entspricht in dem Modell einem Schnappschuss, weil es etwa der Zeit der Kontaktnachverfolgung entspricht. Die Positivquote ist ca, 5% (Durchschnitt in Deutschland). Damit wurden 1400 Tests durchgeführt.

Durch Ausprobieren komme ich damit auf eine realen Infektionsrate von 0,085%, d.h. 85 Infizierte (17 mit Symptomen, 54 in den Kontakten und 14 sonstige). Davon werden bei 1400 Tests alle Symptomatische und alle Kontakte gefunden, jedoch kein weiterer Fall. Die beobachtete Inzidenz liegt somit bei 71. Real wären es 85.

Steigert man die Zahl der Tests, so findet man erst bei ca. 4000 Tests den nächsten, bis dahin völlig unbekannten Fall. Man kann auch bis 1200 Tests zurück gehen, ohne einen Fall zu übersehen. Die Anzahl der Tests spielt also keine Rolle mehr für die ermittelte Inzidenz. Nur die Positivquote wandert von 2% zu 6%. Dazu sind nur etwas mehr als 1% der Bevölkerung zu testen.

corona tests 4

Mit den 1400 Tests bei einer Inzidenz von 70 liegt Jena also nur knapp über der Schwelle, die notwendig ist, um das Kontaktumfeld auszuleuchten.

Zum Abschluss nochmal das volle Bild für diesen Fall: Jena, gemessene Inzidenz 70 bei 5% Positivquote, reale Inzidenz 85 (= 0,085% Infizierte)

corona tests 5

Eine Inzidenz von 70 bedeutet aber auch, dass es in den nächsten drei bis sechs Wochen ein bis zwei weitere Todesfälle geben wird, die auf genau diese Woche zurück gehen. Noch mehr Personen werden nach schwerem Verlauf lange Schäden davon tragen. Und dann kommt schon wieder die nächste Woche.

Zu kompliziert? Dann vielleicht mal die andere Erklärung lesen.

Wir müssen die Dimension Infektionsschutz und die Dimension Auswirkungen desselben in ein Konzept zu kriegen. Ob es uns gefällt oder nicht, wir brauchen einen härteren Lockdown. Damit das funktioniert, brauchen wir Konzepte, wie dieser Lockdown erträglich wird. … so schreibt Josef Dietel. Aber wie geht das?

Josef schlägt Gruppenbildung und die Umsetzung des ZeroCovid-Konzeptes vor.

Der Kerngedanke ist folgender:

  • SARS-CoV2 hat eine Inkubationszeit von ein bis zwei Wochen. Die Ansteckungszeit liegt bei ein bis zwei Wochen. In Summe ist man i.d.R. nach der dritten Woche nach einem Risikokontakt nicht mehr ansteckend oder deutlich krank.
  • SARS-CoV2 verbreitet sich über engen Kontakt mit Austausch von Aerosolen aus den oberen Atemwegen. I.d.R. ist also eine Ansteckung nur möglich, wenn sich Leute treffen und einige Zeit zusammen verbringen.
  • Isoliert man also eine kleine Gruppe von Menschen über vier bis acht Wochen, so ist hinterher keiner mehr ansteckend, wenn es keine Krankheitsfälle gibt. Je größer die Gruppe umso länger dauert es, weil es interne Infektionswege geben kann.

ZeroCovid macht nun aus diesem Fakten ein Konzept:

  • Jede beliebige kleine Gruppe von (möglicherweise infizierten) Menschen kann durch eine kurze, harte Quarantäne frei von SARS-CoV2-Viren werden.
  • Größere Gruppen kann man durch mehrfache Tests aller Mitglieder als virenfrei überprüfen. Da die Krankheit einen zeitlichen Verlauf hat, genügt nicht ein einziger Test, sondern man muss alle Stadien der Virenentwicklung abdecken.
  • Hat man einen virenfreie Gruppe, so kann diese sich ohne ernsthafte Schutzmaßnahmen frei bewegen.
  • Tritt wieder ein Fall auf, so muss das Infektionsgeschehen vollständig nachvollzogen werden. Alle möglicherweise in Frage kommenden Kontakte müssen in Quarantäne und kommen nur durch mehrfache Tests wieder raus.
  • Gibt es auch nur den leisesten Zweifel an der Nachvollziehbarkeit der Infektion, so wird im Sinne der frühzeitigen Brandbekämpfung die gesamte mögliche Umgebung komplett getestet und geht solange in Quarantäne.
  • Gibt es keinen positiven Test im gesamten Gebiet, ist die Quarantäne aufgehoben.
  • Gibt es einen positiven Test, wird das Gebiet zurück gestuft und bleibt in Quarantäne und es gibt neue Massentests.

Quarantäne heißt dabei: Kein Verlassen der Wohnung, auch keine Einkäufe. Nur Homeoffice und Homeschooling. Arzt und Essen kommen bei Bedarf ins Haus.

Auf diese Weise bekommt man Städte und Dörfer virenfrei. Sie bekommen eine grünen Kennung und können zum normalen Leben zurück. Aus Vorsicht sind Kontakte in nicht-grünen Bereichen zu vermeiden und wenn überhaupt dann mit Rückkehrquarantäne versehen. Das setzt auch eine hohe Motivation für die Bewohner grüner Bereiche: Wer die Vorsichtsmaßnahmen verletzt, riskiert eine regionale Quarantäne und sogar eine Rückstufung des Gebiets, was mit Verlust der offenen Läden, Clubs, Sportstätten und Restaurants einher geht.

Das klingt hart? Ist es auch.

Das klingt unmöglich? Richtig, weil man nicht weiß, wo man anfangen soll.  Man kann ja nicht wie in China einfach virenfreie Menschen aus anderen Regionen ankarren, damit die das öffentliche Leben aufrecht erhalten.

Was also tun? Josef hat da eine Idee. Er schlägt vor, die Einheiten kleiner zu fassen.

Man kann sich freiwillig zu Gruppen zusammen finden, innerhalb derer man sich frei bewegen kann. Man darf keinen Kontakt zu anderen Menschen außerhalb seiner Gruppe haben. Alle Mitglieder einer Gruppe werden einheitlich behandelt und bekommen eine Einstufung von grün, gelb oder rot.

  • grün: Die Gruppe ist nachweislich virenfrei. Sie unterliegt keinen Einschränkungen.
  • gelb: Die Gruppe ist wahrscheinlich virenfrei. Infizierte Einzelfälle haben lückenlos aufgeklärte Infektionsketten, die sich in Quarantäne befinden. Mögliche Spreaderevents sind unzulässig.
  • rot: Die Gruppe ist teilweise durchseucht. Es ist unklar, welche Personen aktuell infiziert und infektiös sind. Die Gruppe ist auf das nötigste beschränkt.

Gruppen gleicher Einstufung können sich zusammen schließen oder trennen. Jede Person ist genau einer Gruppe zugeordnet. Die Zuordnung ist behördlich und im Umfeld der Gruppe bekannt. Dies ermöglicht eine Kontrolle der Gruppenzuordnung. Damit ist es möglich, zumindest innerhalb einer Gruppe, sich sinnvoll zu betätigen und Kontakte zu pflegen. Das macht es leichter.

Die Idee ist nun:

  • Das Gesundheitsamt nimmt die Umstufung einer Gruppe mit Hilfe von Tests und Gruppen-Quarantäne vor.
  • Einzelfallquarantäne wird nur in gelben Gruppen angeordnet. Nur hier erfolgte eine Kontaktnachverfolgung, diese dafür intensiv.
  • Bei Auftreten von neuen Fällen geht die gesamte betroffene Gruppe in die Stufe rot, bis das Gesundheitsamt die gesamte Gruppe komplett getestet hat.
  • Bereits nach wenigen Tagen das Gesundheitsamt die Gruppe aufteilen in eine gelbe (negative Tests) und eine rote Gruppe (positive Tests plus alle möglichen Kontaktpersonen)
  • Die gelbe Gruppe kann nach einem zweiten Massentest nach einer Woche in die Stufe grün zurück fallen.
  • Die rote Gruppe wird schrittweise verkleinert, wobei neue gelbe Kleingruppen entstehen.

Da sich grüne Gruppen zu immer größeren Einheiten zusammen schließen können, kann der Bewegungsfreiraum deutlich erweitert werden. Auch Reisen zwischen diesen Gruppen ist möglich (u.a. auch weltweit zu anderen Ländern mit ZeroCovid-Strategie), solange vor und nach der Reise ein Schnelltest vorgenommen wird.

Die Gruppen entscheiden selbst über ihr Verhalten. Es gibt also einen sozialen Druck, nicht negativ auszuscheren. Es gibt einen sichtbaren Ansporn, sich um eine bessere Gruppeneinstufung zu bemühen. Es gibt klare und überschaubare Intervalle in denen eine Statusänderung möglich ist.

Betriebe - die momentan am meisten unterschätzten Treiber der Pandemie - können Mitarbeiter verschiedener Gruppen im Schichtsystem ins Haus holen, oder selbst durch eigene betriebliche Maßnahmen für eine niedrigere Einstufung ihrer Mitarbeiter beitragen. Es gibt somit eine Motivation der Unternehmen, sich aktiv um besseren Arbeitnehmerschutz vor Ansteckungen zu kümmern.

Wie man erkennen kann, ist die Zeitschiene dieses Verfahrens ziemlich kurz, weil man auch initial kleine Gruppen binnen Monatsfrist auf einen grünen Status bekommt. Dies wäre auf größeren Einheiten, wie Landkreise, nicht möglich.

Menschen, die sich nicht an die Regeln halten wollen, landen in Gruppen mit Gleichgesinnten. Sie gefährden damit nicht länger die Entwicklung der anderen Gruppen mit denen sie aktuell noch zusammen erfasst werden.

Die aufzuwendenden Ressoucen wie Tests und Kontaktnachverfolgung werden wesentlich effektiver eingesetzt.

Und was ist mit Impfungen?

Auch heute wieder hört man in den Nachrichten von der Herdenimmunität durch Impfung. Das hat leider nur einen Haken, es grenzt aktuell an vorsätzliche Volksverdummung. Diese Unehrlichkeit können wir uns aber nicht leisten. Ich vermisse da auch eine klare Aussage von Politikern wie Karl Lauterbach.

Herdenimmunität entsteht, wenn so viele Leute gegen eine Krankheit immun sind, dass die Weiterverbreitung des Erregers zum erliegen kommt.

Das kann man ausrechnen, so braucht man im Mittel bei einer Reproduktionszahl von 3 (eine infizierte Person steckt drei andere an) einen Anteil von ca. 66% (1 -1/3) für eine Herdenimmunität. Sinkt die effektive Reproduktionszahl z.B. durch Vorsichtsmaßnahmen und Verhaltensänderungen auf beispielsweise 1,2 , so sinkt auch der benötigte Anteil der Immunen auf ca. 16% (1 - 1/1.2). Bekommt man durch eine Mutation eine höhere Ansteckungsrate (+0.6), so steigt der Anteil für die Herdenimmunität wieder auf 44% (1 - 1/1.8).

All das setzt voraus, dass eine durchgemachte Erkrankung oder eine Infektion, tatsächlich zu einer Reduktion der Weiterverbreitung führt. Und da liegt der Hase im Pfeffer.

Corona  hat die Hauptinfektionsphase während der Vermehrung im Nasen- und Rachenraum, wo  das Immunsystem nur schwer hin kommt. Zusätzlich tarnt sich das Virus in dieser Phase mit Zucker um die Spikeproteine, wird also von den Antikörpern nicht  erkannt.

Erst nach der Hochinfektionsphase geht es in den Körper so das  Immunsystem angreifen kann und die Impfung ihr Potential ausspielt. Nun kann das Immunsystem richtig (nicht überschießen und wild Zellen abtöten) und gezielt reagieren. Damit ist die Wahrscheinlichkeit für den schweren Verlauf deutlich gesenkt.

Diese "Infektion vor Symptomen" ist also bei Corona anders als bei anderen Krankheiten. Vermeintlich gesunde (und geimpfte) können die Krankheit weiterhin übertragen! Sie können die Ansteckung weiter verbreiten. Sie tragen also nicht zur Herdenimmunität bei.

Inwieweit eine Impfung zur Senkung der Virenlast und damit zur Verringerung der Infektionszahlen beitragen kann, ist die  offene Frage der aktuellen Forschung. Ich würde mich sehr freuen, wenn heraus kommt, dass es eine Schutzwirkung gibt, dass das trainierte Immunsystem in der Lage ist, die Vermehrung im Rachenraum zu unterbinden.

Leider fehlen dazu bislang die Studien. Und solange wir die nicht haben, müssen wir davon aus gehen, dass wir keine Herdenimmunität bekommen werden.

Noch ein Nachtrag zu wir können doch aufmachen, wenn die Risikogruppen durch Impfung geschützt sind. Nein, können wir nicht! Angenommen die Impfung senkt die schweren Verläufe um den Faktor 20 (was viel ist). Mit einer Reproduktionszahl von 3 nach Abschaffung der Maßnahmen, bekommen wir also jede Woche drei mal mehr Infzierte. Wie lange dauert es, bis wir trotz Impfung die alten Toteszahlen wieder haben? Genau: Wenn wir nach knapp drei Wochen die 27-fache Anzahl an Infzierten haben. Nur wächst es dann immer weiter ...

Update vom März 2021

Inzwischen gibt es Nachweise, dass die Impfstoffe auch die Virenlast senken und so die Infektiösität. Damit ist diese Befürchtung zu großen Teilen ausgeräumt.

Da immer wieder die Frage aufkommt, wie die Regeln denn nun im Detail zu interpretieren seien, was also gerade noch erlaubt ist...

Wer die Inzidenz hoch halten und den Lockdown verlängern will, macht folgendes:

Man trifft sich jede Stunde mit einer anderen Person eines anderen Haushalts, aber nie mit zweien gleichzeitig.

Man kann z.B. bei gemeinsamen Spaziergängen mit 3m Abstand gehen und sich höchstens Zweiergruppen bildend abwechselnd durch die Menge schlendern und so mit vielen ins Gespräch kommen.

Man kann sich zufällig beim Rodeln treffen. Man kann dazu auch in die schneesicheren Lagen fahren, am besten irgendwo hin, wo keine Skipisten ausgeschildert sind. Passende Plätze kann man in der Telegramm-Gruppe austauschen, damit man nicht allein ist.

Man kann im Freien den Mundschutz abnehmen, auch wenn es kalt ist, weil man ja auch dort, wo es vorgeschrieben ist, nicht kontrolliert wird.

Man kann sich zum gemeinsamen Grillen auf der Terrasse oder im Hof treffen und dort zusammen rauchen und grillen. Eine gemeinsame Bierflasche, die im Kreis geht, friert nicht so schnell zu. Bratwurst draußen - wer braucht da schon Mundschutz? Ist ja wie die Gastronomie im Sommer, völlig ungefährlich!
Apropos Mundschutz, genau, immer das Wort Mundschutz benutzen, denn dann braucht man es nicht über die Nase ziehen. Denn nur, wer einen Mund-Nasen-Schutz hat, muss den hochziehen, das sagt doch schon der Name!

Also raus an die frische Luft! Bewegung hat noch niemanden geschadet und auf Arbeit sitzt man eh zu fünft im Büro, zu zehnt im Meeting. Ungelüftet natürlich, die Haustechnik hat vernoten die Fenster aufzumachen, wenn die Heizung an ist. Wegen Klimawandel und so!

Und dann kann der Lockdown endlich bis Juli verlängert werden. Hauptsache er endet kurz vor der Mallorca Reise!

Auf geht's!

Pack mas!

Da die Frage nach einer Zukunft immer wieder gestellt wird, mal etwas Klartext zur Idee die Beschränkungen einfach fallen zu lassen, um die Wirtschaft zu retten.

Nein. Erstens, man kann ZeroCovid machen. Dazu müssen zuerst mal die Behörden und Betriebe zum Homeoffice gezwungen werden. Schulen und Co bleiben zu. Ende der Diskussionen. Ja, das ist politisch schwierig, vermutlich sogar politischer Selbstmord, aber es wäre es wert.

Zweitens, die aktuellen Maßnahmen zu lockern oder aufzugeben, bedeutet binnen Monatsfrist die Toten nicht mehr wegtragen zu können. Kann man machen.

Es bedeutet auch, zur Brutstätte vieler neuer Mutationen zu werden, insbesondere wenn parallel weiter halbherzig geimpft wird. Diese Mutationen werden gegen die Impfung immun sein. Neue Wirkstoffe dann vermutlich im Frühjahr 2022.

Es bedeutet auch, dass niemand mehr mit Deutschland handeln oder Tourismus erlauben wird. Wir würden weltweit isoliert da sich niemand diesem Seuchenherd mehr nähern will. In globaler Isolation mit einer verängstigter Bevölkerung zerstört sich die Wirtschaft selbst. Wir bekommen MadMax Verhältnisse.

Achja, diese Impfung bringt vermutlich gar keinen Beitrag zur Herdenimmunität, den Begriff sollten wir aus der politischen Debatte streichen. Sie taugt nach aktuellem Stand der Forschung nicht zur Einschränkung der Infektiösität. Sie taugt zur Verringerung der Sterblichkeit. Aber diese Verringerung ist linear mit der Impfquote, wird also vom exponentiellen Wachstum aufgefressen. Damit ist der Schutz der Risikogruppen eine Chimäre, es funktioniert nur zusätzlich, nicht stattdessen.

Weil es wieder Verwirrungen um WhatsApp und Messenger im Allgemeinen gibt. Es besteht die Angst, dass Fremde mitlesen könnten.

Generell hat die jeweilige App immer Zugriff auf die Keys. Ansonsten könnte man die Nachrichten weder lesen noch schreiben. Man muss dem App-Hersteller vertrauen, dass er die ausgelieferte Version ohne Hintertüren und ohne Übertragung an Dritte programmiert hat. Auch wenn man den Source Code einsehen kann, nützt das nichts, solange man nicht prüfen kann, ob die App auch daraus erzeugt wurde.

Bietet die App Komfortfunktionen, wie Webinterface, Backup, etc. so ist dort ebenfalls Schlüsselmanagement angesagt. I.d.R. kann dabei ein Dritter nicht mitlesen. Das gilt für alle Messenger, ob WhatsApp, Threema, Signal oder Telegram. Die Messenger unterscheiden sich im Komfort, so hat Signal mal auf direktem Kontakt (QR Scan, Codetausch) zwischen Teilnehmern bestanden, bevor man kommunizieren konnte.

Übrigens hat das Betriebssystem auch Zugriff auf die Keys, die Datenablage, die Kommunikationskanäle etc. pp

Mit der Änderung der Nutzungsbedingungen passieren zwei Dinge:

a) Facebook genehmigt sich Zugriff auf die Metadaten (Wer redet wann mit wem? Wo befindet sich der Nutzer derzeit? Welche Inhalte veröffentlicht er im Status?)

Das bedeutet, dass WhatsApp die Bewegungs- und Kontaktdaten, die sie bisher schon den Strafverfolgungsbehörden und den Gesundheitsämtern (in Taiwan, Südkorea, ...) zur Verfügung gestellt hat, nun auch an Facebook weiter geben kann. Im Gegenzug bekommt WhatsApp eine Facebook-Integration (die nur funktioniert, wenn man die eingerichtete Facebook App auf dem Handy hat)

b) ist der Satz "WhatApp Server haben keinen Zugriff auf die privaten Schlüssel" weggefallen.

Das bedeutet, dass ... ohja ... wir betreten das Reich der Spekulation ... der Satz wird als Canary interpretiert ... also es bedeutet, dass WhatApp gezwungen sein kann, die App dahingehend verändern zu müssen, dass Strafverfolgungsbehörden mitlesen können. Hier geht es hauptsächlich um die Bemühungen der EU Kommission.

Und natürlich betrifft das beides (Metadaten, Lawful Interception) auch alle anderen Messenger.

Das Modul ng_bridge erlaubt es, verschiedene Datenkanäle über die MAC Adressen zu separieren. Dies funktioniert nicht besonders gut, wenn an einer Stelle sehr große Netze mit sehr vielen Teilnehmern angeschlossen sind. Dort möchte man die MAC Adressen nicht lernen. Mit interessanten Konsequenzen.

Problem

Das netgraph Modul ng_bridge verbindet verschiedene Teile des Netgraph-Netzwerkes wie ein Switch in einem Serverraum. Die einzelnen Teile sollen dabei nur die Daten bekommen, die auch für sie gedacht sich. Leider hat das Modul ein paar Schwächen in der Praxis.

  • Zunächst mal konnte das Modul nur mit einer Handvoll Anschlüssen umgehen. Die Limitierung habe ich aufgehoben.
  • Dann lernt das Modul sämtliche MAC Adressen an allen Anschlüssen, was hier ein Problem ist. Auch dafür gibt es eine Lösung.
  • Das Modul behandelt sämtliche Multicast- und Broadcast-Frames gleich: Sie gehen an jeden Anschluss raus. Das ist ein Problem.
  • Aufgrund der inneren Architektur ist das Modul nur single-threaded, was einen begrenzten Datendurchsatz mit sich bringt. Das ist ein weiteres Problem.

Sobald man an einigen Anschlüssen schwachbrüstige Leitungen hängt, treten Überlastungsprobleme auf. Traffic, der dort hin geschickt wird, sollte weitestgehends auch dort hingehen sollen. Traffic, der dort nichts zu suchen hat, sollte gar nicht erst in diese Richtung geschoben werden.

Mit der Einführung von uplink-Ports verringert sich massiv der interne Verwaltungsaufwand. Die MAC-Adressen in Richtung des Uplinks müssen nicht mehr gelernt werden. Und das hat Konsequenzen: Was passiert mit Frames, die an den Uplink geschickt werden müssen?

Eigentlich ist das ganz einfach, denn das Modul kennt die Ziel-MAC ja nicht, schickt es also an alle Links raus, auch an den Uplink. Damit ist der Frame dort, wo er hin soll. Allerdings landet er auch dort, wo er nicht hin soll: Alle anderen Teilnehmer an der Bridge bekommen den kompletten Uplink-Traffic aller ihrer Nachbar zu sehen.

Test

Also teste ich das mal aus. Zunächst wird eine bridge eingerichtet, die drei Downlinks (link1, link2, link3) und zwei Uplinks (uplink1 und uplink2) hat, die alle an virtuellen Ethernet-Interfaces hängen.

ngctl -f- <<END
mkpeer bridge x link10
mkpeer x eiface uplink1 ether
mkpeer x eiface link1 ether
mkpeer x eiface link2 ether
mkpeer x eiface link3 ether
mkpeer x eiface uplink2 ether
END

link10 ist nur temporär zur Erzeugung des gesamten Konstrukts vorhanden, er geht automatisch weg, wenn das Tool ngctl sich beendet

Alle Interfaces werden mit unterschiedlichen MAC Adressen bestückt.

ifconfig ngeth0 ether 00:00:00:00:00:01
ifconfig ngeth1 ether 00:00:00:00:01:01
ifconfig ngeth3 ether 00:00:00:00:02:01
ifconfig ngeth2 ether 00:00:00:00:02:01
ifconfig ngeth3 ether 00:00:00:00:03:01
ifconfig ngeth4 ether 00:00:00:00:04:01

Und dann wird der komplette Datenverkehr mit geschnitten.

tcpdump -eni ngeth0 > bridge.e0 &
tcpdump -eni ngeth1 > bridge.e1 &
tcpdump -eni ngeth2 > bridge.e2 &
tcpdump -eni ngeth3 > bridge.e3 &
tcpdump -eni ngeth4 > bridge.e4 & 

Um nicht jedes Interface in separate Routing-Umgebungen werfen zu müssen, nehme ich einfach für alle Interfaces unterschiedliche IP-Netze. Damit weiß der Kernel, welches Interface ich benutzen möchte.

ifconfig ngeth0 inet 192.168.0.10/24
ifconfig ngeth1 inet 192.168.1.11/24
ifconfig ngeth2 inet 192.168.2.12/24
ifconfig ngeth3 inet 192.168.3.13/24
ifconfig ngeth4 inet 192.168.4.14/24

Und dann muss der Kernel noch wissen, welche MAC Adresse er von welchem Interface aus ansprechen soll. Das erfolgt mit Hilfe von statischen ARP-Einträgen.

arp -s 192.168.0.11 00:00:00:00:01:01
arp -s 192.168.0.12 00:00:00:00:02:01
arp -s 192.168.0.13 00:00:00:00:03:01
arp -s 192.168.0.14 00:00:00:00:04:01
arp -s 192.168.0.20 00:00:00:00:20:00
arp -s 192.168.1.10 00:00:00:00:00:01
arp -s 192.168.1.12 00:00:00:00:02:01
arp -s 192.168.1.13 00:00:00:00:03:01
arp -s 192.168.1.14 00:00:00:00:04:01
arp -s 192.168.1.20 00:00:00:00:20:01
arp -s 192.168.2.10 00:00:00:00:00:01
arp -s 192.168.2.11 00:00:00:00:01:01
arp -s 192.168.2.13 00:00:00:00:03:01
arp -s 192.168.2.14 00:00:00:00:04:01
arp -s 192.168.2.20 00:00:00:00:20:02
arp -s 192.168.3.10 00:00:00:00:00:01
arp -s 192.168.3.11 00:00:00:00:01:01
arp -s 192.168.3.12 00:00:00:00:02:01
arp -s 192.168.3.14 00:00:00:00:04:01
arp -s 192.168.3.20 00:00:00:00:20:03
arp -s 192.168.4.10 00:00:00:00:00:01
arp -s 192.168.4.11 00:00:00:00:01:01
arp -s 192.168.4.12 00:00:00:00:02:01
arp -s 192.168.4.13 00:00:00:00:03:01
arp -s 192.168.4.20 00:00:00:00:20:03

Wie man erkennen kann sind hier mit den 20-er Adressen auch Einträge dabei, deren MACs dem System unbekannt sind. Spreche ich dagegen eine IP an, für die kein statischer ARP Eintrag vor liegt, wird es einen ARP-Broadcast geben. Damit sind alle Fälle abgedeckt.

Und dann kommen die Tests pro Interface:

ping -c 3 -W 1 192.168.0.10
ping -c 3 -W 1 192.168.0.11
ping -c 3 -W 1 192.168.0.12
ping -c 3 -W 1 192.168.0.13
ping -c 3 -W 1 192.168.0.14
ping -c 3 -W 1 192.168.0.20
ping -c 3 -W 1 192.168.0.21
ping -c 3 -W 1 192.168.1.10
ping -c 3 -W 1 192.168.1.11
ping -c 3 -W 1 192.168.1.12
ping -c 3 -W 1 192.168.1.13
ping -c 3 -W 1 192.168.1.14
ping -c 3 -W 1 192.168.1.20
ping -c 3 -W 1 192.168.1.21
ping -c 3 -W 1 192.168.2.10
ping -c 3 -W 1 192.168.2.11
ping -c 3 -W 1 192.168.2.12
ping -c 3 -W 1 192.168.2.13
ping -c 3 -W 1 192.168.2.14
ping -c 3 -W 1 192.168.2.20
ping -c 3 -W 1 192.168.2.21
ping -c 3 -W 1 192.168.3.10
ping -c 3 -W 1 192.168.3.11
ping -c 3 -W 1 192.168.3.12
ping -c 3 -W 1 192.168.3.13
ping -c 3 -W 1 192.168.3.14
ping -c 3 -W 1 192.168.3.20
ping -c 3 -W 1 192.168.3.21
ping -c 3 -W 1 192.168.4.10
ping -c 3 -W 1 192.168.4.11
ping -c 3 -W 1 192.168.4.12
ping -c 3 -W 1 192.168.4.13
ping -c 3 -W 1 192.168.4.14
ping -c 3 -W 1 192.168.4.20
ping -c 3 -W 1 192.168.4.21

Nachdem die Tests durch sind, kann das Testbed weg geworfen werden. Dazu genügt es, die virtuellen Ethernet-Interfaces abzuschalten. Ohne Verbindungen nach außen löscht sich die Bridge von allein.

ngctl shutdown ngeth0:
ngctl shutdown ngeth1:
ngctl shutdown ngeth2:
ngctl shutdown ngeth3:
ngctl shutdown ngeth4:

Mit dem Verschwinden der Interfaces beenden sich auch die Sniffer und schreiben die letzten empfangen Daten noch ins Logfile.

Was kommt dabei raus? Hier ein kleiner Blick in das Logfile von ngeth0:

12:35:07.109300 00:00:00:00:00:01 > 00:00:00:00:01:01, ethertype IPv4 (0x0800), length 98: 192.168.0.10 > 192.168.0.11: ICMP echo request, id 7173, seq 0, length 64
12:35:08.176378 00:00:00:00:00:01 > 00:00:00:00:01:01, ethertype IPv4 (0x0800), length 98: 192.168.0.10 > 192.168.0.11: ICMP echo request, id 7173, seq 1, length 64
12:35:09.197277 00:00:00:00:00:01 > 00:00:00:00:01:01, ethertype IPv4 (0x0800), length 98: 192.168.0.10 > 192.168.0.11: ICMP echo request, id 7173, seq 2, length 64 

Zu sehen sind die ersten drei Pings von 192.168.0.10 an 192.168.0.11. Man erkennt die MAC Adressen aus den statischen ARP Einträgen und natürlich kommt keine Antwort zurück, weil die IP ja absichtlich auf dem Zielinterface nicht konfiguriert wurde.

Im Logfile von ngeth1 finden sich die Gegenstücke:

12:35:07.109336 00:00:00:00:00:01 > 00:00:00:00:01:01, ethertype IPv4 (0x0800), length 98: 192.168.0.10 > 192.168.0.11: ICMP echo request, id 7173, seq 0, length 64
12:35:08.176528 00:00:00:00:00:01 > 00:00:00:00:01:01, ethertype IPv4 (0x0800), length 98: 192.168.0.10 > 192.168.0.11: ICMP echo request, id 7173, seq 1, length 64
12:35:09.197342 00:00:00:00:00:01 > 00:00:00:00:01:01, ethertype IPv4 (0x0800), length 98: 192.168.0.10 > 192.168.0.11: ICMP echo request, id 7173, seq 2, length 64

aber auch die Broadcasts kommen hier an

12:35:23.132078 00:00:00:00:00:01 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: Request who-has 192.168.0.21 tell 192.168.0.10, length 28
12:35:24.196809 00:00:00:00:00:01 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: Request who-has 192.168.0.21 tell 192.168.0.10, length 28
12:35:25.268910 00:00:00:00:00:01 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: Request who-has 192.168.0.21 tell 192.168.0.10, length 28

Auswertung

Alle Logfiles einzeln durch zu gehen, ist viel zu anstrengend, deswegen gibt es eine Kreuztabelle für jeden Test.

bridge classic 10

Die Tabelle enthält oben links die Quell-IP, in den Spalten die Ziel-IPs und in den Zeilen die Messtelle am jeweiligen Interface. Blau hinterlegt sind die Felder, die in jedem Fall erwartungskonform sind. Entweder wurden die Pakete dort versendet oder sollen dort ankommen.

Es zeigt in der ersten Zeile, dass von Interface mit der IP ...10 (ngeth0) Pakete an 11, 12, 13, 14 sowie an unbekannt (20) und broadcast (21) geschickt und gesehen werden. Pakete an sich selbst sieht das Interface nicht, denn das handelt der Kernel intern ab.

In der zweiten Zeile finden sich Pakete, die von der IP ...10 ausgehen und am Interface ngeth1 (also mit der IP ...11) gesehen werden. Das sind zunächst mal das Paket an das Interface selbst (korrekterweise), die Pakete an die anderen Ziele (12 und 13) sind nicht zu sehen, weil die Bridge die Ziel-MACs kennt. Das Paket an die 14 (einem weiteren Uplink) kennt Bridge ebensowenig wie die unbekannte MAC (20). Bei der 21 gibt es einen Broadcast, der ebenso zu sehen ist.

bridge classic 11

Bei den Paketen von den normalen Links wird es nun bunt.

Gelb hinterlegt sind hier diskussionswürdige Felder, beispielsweise die vom Downlink in Richtung Uplink gehen sollten. Da kein MAC Learning am Uplink stattfindet kann die Bridge nicht wissen, welche Pakete an welchen Uplink raus gehen sollen. Das gilt insbesondere für komplett unbekannte MACs, die ja auch in Richtung des Downlinks liegen könnten, aber noch nicht gelernt wurden.

Rot hinterlegt sind Fälle, die man eigentlich gar nicht haben möchte. Pakete, die vom Downlink in Richtung Uplink gehen, sollen nicht zu anderen Downlinks wieder raus gehen.

In gleicher Weise findet sich das Spiel auch für die anderen Quell-IPs darstellen:

bridge classic 12
bridge classic 13
bridge classic 14

Offenbar ist die Behandlung der unbekannten MACs ein ernsthaftes Problem.

Änderungen

Dank OpenSource ist eine Änderung möglich: Wenn das erste Interface, das an die Bridge gebunden wird, ein uplink-Interface ist, schaltet die Bridge in einen Restrictive Mode. Hier werden die unbekannten MACs nicht mehr an die Downlinks weiter gegeben.

Das Verhalten ist nicht unproblematisch, denn nun können Geräte am Downlink nicht mehr erreicht werden, wenn deren MAC längere Zeit nicht zu sehen war. Das kann besonders bei pausierenden Geräten zu einem Problem werden. Die MAC-Haltezeit sollte also in jedem Fall größer sein als die ARP-Timeouts. So sollten die die MAC-Tabellen ausreichend oft aktualisiert werden.

Alles was sich am Testbed nun ändert, ist der Anfang:

ngctl -f- <<END
mkpeer bridge x uplink10
mkpeer x eiface uplink1 ether
mkpeer x eiface link1 ether
mkpeer x eiface link2 ether
mkpeer x eiface link3 ether
mkpeer x eiface uplink2 ether
END 

Aus link10 wird uplink10. Das ist alles. Aber die Wirkung ist verblüffend:

bridge restrict 11

Alle gelben und roten Felder für die Quelle 11 sind weg. Es werden in Richtung des Downlinks nur noch entweder die bekannten MACs oder die Broadcasts geschickt. Das reduziert den Traffic erheblich.

Hier die Zusammenstellung aller Ergebnisse im restrictive Mode:

bridge restrict 10
bridge restrict 11
bridge restrict 12
bridge restrict 13
bridge restrict 14

Bis auf die Uplinks bekommt kein Link mehr Frames mit unbekannter Ziel-MAC.

Ein weiteres Teilziel geschafft.