Google Cloud Messaging unzuverlässig?!

Stelle deine Frage öffentlich an die Threema-Forum-Community - über 3.000 Mitglieder helfen dir weiter. Los gehts!
Unterstützung von offizieller Seite erhältst du direkt bei Threema: Zum offiziellen Threema-Support
  • Bin gerade über folgenden Blogbeitrag gestolptert:



    https://whispersystems.org/blog/goodbye-encrypted-sms/


    Abgesehen davon dass es schade ist, verschlüsselte SMS zu verlieren, ist der Kern folgende Aussage:



    On Android, TextSecure currently uses Google Cloud Messaging (GCM) as the transport for message delivery over the data channel. Using GCM allowed us to build a completely read-only message delivery path through the server, which has been really great for TextSecure server scalability.

    Unfortunately, GCM has proven periodically unreliable in some regions and network conditions. This has slowly gotten worse over time, and Google doesn’t seem intent on remedying it. As a result, in conjunction with removing support for encrypted SMS/MMS, we’ll simultaneously move to a model of handling message delivery ourselves – relying on GCM only for a wakeup event. This should finally eliminate any periodic reliability issues.


    Ich habe zwar realtiv gute Erfahrungen mit GCM gemacht, aber es ist und bleibt anfällig und meiner Meinung nach auch unsicher! (Metadaten!)


    Um es kurz zu machen: Ich denke Threema sollte mittelfristig ebenfalls diesen Weg gehen. Vielleicht kann man sogar das nutzen was Textsecure (Moxie Marlinspike) da entwickelt. Der weiß schon was er tut, also wieso das Rad neu erfinden? Eventuell in einer Übergangsphase diese Benachrichtigungsmethode als experimentell optional zuschaltbar/umschaltbar machen!?
    So wie jetzt der Push Fixer.


    Was haltet ihr davon?

  • Ja, genau darum geht es! Die Benachrichtigung dass eine neue Nachricht abzuholen ist, ist bereits problematisch (Metadaten) UND vor allem die Zuverlässigkeit.
    Die Foren und Google Play Store Bewertungen sind voll davon.
    Es hat nie jemand behauptet Threema würde Nachrichten per GCM ausliefern. Ich bezweifle das Textsecure es so macht. Es geht lediglich um die Benachrichtigung!
    http://support.whispersystems.…se-textsecure-on-android-
    :exclamation:

  • Wenn dir das zu riskant ist, stellst du einfach das Pushen über GCM aus und lässt sie alle 15min abrufen, damit hast du eine direkt verbindung zum Threemaserver.

    Alt Gerät: LG Google Nexus 4 16GB OS: Android 5.1.1 Root Kernel: Stock Recovery: TWRP
    Neu Gerät: bq Aquaris M5 32GB/3GB OS: Android 5 Kernel: Stock Recovery: Stock


    Threema-Version: 2.51 (241)

  • Seufz. Es geht hauptsächlich um die mangelnde Zuverlässigkeit des GCM und darum dass diese Unzuverlässigkeit so berühmt berüchtigt ist, das Textsecure eine eigene Lösung hierfür entwickelt. Meine Frage/Wunsch war das Threema diesen Weg ebenfalls geht, da die GCM Unzuverlässigkeit Threema genau so plagt wie Textsecure. Mein weiterer Vorschlag war zu warten was Textsecure da entwickelt und da dies dann frei verfügbar ist (GPL 3), ebenfalls einzusetzen...
    Netter Nebeneffekt ist eine Erhöhung der Datensicherheit.
    :-/

  • Da du anscheinend nicht bereit bist zu lesen was du schreibst erkläre ich dir kurz was in dem Blogeintrag steht:


    1. Textsecure überträgt aktuell ganze Nachrichten über GCM.


    2. Das möchten sie in Zukunft ändern und wie in Threema nur die information über eine neue Nachricht über GCM übermitteln.


    3. Es steht nirgends dass textsecure auf GCM verzichten möchte.

  • Aber das GCM generell unzuverlässig ist, merkt man u.A. an den Kommentaren im PlayStore, dass man nicht über eingehende Nachrichten informiert wird, oder erst verspätet bzw. beim öffnen der App.


    Zitat


    In some situations, users who are fully connected to the Internet may not receive push notifications in real time, for one major reason.


    Zitat


    To make sure that the connection remains active, Android will send a heartbeat every 28 minutes on mobile connection and every 15 minutes on WiFi.


    Ob die Zeiten momentan immer noch so sind, weiß ich nicht, aber es bestätigt das Bild von zu späten Benachrichtigungen. Denn: wird die Verbindung zum GCM-Server unterbrochen (kein Netz, Router trennt Verbindung, ...) wird diese erst nach 28/15 Minuten wiederhergestellt.


    Viele User schreiben, dass es bei WhatsApp keine derartigen Probleme gibt. Der Grund ist einfach: man nutzt kein GCM und baut sich seinen eigenen Push-Service basierent auf dem XMPP-Protokoll.


    Zitat


    WhatsApp uses a customized version of the open standard Extensible Messaging and Presence Protocol (XMPP).


    Für Threema wäre der Schritt weg von GCM vielleicht auch die bessere/zuverlässigere Lösung, da sie ja für zu spät ankommende Nachrichten schlechte Bewertungen bekommen, obwohl der Fehler ja woanders liegt.


    Wobei es eigentlich nicht im Sinne des Erfinders (Google) sein kann, dass jede App sich seinen eigenen Pushdienst bastelt und somit potentiell den Akkuverbrauch erhöht, was ja durch GCM eigentlich vermieden werden sollte, da alle Apps dann nur einen gemeinsamen Dienst nutzen...


    Vielleicht kann man (Threema) ja alle 5 Minuten ein Lebenszeichen an die Google-Server schicken um die Verbindung aufrecht zu erhalten.



    Mysterion
    [hr]
    Quellen:


  • Naja die Polling-Funktion schaut ja schon alle 15min auf dem Server nach, ob was neues eingetroffen ist. Vorausgesetzt man hat diese aktiviert :)


    ______________________________________________________________________________________________
    "Wir kaufen Dinge, die wir nicht brauchen, mit Geld, das wir nicht haben um Leute zu imponieren, die wir nicht mögen“

    Einmal editiert, zuletzt von Buddabread ()


  • Ob die Zeiten momentan immer noch so sind, weiß ich nicht, aber es bestätigt das Bild von zu späten Benachrichtigungen. Denn: wird die Verbindung zum GCM-Server unterbrochen (kein Netz, Router trennt Verbindung, ...) wird diese erst nach 28/15 Minuten wiederhergestellt.


    Und wie soll der Push Dienst das bemerken ohne das Intervall zu verkürzen?


    Im mir sicher, dass nach einer Unterbrechung der Mobilfunkverbindung sofort die Verbindung wieder hergestellt wird und nicht erst zum nächsten Intervall.



    Viele User schreiben, dass es bei WhatsApp keine derartigen Probleme gibt. Der Grund ist einfach: man nutzt kein GCM und baut sich seinen eigenen Push-Service basierent auf dem XMPP-Protokoll.


    Wie kommst du darauf, dass whatsapp kein GCM benutzt und einen eigenen Push dienst implementiert hat?
    Ich gehe mal stark davon aus, dass xmpp nur bei geöffneter App benutzt wird.
    Außerdem hätten sie mit einem eigenen Push Dienst die gleichen "Probleme" wie mit GCM.


    Es gibt bestimmt auch "viele User" die keine Probleme mit GCM und Threema haben ;)



    Vielleicht kann man (Threema) ja alle 5 Minuten ein Lebenszeichen an die Google-Server schicken um die Verbindung aufrecht zu erhalten.


    Und somit den Sinn eines Push Dienstes kaputt machen?



    Man sollte auch beachten, dass viele Handy Hersteller ihre Android Versionen ziemlich verunstalten (ganz vorne Samsung), tief ins System eingreifen und somit viele Probleme verursachen auf die Google keinen Einfluss hat.


  • Und wie soll der Push Dienst das bemerken ohne das Intervall zu verkürzen?


    Im mir sicher, dass nach einer Unterbrechung der Mobilfunkverbindung sofort die Verbindung wieder hergestellt wird und nicht erst zum nächsten Intervall.


    Okay bei einem kompletten Netzverlust ist das möglich (s. Link zur Diskussion ganz unten).



    Wie kommst du darauf, dass whatsapp kein GCM benutzt und einen eigenen Push dienst implementiert hat?


    Zitat


    They worked around them, by implementing their own push notification gateways. Facebook uses MQTT (source) and WhatsApp uses XMPP (source).




    Es gibt bestimmt auch "viele User" die keine Probleme mit GCM und Threema haben ;)


    Stimmt ich bin einer davon ;)



    Und somit den Sinn eines Push Dienstes kaputt machen?


    Nicht kaputt machen, sondern reparieren :D


    Samsung und Konsorten sind aber diesmal (trotzt vieler Änderungen an Android) nicht schuld. Das Problem liegt nämlich auf der Netzwerkebene:


    Google öffnet einen TCP-Socket für seinen Pushdienst. Das schont den Akku, da einfach eine "Tür" offen bleibt.
    Damit diese Tür offen bleibt, schickt man ein Lebenszeichen an die Google Server (15 Min. WLAN, 28 Min. Mobilfunk). So weit so gut, aber in der Praxis gibt es da einige Tücken:


    Sockets, die offen sind, aber keine Daten übertragen werden von Routern zu Hause oder im Mobilfunk durch den Provider meist innerhalb des Intervalls geschlossen (kommt auf den Router/Mobilfunkanbieter an).
    Das der Socket geschlossen wurde und ggf. Benachrichtigungen "vor der Tür warten" wird erst zum nächsten Lebenszeichen bemerkt und die Verbindung wird geöffnet, "angestaute" Daten kommen dann verspätet an.


    Das Problem besteht schon lange. Eine einfache Lösung wäre, dass Google das Intervall verkürzt (soweit das man sich nicht selbs DDoS´t :D).
    Threema bietet mit dem Push-Fixer ja schon die Möglichkeit in kürzeren Intervallen ein Lebenszeichen zu schicken.


    Mit dem Push Notification Fixer (PNF) kann man das Intervall Systemweit verringern und somit auch Benachrichtigungen von anderen Apps, welche GCM nutzen, erhalten.


    Hier noch eine Diskussion zu dem Thema: https://productforums.google.c…#!topic/nexus/fslYqYrULto


    [hr]
    Quelle (Zitat und GCM-Funktionsweise): http://eladnava.com/google-clo…ing-extremely-unreliable/

  • Zitat


    They worked around them, by implementing their own push notification gateways. Facebook uses MQTT (source) and WhatsApp uses XMPP (source).



    Hmm, in dem verlinkten Wikipedia Artikel steht nichts davon, dass Whatsapp einen eigenen Push Dienst implementiert.
    Wenn sie doch auf GCM verzichten, wieso steht dann sowas in deren FAQ bezüglich später Empfang von Nachrichten:



    Zitat


    It may be that you are not receiving your message pushes from Google's push notification service. (Link)


  • Wenn dir das zu riskant ist, stellst du einfach das Pushen über GCM aus und lässt sie alle 15min abrufen, damit hast du eine direkt verbindung zum Threemaserver.


    Hmmm also in der aktuellen Version stürzt Threema ab, wenn man auf Polling stellt und zusätzlich mit XPrivacy die GCM Funktion blockiert. Wobei mir sowieso schleierhaft ist, warum Threema dann überhaupt noch diese Funktion nutzen will :huh: