Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

История изменений [назад]

нажмите, чтобы скрыть/показать версии 1
изначальная версия
редактировать

спросил 2012-10-18 18:50:57 +0400

ramzed Gravatar ramzed

Asterisk AMI & Session closed by foreign host

Пишу демон для мониторинга очередей на нескольких asterisk серверах. Есть очень много мелочей которые мне нужно реализовать, поэтому готовые решения использовать не получается.

Проблема в следующем: Имеется 2 подсети. Например 172.1.0.0/24 (N1) и 172.1.1.0/24 (N2). В N1 находится Asterisk, а в N2 находится сервер, на котором крутится демон. Демон устанавливает AMI соединение к астериску. Так вот это соединение очень быстро убивается по инициативе астериска.

Если же располагать сервер мониторинга в той же подсети, что и сам астериск, то соединение живет вечно. (По крайней мере у меня оно не падало. Тестировал 26 часов. Закрыл сам, из-за того что надоело ждать когда оно упадет :)) Если же в разных сетях то после первого же вывода: "Connection closed by remote host"

Пробовал снифать трафик и выяснилось, что TCP сессию рвет именно АТС. В последнем пакете с данными (Ответ на команду "Action: QueueStatus") АТС ставит флаг FIN, чем и инициирует завершение TCP сессии. В случае расположения серверов в одной подсети этот флаг не ставится и поэтому сессиия не рвется...

Уже думал грешить на Cisco роутер, который стоит между этими подсетями, но сняв трафик на обоих концах, окончательно убедился, что первый пакет с FIN флагом шлет именно АТС.

Еще есть вариант что соединение рвет не сам астериск а операционная система. Но интересно то, что рвется сессиия не по истечении какого-то определенного времени, а четко в последнем пакете с данными. Т.е. если подключиться по AMI и сразу отправить команду, например "Action: QueueStatus", то в последнем пакете тут же возникнет флаг FIN. Вывод в ответ на команду идет довольно большой. Может кто-то сталкивался с данной проблемой? Принимаются любые мысли к размышлению.

Вобщем, предоставлю любую интересующую информацию. Проблему надо как то побороть, а я уперся. Нужна помощь! :)

Asterisk AMI & Session closed by foreign host

Пишу демон для мониторинга очередей на нескольких asterisk серверах. Есть очень много мелочей которые мне нужно реализовать, поэтому готовые решения использовать не получается.

Проблема в следующем: Имеется 2 подсети. Например 172.1.0.0/24 (N1) и 172.1.1.0/24 (N2). В N1 находится Asterisk, а в N2 находится сервер, на котором крутится демон. Демон устанавливает AMI соединение к астериску. Так вот это соединение очень быстро убивается по инициативе астериска.

Если же располагать сервер мониторинга в той же подсети, что и сам астериск, то соединение живет вечно. (По крайней мере у меня оно не падало. Тестировал 26 часов. Закрыл сам, из-за того что надоело ждать когда оно упадет :)) Если же в разных сетях то после первого же вывода: "Connection closed by remote host"

Пробовал снифать трафик и выяснилось, что TCP сессию рвет именно АТС. В последнем пакете с данными (Ответ на команду "Action: QueueStatus") АТС ставит флаг FIN, чем и инициирует завершение TCP сессии. В случае расположения серверов в одной подсети этот флаг не ставится и поэтому сессиия не рвется...

Уже думал грешить на Cisco роутер, который стоит между этими подсетями, но сняв трафик на обоих концах, окончательно убедился, что первый пакет с FIN флагом шлет именно АТС.

Еще есть вариант что соединение рвет не сам астериск а операционная система. Но интересно то, что рвется сессиия не по истечении какого-то определенного времени, а четко в последнем пакете с данными. Т.е. если подключиться по AMI и сразу отправить команду, например "Action: QueueStatus", то в последнем пакете тут же возникнет флаг FIN. Вывод в ответ на команду идет довольно большой. Может кто-то сталкивался с данной проблемой? Принимаются любые мысли к размышлению.

Вобщем, предоставлю любую интересующую информацию. Проблему надо как то побороть, а я уперся. Нужна помощь! :)

UPDATED. Проверял все телнетом на порт Asterisk Manager Interface (5038). История аналогичная. Соединение рвется сразу после вывода первой команды. Дело не в модуле питона, и не в моих кодах. Проблема на стороне сервера. Либо Asterisk, либо Linux. Вопрос в том что именно и как это пофиксить.

Asterisk AMI & Session closed by foreign host

Пишу демон для мониторинга очередей на нескольких asterisk серверах. Есть очень много мелочей которые мне нужно реализовать, поэтому готовые решения использовать не получается.

