Howto Oscam cacheex

Aus Zebradem WIKI
Zur Navigation springenZur Suche springen

Das Board mit Freiheiten




Dieses TUT soll helfen, die Angst bzw. die "Erst-mal-abwarten-Haltung" vor cacheex zu verlieren, Grundwissen zu vermitteln und damit all zu animieren, untereinander den Cache zu tauschen. Cacheex ist seit den 64xx-er Versionen ausgereift und weitgehend fehlerfrei.Cache Man kann sollte Cacheex in einer getrennten Instanz betreiben.Cache In der Vergangenheit hatten DVBapi-Clienten bei einem direkten cache3-Hit einen Freezer, CCcam-Clienten (als prio-Clienten) auch. Ob das im Moment noch so ist, kann ich nicht sagen, vielleicht weiß das jemand und ergänzt mein Howto.

Cacheex dient dazu, den Cache, also den Speicher unserer OScam, untereinander auszutauschen. Auf diese Weise kann die Karte entlastet werden.

Cacheex ist derzeit nur über zwei Protokolle machbar: camd3 (TCP als cs378x und UDP als camd35) und cccam-ext (extented CCcam Protokoll). Bei der Wahl des Protokolls ist auf die Down- und Upload-Begrenzung (nicht verwechseln mit der Geschwindigkeit!) des eigenen Internetanschlusses zu achten. Cacheex kann viel Traffic erzeugen. TCP-Protokolle (CCcam und cs378x) erfordern vom Empfänger des Datenpaketes eine Rückmeldung, ob das Paket korrekt angekommen ist, UDP-basierende (camd35) nicht. Wird ein TCP-Protokoll verwendet und die Upload-Grenze überschritten, sendet OScam immer weiter Pakete, es kommt aber keine Rückmeldung, weil die Pakete ja noch in der Netzwerkkarte oder im Router hängen. In so einem Fall wird sich der Router, der Computer (wenn andere Internetanwendungen laufen), oder im besten Fall nur unsere OScam "aufhängen". Cacheex kann speicherhungrig und ressourcenfressend sein. Der Einsatz von cacheex2 oder 3 auf einer Dreambox muss wohlüberlegt sein, ratsam ist zumindest ein Thin-Client mit min 1 GB RAM und ca. 1,5 GHz, hängt aber stark von der Anzahl cacheex-peers ab.

