[OpenSIPS-Users] mid_registrar work arround
volga629 at networklab.ca
volga629 at networklab.ca
Fri Aug 24 13:08:30 EDT 2018
small correction need change force_send_socket($var(src_socket)); to
$fs = $var(src_socket); , becuse force_send_socket is not accepting
variable expansion.
volga629
On Fri, Aug 24, 2018 at 1:52 PM, volga629 at networklab.ca wrote:
> Hello Ben,
> Thank you, that works. I though as final soultion some think like
> this, not sure if possibe do in more optimized way.
>
> route[SET_SOURCE_IP] {
> $var(i) = 0;
> while($var(i) < $(var(ip_lst){csv.count})) {
> if($Ri==$(var(ip_lst){csv.value,$var(i)})) {
> #xlog("L_INFO", "Testing SHV ~>
> $(var(ip_lst){csv.value,$var(i)})");
> $var(src_ip) = $(var(ip_lst){csv.value,$var(i)});
> $var(i) = $var(i) + 1;
> }
> return;
> }
>
> route[RELAY] {
> route(RTP_MANAGE);
> if(isflagset(FLAG_FROM_PEER)) {
> $var(ip_lst) = $shv(vip_lan_lst);
> route(SET_SOURCE_IP);
> $var(src_socket) = "udp" + ":" + $var(src_ip) + ":" +
> "5060";
> force_send_socket($var(src_socket));
> } else {
> $var(ip_lst) = $shv(vip_wan_lst);
> route(SET_SOURCE_IP);
> $var(src_socket) = "udp" + ":" + $var(src_ip) + ":" +
> "5060";
> force_send_socket($var(src_socket));
> }
> t_relay();
> }
>
> volga629
>
> On Fri, Aug 24, 2018 at 11:28 AM, Ben Newlin <Ben.Newlin at genesys.com>
> wrote:
>> Volga,
>>
>> You are trying to use the csv transformation but your data is not
>> comma-separated. You are using semi-colons. I think you are trying
>> to remove the semi-colons with the regex and replace them with
>> commas? I'm not sure what the value of that is, since you could
>> just use commas to begin with. But even if you had to do it that
>> way, you would need the regex to do the substitution *before*
>> trying to access it as a csv. But as I said, easier is to just use
>> commas to begin with.
>>
>> #### Cfgutils
>> loadmodule "cfgutils.so"
>> modparam("cfgutils", "shvset",
>> "vip_lan_lst=s:192.168.10.10,192.168.10.11,192.168.10.12")
>> modparam("cfgutils", "shvset",
>> "vip_wan_lst=s:209.234.43.2,209.234.43.3,209.234.43.4")
>>
>> $var(i) = 0;
>> while($var(i) < $(shv(vip_lan_lst){csv.count})) {
>> xlog("L_INFO", "Testing SHV ~>
>> $(shv(vip_lan_lst){csv.value,$var(i)})");
>> $var(i) = $var(i) + 1;
>> }
>>
>> Ben Newlin
>>
>> On 8/24/18, 9:53 AM, "Users on behalf of volga629 at networklab.ca"
>> <users-bounces at lists.opensips.org on behalf of
>> volga629 at networklab.ca> wrote:
>>
>> Hello Ben,
>> I tried this.
>>
>> #### Cfgutils
>> loadmodule "cfgutils.so"
>> modparam("cfgutils", "shvset",
>> "vip_lan_lst=s:192.168.10.10;192.168.10.11;192.168.10.12")
>> modparam("cfgutils", "shvset",
>> "vip_wan_lst=s:209.234.43.2;209.234.43.3;209.234.43.4")
>>
>>
>> $avp(arr) = $shv(vip_lan_lst);
>> $var(i) = 0;
>> while($var(i) < $(avp(arr){csv.count})) {
>> xlog("L_INFO", "Testing SHV ~>
>> $(avp(arr){csv.value,$var(i)}{re.subst,/;/,/})");
>> $var(i) = $var(i) + 1;
>> }
>>
>> but it not working output should print each ip in xlog.
>>
>>
>>
>> volga629
>>
>> On Fri, Aug 24, 2018 at 9:46 AM, Ben Newlin
>> <Ben.Newlin at genesys.com>
>> wrote:
>> > 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
>> >
>> >
>> > _______________________________________________
>> > 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