[Serusers] SER --> PSTN

Ranga Rao Vutukuru rangarao.v at gmail.com
Mon Oct 25 08:36:47 CEST 2004


Ser doesnt care your Codec.

There may be some rules about header fields that your PSTN provider is
insisting.
Rules will be like, 
      From username be the DID that was assigned by Provider.
      Contact address be your server's address.

These are only few to note. There may be other rules.

If you see a reply "403 forbidden", you can assume that the issue is
with header rules.

Asterisk sits in the middle but not as proxy. It creates the INVITE
message afresh and sends it to carrier. So, most of the rules are
automatically satisfied.

You may  have to find out from your carrier about these rules.

-Ranga

On Mon, 22 Nov 2004 01:01:57 -0600, Carlos Maynard
<carlos at hottelephone.com> wrote:
> I am moving to SER from Asterisk for the radius auth and accounting.
> 
> I finally made SER register and authenticate my test endpoint (Cisco ATA
> 186) :D
> i can dial to my home phone and my regular phone rings... but when i
> pick up i have dialtone...
> i'm pasting SER's output and my ser.cfg below. A codec problem? My
> carrier is using G729.
> 
> I am moving to SER from asterisk... on asterisk i can place callls from
> this same ATA box trough my carrier.
> Does SER care what the Codec is ?
> 
> Thanks in advance,
> 
> Carlos Maynard Jr.
> 
> ser.cfg:
> --------
> listen=66.118.238.201
> 
> debug=9
> fork=no
> log_stderror=no
> 
> check_via=no          # (cmd. line: -v)
> dns=no                # (cmd. line: -r)
> rev_dns=no            # (cmd. line: -R)
> fifo="/tmp/ser_fifo"
> 
> loadmodule "/usr/local/lib/ser/modules/mysql.so"
> loadmodule "/usr/local/lib/ser/modules/auth_radius.so"
> loadmodule "/usr/local/lib/ser/modules/sl.so"
> loadmodule "/usr/local/lib/ser/modules/tm.so"
> loadmodule "/usr/local/lib/ser/modules/rr.so"
> loadmodule "/usr/local/lib/ser/modules/maxfwd.so"
> loadmodule "/usr/local/lib/ser/modules/usrloc.so"
> loadmodule "/usr/local/lib/ser/modules/registrar.so"
> loadmodule "/usr/local/lib/ser/modules/auth.so"
> loadmodule "/usr/local/lib/ser/modules/auth_db.so"
> 
> modparam("usrloc", "db_mode",   0)
> 
> modparam("auth_db", "calculate_ha1", yes)
> 
> modparam("auth_db", "password_column", "password")
> modparam("auth_db", "db_url", "mysql://ser:heslo@66.118.238.198/ser")
> modparam("auth_radius",
> "radius_config","/usr/local/etc/radiusclient/radiusclient.conf")
> 
> modparam("rr", "enable_full_lr", 1)
> 
> route{
> 
>        log(1, "\n**********************ROUTING\n");
> 
>        # 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;
>        };
> 
>        record_route();
> 
>        if (loose_route()) {
>                log(1, "\n**********************LOOSE ROUTE\n");
>                t_relay();
>                break;
>        };
> 
>        if (uri==myself) {
>                log(1, "\n**********************MYSELF\n");
> 
>                if (method=="REGISTER") {
>                        log(1, "REGISTER: Authenticating user\n");
> 
>                        if (!radius_www_authorize("")) {
>                                log(1, "REGISTER: challenging user\n");
>                                www_challenge("", "0");
>                                break;
>                        };
> 
>                        save("location");
>                        break;
>                };
> 
>                if (method=="INVITE") {
>                        log(1, "INVITE\n");
>                        setflag(1); /* set for accounting (the same
> value as in log_flag!) */
>                };
> 
>                if (method=="MESSAGE") {
>                        log(1, "MESSAGE\n");
>                        setflag(1); /* set for accounting (the same
> value as in log_flag!) */
>                };
> 
>                if (method=="BYE" || method=="CANCEL") {
>                        log (1, "BYE or CANCEL\n");
>                        setflag(1);
>                };
> 
> #               IF HOST IS JUST NUMBERS SEND TO route(3) FOR E.164
> PROCESSING
>                if (uri =~ "^sip:[0-9]*@"){
>                        log(1, "SER: matched ^sip:[0-9]*@ - just numbers
> - process in route(3)\n");
>                        route(3);
>                        break;
>                };
> 
>        }
> }
> route[3] {
> 
>        if (uri=~"^sip:[0-9]*@")
>        {
>                log(1, "SER: matched ^sip:6126[1,2] - forward to GW in
> CANBERRA\n");
>                rewritehostport("38.114.15.34:5060");
>                t_relay_to_udp("38.114.15.34","5060");
>                break;
>        };
> 
> }
> 
> Console Output:
> -----------------
> 
> 0(13481) SIP Request:
> 0(13481)  method:  <INVITE>
> 0(13481)  uri:     <sip:12814192614 at 66.118.238.201;user=phone>
> 0(13481)  version: <SIP/2.0>
> 0(13481) parse_headers: flags=1
> 0(13481) end of header reached, state=5
> 0(13481) parse_headers: Via found, flags=1
> 0(13481) parse_headers: this is the first via
> 0(13481) After parse_msg...
> 0(13481) preparing to run routing scripts...
> 0(13481)
> **********************ROUTING
> 0(13481) DEBUG : is_maxfwd_present: searching for max_forwards header
> 0(13481) parse_headers: flags=128
> 0(13481) end of header reached, state=9
> 0(13481) DEBUG: get_hdr_field: <To> [45];
> uri=[sip:12814192614 at 66.118.238.201;user=phone]
> 0(13481) DEBUG: to body [<sip:12814192614 at 66.118.238.201;user=phone>
> ]
> 0(13481) get_hdr_field: cseq <CSeq>: <1> <INVITE>
> 0(13481) DEBUG: get_hdr_body : content_length=268
> 0(13481) found end of header
> 0(13481) DEBUG: is_maxfwd_present: max_forwards header not found!
> 0(13481) DEBUG: add_param: tag=119525115
> 0(13481) end of header reached, state=29
> 0(13481) parse_headers: flags=256
> 0(13481) find_first_route(): No Route headers found
> 0(13481) loose_route(): There is no Route HF
> 0(13481) check_self - checking if host==us: 14==14 &&  [66.118.238.201]
> == [66.118.238.201]
> 0(13481) check_self - checking if port 5060 matches port 5060
> 0(13481)
> **********************MYSELF
> 0(13481) INVITE
> 0(13481) SER: matched ^sip:[0-9]*@ - just numbers - process in route(3)
> 0(13481) SER: matched ^sip:6126[1,2] - forward to GW in CANBERRA
> 0(13481) DEBUG: t_addifnew: msg id=121 , global msg id=120 , T on
> entrance=0xffffffff
> 0(13481) parse_headers: flags=-1
> 0(13481) parse_headers: flags=60
> 0(13481) t_lookup_request: start searching: hash=30407, isACK=0
> 0(13481) DEBUG: proceeding to pre-RFC3261 transaction matching
> 0(13481) DEBUG: t_lookup_request: no transaction found
> 0(13481) SER: new INVITE
> 0(13481) parse_headers: flags=-1
> 0(13481) check_via_address(68.91.112.229, 192.168.1.4, 0)
> 0(13481) WARNING:vqm_resize: resize(0) called
> 0(13481) DEBUG: reply sent out. buf=0x80c5f20: SIP/2.0 1...,
> shmem=0x402e4040: SIP/2.0 1
> 0(13481) DEBUG: t_reply: finished
> 0(13481) check_via_address(68.91.112.229, 192.168.1.4, 0)
> 0(13481) DEBUG: add_to_tail_of_timer[4]: 0x402e4f30
> 0(13481) DEBUG: add_to_tail_of_timer[0]: 0x402e4f44
> 0(13481) SER: new transaction fwd'ed
> 0(13481) DEBUG:destroy_avp_list: destroing list (nil)
> 0(13481) receive_msg: cleaning up
> 0(13481) SIP Reply  (status):
> 0(13481)  version: <SIP/2.0>
> 0(13481)  status:  <100>
> 0(13481)  reason:  <Trying>
> 0(13481) parse_headers: flags=1
> 0(13481) Found param type 232, <branch> = <z9hG4bK7c67.dc0712e3.0>;
> state=16
> 0(13481) end of header reached, state=5
> 0(13481) parse_headers: Via found, flags=1
> 0(13481) parse_headers: this is the first via
> 0(13481) After parse_msg...
> 0(13481) forward_reply: found module tm, passing reply to it
> 0(13481) DEBUG: t_check: msg id=122 global id=121 T start=0xffffffff
> 0(13481) parse_headers: flags=17
> 0(13481) Found param type 234, <received> = <192.168.1.4>; state=16
> 0(13481) end of header reached, state=5
> 0(13481) parse_headers: Via found, flags=17
> 0(13481) parse_headers: this is the second via
> 0(13481) end of header reached, state=9
> 0(13481) DEBUG: get_hdr_field: <To> [45];
> uri=[sip:12814192614 at 66.118.238.201;user=phone]
> 0(13481) DEBUG: to body [<sip:12814192614 at 66.118.238.201;user=phone>
> ]
> 0(13481) get_hdr_field: cseq <CSeq>: <1> <INVITE>
> 0(13481) parse_headers: flags=4
> 0(13481) DEBUG: t_reply_matching: hash 30407 label 1042378957 branch 0
> 0(13481) DEBUG: t_reply_matching: reply matched (T=0x402e4e08)!
> 0(13481) DEBUG: t_check: msg id=122 global id=122 T end=0x402e4e08
> 0(13481) DEBUG: t_on_reply: org. status uas=100, uac[0]=0 local=0
> is_invite=1)
> 0(13481) ->>>>>>>>> T_code=100, new_code=100
> 0(13481) DEBUG: relay_reply: branch=0, save=0, relay=-1
> 0(13481) DEBUG: add_to_tail_of_timer[1]: 0x402e4f44
> 0(13481) DEBUG:destroy_avp_list: destroing list (nil)
> 0(13481) receive_msg: cleaning up
> 1(13482) DEBUG: timer routine:4,tl=0x402e4f30 next=(nil)
> 0(13481) SIP Reply  (status):
> 0(13481)  version: <SIP/2.0>
> 0(13481)  status:  <180>
> 0(13481)  reason:  <Ringing>
> 0(13481) parse_headers: flags=1
> 0(13481) Found param type 232, <branch> = <z9hG4bK7c67.dc0712e3.0>;
> state=16
> 0(13481) end of header reached, state=5
> 0(13481) parse_headers: Via found, flags=1
> 0(13481) parse_headers: this is the first via
> 0(13481) After parse_msg...
> 0(13481) forward_reply: found module tm, passing reply to it
> 0(13481) DEBUG: t_check: msg id=123 global id=122 T start=0xffffffff
> 0(13481) parse_headers: flags=17
> 0(13481) Found param type 234, <received> = <192.168.1.4>; state=16
> 0(13481) end of header reached, state=5
> 0(13481) parse_headers: Via found, flags=17
> 0(13481) parse_headers: this is the second via
> 0(13481) DEBUG: add_param: tag=SD40lb399-38
> 0(13481) end of header reached, state=29
> 0(13481) DEBUG: get_hdr_field: <To> [62];
> uri=[sip:12814192614 at 66.118.238.201;user=phone]
> 0(13481) DEBUG: to body [<sip:12814192614 at 66.118.238.201;user=phone>]
> 0(13481) get_hdr_field: cseq <CSeq>: <1> <INVITE>
> 0(13481) parse_headers: flags=4
> 0(13481) DEBUG: t_reply_matching: hash 30407 label 1042378957 branch 0
> 0(13481) DEBUG: t_reply_matching: reply matched (T=0x402e4e08)!
> 0(13481) DEBUG: t_check: msg id=123 global id=123 T end=0x402e4e08
> 0(13481) DEBUG: t_on_reply: org. status uas=100, uac[0]=100 local=0
> is_invite=1)
> 0(13481) ->>>>>>>>> T_code=100, new_code=180
> 0(13481) DEBUG: relay_reply: branch=0, save=0, relay=0
> 0(13481)  old size: 669, new size: 606
> 0(13481) build_res_from_sip_res: copied size: orig:84, new: 21, rest:
> 585 msg=
> SIP/2.0 180 Ringing
> Via: SIP/2.0/UDP 192.168.1.4:5060;received=192.168.1.4
> From: Line 0 <sip:2000 at 66.118.238.201;user=phone>;tag=119525115
> To: <sip:12814192614 at 66.118.238.201;user=phone>;tag=SD40lb399-38
> Call-ID: 2912392921 at 68.91.112.229
> CSeq: 1 INVITE
> Record-Route: <sip:12814192614 at 66.118.238.201;ftag=119525115;lr=on>
> Content-Length: 176
> Content-Disposition: session;handling=required
> Content-Type: application/sdp
> 
> v=0
> o=Sonus_UAC 22631 32400 IN IP4 38.114.15.34
> s=SIP Media Capabilities
> c=IN IP4 38.114.15.34
> t=0 0
> m=audio 6220 RTP/AVP 18
> a=fmtp:18 annexb:no
> a=sendrecv
> a=ptime:20
> 
> 0(13481) DEBUG: reply relayed. buf=0x80c67b0: SIP/2.0 1...,
> shmem=0x402e6840: SIP/2.0 1
> 0(13481) DEBUG: add_to_tail_of_timer[1]: 0x402e4f44
> 0(13481) DEBUG:destroy_avp_list: destroing list (nil)
> 0(13481) receive_msg: cleaning up
> 
> 0(13481) SIP Request:
> 0(13481)  method:  <CANCEL>
> 0(13481)  uri:     <sip:12814192614 at 66.118.238.201;user=phone>
> 0(13481)  version: <SIP/2.0>
> 0(13481) parse_headers: flags=1
> 0(13481) end of header reached, state=5
> 0(13481) parse_headers: Via found, flags=1
> 0(13481) parse_headers: this is the first via
> 0(13481) After parse_msg...
> 0(13481) preparing to run routing scripts...
> 0(13481)
> **********************ROUTING
> 0(13481) DEBUG : is_maxfwd_present: searching for max_forwards header
> 0(13481) parse_headers: flags=128
> 0(13481) end of header reached, state=9
> 0(13481) DEBUG: get_hdr_field: <To> [45];
> uri=[sip:12814192614 at 66.118.238.201;user=phone]
> 0(13481) DEBUG: to body [<sip:12814192614 at 66.118.238.201;user=phone>
> ]
> 0(13481) get_hdr_field: cseq <CSeq>: <1> <CANCEL>
> 0(13481) DEBUG: get_hdr_body : content_length=0
> 0(13481) found end of header
> 0(13481) DEBUG: is_maxfwd_present: max_forwards header not found!
> 0(13481) DEBUG: add_param: tag=119525115
> 0(13481) end of header reached, state=29
> 0(13481) parse_headers: flags=256
> 0(13481) find_first_route(): No Route headers found
> 0(13481) loose_route(): There is no Route HF
> 0(13481) check_self - checking if host==us: 14==14 &&  [66.118.238.201]
> == [66.118.238.201]
> 0(13481) check_self - checking if port 5060 matches port 5060
> 0(13481)
> **********************MYSELF
> 0(13481) BYE or CANCEL
> 0(13481) SER: matched ^sip:[0-9]*@ - just numbers - process in route(3)
> 0(13481) SER: matched ^sip:6126[1,2] - forward to GW in CANBERRA
> 0(13481) DEBUG: t_addifnew: msg id=124 , global msg id=123 , T on
> entrance=0xffffffff
> 0(13481) parse_headers: flags=-1
> 0(13481) parse_headers: flags=60
> 0(13481) t_lookup_request: start searching: hash=30407, isACK=0
> 0(13481) DEBUG: proceeding to pre-RFC3261 transaction matching
> 0(13481) DEBUG: t_lookup_request: no transaction found
> 0(13481) DEBUG: t_lookupOriginalT: searching on hash entry 30407
> 0(13481) DEBUG: t_lookupOriginalT: canceled transaction found (0x402e4e08)!
> 0(13481) DEBUG: t_lookupOriginalT completed
> 0(13481) check_via_address(68.91.112.229, 192.168.1.4, 0)
> 0(13481) DEBUG: add_to_tail_of_timer[4]: 0x402e7040
> 0(13481) DEBUG: add_to_tail_of_timer[0]: 0x402e7054
> 0(13481) DEBUG: e2e_cancel: e2e cancel proceeding
> 0(13481) parse_headers: flags=-1
> 0(13481) check_via_address(68.91.112.229, 192.168.1.4, 0)
> 0(13481) WARNING:vqm_resize: resize(0) called
> 0(13481) DEBUG: cleanup_uacs: RETR/FR timers reset
> 0(13481) DEBUG: add_to_tail_of_timer[2]: 0x402e6f60
> 0(13481) DEBUG: reply sent out. buf=0x80c6180: SIP/2.0 2...,
> shmem=0x402e8420: SIP/2.0 2
> 0(13481) DEBUG: t_reply: finished
> 0(13481) DEBUG: e2e_cancel: sending 487
> 0(13481) parse_headers: flags=-1
> 0(13481) check_via_address(68.91.112.229, 192.168.1.4, 0)
> 0(13481) DEBUG: cleanup_uacs: RETR/FR timers reset
> 0(13481) DEBUG: add_to_tail_of_timer[4]: 0x402e4ebc
> 0(13481) DEBUG: add_to_tail_of_timer[0]: 0x402e4ed0
> 0(13481) DEBUG: reply sent out. buf=0x80c6550: SIP/2.0 4...,
> shmem=0x402e9e68: SIP/2.0 4
> 0(13481) DEBUG: t_reply: finished
> 0(13481) SER: new transaction fwd'ed
> 0(13481) DEBUG:destroy_avp_list: destroing list (nil)
> 0(13481) receive_msg: cleaning up
> 
> _______________________________________________
> Serusers mailing list
> serusers at lists.iptel.org
> http://lists.iptel.org/mailman/listinfo/serusers
>




More information about the sr-users mailing list