[sr-dev] [kamailio/kamailio] keep-alive refactoring: use case front-end proxy with backend registrar (#2565)

sergey-safarov notifications at github.com
Sun Nov 29 12:34:21 CET 2020


### Description

In my use case exists
1. pool of front-end proxies (all share some IPv4 address via AWS network load-balancer);
2. pool of backend registrars.

I must:
1. send keepalive messages to endpoints when used INVITE, REGISTRAR, SUBSCRIBE methods via all possible transports (UDP/TSP/TLS/WS/WSS/SCTP) (like nat_keepalive function of nat_traversal module). Internally store record for this SIP URI with flag `ka_dynamic` and `Record-Route` headers from `180, 183, 200` responses as `Route`;
2. send keepalive messages on predefined SIP URI (like ka_add_destination of keepalive module). Internally store record for this SIP URI with flag `ka_static` and manually defined  `Route` value;
3. when keepalive for cases above is failed, then added record into arrays:
a. ka_invite_failed;
b. ka_registrar_failed;
c. ka_supscribe_failed;
d. ka_invite_succcess;
e. ka_registrar_success;
f. ka_supscribe_success;
4. need to trigger `even route` function with initialized `xavp` params of
a. of SIP URI endpoints;
b. relevant array ID;
c. dynamic or static flag of SIP URI record;
d.  `Record-Route` of SIP URI record;
5.If we have arrays for multiple arrays, then the `event router` function called multiple times.
6. the time period for `event route` calls must be configurable via module settings;
7. when executed `event route` I want to have abbility
a. send a new registration message to the registrar node using saved `Route` header when OPTION is successful for the statically defined SIP URI;
a. send registration expiration message to the registrar node from received `200` response;
b. send the clear subscription message to the node from received `200` response;

#### Actual observed behavior
In current implementation `OPTIONS` keepalive messages send from different modules
1. usrloc;
2. keepalive;
3. nat_traversal;
4. nathelper

All the above have limitations like:
1. no TCP/TLS/WS/WSS transport support (nat_traversal, nathelper);
2. no ability to define call `event-route` on failed (success) OPTIONS message (think all modules do not have such feature);
3. no ability to check response code before enabling keepalive (nat_traversal);
4. no ability to notify backend REGISTRAR/SUBSCRIPTION server (think all modules do not have such feature) about failed keepalive messages;

#### What is expected
>From my of view required:
1. some refactor of keepalive feature;
2. merge code from different modules into one and make other modules dependent;
3. implement the ability to notify backend REGISTRAR/SUBSCRIPTION servers of failed keepalive messages;
4. implement the ability to emulate registration when OPTION message success to SIP URI. Required on SBC to emulate customer PBX registration.


-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/issues/2565
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kamailio.org/pipermail/sr-dev/attachments/20201129/6fa2f061/attachment.htm>


More information about the sr-dev mailing list