По роду моей работы часто приходится разбираться в тонкостях работы протокола SIP. Ситуация обычная: различные реализации SIP, разные наборы RFC, при этом стандарты истолкованы бывают каждым по-своему.
Иногда очень не хватает кого-либо разбирающегося в протоколе и говорящего на «великом и могучем», чтобы обсудить, принять верное решение. Если найдутся желающие — можно общаться на #asteriskru или любым другим образом. Если нет таких, то буду писать в sip-implementors, но общению там недостает живости, да и в языке своем я не до конца уверен.
Сейчас плотно занимаюсь изучением механизмов работы PRACK и UPDATE, читаю Гольдштейна. К сожалению в астериске они не поддерживаются. Механизмы с PRACK и UPDATE могут использоваться для реализации механизмов QoS, уточнения списка кодеков во время установления сессии, через них реализуются услуги, работающие до установления голосовой связи. Пишу сейчас реализацию PRACK и UPDATE в Asterisk под свой конкретный случай... Попутно уже надоело тестировать аппараты, которые не работают:
- DLink: нарушает RFC3264
- Linksys: не поддерживает RFC3311 (b не будет), нарушает RFC3262
- VegaStream: нарушает RFC3262
- Grandstream: после трёх месяцев переписки с саппортом удалось заставить работать GXV-3000
- Софт-клиенты: в основном нет поддержки RFC3262, список можно продолжать (в действительности у меня нет аппаратов которые работают нормально)
PS. А ISC DHCPd меня удивил. Я когда-то настраивал его, чтобы выдавать IP через relay настроенные на циске (десятки подсетей). Пришлось адрес релея доставать из опции 82, писать сложный конфиг. А сервер оказывается всю работу делает автоматически... К чему это я? Будьте проще... 🙂