od xsouku04 » pát 01. bře 2019 14:09:04
Ve zkratce: Čtěte, jen pokud je váš telefon občas nedostupný, i když internet zrovna funguje.
Dnes v noci se změnil způsob zasílání keep alive paktů od nás směrem k zákazníkovi, pokud je u nastavení linky u nás na webu aktivní. Nově posíláme jen 4 byty - samé nuly, na které telefony již neodpovídají. Dříve jsme posílali mnohem větší SIP OPTIONS packet, na které telefony odpovídaly, ale odpověď nikdo neevidoval, jen zbytečně zatěžovala náš server.
Posílání keep alive paketů ve směru odorik->telefon může mít liv na dovolatelnost zaregistrovaných VoIP zařízení, ale jen u těch co jsou neoptimálně nastavené.
Pokud je Vaše linka občas nedovolatelná (zpravidla po krátkém výpadku internetu), zkontrolujte, že máte zapnuto keep alive na vašem telefonu. Tohle je jediný způsob, jak snížit délky kratších výpadků na minimum. Jak povolit keep alive, zmiňují všechny naše návody pro nastavení VoIP telefonů. Telefony Siemens Gigaset keep alive posílají automaticky a volbu nastavení ani nemají. Posílán keep alive ze strany sip.odorik.cz (které se dnes mírně změnilo) je jen nedokonalá berlička pro ty, co nečtou naše návody, nebo mají nějaký hodně starý či netradiční VoIP telefon.
Trochu technického pozadí nedokonalosti SIPu pro ty, které to zajímá
Nejrozšířenější SIP ústředna Asterisk, posílá defaultně keep alive pakety všem svým přihlášeným telefonům. Vyhodnocuje, že telefony odpovídají a jen takovým posílá hovory. Kdyby totiž poslala hovor na nedostupný/neodpovídající VoIP telefon, nesmyslně nastavený defaultní SIP TIMEOUT v Asterisku na 30 vteřin znemožní nějaké náhradní chování v rozumném čase. Tedy vývojáři Asterisku přidělali berličku, aby mohli ponechat špatně vymyšlené defaultní timeouty v SIPu. U nás tento problém nemáme, změnili jsme timeout na 5 vteřin.
Z toho plynou dvě věci. Méně důležitá je, že každý VoIP telefon umí odpovědět na keep alive - jinak byl s Asteriskem nepoužitelný a to si žádný nedovolí. Většina VoIP telefonů v defaultní konfiguraci neposílá vlastní keep alive, ale spoléhají na to, že to budě dělat ústředna, čímž si podstatně zvyšuje svoji potencionální nedostupnost. Stačí totiž když přestane internet fungovat na 2 minuty, NAT se uzavře a telefon je až do další přeregistrace nedostupný. Tedy až hodinu. Pravděpodobně stačí jen ztráta jednoho nebo dvou UDP paketů v řadě. Je to tedy všeobecně rozšířený zlozvyk vyvolaný příliš dominantním postavením Asterisku a spoléhání se na jeho defaultní chování - nekoncepční berličku.
Optimální tedy je, pokud keep alive pakety posílá jen telefon. Pokud pošle dlouhý SIP Options paket, ústředna odpoví a telefon má tak zpětnou vazbu, že je dostupný. Pokud na keep alive nikdo neodpoví, bylo by logické, kdyby se zkusil znovu zaregistrovat - mohlo se např. změnit připojení k internetu (jiná wifina, jiná ip adresa), nebo někdo mohl restartovat router, který nyní změnil mapování a pro obnovení spojení je nutné se přeregistrovat. Málo který VoIP telefon ale zareaguje pokusem o přeregistraci, když přestane dostávat odpovědi na keep alive. Tedy pokud si tedy restartujete router, stále hrozí, že budete do další přeregistrace nedostupní, pokud router po restartu nezachová stejné mapování portů. Tohle je bohužel hloupost většiny výrobců VoIP telefonů, kterou jen tak nezměníme. Ale v případě výpadku internetu pakety přes router, který je u vás nebo poblíž, chodí nadále (chodí zevnitř a ztratí se až později) a mapování zůstává zachováno. Stejně tak při výpadku služeb Odorik.cz zůstane cesta otevřená a po ukončení výpadku se okamžitě obnoví. Proto má smysl obecně používat keep alive ve směru telefon->ústředna a na opačný směr se nespoléhat. Bohužel málokdo tohle tuší.
Některé telefony jako např. Siemens Gigaset posílají jen krátký keep alive paket, na který se neodpovídá, což je ve výsledku stejné, jako když většina ostatních na chybějící odpověď stejně nijak nereaguje. Jen je to datově úspornější a nezatěžuje to tolik ústřednu.
Ve zkratce: Čtěte, jen pokud je váš telefon občas nedostupný, i když internet zrovna funguje.
Dnes v noci se změnil způsob zasílání keep alive paktů od nás směrem k zákazníkovi, pokud je u nastavení linky u nás na webu aktivní. Nově posíláme jen 4 byty - samé nuly, na které telefony již neodpovídají. Dříve jsme posílali mnohem větší SIP OPTIONS packet, na které telefony odpovídaly, ale odpověď nikdo neevidoval, jen zbytečně zatěžovala náš server.
Posílání keep alive paketů ve směru odorik->telefon může mít liv na dovolatelnost zaregistrovaných VoIP zařízení, ale jen u těch co jsou neoptimálně nastavené.
Pokud je Vaše linka občas nedovolatelná (zpravidla po krátkém výpadku internetu), zkontrolujte, že máte zapnuto keep alive na vašem telefonu. Tohle je jediný způsob, jak snížit délky kratších výpadků na minimum. Jak povolit keep alive, zmiňují všechny naše návody pro nastavení VoIP telefonů. Telefony Siemens Gigaset keep alive posílají automaticky a volbu nastavení ani nemají. Posílán keep alive ze strany sip.odorik.cz (které se dnes mírně změnilo) je jen nedokonalá berlička pro ty, co nečtou naše návody, nebo mají nějaký hodně starý či netradiční VoIP telefon.
[b]Trochu technického pozadí nedokonalosti SIPu pro ty, které to zajímá[/b]
Nejrozšířenější SIP ústředna Asterisk, posílá defaultně keep alive pakety všem svým přihlášeným telefonům. Vyhodnocuje, že telefony odpovídají a jen takovým posílá hovory. Kdyby totiž poslala hovor na nedostupný/neodpovídající VoIP telefon, nesmyslně nastavený defaultní SIP TIMEOUT v Asterisku na 30 vteřin znemožní nějaké náhradní chování v rozumném čase. Tedy vývojáři Asterisku přidělali berličku, aby mohli ponechat špatně vymyšlené defaultní timeouty v SIPu. U nás tento problém nemáme, změnili jsme timeout na 5 vteřin.
Z toho plynou dvě věci. Méně důležitá je, že každý VoIP telefon umí odpovědět na keep alive - jinak byl s Asteriskem nepoužitelný a to si žádný nedovolí. Většina VoIP telefonů v defaultní konfiguraci neposílá vlastní keep alive, ale spoléhají na to, že to budě dělat ústředna, čímž si podstatně zvyšuje svoji potencionální nedostupnost. Stačí totiž když přestane internet fungovat na 2 minuty, NAT se uzavře a telefon je až do další přeregistrace nedostupný. Tedy až hodinu. Pravděpodobně stačí jen ztráta jednoho nebo dvou UDP paketů v řadě. Je to tedy všeobecně rozšířený zlozvyk vyvolaný příliš dominantním postavením Asterisku a spoléhání se na jeho defaultní chování - nekoncepční berličku.
Optimální tedy je, pokud keep alive pakety posílá jen telefon. Pokud pošle dlouhý SIP Options paket, ústředna odpoví a telefon má tak zpětnou vazbu, že je dostupný. Pokud na keep alive nikdo neodpoví, bylo by logické, kdyby se zkusil znovu zaregistrovat - mohlo se např. změnit připojení k internetu (jiná wifina, jiná ip adresa), nebo někdo mohl restartovat router, který nyní změnil mapování a pro obnovení spojení je nutné se přeregistrovat. Málo který VoIP telefon ale zareaguje pokusem o přeregistraci, když přestane dostávat odpovědi na keep alive. Tedy pokud si tedy restartujete router, stále hrozí, že budete do další přeregistrace nedostupní, pokud router po restartu nezachová stejné mapování portů. Tohle je bohužel hloupost většiny výrobců VoIP telefonů, kterou jen tak nezměníme. Ale v případě výpadku internetu pakety přes router, který je u vás nebo poblíž, chodí nadále (chodí zevnitř a ztratí se až později) a mapování zůstává zachováno. Stejně tak při výpadku služeb Odorik.cz zůstane cesta otevřená a po ukončení výpadku se okamžitě obnoví. Proto má smysl obecně používat keep alive ve směru telefon->ústředna a na opačný směr se nespoléhat. Bohužel málokdo tohle tuší.
Některé telefony jako např. Siemens Gigaset posílají jen krátký keep alive paket, na který se neodpovídá, což je ve výsledku stejné, jako když většina ostatních na chybějící odpověď stejně nijak nereaguje. Jen je to datově úspornější a nezatěžuje to tolik ústřednu.