[Serusers] Failed to call to PSTN

Steve Blair blairs at isc.upenn.edu
Wed Jan 5 16:17:38 CET 2005


What happens when you issue the command show dialplan number <called number>
on the gateway?


Wayne Chen wrote:

>Hi, sir,
>
>I reconfigure the ser.cfg as below:
>
>                if (!lookup("location")) {
>                        if(uri =~"sip:2"){
>                                log(1,"Forwarding to PSTN\n");
>                                strip(1);
>                                rewritehostport("220.130.48.254:5060");
>                                t_relay_to_udp("220.130.48.245","5060");
>                               forward(uri:host,uri:port);
>                                break;
>                        }else{
>                        sl_send_reply("404", "Not Found");
>                        log(1,"404 Not found\n");
>                        break;
>                };
>                };
>
>The call looks get down to the if sentence, because I can see the
>"Forwarding to PSTN" show on log. However, the still cannot be establish. I
>still heard busy tone. Still some things wrong on my ser.cfg?
>
>Following is the running-config of my AS5300 PSTN gateway:
>
>Current configuration : 2553 bytes
>!
>version 12.2
>no service pad
>service timestamps debug datetime msec localtime
>service timestamps log datetime msec localtime
>no service password-encryption
>!
>hostname AS5300
>!
>logging buffered 800000 debugging
>enable password xxxxx
>!
>!
>!
>resource-pool disable
>clock timezone Taiwan 8
>!
>ip subnet-zero
>no ip domain-lookup
>ip name-server 168.95.1.1
>!
>!
>voice class codec 99
> codec preference 10 g729r8
> codec preference 13 g711ulaw
>!
>voice class codec 98
> codec preference 10 g711ulaw
> codec preference 13 g729r8
>!         
>!         
>!         
>!         
>!         
>!         
>fax interface-type modem
>mta receive maximum-recipients 0
>!         
>controller T1 0
> framing esf
> clock source line primary
> linecode b8zs
> ds0-group 0 timeslots 1-24 type e&m-immediate-start
>!         
>controller T1 1
> framing esf
> clock source line secondary 1
> linecode b8zs
>!         
>controller T1 2
> framing esf
> clock source line secondary 2
> linecode b8zs
>!
>controller T1 3
> framing esf
> clock source line secondary 3
> linecode b8zs
>!
>!
>!
>interface Ethernet0
> ip address 220.130.4x.xxx 255.255.255.240
> no ip route-cache
> no ip mroute-cache
>!
>interface Serial0
> no ip address
> no ip route-cache
> no ip mroute-cache
> shutdown
> no fair-queue
> clockrate 2015232
>!
>interface Serial1
> no ip address
> no ip route-cache
> no ip mroute-cache
> shutdown
> no fair-queue
> clockrate 2015232
>!         
>interface Serial2
> no ip address
> no ip route-cache
> no ip mroute-cache
> shutdown
> no fair-queue
> clockrate 2015232
>!
>interface Serial3
> no ip address
> no ip route-cache
> no ip mroute-cache
> shutdown
> no fair-queue
> clockrate 2015232
>!
>interface FastEthernet0
> description "VoIP Packet Interface"
> ip address 172.18.66.2 255.255.255.0
> no ip route-cache
> no ip mroute-cache
> duplex auto
> speed auto
>!
>ip classless
>ip route 0.0.0.0 0.0.0.0 220.130.4x.xx
>ip route 172.18.0.0 255.255.0.0 172.18.66.254
>ip route 172.19.0.0 255.255.0.0 172.18.66.254
>no ip http server
>!
>access-list 100 permit udp any any range 1718 1719
>access-list 100 permit tcp any eq 1720 any
>access-list 100 permit tcp any any eq 1720
>!
>snmp-server community changeme RW
>snmp-server community public RO
>snmp-server enable traps tty
>!
>call rsvp-sync
>!
>voice-port 0:0
>!
>!
>mgcp profile default
>!
>dial-peer voice 300 voip
> destination-pattern 3...
> voice-class codec 99
> session protocol sipv2
> session target sip-server
>!
>dial-peer voice 400 pots
> application session
> destination-pattern 2T
> no digit-strip
> port 0:0
>!         
>sip-ua 
> retry response 2
> retry bye 2
> retry cancel 2
> sip-server ipv4:211.23.5x.xxx
>!
>!
>line con 0
> exec-timeout 0 0
>line aux 0
>line vty 0 4
> no login
>!
>end
>
>
>How can I debug this issue?
>
>Regards,
>Wayne
>
>
>On 1/5/2005 2:50 PM, "Atle Samuelsen" <clona at camaro.no> wrote:
>
>  
>
>>change the whole block with if(!lookup("location")).. to something like
>>this:
>>
>>
>>if(!lookup("location")){
>>   if(uri =~"sip:2"){
>>      route[..]
>>      break;
>>   }else{
>>     sl_send_reply("404","Ha. not found");
>>     break;
>>  };
>>};
>>
>>The reason to do this, is with your if(!lookup.. you dont get down to
>>the next ifsentence you have. so it will never hit it.
>>
>>-Atle
>>
>>* Wayne Chen <wayne.chen16 at msa.hinet.net> [050105 05:03]:
>>    
>>
>>>Thanks for quick response from Srbislav.
>>>I tried the same method, but still got "404 not found". It looks that the
>>>call meet the "if (!lookup("location"))" condition.
>>>
>>>Does the placement of IF condition matter?
>>>
>>>Thanks & Regards,
>>>Wayne
>>>
>>>On 1/4/2005 11:35 PM, "Srbislav Cvetkovic" <srbislav at city-net.com> wrote:
>>>
>>>      
>>>
>>>>hi chen,
>>>>
>>>>Here is how i do it:
>>>>
>>>># Route to PSTN Gateways(s)
>>>>       if (uri=~"^sip:9[0-9]*@XX.XX.XX.XX") {        ##  This assumes
>>>>that the caller is
>>>>           log("Forwarding to PSTN\n");                ##  registered
>>>>in our realm
>>>>           strip(1);
>>>>          rewritehostport("PSTN-GATEWAY-IP:5060");
>>>>          forward(uri:host, uri:port);
>>>>          break;
>>>>       };
>>>>
>>>>On Jan 4, 2005, at 10:27 AM, Wayne Chen wrote:
>>>>
>>>>        
>>>>
>>>>>Dear sirs,
>>>>>
>>>>>I have a AS5300 setup as PSTN and it works fine to place from PSTN to
>>>>>SIP
>>>>>gateway in IP network. Now I want to place calls to PSTN with prefix
>>>>>'2' and
>>>>>the prefix should be striped before forward to PSTN, but I always get
>>>>>"404
>>>>>not found" from SER server. Could anyone help me to debug my setting on
>>>>>ser.cfg?
>>>>>I attached my ser.cfg file as below:
>>>>>
>>>>>#
>>>>># $Id: ser.cfg,v 1.21.4.1 2003/11/10 15:35:15 andrei Exp $
>>>>>#
>>>>># simple quick-start config script
>>>>>#
>>>>>
>>>>># ----------- global configuration parameters ------------------------
>>>>>
>>>>>#debug=3         # debug level (cmd line: -dddddddddd)
>>>>>#fork=yes
>>>>>#log_stderror=no  # (cmd line: -E)
>>>>>
>>>>>/* Uncomment these lines to enter debugging mode
>>>>>debug=7
>>>>>fork=no
>>>>>log_stderror=yes
>>>>>*/
>>>>>
>>>>>check_via=no      # (cmd. line: -v)
>>>>>dns=no           # (cmd. line: -r)
>>>>>rev_dns=no      # (cmd. line: -R)
>>>>>#port=5060
>>>>>#children=4
>>>>>fifo="/tmp/ser_fifo"
>>>>>
>>>>># ------------------ module loading ----------------------------------
>>>>>
>>>>># Uncomment this if you want to use SQL database
>>>>>loadmodule "/usr/lib/ser/modules/mysql.so"
>>>>>
>>>>>loadmodule "/usr/lib/ser/modules/sl.so"
>>>>>loadmodule "/usr/lib/ser/modules/tm.so"
>>>>>loadmodule "/usr/lib/ser/modules/rr.so"
>>>>>loadmodule "/usr/lib/ser/modules/maxfwd.so"
>>>>>loadmodule "/usr/lib/ser/modules/usrloc.so"
>>>>>loadmodule "/usr/lib/ser/modules/registrar.so"
>>>>>
>>>>># Uncomment this if you want digest authentication
>>>>># mysql.so must be loaded !
>>>>>loadmodule "/usr/lib/ser/modules/auth.so"
>>>>>loadmodule "/usr/lib/ser/modules/auth_db.so"
>>>>>
>>>>># ----------------- setting module-specific parameters ---------------
>>>>>
>>>>># -- usrloc params --
>>>>>
>>>>>#modparam("usrloc", "db_mode",   0)
>>>>>
>>>>># Uncomment this if you want to use SQL database
>>>>># for persistent storage and comment the previous line
>>>>>modparam("usrloc", "db_mode", 2)
>>>>>
>>>>># -- auth params --
>>>>># Uncomment if you are using auth module
>>>>>#
>>>>>modparam("auth_db", "calculate_ha1", yes)
>>>>>#
>>>>># If you set "calculate_ha1" parameter to yes (which true in this
>>>>>config),
>>>>># uncomment also the following parameter)
>>>>>#
>>>>>modparam("auth_db", "password_column", "password")
>>>>>
>>>>># -- rr params --
>>>>># add value to ;lr param to make some broken UAs happy
>>>>>modparam("rr", "enable_full_lr", 1)
>>>>>
>>>>># -------------------------  request routing logic -------------------
>>>>>
>>>>># main routing logic
>>>>>
>>>>>route{
>>>>>
>>>>>      # initial sanity checks -- messages with
>>>>>      # max_forwards==0, or excessively long requests
>>>>>      if (!mf_process_maxfwd_header("10")) {
>>>>>            sl_send_reply("483","Too Many Hops");
>>>>>            break;
>>>>>      };
>>>>>      if ( msg:len > max_len ) {
>>>>>            sl_send_reply("513", "Message too big");
>>>>>            break;
>>>>>      };
>>>>>
>>>>>      # we record-route all messages -- to make sure that
>>>>>      # subsequent messages will go through our proxy; that's
>>>>>      # particularly good if upstream and downstream entities
>>>>>      # use different transport protocol
>>>>>      record_route();
>>>>>      # loose-route processing
>>>>>      if (loose_route()) {
>>>>>            t_relay();
>>>>>            break;
>>>>>      };
>>>>>
>>>>>      # if the request is for other domain use UsrLoc
>>>>>      # (in case, it does not work, use the following command
>>>>>      # with proper names and addresses in it)
>>>>>      if (uri==myself) {
>>>>>
>>>>>            if (method=="REGISTER") {
>>>>>
>>>>># Uncomment this if you want to use digest authentication
>>>>>#                 if (!www_authorize("iptel.org", "subscriber")) {
>>>>>#                       www_challenge("iptel.org", "0");
>>>>>#                       break;
>>>>>#                 };
>>>>>
>>>>>                  save("location");
>>>>>                  break;
>>>>>            };
>>>>>
>>>>>            # native SIP destinations are handled using our USRLOC DB
>>>>>            if (!lookup("location")) {
>>>>>                  sl_send_reply("404", "Not Found");
>>>>>                  break;
>>>>>            };
>>>>>      };
>>>>>
>>>>>        #handle PSTN calls
>>>>>        if (uri=~ "^sip:2"){
>>>>>                log(1,"Forwarding to PSTN/n");
>>>>>                strip(1);
>>>>>                rewritehostport("220.XX.XX.XX:5060");
>>>>>                if (!t_relay()) {
>>>>>                        sl_reply_error();
>>>>>                        break;
>>>>>                };
>>>>>        };
>>>>>
>>>>>
>>>>>
>>>>>      # forward to current uri now; use stateful forwarding; that
>>>>>      # works reliably even if we forward from TCP to UDP
>>>>>      if (!t_relay()) {
>>>>>            sl_reply_error();
>>>>>      };
>>>>>
>>>>>}
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>I also try t_relay_to_udp() and forward(), but both can't help to
>>>>>forward
>>>>>call to PSTN gateway.
>>>>>
>>>>>Regards,
>>>>>Wayne
>>>>>
>>>>>_______________________________________________
>>>>>Serusers mailing list
>>>>>serusers at lists.iptel.org
>>>>>http://lists.iptel.org/mailman/listinfo/serusers
>>>>>
>>>>>          
>>>>>
>>>>Srbo Cvetkovic                  | CityNet, Inc.
>>>>srbo at city-net.com            | Pittsburgh, PA
>>>>voice: 412.481.5406         | fax: 412.431.1315
>>>>
>>>>
>>>>        
>>>>
>>>_______________________________________________
>>>Serusers mailing list
>>>serusers at lists.iptel.org
>>>http://lists.iptel.org/mailman/listinfo/serusers
>>>
>>>      
>>>
>
>_______________________________________________
>Serusers mailing list
>serusers at lists.iptel.org
>http://lists.iptel.org/mailman/listinfo/serusers
>  
>

-- 
  
ISC Network Engineering
The University of Pennsylvania
3401 Walnut Street, Suite 221A
Philadelphia, PA 19104  


voice: 215-573-8396 

       215-746-8001

fax: 215-898-9348    

sip:blairs at upenn.edu




More information about the sr-users mailing list