Opened 6 years ago
Closed 6 years ago
#277 closed улучшение (готово)
Синхронизация регистраций SIP пользователей
Reported by: | alx | Owned by: | alx |
---|---|---|---|
Priority: | средний | Milestone: | 2 очередь |
Component: | any | Keywords: | RegSync |
Cc: |
Description
Сейчас плата VE-01 хранит регистрации пользователей в ОЗУ. Это приводит к тому, что они пропадают при любой перезагрузке платы - при обновлении прошивки, по watchdog'у, в результате получения ALERT из MSP и т.п. Как результат - после перезагрузки платы и до следующей регистрации пользователь не получает входящие вызовы.
В прокси-сервере repro есть функция синхронизации регистраций между двумя repro. При старте repro подключается к другому серверу и запрашивает у него все регистрации. В дальнейшем при обновлении регистрации пользователем один сервер передает обновление другому.
Предлагается использовать этот механизм для минимизации потери данных регистрации даже в случае отсутствия второго сервера. Для этого:
- В ПО платы VE-01 создается агент. Этот агент содержит клиент, который подключается к repro, запрашивает все данные и затем получает обновления. Все полученные данные сохраняются в оперативной памяти.
- Агент содержит сервер. repro при старте подключается к агенту и запрашивает данные регистрации (которые были сохранены и восстановлены тем или иным способом - см. ниже).
- При возникновении событий, говорящих о вероятности перезагрузки платы (получение ALERT от MSP, отсутствие hearbeat, получение команды перезагрузки от SW-01 и т.п.) данные сохраняются в файл в ПЗУ. При последующем старте сохраненные данные восстанавливаются.
- При каждом обновлении регистрации информация отправляется в плату SW-01 через управляющую шину SPI (Это уже сделано в целях отображения состояния регистрации в веб-интерфейсе, можно доработать существующий механизм). При старте агент может запросить у SW-01 список регистраций - этот механизм поможет даже в случае, когда сохранение в ПЗУ VE-01 невозможно (например VE-01 выдернули из кассеты или просто заменили на другую).
В проекте SW-01 уже создан соответствующий тикет, там можно посмотреть диаграммы с протоколом.
Сделано в r1463.