<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>Message</TITLE>
<META http-equiv=Content-Type content="text/html; charset=us-ascii">
<META content="MSHTML 6.00.2800.1476" name=GENERATOR></HEAD>
<BODY>
<DIV><SPAN class=233392912-12042005><FONT face=Arial color=#0000ff 
size=2>Forgive my ignorance, why is NAT a bottleneck? Are you refering to CPU 
load or managibility? With alot of load balancers, NAT is the only way to 
go.</FONT></SPAN></DIV>
<BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px">
  <DIV></DIV>
  <DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left><FONT 
  face=Tahoma size=2>-----Original Message-----<BR><B>From:</B> Tina 
  [mailto:kramarv@yahoo.com] <BR><B>Sent:</B> Monday, April 11, 2005 11:37 
  AM<BR><B>To:</B> Java Rockx<BR><B>Cc:</B> 
  serusers@lists.iptel.org<BR><B>Subject:</B> Re: [Serusers] still no help - usrloc 
  synchronization<BR><BR></FONT></DIV>
  <DIV>Pretty good news, Paul. I've only tested IP tunneling. It worked for me. 
  The problem I described&nbsp;was born in&nbsp;my thoughts. I've also read some 
  complaints from SIP-LVS users. The only configuration where Call-Id stickness 
  does not necessary is LVS-NAT. Unfortunately, NAT becomes bottleneck very 
  fast.</DIV>
  <DIV><BR><BR><B><I>Java Rockx &lt;javarockx@gmail.com&gt;</I></B> wrote:</DIV>
  <BLOCKQUOTE class=replbq 
  style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #1010ff 2px solid">Tina,<BR><BR>I 
    wish I had more information on that, but that LVS stuff is a black art to 
    me. One of our engineers whipped up an LVS configuration that seems quite 
    happy with the Call-ID "stickness" you described. All I can say right now is 
    that it is apparently possible to do this with 100% open source. (i'm 
    keeping my fingers crossed) :-)<BR><BR>Regards,<BR>Paul<BR><BR>
    <DIV><SPAN class=gmail_quote>On Apr 10, 2005 11:03 PM, <B 
    class=gmail_sendername>Tina</B> &lt;<A 
    href="mailto:kramarv@yahoo.com">kramarv@yahoo.com</A>&gt; wrote:</SPAN> 
    <BLOCKQUOTE class=gmail_quote 
    style="PADDING-LEFT: 1ex; MARGIN: 0pt 0pt 0pt 0.8ex; BORDER-LEFT: rgb(204,204,204) 1px solid">
      <DIV>Paul,</DIV>
      <DIV>thanks a lot, it helps a lot. The thing I do not understand - how you 
      are going to solve call-id stickness (see my another post). Since we're 
      also use LVS I had to find something proprietary, I am afraid this is not 
      a best solution, but the only&nbsp;I have today.</DIV>
      <DIV><SPAN class=e id=q_1032f368bae8ae67_1>
      <DIV>KRs,</DIV>
      <DIV>Tina<BR><BR><B><I>Java Rockx &lt;<A 
      onclick="return top.js.OpenExtLink(window,event,this)" 
      href="mailto:javarockx@gmail.com" 
      target=_blank>javarockx@gmail.com</A>&gt;</I></B> wrote:</DIV>
      <BLOCKQUOTE 
      style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: rgb(16,16,255) 2px solid">Tina,<BR><BR>I 
        really don't know how the LVS server is configured because our network 
        guy that we acquired from RedHat set all that stuff up. I do know that 
        we basically have this set up:<BR><BR>I hope the formatting goes well 
        :-)<BR><BR>+-----------+&nbsp;&nbsp;&nbsp;&nbsp; 
        +----------+&nbsp;&nbsp;&nbsp;&nbsp; +-------+&nbsp;&nbsp;&nbsp; 
        +---------+&nbsp;&nbsp; +--------------------+<BR>| internet |------| 
        Cisco&nbsp; |------| LVS |-----| Cisco |----| 
        Application&nbsp;&nbsp;&nbsp;&nbsp; |<BR>| cloud&nbsp;&nbsp;&nbsp; 
        |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 3600&nbsp;&nbsp; 
        |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        |&nbsp;&nbsp;&nbsp;&nbsp; | 3600&nbsp; |&nbsp;&nbsp;&nbsp; | &amp; DB 
        Servers |<BR>+-----------+&nbsp;&nbsp;&nbsp;&nbsp; 
        +----------+&nbsp;&nbsp;&nbsp; +--------+&nbsp;&nbsp;&nbsp; 
        +---------+&nbsp;&nbsp; +--------------------+<BR><BR>So the 
        "Application &amp; DB Servers" box represents multiple servers (all are 
        dedicated to their service). These include SER, MySQL, Apache, 
        configuration management, monitoring, RTP proxies, etc.<BR><BR>MySQL is 
        active-active so we have two-way replication. We only have 2 MySQL 
        servers. And this is all we plan on ever having as MySQL is more than 
        capable of handling anything ser can throw at it (given the right 
        hardware).<BR><BR>Each ser server is 100% oblivious to other SER servers 
        except for when handling REGISTER messages. Here is basically the 
        ser.cfg for each SER server:<BR><BR>listen=<A 
        onclick="return top.js.OpenExtLink(window,event,this)" 
        href="http://10.3.0.221/" target=_blank>10.3.0.221</A> # this will be <A 
        onclick="return top.js.OpenExtLink(window,event,this)" 
        href="http://10.3.0.222/" target=_blank>10.3.0.222</A> on the peer sip 
        proxy<BR>modparam("usrloc", "db_mode", 1) # write-through<BR><BR>route 
        {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (method=="REGISTER") 
        {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        if (src_ip==<A onclick="return top.js.OpenExtLink(window,event,this)" 
        href="http://10.3.0.221/" target=_blank>10.3.0.221</A>) { # ip of peer 
        ser 
        proxy<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        save_memory("location");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        } else 
        {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        save("location");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        t_replicate("<A onclick="return top.js.OpenExtLink(window,event,this)" 
        href="http://10.3.0.222/" 
        target=_blank>10.3.0.222</A>");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        };<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };<BR>}<BR><BR>We have 
        identifed a deficiency in the usrloc module urecord.c file whereby when 
        using write-though mode the save_memory() function still attempt to 
        update MySQL. This is a very bad thing because it causes a primary key 
        violation on the location table.<BR><BR>Yesterday I posted a patch to 
        serdev to fix this, but today we identified another case where 
        save_memory() tried to insert in to the location table. I'll post a 
        revised patch to serdev as soon as I get a chance.<BR><BR>So here is 
        what happens. Assume I have two sip routers and two MySQL servers 
        as:<BR><BR>sip-01 is <A 
        onclick="return top.js.OpenExtLink(window,event,this)" 
        href="http://10.3.0.221/" target=_blank>10.3.0.221</A><BR>sip-02 is <A 
        onclick="re&#13;&#10; turn&#13;&#10; top.js.OpenExtLink(window,event,this)" 
        href="http://10.3.0.222/" target=_blank>10.3.0.222</A><BR>db-01 is <A 
        onclick="return top.js.OpenExtLink(window,event,this)" 
        href="http://10.2.0.21/" target=_blank>10.2.0.21</A><BR>db-02 is <A 
        onclick="return top.js.OpenExtLink(window,event,this)" 
        href="http://10.2.0.22/" target=_blank>10.2.0.22</A><BR><BR>Now let's 
        just assume that sip-01 is connected to db-01 and sip-02 is connected to 
        db-02.<BR><BR>When a SIP UA connects to a sip router (via LVS), assume 
        sip-01 in this example and REGISTERs, sip-01 will call save("location") 
        which updates/inserts to the location table. sip-01 then calls 
        t_replicate to sip-02. <BR><BR>sip-02 recieves the REGISTER message and 
        calls save_memory("location") to update its in-memory cache only. It 
        should never hit db-02.<BR><BR>Now db-01 eventually (within a second or 
        two) replicates to db-02 and now sip-02 is good to go, even in the event 
        of a restart.<BR><BR>Our difficulties mostly surrounded the fact th at 
        ser was inserting the physical IP of eth0 on the server as the top VIA 
        rather than the VIP as required. We solved this by using 
        record_route_preset() and passing the VIP as the IP. We also had to 
        bring up a dummy interface in order to get ser to honor the 
        VIP.<BR><BR>Hope this helps.<BR><BR>Regards,<BR>Paul<BR><BR><BR>
        <DIV><SPAN class=gmail_quote>On Apr 8, 2005 7:19 PM, <B 
        class=gmail_sendername>Tina</B> &lt;<A 
        onclick="return top.js.OpenExtLink(window,event,this)" 
        href="mailto:kramarv@yahoo.com" target=_blank>kramarv@yahoo.com</A>&gt; 
        wrote:</SPAN> 
        <BLOCKQUOTE class=gmail_quote 
        style="PADDING-LEFT: 1ex; MARGIN: 0pt 0pt 0pt 0.8ex; BORDER-LEFT: rgb(204,204,204) 1px solid">
          <DIV>Paul,</DIV>
          <DIV>we are using LVS as well. It creates template connection 
          according to source Ip (e.g. UAC) and forwards to one of the tunneled 
          IP. I tested this a couple of weeks ago, ser was happy and inserted 
          VIP into via header, the only issue is to route the calls into right 
          server.</DIV>
          <DIV>I agree, there is no such thing as SIP-level clustering. However, 
          how would you solve location problem by DB replication - 1) usrloc 
          does not update from DB....2) even though, I am afraid it can become 
          bottleneck and lock down users ...</DIV>
          <DIV>&nbsp;</DIV>
          <DIV>KRs,</DIV>
          <DIV>Tina</DIV>
          <DIV><SPAN>
          <DIV>&nbsp;</DIV>
          <DIV><BR><B><I>Java Rockx &lt;<A 
          onclick="return top.js.OpenExtLink(window,event,this)" 
          href="mailto:javarockx@gmail.com" 
          target=_blank>javarockx@gmail.com</A>&gt;</I></B> wrote:</DIV>
          <BLOCKQUOTE 
          style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: rgb(16,16,255) 2px solid">See 
            my inline comments.<BR><BR>Regards,<BR>Paul<BR><BR>
            <DIV><SPAN class=gmail_quote>On Apr 8, 2005 1:08 PM, <B 
            class=gmail_sendername>Greger V. Teigre</B> &lt;<A 
            onclick="return top.js.OpenExtLink(window,event,this)" 
            href="mailto:greger@teigre.com" 
            target=_blank>greger@teigre.com</A>&gt; wrote:</SPAN> 
            <BLOCKQUOTE class=gmail_quote 
            style="PADDING-LEFT: 1ex; MARGIN: 0pt 0pt 0pt 0.8ex; BORDER-LEFT: rgb(204,204,204) 1px solid">
              <DIV>Hi Tina,</DIV>
              <DIV>&nbsp;</DIV>
              <DIV>&gt; I enjoy reading your posts, thanks a lot for the great 
              work you are<BR>&gt; doing for ser users!&nbsp;<BR></DIV>
              <DIV>Thanks :-)</DIV>
              <DIV><BR>&gt; I am going to consider that kind of scenario as well 
              (load balancer<BR>&gt; returning Virtual IP address). I think for 
              such configuration server<BR>&gt; side has to keep session 
              information and always forward a call to the<BR>&gt; right 
              server.&nbsp;&nbsp;&nbsp;<BR></DIV>
              <DIV>I believe the load balancer can be in front 
              and&nbsp;transparantly translate addresses in the SIP 
              messages:</DIV>
              <DIV>User agent always sees a.b.c.d</DIV>
              <DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              |</DIV>
              <DIV>Load balancer with public IP a.b.c.d</DIV>
              <DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              |</DIV>
              <DIV>ser1 (<A 
              onclick="return top.js.OpenExtLink(window,event,this)" 
              href="http://10.0.0.2/" 
              target=_blank>10.0.0.2</A>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
              ser2 (<A onclick="return top.js.OpenExtLink(window,event,this)" 
              href="http://10.0.0.3/" target=_blank>10.0.0.3</A>)</DIV>
              <DIV>&nbsp;</DIV>
              <DIV>
              <DIV>Paul: You have a similar load-balancing solution, right? Do 
              you use a commerical load balancer that you can reveal the name 
              of? :-)</DIV></DIV></BLOCKQUOTE>
            <DIV><BR>Our platform is 100% open source. Our load balancer is LVS. 
            I have no idea how it actually works. One if our engineers from 
            RedHat set all that networking stuff up and it's way beyond 
            me.<BR>&nbsp;</DIV><BR>
            <BLOCKQUOTE class=gmail_quote 
            style="PADDING-LEFT: 1ex; MARGIN: 0pt 0pt 0pt 0.8ex; BORDER-LEFT: rgb(204,204,204) 1px solid">
              <DIV>The load balancer need to understand SIP (sort of) and use 
              something (ex. IP address of user agent) to select SER server to 
              send to and rewrite incoming to <A 
              onclick="return top.js.OpenExtLink(window,event,this)" 
              href="http://10.0.0.2/" target=_blank>10.0.0.2</A> and <A 
              onclick="return top.js.OpenExtLink(window,event,this)" 
              href="http://10.0.0.3/" target=_blank>10.0.0.3</A> respectively 
              and outgoing to a.b.c.d.&nbsp; ser1 and ser2 will happily believe 
              they are alone and communicate directly with user agent using 
              their own private addresses.&nbsp; Both should know about all 
              users (usrloc).&nbsp; Paul just recently posted a small patch for 
              a setup where they use two-way replication between 
            two</DIV></BLOCKQUOTE>
            <DIV><BR>That small patch will need a slight revision. We discovered 
            through further testing that that patch only fixed attempts to 
            INSERT into the location table. We didn't cover the UPDATE route, 
            unfortunately. I believe Andrew has that patch done and is testing 
            it. So&nbsp; I'll post it to serdev as soon as we know it works - 
            possibly later today.<BR>&nbsp;</DIV><BR>
            <BLOCKQUOTE class=gmail_quote 
            style="PADDING-LEFT: 1ex; MARGIN: 0pt 0pt 0pt 0.8ex; BORDER-LEFT: rgb(204,204,204) 1px solid">
              <DIV>mysql servers and where each SER instance will save all 
              REGISTERs it receives from user agents, but only save to memory 
              those replicated from the other SER peer. Klaus pointed out that 
              the same can be done by not doing mysql replication, but have one 
              DB for each SER and just use t_replicate() and save_noreply() (for 
              two servers, for more than two you need to use 
              forward_tcp()).</DIV>
              <DIV>&nbsp;</DIV>
              <DIV>I have heard complaints that&nbsp;this approach will generate 
              too much network traffic. Also, t_replicate()&nbsp;does not 
              guarantee delivery of the replication (forward_tcp is better, but 
              not fool proof).&nbsp; So, the "best" solution would 
              probably&nbsp;be to hope that Paul's</DIV></BLOCKQUOTE>
            <DIV><BR>I fully agree. Replication at the sip proxy level, IMHO, is 
            not a good idea. From a purist point of view, replication is not a 
            function of a SIP router - nor should it be. It is a function of the 
            database and we believe that the MySQL replication is a better 
            approach from a speed and reliabilty point of view - not to mention 
            that it simplifies the tasks of the sip router.<BR>&nbsp;</DIV><BR>
            <BLOCKQUOTE class=gmail_quote 
            style="PADDING-LEFT: 1ex; MARGIN: 0pt 0pt 0pt 0.8ex; BORDER-LEFT: rgb(204,204,204) 1px solid">
              <DIV>recent TCP/UDP patch for network access to FIFO commands get 
              included in the CVS. Then, a new replication module should use 
              XMLRPC or whatever protocol the patch is using to forward (in a 
              guaranteed mode) the usrloc information, which then would be 
              injected directly into SER's memory, just like save() would, and 
              of course&nbsp;in whatever db_mode you would like.&nbsp; The 
              replicaton module would have to keep a queue (of course, flushed 
              to a DB or something) in case of network problems, so that the 
              replication would be done (sooner or later) regardless of 
              problems.</DIV>
              <DIV>&nbsp;&nbsp;&nbsp; Of course, this is a major undertaking, so 
              for most replication scenarioes, I would think the forward_tcp() + 
              save_noreply() would work just fine.</DIV>
              <DIV>&nbsp;&nbsp;&nbsp; </DIV>
              <DIV>g-)</DIV>
              <DIV><BR>&gt; "Greger V. Teigre" &lt;<A 
              onclick="return top.js.OpenExtLink(window,event,this)" 
              href="mailto:greger@teigre.com" 
              target=_blank>greger@teigre.com</A>&gt; wrote:<BR>&gt; I was 
              thinking about a load balancing scenario where the load<BR>&gt; 
              balancer will replace the IP addresses. <BR>&gt; g-)<BR>&gt; 
              <BR>&gt; ---- Original Message ----<BR>&gt; From: Tina<BR>&gt; To: 
              Greger V. Teigre<BR>&gt; Sent: Wednesday, April 06, 2005 09:45 
              PM<BR>&gt; Subject: Re: [Serusers] still no help - usrloc 
              synchronization<BR>&gt; <BR>&gt;&gt; Thank you for givingme the 
              scenario with "restricted IP" NAT, I am<BR>&gt;&gt; starting to 
              find some acceptable solution.<BR>&gt;&gt; Unfortunately, 
              "one-public-IP" approach is not free from problems<BR>&gt;&gt; 
              also. If your SIP router inserts this "one-public-IP" into the 
              VIA<BR>&gt;&gt; header, the reply routing goes via wrong SIP 
              server...<BR>&gt;&gt; If your SIP server inserts its 
              real-IP-address - the scenario<BR>&gt;&gt; mentioned above is s 
              till not resolved.<BR>&gt;&gt; Any comments?<BR>&gt;&gt; 
              Tina<BR>&gt;&gt; <BR>&gt;&gt; "Greger V. Teigre" &lt;<A 
              onclick="return top.js.OpenExtLink(window,event,this)" 
              href="mailto:greger@teigre.com" 
              target=_blank>greger@teigre.com</A>&gt; wrote:<BR>&gt;&gt; See 
              inline.<BR>&gt;&gt; <BR>&gt;&gt;&gt; If you use DNS server for 
              load balancing... the client receives one<BR>&gt;&gt;&gt; of your 
              domain IP addresses according to SRV. I don't see 
              the<BR>&gt;&gt;&gt; problem <BR>&gt;&gt;&gt; with a call here, 
              cause UAC asks t! he address only once (before<BR>&gt;&gt;&gt; 
              sending INVITE). UAC already has the IP for BYE/reINVITEs. So 
              why<BR>&gt;&gt;&gt; would you replicate INVITEs?<BR>&gt;&gt; 
              <BR>&gt;&gt; I would never replicate INVITEs, I would just make 
              sure that they are<BR>&gt;&gt; proxied through the correct SER 
              server (i.e. IP).<BR>&gt;&gt; <BR>&gt;&gt; The problems depends on 
              your setup. If you have SERs with different<BR>&gt;&gt; IPs, ex 
              UA1 has registered with server&nbsp; A and UA2 ha s registered 
              with<BR>&gt;&gt; server B: If UA2 wants to call UA1 and UA is 
              behind an IP restricted<BR>&gt;&gt; NAT, server A is stored in the 
              NAT table of the NAT in front of UA1.<BR>&gt;&gt; If server B 
              sends an INVITE to UA1, the INVITE will be refused by<BR>&gt;&gt; 
              UA1's NAT.<BR>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; This is why a "one 
              public IP" in front of a load balancing<BR>&gt;&gt; cluster 
              probably is a good way to go.<BR>&gt;&gt; <BR>&gt;&gt;&gt; If you 
              use IPVS/LVS... I believe you can force SER to insert 
              it's<BR>&gt;&gt;&gt; public IP into VIA,! so there is no problem 
              with replies. With<BR>&gt;&gt;&gt; regard <BR>&gt;&gt;&gt; to 
              another requests, I believe load balancer keeps 
              connection<BR>&gt;&gt;&gt; template, then when another request 
              comes it would be forwarded to<BR>&gt;&gt;&gt; the same 
              ser.<BR>&gt;&gt; <BR>&gt;&gt; Yes. There are different "keys" to 
              use to load balance SIP messages.<BR>&gt;&gt; One good way from a 
              NAT point of view is to use originating IP<BR>&gt; &gt; 
              address.&nbsp; What you must remember is that the problem is not 
              on the<BR>&gt;&gt; server side, but on the client side.&nbsp; The 
              NAT will in many situations<BR>&gt;&gt; stop incoming UDP packets 
              if the originating ip:port is not already<BR>&gt;&gt; stored in 
              the NAT table.&nbsp; The Via header does not matter for the 
              NAT.<BR>&gt;&gt; g-)<BR>&gt;&gt; <BR>&gt;&gt;&gt; Any 
              comments?<BR>&gt;&gt;&gt; <BR>&gt;&gt;&gt; "Greger V. Teigre" 
              &lt;<A onclick="return top.js.OpenExtLink(window,event,this)" 
              href="mailto:greger@teigre.com" 
              target=_blank>greger@teigre.com</A>&gt; wrote:<BR>&gt;&gt;&gt; 
              Yes, I believe that is so. But still you get a problem if the NAT 
              is<BR>&gt;&gt;&gt; restricted, port-restricted or symmetric... The 
              best would be to<BR>&gt;&gt;&gt; load&gt;&gt; balance and always 
              make sure that a given client is handled<BR>&gt;&gt;&gt; through a 
              given <BR>&gt;&gt;&gt; SER (REGISTER and INVITEs). That includes 
              forwarding INVITEs from<BR>&gt;&gt;&gt; one <BR>&gt;&gt;&gt; SER 
              to<BR>&gt;&gt;&gt; another... OR you must load balance in front of 
              your servers with<BR>&gt;&gt;&gt; one <BR>&gt;&gt;&gt; 
              common<BR>&gt;&gt;&gt; public IP.<BR>&gt;&gt;&gt; 
              g-)<BR>&gt;&gt;&gt; <BR>&gt;&gt;&gt; Matt Schulte 
              wrote:<BR>&gt;&gt;&gt;&gt; Ack, I didn't even think about NAT. 
              Would these be added before it<BR>&gt;&gt;&gt;&gt; gets sent off 
              to the second proxy? ie:<BR>&gt;&gt;&gt;&gt; <BR>&gt;&gt;&gt;&gt; 
              if (!src_ip==<A 
              onclick="return top.js.OpenExtLink(window,event,this)" 
              href="http://blah.netlogic.net/" 
              target=_blank>blah.netlogic.net</A>) {<BR>&gt;&gt;&gt;&gt; 
              add_rcv_param();<BR>&gt;&gt;&gt;&gt; t_replicate("<A 
              onclick="return top.js.OpenExtLink(window,event,this)" 
              href="http://blah.netlogic.net/" 
              target=_blank>blah.netlogic.net</A>", "999");<BR>&gt;&gt;&gt;&gt; 
              };<BR>&gt;&gt;&gt;&gt; <BR>&gt;&gt;&gt;&gt; -----Original 
              Message-----<BR>&gt;&gt;&gt;&gt; From: Greger V. Teigre [mailto:<A 
              onclick="return top.js.OpenExtLink(window,event,this)" 
              href="mailto:greger@tei gre.com" 
              target=_blank>greger@teigre.com</A>]<BR>&gt;&gt;&gt;&gt; Sent: 
              Tuesday, April 05, 2005 7:49 AM<BR>&gt;&gt;&gt;&gt; To: Matt 
              Schulte; <A onclick="return top.js.OpenExtLink(window,event,this)" 
              href="mailto:kramarv@yahoo.com" 
              target=_blank>kramarv@yahoo.com</A><BR>&gt;&gt;&gt;&gt; ! ; Cc: <A 
              onclick="return top.js.OpenExtLink(window,event,this)" 
              href="mailto:serusers@lists.iptel.org" 
              target=_blank>serusers@lists.iptel.org</A><BR>&gt;&gt;&gt;&gt; Subject: 
              ! Re: [Serusers] still no help - usrloc 
              synchronization<BR>&gt;&gt;&gt;&gt; <BR>&gt;&gt;&gt;&gt; 
              <BR>&gt;&gt;&gt;&gt; Well, you still have the NAT issues unless 
              you do load balancing<BR>&gt;&gt;&gt;&gt; and 
              your<BR>&gt;&gt;&gt;&gt; SER servers have the same public 
              IP.<BR>&gt;&gt;&gt;&gt; Have you looked at 0.9.0 nathelper 
              function add_rcv_param() ? It<BR>&gt;&gt;&gt;&gt; will add 
              received info to the contact header for the other SER 
              to<BR>&gt;&gt;&gt;&gt; process. Haven't really tried 
              yet...<BR>&gt;&gt;&gt;&gt; g-)<BR>&gt;&gt;&gt;&gt; 
              <BR>&gt;&gt;&gt;&gt; Matt Schulte wrote:<BR>&gt;&gt;&gt;&gt;&gt; 
              I'm starting to lean this direction, using t_replicate and all. 
              I<BR>&gt;&gt;&gt;&gt;&gt; could never get usrloc (db mode) to 
              function properly..<BR>&gt;&gt;&gt;&gt;&gt; t_replicate 
              is<BR>&gt;&gt;&gt;&gt; <BR>&gt;&gt;&gt;&gt;&gt; a dirty but very 
              effective workaround.<BR>&gt;&gt;&gt;&gt;&gt; 
              <BR>&gt;&gt;&gt;&gt;&gt; -----Original 
              Message-----<BR>&gt;&gt;&gt;&gt;&gt; From: Greger V. Teigre 
              [mailto:<A onclick="return top.js.OpenExtLink(window,event,this)" 
              href="mailto:greger@teigre.com" 
              target=_blank>greger@teigre.com</A>]<BR>&gt;&gt;&gt;&gt;&gt; Sent: 
              Saturday, April 02,! 2005 1:33 AM<BR>&gt;&gt;&gt;&gt;&gt; To: <A 
              onclick="return top.js.OpenExtLink(window,event,this)" 
              href="mailto:kramarv@yahoo.com" 
              target=_blank>kramarv@yahoo.com</A><BR>&gt;&gt;&gt;&gt;&gt; Cc: <A 
              onclick="return top.js.OpenExtLink(window,event,this)" 
              href="mailto:serusers@lists.iptel.org" 
              target=_blank>serusers@lists.iptel.org</A><BR>&gt;&gt;&gt;&gt;&gt; 
              Subject: Re: [Serusers] still ! no help - usrloc 
              synchronization<BR>&gt;&gt;&gt;&gt;&gt; <BR>&gt;&gt;&gt;&gt;&gt; 
              <BR>&gt;&gt;&gt;&gt;&gt; Have a look at this 
              thread:<BR>&gt;&gt;&gt;&gt;&gt; <A 
              onclick="return top.js.OpenExtLink(window,event,this)" 
              href="http://lists.iptel.org/pipermail/serusers/2005-January/014669.html" 
              target=_blank>http://lists.iptel.org/pipermail/serusers/2005-January/014669.html</A><BR>&gt;&gt;&gt;&gt;&gt; 
              g-)<BR>&gt;&gt;&gt;&gt;&gt; <BR>&gt;&gt;&gt;&gt;&gt; Java Rockx 
              wrote:<BR>&gt;&gt;&gt;&gt;&gt;&gt; 
              Tina,<BR>&gt;&gt;&gt;&gt;&gt;&gt; <BR>&gt;&gt;&gt;&gt;&gt;&gt; I 
              thought I saw you post the other day that you did not want 
              to<BR>&gt;&gt;&gt;&gt;&gt;&gt; use t_replicate(), however, this is 
              probably your best bet to<BR>&gt;&gt;&gt;&gt;&gt;&gt; getting 
              this<BR>&gt;&gt;&gt;&gt;&gt; <BR>&gt;&gt;&gt;&gt;&gt;&gt; to work, 
              IMHO.<BR>&gt;&gt;&gt;&gt;&gt;&gt; <BR>&gt;&gt;&gt;&gt;&gt;&gt; 
              Regards,<BR>&gt;&gt;&gt;&gt;&gt;&gt; 
              Paul<BR>&gt;&gt;&gt;&gt;&gt;&gt; <BR>&gt;&gt;&gt;&gt;&gt;&gt; On 
              Apr 1, 2005 4:08 PM, Tina wrote:<BR>&gt;&gt;&gt;&gt;&gt; ! 
              &gt;&gt;<BR>&gt;&gt;&gt;&gt;&gt;&gt; ! ;&gt; Hi, please help me, 
              I'm stuck with it!!!!!<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; I am trying 
              to set up several sers with a shared MySQL 
              database<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; for location 
              service.<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; 
              <BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; I set in each 
              ser.cfg:<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; 
              <BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; modparam("usrloc", "db_mode", 
              2)<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; 
              modparam("usrloc",<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; 
              "db_url","<A>sql://ser:heslo@192.168.25.163/ser</A>")<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; 
              <BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; and the servers are not 
              synchronized.<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; The I 
              set<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; modparam("usrloc", "db_mode", 
              2)<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; 
              <BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; <BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; 
              made UAC (Xlite) register to one of the 
              servers.<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; I see it via usrloc, but 
              there is no record in "location" 
              mySQL<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; table....So others do not 
              see the client and I'm unable to 
              make<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; 
              calls....<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; 
              <BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; <BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; 
              Please help how to work with usrloc and 
              mySQL...<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; 
              <BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; 
              Tina,<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; software 
              engineer<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; 
              <BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; 
              ________________________________<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; 
              Do you Yahoo!?<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; Better first dates. 
              More second dates. Yahoo! 
              Personals<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; 
              <BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; <BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; 
              _______________________________________________<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; 
              Serusers mailing list<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; <A 
              onclick="return top.js.OpenExtLink(window,event,this)" 
              href="mailto:serusers@lists.iptel.org" 
              target=_blank>serusers@lists.iptel.org</A><BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; 
              <A onclick="return top.js.OpenExtLink(window,event,this)" 
              href="http://lists.iptel.org/mailman/listinfo/serusers" 
              target=_blank>http://lists.iptel.org/mailman/listinfo/serusers</A><BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; 
              <BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; <BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; 
              <BR>&gt;&gt;&gt;&gt;&gt;&gt; <BR>&gt;&gt;&gt;&gt;&gt;&gt; 
              _______________________________________________<BR>&gt;&gt;&gt;&gt;&gt;&gt; 
              Serusers mailing list<BR>&gt;&gt;&gt;&gt;&gt;&gt; <A 
              onclick="return top.js.OpenExtLink(window,event,this)" 
              href="mailto:serusers@lists.iptel.org" 
              target=_blank>serusers@lists.iptel.org</A><BR>&gt;&gt;&gt;&gt;&gt;&gt; 
              <A onclick="return top.js.OpenExtLink(window,event,this)" 
              href="http://lists.iptel.org/mailman/listinfo/serusers" 
              target=_blank>http://lists.iptel.org/mailman/listinfo/serusers</A> 
              <BR>&gt;&gt;&gt;&gt;&gt; <BR>&gt;&gt;&gt;&gt;&gt; 
              _______________________________________________<BR>&gt;&gt;&gt;&gt;&gt; 
              Serusers mailing list<BR>&gt;&gt;&gt;&gt;&gt; <A 
              onclick="return top.js.OpenExtLink(window,event,this)" 
              href="mailto:serusers@lists.iptel.org" 
              target=_blank>serusers@lists.iptel.org</A> <A 
              onclick="return top.js.OpenExtLink(window,event,this)" 
              href="http://lists.iptel.org/mailman/listinfo/serusers" 
              target=_blank>http://lists.iptel.org/mailman/listinfo/serusers</A><BR>&gt;&gt;&gt; 
              <BR>&gt;&gt;&gt; <BR>&gt;&gt;&gt; <BR>&gt;&gt;&gt; 
              <BR>&gt;&gt;&gt; Yahoo! Messenger<BR>&gt;&gt;&gt; Show us what our 
              next emoticon should look like. Join the fun.<BR>&gt;&gt; 
              <BR>&gt;&gt; <BR>&gt;&gt; Do you Yahoo!?<BR>&gt;&gt; Better first 
              dates. More second dates. Yahoo! Personals<BR>&gt; <BR>&gt; 
              <BR>&gt; Yahoo! Messenger<BR>&gt; Show us what our next emoticon 
              should look like. Join the 
              fun.</DIV><BR>_______________________________________________<BR>Serusers 
              mailing list<BR><A 
              onclick="return&#13;&#10; top.js.OpenExtLink(window,event,this)" 
              href="mailto:serusers@lists.iptel.org" 
              target=_blank>serusers@lists.iptel.org</A><BR><A 
              onclick="return top.js.OpenExtLink(window,event,this)" 
              href="http://lists.iptel.org/mailman/listinfo/serusers" 
              target=_blank>http://lists.iptel.org/mailman/listinfo/serusers</A><BR><BR><BR></BLOCKQUOTE></DIV><BR></BLOCKQUOTE></SPAN></DIV><SPAN>
          <P></P>
          <HR SIZE=1>
          Do you Yahoo!?<BR><A 
          onclick="return top.js.OpenExtLink(window,event,this)" 
          href="http://us.rd.yahoo.com/my/navbar/sethp/*http://www.yahoo.com/r/hs" 
          target=_blank>Make Yahoo! your home page</A> 
          <P></P></SPAN></BLOCKQUOTE></DIV><BR></BLOCKQUOTE></SPAN></DIV><SPAN 
      class=ad>
      <P>__________________________________________________<BR>Do You 
      Yahoo!?<BR>Tired of spam? Yahoo! Mail has the best spam protection around 
      <BR><A onclick="return top.js.OpenExtLink(window,event,this)" 
      href="http://mail.yahoo.com/" target=_blank>http://mail.yahoo.com</A> 
      </P></SPAN></BLOCKQUOTE></DIV><BR></BLOCKQUOTE>
  <P>__________________________________________________<BR>Do You 
  Yahoo!?<BR>Tired of spam? Yahoo! Mail has the best spam protection around 
  <BR>http://mail.yahoo.com </P></BLOCKQUOTE></BODY></HTML>