Проблема в следующем: Имеется 2 подсети. Например 172.1.0.0/24 (N1) и 172.1.1.0/24 (N2). В N1 находится Asterisk, а в N2 находится сервер, на котором крутится демон. Демон устанавливает AMI соединение к астериску. Так вот это соединение очень быстро убивается по инициативе астериска.

Если же располагать сервер мониторинга в той же подсети, что и сам астериск, то соединение живет вечно. (По крайней мере у меня оно не падало. Тестировал 26 часов. Закрыл сам, из-за того что надоело ждать когда оно упадет :)) Если же в разных сетях то после первого же вывода: "Connection closed by remote host"

Пробовал снифать трафик и выяснилось, что TCP сессию рвет именно АТС. В последнем пакете с данными (Ответ на команду "Action: QueueStatus") АТС ставит флаг FIN, чем и инициирует завершение TCP сессии. В случае расположения серверов в одной подсети этот флаг не ставится и поэтому сессиия не рвется...

Уже думал грешить на Cisco роутер, который стоит между этими подсетями, но сняв трафик на обоих концах, окончательно убедился, что первый пакет с FIN флагом шлет именно АТС.

Еще есть вариант что соединение рвет не сам астериск а операционная система. Но интересно то, что рвется сессиия не по истечении какого-то определенного времени, а четко в последнем пакете с данными. Т.е. если подключиться по AMI и сразу отправить команду, например "Action: QueueStatus", то в последнем пакете тут же возникнет флаг FIN. Вывод в ответ на команду идет довольно большой. Может кто-то сталкивался с данной проблемой? Принимаются любые мысли к размышлению.

Вобщем, предоставлю любую интересующую информацию. Проблему надо как то побороть, а я уперся. Нужна помощь! :)

UPDATED. Проверял все телнетом на порт Asterisk Manager Interface (5038). История аналогичная. Соединение рвется сразу после вывода первой команды. Дело не в модуле питона, и не в моих кодах. Проблема на стороне сервера. Либо Asterisk, либо Linux. Вопрос в том что именно и как это пофиксить.

Не знаю почему я не могу сам ответить на свой вопрос... Напишу здесь:

Asterisk AMI truncates long responses over medium latency connections https://issues.asterisk.org/jira/browse/ASTERISK-19603

Asterisk AMI & Session closed by foreign host

Пишу демон для мониторинга очередей на нескольких asterisk серверах. Есть очень много мелочей которые мне нужно реализовать, поэтому готовые решения использовать не получается.

Проблема в следующем: Имеется 2 подсети. Например 172.1.0.0/24 (N1) и 172.1.1.0/24 (N2). В N1 находится Asterisk, а в N2 находится сервер, на котором крутится демон. Демон устанавливает AMI соединение к астериску. Так вот это соединение очень быстро убивается по инициативе астериска.

Если же располагать сервер мониторинга в той же подсети, что и сам астериск, то соединение живет вечно. (По крайней мере у меня оно не падало. Тестировал 26 часов. Закрыл сам, из-за того что надоело ждать когда оно упадет :)) Если же в разных сетях то после первого же вывода: "Connection closed by remote host"

Пробовал снифать трафик и выяснилось, что TCP сессию рвет именно АТС. В последнем пакете с данными (Ответ на команду "Action: QueueStatus") АТС ставит флаг FIN, чем и инициирует завершение TCP сессии. В случае расположения серверов в одной подсети этот флаг не ставится и поэтому сессиия не рвется...

Уже думал грешить на Cisco роутер, который стоит между этими подсетями, но сняв трафик на обоих концах, окончательно убедился, что первый пакет с FIN флагом шлет именно АТС.

Еще есть вариант что соединение рвет не сам астериск а операционная система. Но интересно то, что рвется сессиия не по истечении какого-то определенного времени, а четко в последнем пакете с данными. Т.е. если подключиться по AMI и сразу отправить команду, например "Action: QueueStatus", то в последнем пакете тут же возникнет флаг FIN. Вывод в ответ на команду идет довольно большой. Может кто-то сталкивался с данной проблемой? Принимаются любые мысли к размышлению.

Вобщем, предоставлю любую интересующую информацию. Проблему надо как то побороть, а я уперся. Нужна помощь! :)

UPDATED. Проверял все телнетом на порт Asterisk Manager Interface (5038). История аналогичная. Соединение рвется сразу после вывода первой команды. Дело не в модуле питона, и не в моих кодах. Проблема на стороне сервера. Либо Asterisk, либо Linux. Вопрос в том что именно и как это пофиксить.

Не знаю почему я не могу сам ответить на свой вопрос... Напишу здесь:

Asterisk AMI truncates long responses over medium latency connections https://issues.asterisk.org/jira/browse/ASTERISK-19603

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.