Beim Einsatz von Cacheex ist unbedingt auf eine effiziente Gruppeneinteilung zu achten.Cache-peers User und Reader sind bei CE 2 oder 3 durch verschiedene Gruppen strikt zu trennen! Sollte ein Partner Fake-CW`s (durch Anticascading) an uns senden oder von einem schlecht konfigurierten CSP längst abgelaufene ECM-CW erhalten, können diese Bad-CW über cacheex in Windeseile verbreitet werden und zu Freezern führen, so dass am Ende keiner weiß, woher sie kamen. Deshalb immer User in eine Gruppe, Reader in eine andere. Ein Beispiel zur optimalen Gruppeneinteilung kommt nach der Erklärung der einzelnen Cache-ex-Modi.

Haben wir uns für cacheex entschieden, müssen vorab in der Oscam.conf noch ein paar Einträge ergänzt werden:

  • cacheexwaittime = 1500 #nur relevant für CE Mode 1
  • cacheexenablestats = 0 #Zeigt die Statistik an -- Speicherverbrauch beachten!
  • max_cache_time = 5 #wie lange bleibt ein ECM in unserem Cache
  • max_cache_count = 8000 wieviel ECM können wir speichern


Der Abschnitt CSP ist für cacheex nicht notwendig, wird trotzdem im Nachhinein erläutert. Die Datei oscam.cacheex ist nur für CE-Mode 1 relevant und wird in diesem Abschnitt erklärt.
Cacheex, kurz CE gibt es als Mode1, 2 und 3.

CE-Mode 1:

  • CE1 ist im Grunde fast wie ein normaler proxie. In OScam A wird ein Reader (CCcam-ext oder camd3) zu OScam B angelegt und in diesen Reader cacheex = 1 eingetragen. In OScam B wird ein User angelegt und in diesen User ebenfalls cacheex = 1 eingetragen. Das wars. Ab jetzt geht jede Anfrage, wirklich jede Anfrage zuerst an den CE1-Reader.
  • Dann wird die Zeit auf ein ECM-CW gewartet, die wir in cacheexwaittime eingetragen haben. Kommt in dieser Zeit kein ECM-CW, greifen unsere anderen Einstellungen (Fallbacktime, Loadbalancer, etc.).
  • In OScam B wird geschaut, ob das ECM-CW im Cache liegt. Wenn ja, wird das ECM-CW zu OScam A gesendet, wenn nein, kommt ein rejected. Es wird also keine Abfrage an proxies oder Karten generiert.
  • Zusätzlich kann OScam B auch einen CE1-Reader (oder auch CE2 oder 3) zu OScam A anlegen, muss aber nicht. Zusätzliche Einstellungen wie Services oder Einträge unter caid können optional erfolgen.
  • In der Datei oscam.cacheex im Hauptverzeichnis unserer OScam können global weitere Einstellungen vorgenommen werden, wie ECM-Länge pro caid, nur bestimmte SID, Provider etc. Diese Datei ist nicht notwendig, einfache Einstellungen können ebenso gut im Reader selbst vorgenommen werden (Services, ecm-länge und caid).

CE-Mode 2:

Ein CE2-Reader ist ein normaler proxie kombiniert mit zusätzlicher Cache-Push-Funktion. Vom Partner wird über den Reader cache "geholt" (der Partner pusht seinen Speicher zu uns) und wir können zusätzlich normale Anfragen an den Partner stellen, die dieser dann über seine Karte oder andere proxies beantwortet.

  • In OScam A wird ein Reader (CCcam-ext oder camd3) zu OScam B angelegt und in diesen Reader
cacheex = 2 

eingetragen.

  • In OScam B wird ein User angelegt und in diesen User ebenfalls
cacheex = 2 

eingetragen.

  • Das wars. Zusätzliche Einstellungen wie Services oder Einträge unter caid können optional erfolgen.

CE-Mode 3:

Ein CE3-Reader ist push-only. Es gehen keine normalen Anfragen an den Partner, es wird nur der eigene Cache zum Partner gepusht.

  • Achtung, die Richtung ist hier entgegengesetzt, der Reader holt nicht, sondern gibt wie ein User, deshalb auch "reverse push".
  • In OScam A wird ein Reader (CCcam-ext oder camd3) zu OScam B angelegt und in diesen Reader
cacheex = 3 

eingetragen.

  • In OScam B wird ein User angelegt und in diesen User ebenfalls
cacheex = 3 

eingetragen.

  • Das wars. Zusätzliche Einstellungen wie Services oder Einträge unter caid können optional erfolgen.
  • Ist alles eingerichtet und alle Reader 7 User verbunden, sehen wir unter cacheex, wie viel ECM-CW wir vom Partner erhalten haben und wie viel wir gepusht haben. Es kommt nicht darauf an, möglichst viel zu pushen, sondern freezfrei zu pushen, also ohne Fake-CW`s und ohne Bad-CW`s. Jemand, der freezt, den schaltet man ab, jemand der nur wenig geben kann, der hat halt einen kleinen Share, ist dafür aber freezfrei.

in der oscam.conf gibt es noch einen Abschnitt CSP:

Zur Zeit kann OScam von einem CSP Cache erhalten, nicht senden, sondern nur bekommen. Dazu braucht es keinen User und auch kein Passwort, nur den Port. Seid also vorsichtig, wem alles Ihr den Port bekannt gebt.

Ist im Abschnitt CSP ein Eintrag bei wait_time vorhanden, wird jede Anfrage unserer User um diesen Wert gewartet, bis evtl. ein CSP das angeforderte ECM-CW zu uns pusht, danach geht die Anfrage an unsere CE1-Reader, sofern vorhanden, dann wird die cacheexwaittime gewartet, ob eine Antwort kommt und erst danach gehen die Anfragen an die proxies / Karten. So kommen schnell einige Sekunden zusammen. Es ist also ratsam, pro CSP eine eigene Oscam-Instanz zu starten und jede CSP-Oscam-Instanz den Inhalt per CE3 in unsere Haupt-(CE)-OScam in eine extra Gruppe zu pushen.


Abschließend noch ein Beispiel zur Gruppeneinteilung:

  • Unsere lokale Karte 1 ist in Gruppe 1, Karte 2 in Gruppe 2, Camd3-Keys für ORF in Gruppe 3, alle proxies in Gruppe 4, CE1-Reader in Gruppe 5, CE2-Reader in Gruppe 11.
  • Die CE3-User kommen ebenfalls in Gruppe 11 (sind ja im eigentlichen Sinn auch Reader).
  • Alle normalen User sollten jetzt die Berechtigung für die Gruppen 1,2,3,4,5 und 11 bekommen.
  • Unsere CE3-Reader bekommen die Gruppen 1,2,3 und 4, sonst keine.
  • So wird sichergestellt, dass nur der Inhalt unserer eigenen OScam weiter gepusht wird, und der ist "astrein".
  • Stellen wir fest, dass ein Partner uns mit gepushten Fake-CW`s oder Bad-CW`s ärgert, packen wir ihn einfach in eine leere Gruppe, so merkt er es noch nicht mal, unser Share bleibt sauber und wir können Ihn in Ruhe testen und anschreiben.

Kurzerklärung:

Gruppenaufteilung:


Ihr könnt mittlerweile alle Cache ex-User in einer Gruppe legen. Eure normalen Reader / Karten sollten in einer getrennten Gruppe sein, damit ihr auch gezielt diesen Cache versenden könnt.

Beispiel:

Gruppe 1 - lokale Karten
Gruppe 2 - Proxy Reader
Gruppe 3 - Cacheex User

Also tragt ihr bei dem User, den ihr erstellt Gruppe 3 ein und bei dem Reader Gruppe 1,2.

Ihr schickt euren Cache mit dem Reader und empfangt mit dem User!

Das bedeutet also - jemand gibt euch eine Line, damit ihr ihm Cache schicken könnt und ihr tragt einen User bei euch ein, damit er (mit einem Reader von sich) seinen Cache schicken kann.


Hier die Beispielconfigs.


Beispiel 1 - mit aktivem Loadbalance Dies ist z. B. geeignet für Leute, die alles in einer Instanz haben.

Oscam.config

[global]
disablelog                    = 1
logfile                      = /tmp/oscam.log
usrfileflag                  = 1
clienttimeout                = 4000
fallbacktimeout              = 2000
clientmaxidle                = 200
bindwait                      = 40
nice                          = 0
serialreadertimeout          = 1900
maxlogsize                    = 8096
waitforcards                  = 0
preferlocalcards              = 1
readerrestartseconds          = 3600
dropdups                      = 1
block_same_ip                = 0
block_same_name              = 0
cwlogdir                      = /var/log/oscam/CW.log
emmlogdir                    = /var/log/oscam/EMM.log
lb_mode                      = 1
lb_save                      = 5000
lb_nfb_readers                = 2
lb_max_ecmcount              = 4000
lb_retrylimit                = 2400
lb_stat_cleanup              = 12
lb_max_readers                = 10
lb_auto_betatunnel            = 0
lb_savepath                  = /tmp/stat
lb_retrylimits                = 09:350
failbantime                  = 1440
[cache]
delay                        = 10 #dieser eintrag brachte bei einigen usern eine verbesserung
max_time                      = 10
max_count                    = 5000
wait_time  = 1702:950,1843:550,1830:550 #diese werte sind nur zu setzen, wenn ihr  auf der instanz auch normale User (mode 0) habt.
cwcycle_check_caid = 1702,1830 #diese werte sind nur zu setzen, wenn ihr auf der instanz auch normale user (mode 0) habt.
cwcycle_maxlist              = 4000
cwcycle_keeptime              = 15
cwcycle_onbad                = 1
cwcycle_sensitive            = 4

Beispiel 2 - ohne Loadbalance Dies ist z. B. geeignet für Leute, die mehrere Instanzen nutzen.

Oscam.config


[global]
disablelog                    = 1
logfile                      = /tmp/oscam.log
usrfileflag                  = 1
clienttimeout                = 3000
fallbacktimeout              = 2000
clientmaxidle                = 200
bindwait                      = 40
nice                          = 0
serialreadertimeout          = 1900
maxlogsize                    = 8096
waitforcards                  = 0
preferlocalcards              = 1
readerrestartseconds          = 3600
dropdups                      = 1
cacheexwaittime              = 0
block_same_ip                = 0
block_same_name              = 0
cwlogdir                      = /var/log/oscam/CW.log
emmlogdir                    = /var/log/oscam/EMM.log
lb_mode                      = 0
failbantime                  = 1440
[cache]
delay = 10
max_time = 10
max_count = 5000
wait_time  = 1702:950,1843:550,1830:550 #diese werte sind nur zu setzen, wenn ihr  auf der instanz auch normale user (mode 0) habt.
cwcycle_check_caid = 1702,1830 #diese werte sind nur zu setzen, wenn ihr auf der instanz auch normale user (mode 0) habt.
cwcycle_maxlist              = 4000
cwcycle_keeptime              = 15
cwcycle_onbad                = 1
cwcycle_sensitive            = 4

oscam.server


Code:

[reader]
label                        = name_frei_aussuchen
protocol                      = camd35
device                        = beispiel.dns.com,14500
user                          = beispiel_user
password                      = beispiel_pass
inactivitytimeout            = 0
cacheex                      = 3
reconnecttimeout              = 1800
#der reconnecttimeout ist wichtig, damit ihr euch nicht 100 mal verbindet.
cacheex                      = 3
cacheex_maxhop                = 2
group                        = 1,2
dropbadcws                    = 1
audisabled                    = 1

oder

[reader]
label                        = name_frei_aussuchen
protocol                      = cccam
device                        = beispiel.dns.com,14501
user                          = beispiel_user
password                      = beispiel_pass
cacheex                      = 3
cacheex_maxhop                = 2
group                        = 1,2
dropbadcws                    = 1
cccversion                    = 2.3.0
cccmaxhops                    = 0
ccckeepalive                  = 1
cccreconnect                  = 7000
audisabled                    = 1

oscam.user

[account]
user                          = user_cache
pwd                          = user_pass
uniq                          = 3
group                        = 3
cacheex                      = 3
cacheex_maxhop                = 2
#sprecht mit eurem share partner, wieviele instanzen er nutzt - bei 2 instanzen muss da eine 2 hin
cccmaxhops                    = -1
#dies dient zum verbergen eurer lokalen karten - euer Partner kriegt nur needinit angezeigt, erhält aber euren vollen Cache



[ Zurück zu Hauptseite ]
[ Zurück zu OScam ]