[OpenSIPS-Users] mid_registrar work arround

Ben Newlin Ben.Newlin at genesys.com
Fri Aug 24 08:46:20 EDT 2018


Volga,

I had recommended using individual variables, but if you want to use a list that will work. I would recommend using transformations [1] to manipulate the list. Depending on what you choose as your separator you can use the csv transformations (","), or the string select transformation (any other separator). Technically the parameter list transformation may work but I wouldn't recommend it as it is implemented for a SIP parameter list which does have some reserved characters! This got me very recently. (

For shared variables you define them in the modules section of your config file [2], but they can be changed via MI commands, using whatever MI method you would like. I use the opensipsctl script with the UDP datagram module [3].

[1] http://www.opensips.org/Documentation/Script-Tran-2-4
[2] http://www.opensips.org/html/docs/modules/2.4.x/cfgutils.html#idp5923408
[3] http://www.opensips.org/html/docs/modules/2.4.x/mi_datagram.html

Ben Newlin 

On 8/21/18, 10:20 PM, "Users on behalf of volga629 at networklab.ca" <users-bounces at lists.opensips.org on behalf of volga629 at networklab.ca> wrote:

    Hello  Ben,
    All what I am trying is introduce $shv(lan_lst) for lan vips and  
    $shv(wan_lst) for wan vips, originaly you idea. My issue is how get 
    define the list and how to get through all ips in list as example for 
    filter
    
    if($Ri==$shv(lan_lst) && $avp(DLG_dir)=="topbx") {
    
    volga629
    
    
    On Tue, Aug 21, 2018 at 12:46 PM, Ben Newlin <Ben.Newlin at genesys.com> 
    wrote:
    > Volga,
    > 
    > I'm still not sure I fully understand, but it sounds like all you 
    > really need is a mapping LAN<->WAN for each set of IPs?
    > 
    > So in the scenario you outlined, when node 1 receives a packet on the 
    > LAN interface that was previously on node 2 you want it to send out 
    > the WAN for node 2. But if it receives on LAN from node 1, it should 
    > send out WAN for node 1. Is this correct?
    > 
    > Ben Newlin
    > 
    > On 8/21/18, 11:39 AM, "volga629 at networklab.ca" 
    > <volga629 at networklab.ca> wrote:
    > 
    >     Example right now we have on each node one vip for LAN and one 
    > vip for
    >     WAN.
    >     When failover happened node 1 will hold LAN and WAN vips of node 
    > 2. If
    >     on node 2 was active registrations they will be relocated to node 
    > 1 and
    >     source ip will be vip's node 2.
    >     The question how to define all the vips internal and external 
    > variables
    >     like VIP-INT list internal and VIP-EXT list so will be possible
    >     dynamically use it in script.
    > 
    > 
    >     volga629
    > 
    > 
    > 
    >     On Tue, Aug 21, 2018 at 12:19 PM, volga629 at networklab.ca wrote:
    >     > Hello Ben,
    >     > The script bellow is to find the way define vips in variable so 
    >  if
    >     > failover happends on keepalived script can process traffic and 
    > set
    >     > proper vips (source ip)
    >     >
    >     > volga629.
    >     >
    >     > On Tue, Aug 14, 2018 at 4:38 PM, Ben Newlin 
    > <Ben.Newlin at genesys.com>
    >     > wrote:
    >     >> Volga,
    >     >>
    >     >> I must be misunderstanding. If you are able to determine the 
    > correct
    >     >> receiving interface in OpenSIPS and you are using the Path 
    > header
    >     >> to communicate that to the next hop destination, I'm not sure 
    > I'm
    >     >> clear on what the issue is you are still trying to solve?
    >     >>
    >     >> Ben Newlin
    >     >>
    >     >> On 8/14/18, 2:32 PM, "Users on behalf of 
    > volga629 at networklab.ca"
    >     >> <users-bounces at lists.opensips.org on behalf of
    >     >> volga629 at networklab.ca> wrote:
    >     >>
    >     >>     Hello Ben,
    >     >>     Yes, I create logic like this
    >     >>
    >     >>             if(!has_totag() && is_method("INVITE")) {
    >     >>                     create_dialog();
    >     >>
    >     >>                     if($Ri== vip1 ip addr) {
    >     >>                             set_dlg_sharing_tag("vip1");
    >     >>                             $avp(vip) = "vip1 ip addr";
    >     >>                     } else if($Ri== vip2 ip addr) {
    >     >>                             set_dlg_sharing_tag("vip2");
    >     >>                             $avp(vip) = "vip2 ip addr";
    >     >>                     } else if($Ri == vip3 ip addr) {
    >     >>                             set_dlg_sharing_tag("vip3");
    >     >>                             $avp(vip) = "vip3 ip addr";
    >     >>                     }
    >     >>             }
    >     >>
    >     >>     not sure if this correct approach. In theory $avp(vip) can 
    > be
    >     >> used for
    >     >>     rtpengine or other operation require correct ip in body, 
    > but
    >     >> issue that
    >     >>     call flow, because INVITE come from external interface 
    > first
    >     >> then it
    >     >>     forwarded to LAN via dipatcher.
    >     >>
    >     >>
    >     >>     volg629
    >     >>
    >     >>
    >     >>     On Tue, Aug 14, 2018 at 2:51 PM, Ben Newlin
    >     >> <Ben.Newlin at genesys.com>
    >     >>     wrote:
    >     >>     > Volga,
    >     >>     >
    >     >>     > Sorry, I didn't fully understand your scenario. Even 
    > though
    >     >> you said
    >     >>     > it was active/active, I was assuming an active/standby
    >     >> scenario where
    >     >>     > only 1 IP would be active on a box at a time. I don't 
    > think
    >     >> this
    >     >>     > approach would work for the scenario you are describing.
    >     >>     >
    >     >>     > Is there some reason you can't have each box listen on 
    > all 3
    >     >> IPs all
    >     >>     > the time? Then from within the script you can use $Ri 
    > [1] to
    >     >>     > determine which interface received the message.
    >     >>     >
    >     >>     > [1] -
    >     >> http://www.opensips.org/Documentation/Script-CoreVar-2-3#toc77
    >     >>     >
    >     >>     > Ben Newlin
    >     >>     >
    >     >>     > On 8/14/18, 1:39 PM, "Users on behalf of
    >     >> volga629 at networklab.ca"
    >     >>     > <users-bounces at lists.opensips.org on behalf of
    >     >>     > volga629 at networklab.ca> wrote:
    >     >>     >
    >     >>     >     Hello Ben,
    >     >>     >     Do you mean for this
    >     >>     >
    >     >>     >     modparam("cfgutils", "varset", "init=i:1")
    >     >>     >     modparam("cfgutils", "varset",
    >     >>     > "gw=s:sip:11.11.11.11;transport=tcp")
    >     >>     >
    >     >>     >     or this
    >     >>     >
    >     >>     >     modparam("cfgutils", "shvset", "debug=i:1")
    >     >>     >     modparam("cfgutils", "shvset", 
    > "pstngw=s:sip:10.10.10.10")
    >     >>     >
    >     >>     >     in my case will be something like
    >     >>     >
    >     >>     >
    >     >>     >     modparam("cfgutils", "shvset", 
    > "vip1=s:192.168.10.100")
    >     >>     >     modparam("cfgutils", "shvset", 
    > "vip2=s:192.168.10.101")
    >     >>     >     modparam("cfgutils", "shvset", 
    > "vip3=s:192.168.10.102")
    >     >>     >
    >     >>     >     If vip relocated to antother node meaning on live 
    > node 1
    >     >> will be
    >     >>     > two
    >     >>     >     vip's ( example node 3 fail then it relocate ip 
    > address to
    >     >> node 1)
    >     >>     >     How I can determine which  vip ip address should be 
    > in use.
    >     >>     >
    >     >>     >     volg629
    >     >>     >
    >     >>     >
    >     >>     >     On Thu, Aug 2, 2018 at 9:44 PM, Ben Newlin
    >     >>     > <Ben.Newlin at genesys.com>
    >     >>     >     wrote:
    >     >>     >     > M4 will process the file before OpenSIPS runs and 
    > will
    >     >> not be
    >     >>     >     > changeable at runtime. It sounds like that will 
    > not work
    >     >> for
    >     >>     > you if I
    >     >>     >     > am understanding properly.
    >     >>     >     >
    >     >>     >     > My first thought would be to use the shared 
    > variables
    >     >> from
    >     >>     > CFGUTILS
    >     >>     >     > [1]. They can be accessed from inside the script, 
    > but
    >     >> can also
    >     >>     > be set
    >     >>     >     > via MI. So when your monitor detects a failure and
    >     >> switches the
    >     >>     > IPs,
    >     >>     >     > it could also use MI to change the value of the 
    > variable
    >     >> in
    >     >>     > OpenSIPS
    >     >>     >     > for future use.
    >     >>     >     >
    >     >>     >     > As a side note to OpenSIPS devs, it appears this 
    > module
    >     >> was
    >     >>     > missed
    >     >>     >     > when the Module Index page [2] was redesigned as I 
    > can't
    >     >> find it
    >     >>     >     > there for 2.x, but the direct links to the 2.x 
    > versions
    >     >> still
    >     >>     > work.
    >     >>     >     >
    >     >>     >     > [1]
    >     >>     > 
    > http://www.opensips.org/html/docs/modules/2.4.x/cfgutils.html
    >     >>     >     > [2] 
    > http://www.opensips.org/Documentation/Modules-2-4
    >     >>     >     >
    >     >>     >     > Ben Newlin
    >     >>     >     >
    >     >>     >     > On 8/2/18, 5:56 PM, "Users on behalf of
    >     >> volga629 at networklab.ca"
    >     >>     >     > <users-bounces at lists.opensips.org on behalf of
    >     >>     >     > volga629 at networklab.ca> wrote:
    >     >>     >     >
    >     >>     >     >     Hello Liviu,
    >     >>     >     >     Yes, that correct.  Right now each node in 
    > cluster
    >     >> have own
    >     >>     > vip
    >     >>     >     > from
    >     >>     >     >     keepalived on LAN side.
    >     >>     >     >     The issue how to specify correct vip in case of
    >     >> failover,
    >     >>     > so if
    >     >>     >     > node 2
    >     >>     >     >     fail and node 2 vip was relocated to node 1. 
    > All
    >     >> sessions
    >     >>     > should
    >     >>     >     > be
    >     >>     >     >     process on node 1 and
    >     >>     >     >     append_hf("Path:
    >     >>     > <sip:$fU at MAIN_VIP:5060;transport=udp>\r\n");
    >     >>     >     > should
    >     >>     >     >     have correct ip's.  Same with rtpengine offer
    >     >>     >     >     rtpengine_offer("replace-origin
    >     >> replace-session-connection
    >     >>     >     >     in-iface=external out-iface=internal
    >     >>     >     > media-address=$avp(media_addr)
    >     >>     >     >     RTP/AVP ICE=remove") where need introduce
    >     >> media-address to
    >     >>     > specify
    >     >>     >     >     correct vip ip.
    >     >>     >     >     Can you exapand on m4 ? I never used the 
    > templating.
    >     >>     >     >     Might db avp  to predefine  cluster nodes vip 
    > ip,
    >     >> not sure.
    >     >>     >     >
    >     >>     >     >
    >     >>     >     >     volga629
    >     >>     >     >
    >     >>     >     >
    >     >>     >     >
    >     >>     >     >     On Thu, Aug 2, 2018 at 10:50 AM, Liviu Chircu
    >     >>     > <liviu at opensips.org>
    >     >>     >     >     wrote:
    >     >>     >     >     > Hi Volga,
    >     >>     >     >     >
    >     >>     >     >     > If I understood your problem correctly, one 
    > idea
    >     >> would be
    >     >>     > to
    >     >>     >     > use m4
    >     >>     >     >     > over opensips.cfg and define a different 
    > MAIN_VIP
    >     >>     > variable for
    >     >>     >     > each
    >     >>     >     >     > of your three servers:
    >     >>     >     >     >
    >     >>     >     >     > append_hf("Path:
    >     >>     > <sip:$fU at MAIN_VIP:5060;transport=udp>\r\n");
    >     >>     >     >     >  Liviu Chircu
    >     >>     >     >     > OpenSIPS Developer
    >     >>     >     >     > http://www.opensips-solutions.com
    >     >>     >     >     > On 09.07.2018 07:34, volga629 at networklab.ca 
    > wrote:
    >     >>     >     >     >> Hello Everyone,
    >     >>     >     >     >>
    >     >>     >     >     >> I have work around on this issue
    >     >>     >     >     >> # Work arround for github issue #1109
    >     >>     >     >     >> append_hf("Path: <sip:$fU at listen
    >     >>     > ip:5060;transport=udp>\r\n"
    >     >>     >     >     >>
    >     >>     >     >     >>
    >     >>     >     >     >> Right now we use 3 node cluster with 3 vips 
    > in
    >     >>     > active/active
    >     >>     >     > mode
    >     >>     >     >     >> I need some idea how to determine path 
    > header
    >     >> listen ip
    >     >>     >     > address from
    >     >>     >     >     >> 3 vips.
    >     >>     >     >     >>
    >     >>     >     >     >>
    >     >>     >     >     >> volga629
    >     >>     >     >     >>
    >     >>     >     >     >>
    >     >>     >     >     >>
    >     >>     >     >     >>
    >     >>     >     >     >> 
    > _______________________________________________
    >     >>     >     >     >> Users mailing list
    >     >>     >     >     >> Users at lists.opensips.org
    >     >>     >     >     >>
    >     >> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
    >     >>     >     >     >
    >     >>     >     >
    >     >>     >     >
    >     >>     >     >     _______________________________________________
    >     >>     >     >     Users mailing list
    >     >>     >     >     Users at lists.opensips.org
    >     >>     >     >
    >     >> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
    >     >>     >     >
    >     >>     >     >
    >     >>     >     > _______________________________________________
    >     >>     >     > Users mailing list
    >     >>     >     > Users at lists.opensips.org
    >     >>     >     > 
    > http://lists.opensips.org/cgi-bin/mailman/listinfo/users
    >     >>     >
    >     >>     >
    >     >>     >     _______________________________________________
    >     >>     >     Users mailing list
    >     >>     >     Users at lists.opensips.org
    >     >>     >     
    > http://lists.opensips.org/cgi-bin/mailman/listinfo/users
    >     >>     >
    >     >>     >
    >     >>     > _______________________________________________
    >     >>     > Users mailing list
    >     >>     > Users at lists.opensips.org
    >     >>     > http://lists.opensips.org/cgi-bin/mailman/listinfo/users
    >     >>
    >     >>
    >     >>     _______________________________________________
    >     >>     Users mailing list
    >     >>     Users at lists.opensips.org
    >     >>     http://lists.opensips.org/cgi-bin/mailman/listinfo/users
    >     >>
    >     >>
    >     >> _______________________________________________
    >     >> Users mailing list
    >     >> Users at lists.opensips.org
    >     >> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
    >     >
    >     >
    >     > _______________________________________________
    >     > Users mailing list
    >     > Users at lists.opensips.org
    >     > http://lists.opensips.org/cgi-bin/mailman/listinfo/users
    > 
    > 
    >     _______________________________________________
    >     Users mailing list
    >     Users at lists.opensips.org
    >     http://lists.opensips.org/cgi-bin/mailman/listinfo/users
    > 
    > 
    > _______________________________________________
    > Users mailing list
    > Users at lists.opensips.org
    > http://lists.opensips.org/cgi-bin/mailman/listinfo/users
    
    
    _______________________________________________
    Users mailing list
    Users at lists.opensips.org
    http://lists.opensips.org/cgi-bin/mailman/listinfo/users
    



More information about the Users mailing list