เทคนิคการดีบัคพอร์ต E1 PRI ด้วยคำสั่ง pri

Asterisk Opensource IP Pbx

เทคนิคการดีบัคพอร์ต E1 PRI ด้วยคำสั่ง pri

โพสต์โดย nuiz » 22 มิ.ย. 2011 22:29

ใน Asterisk มีคำสั่งเกี่ยวกับ pri อยู่ด้วยกันหลายคำสั่ง (คำสั่งเหล่านี้ได้มาจากการติดตั้ง libpri) ซึ่งจะช่วยให้เรามอนิเตอร์ ดีบัค ตรวจสอบปัญหาการใช้งานการ์ด E1 ได้ง่ายขึ้น ลองดูนะครับมันอาจจะดูยากนิดนึงในตอนแรก ไม่จำเป็นต้องรู้ทุก messages ที่โชว์ขึ้นมาก็ได้ เอาแค่หลักๆก็พอ คำสั่งเหล่านี้เรียกดูได้จากคำสั่ง
โค้ด: เลือกทั้งหมด
asterisk -rx "help pri"

คำสั่งมีดังต่อไปนี้ครับ

*** ผลลัพท์ของคำสั่งบางคำสั่งอาจจะดูไม่ออกว่ามันคืออะไร ส่วนใหญ่เป็นตัวย่อ โดยเฉพาะตอนนี่ E1 มันคุยกัน ลองค้นใน google ดูนะครับ เกี่ยวกับ E1 PRI ***

1. เช็คว่ามีใครกำลังดีบัค PRI อยู่หรือเปล่า
โค้ด: เลือกทั้งหมด
asterisk-a*CLI > pri show debug

Span 1: Debug: No Intense: No

นอกจากเราจะเห็นว่ามีใครดีบัคอยู่หรือเปล่า เรายังรู้อีกว่า E1 มันอยู่ span ที่เท่าไหร่ ตัวอย่างคือ span หมายเลข 1

2. เช็คดูพารามิเตอร์เกี่ยวกับ Timing ของพอร์ต E1
โค้ด: เลือกทั้งหมด
elastix-a*CLI> pri show span 1

Primary D-channel: 16
Status: Provisioned, Up, Active
Switchtype: EuroISDN
Type: CPE
Overlap Dial: 0
Logical Channel Mapping: 0
Timer and counter settings:
  N200: 3
  N202: 3
  K: 7
  T200: 1000
  T202: 10000
  T203: 10000
  T303: 4000
  T305: 30000
  T308: 4000
  T309: 6000
  T313: 4000
  T-HOLD: 4000
  T-RETRIEVE: 4000
  T-RESPONSE: 4000
Overlap Recv: No


3. เช็คว่าในเครื่องติดตั้ง libpri เวอร์ชั่นอะไร
โค้ด: เลือกทั้งหมด
elastix-a*CLI> pri show version

libpri version: 1.4.11.4


4. คำสั่งดีบัค

pri set debug {<level>|on|off} span <span>

ใช้ดีบัคการ์ด E1 เวลามี event เกิดขึ้นบนพอร์ต E1 ก็จะมี message โชว์ใน Asterisk Console ครับ แทนค่า <span> ด้วยหมายเลข span ของการ์ด E1 ที่กำลังจะดีบัค ถ้ามีการ์ดเดียว span ก็คือ 1 ถ้ามีหลายการ์ด ค่า span ก็เป็น 1, 2, 3,... เลือกให้ถูกนะครับ ถ้าไม่ชัวร์ว่าการ์ดที่กำลังจะดีบัคมันมีค่า span เป็นเท่าไหร่ ก็ดูที่ไฟล์ /etc/asterisk/dahdi-channels.conf นะครับ

เครื่องหมาย < หมายถึงรับเข้ามา (inbound) ที่พอร์ต E1 ส่วนเครื่องหมาย > หมายถึงส่งออกไป (outbound) จากพอร์ต E1

ผมลองโทรจาก Softphone ออกไปเบอร์ 029009000 ทางพอร์ต E1 ก็ได้แบบนี้

โค้ด: เลือกทั้งหมด
elastix-a*CLI> pri set debug on span 1

    -- Executing [029009000@from-internal:1] Macro("SIP/200-0000004e", "user-callerid,SKIPTTL,") in new stack
    -- Executing [s@macro-user-callerid:1] Set("SIP/200-0000004e", "AMPUSER=200") in new stack
    -- Executing [s@macro-user-callerid:2] GotoIf("SIP/200-0000004e", "0?report") in new stack
    -- Executing [s@macro-user-callerid:3] ExecIf("SIP/200-0000004e", "1?Set(REALCALLERIDNUM=200)") in new stack
    -- Executing [s@macro-user-callerid:4] Set("SIP/200-0000004e", "AMPUSER=200") in new stack
    -- Executing [s@macro-user-callerid:5] Set("SIP/200-0000004e", "AMPUSERCIDNAME=bkk") in new stack
    -- Executing [s@macro-user-callerid:6] GotoIf("SIP/200-0000004e", "0?report") in new stack
    -- Executing [s@macro-user-callerid:7] Set("SIP/200-0000004e", "AMPUSERCID=200") in new stack
    -- Executing [s@macro-user-callerid:8] Set("SIP/200-0000004e", "CALLERID(all)="bkk" <200>") in new stack
    -- Executing [s@macro-user-callerid:9] ExecIf("SIP/200-0000004e", "0?Set(CHANNEL(language)=)") in new stack
    -- Executing [s@macro-user-callerid:10] GotoIf("SIP/200-0000004e", "1?continue") in new stack
    -- Goto (macro-user-callerid,s,19)
    -- Executing [s@macro-user-callerid:19] NoOp("SIP/200-0000004e", "Using CallerID "bkk" <200>") in new stack
    -- Executing [029009000@from-internal:2] Set("SIP/200-0000004e", "_NODEST=") in new stack
    -- Executing [029009000@from-internal:3] Macro("SIP/200-0000004e", "record-enable,200,OUT,") in new stack
    -- Executing [s@macro-record-enable:1] GotoIf("SIP/200-0000004e", "1?check") in new stack
    -- Goto (macro-record-enable,s,4)
    -- Executing [s@macro-record-enable:4] ExecIf("SIP/200-0000004e", "0?MacroExit()") in new stack
    -- Executing [s@macro-record-enable:5] GotoIf("SIP/200-0000004e", "0?Group:OUT") in new stack
    -- Goto (macro-record-enable,s,15)
    -- Executing [s@macro-record-enable:15] GotoIf("SIP/200-0000004e", "0?IN") in new stack
   -- Executing [s@macro-record-enable:16] ExecIf("SIP/200-0000004e", "1?MacroExit()") in new stack
    -- Executing [029009000@from-internal:4] Macro("SIP/200-0000004e", "dialout-trunk,5,029009000,,") in new stack
    -- Executing [s@macro-dialout-trunk:1] Set("SIP/200-0000004e", "DIAL_TRUNK=5") in new stack
    -- Executing [s@macro-dialout-trunk:2] GosubIf("SIP/200-0000004e", "0?sub-pincheck,s,1") in new stack
    -- Executing [s@macro-dialout-trunk:3] GotoIf("SIP/200-0000004e", "0?disabletrunk,1") in new stack
    -- Executing [s@macro-dialout-trunk:4] Set("SIP/200-0000004e", "DIAL_NUMBER=029009000") in new stack
    -- Executing [s@macro-dialout-trunk:5] Set("SIP/200-0000004e", "DIAL_TRUNK_OPTIONS=tr") in new stack
    -- Executing [s@macro-dialout-trunk:6] Set("SIP/200-0000004e", "OUTBOUND_GROUP=OUT_5") in new stack
    -- Executing [s@macro-dialout-trunk:7] GotoIf("SIP/200-0000004e", "0?nomax") in new stack
    -- Executing [s@macro-dialout-trunk:8] GotoIf("SIP/200-0000004e", "0?chanfull") in new stack
    -- Executing [s@macro-dialout-trunk:9] GotoIf("SIP/200-0000004e", "0?skipoutcid") in new stack
    -- Executing [s@macro-dialout-trunk:10] Set("SIP/200-0000004e", "DIAL_TRUNK_OPTIONS=") in new stack
    -- Executing [s@macro-dialout-trunk:11] Macro("SIP/200-0000004e", "outbound-callerid,5") in new stack
    -- Executing [s@macro-outbound-callerid:1] ExecIf("SIP/200-0000004e", "0?Set(CALLERPRES()=)") in new stack
    -- Executing [s@macro-outbound-callerid:2] ExecIf("SIP/200-0000004e", "0?Set(REALCALLERIDNUM=200)") in new stack
    -- Executing [s@macro-outbound-callerid:3] GotoIf("SIP/200-0000004e", "1?normcid") in new stack
    -- Goto (macro-outbound-callerid,s,6)
    -- Executing [s@macro-outbound-callerid:6] Set("SIP/200-0000004e", "USEROUTCID="bkk" <200>") in new stack
    -- Executing [s@macro-outbound-callerid:7] Set("SIP/200-0000004e", "EMERGENCYCID=") in new stack
    -- Executing [s@macro-outbound-callerid:8] Set("SIP/200-0000004e", "TRUNKOUTCID=") in new stack
    -- Executing [s@macro-outbound-callerid:9] GotoIf("SIP/200-0000004e", "1?trunkcid") in new stack
    -- Goto (macro-outbound-callerid,s,12)
    -- Executing [s@macro-outbound-callerid:12] ExecIf("SIP/200-0000004e", "0?Set(CALLERID(all)=)") in new stack
    -- Executing [s@macro-outbound-callerid:13] ExecIf("SIP/200-0000004e", "1?Set(CALLERID(all)=bkk <200>)") in new stack
    -- Executing [s@macro-outbound-callerid:14] ExecIf("SIP/200-0000004e", "0?Set(CALLERID(all)=)") in new stack
    -- Executing [s@macro-outbound-callerid:15] ExecIf("SIP/200-0000004e", "0?Set(CALLERPRES()=prohib_passed_screen)") in new stack
    -- Executing [s@macro-dialout-trunk:12] ExecIf("SIP/200-0000004e", "1?AGI(fixlocalprefix)") in new stack
    -- Launched AGI Script /var/lib/asterisk/agi-bin/fixlocalprefix
  == fixlocalprefix: Dialpattern X. matched. 029009000 -> 029009000
    -- <SIP/200-0000004e>AGI Script fixlocalprefix completed, returning 0
    -- Executing [s@macro-dialout-trunk:13] Set("SIP/200-0000004e", "OUTNUM=029009000") in new stack
    -- Executing [s@macro-dialout-trunk:14] Set("SIP/200-0000004e", "custom=DAHDI/G0") in new stack
    -- Executing [s@macro-dialout-trunk:15] ExecIf("SIP/200-0000004e", "0?Set(DIAL_TRUNK_OPTIONS=M(setmusic^))") in new stack
    -- Executing [s@macro-dialout-trunk:16] Macro("SIP/200-0000004e", "dialout-trunk-predial-hook,") in new stack
    -- Executing [s@macro-dialout-trunk-predial-hook:1] MacroExit("SIP/200-0000004e", "") in new stack
    -- Executing [s@macro-dialout-trunk:17] GotoIf("SIP/200-0000004e", "0?bypass,1") in new stack
    -- Executing [s@macro-dialout-trunk:18] GotoIf("SIP/200-0000004e", "0?customtrunk") in new stack
    -- Executing [s@macro-dialout-trunk:19] Dial("SIP/200-0000004e", "DAHDI/G0/029009000,300,") in new stack
-- Making new call for cref 32769
    -- Requested transfer capability: 0x00 - SPEECH

> DL-DATA request
> Protocol Discriminator: Q.931 (8)  len=35
> TEI=0 Call Ref: len= 2 (reference 1/0x1) (Sent from originator)
> Message Type: SETUP (5)
TEI=0 Transmitting N(S)=0, window is open V(A)=0 K=7

> Protocol Discriminator: Q.931 (8)  len=35
> TEI=0 Call Ref: len= 2 (reference 1/0x1) (Sent from originator)
> Message Type: SETUP (5)
> [04 03 80 90 a3]
> Bearer Capability (len= 5) [ Ext: 1  Q.931 Std: 0  Info transfer capability: Speech (0)
>                              Ext: 1  Trans mode/rate: 64kbps, circuit-mode (16)
>                                User information layer 1: A-Law (35)
> [18 03 a1 83 9f]
> Channel ID (len= 5) [ Ext: 1  IntID: Implicit  Other(PRI)  Spare: 0  Preferred  Dchan: 0
>                       ChanSel: As indicated in following octets
>                       Ext: 1  Coding: 0  Number Specified  Channel Type: 3
>                       Ext: 1  Channel: 31 Type: CPE]
> [6c 05 21 80 32 30 30]
> Calling Number (len= 7) [ Ext: 0  TON: National Number (2)  NPI: ISDN/Telephony Numbering Plan (E.164/E.163) (1)
>                           Presentation: Presentation permitted, user number not screened (0)  '200' ]
> [70 0a a1 30 32 39 30 30 39 30 30 30]
> Called Number (len=12) [ Ext: 1  TON: National Number (2)  NPI: ISDN/Telephony Numbering Plan (E.164/E.163) (1)  '029009000' ]
> [a1]
> Sending Complete (len= 1)
q931.c:4959 q931_setup: Call 32769 enters state 1 (Call Initiated).  Hold state: Idle
    -- Called G0/029009000

< Protocol Discriminator: Q.931 (8)  len=10
< TEI=0 Call Ref: len= 2 (reference 1/0x1) (Sent to originator)
< Message Type: CALL PROCEEDING (2)
< [18 03 a9 83 9f]
< Channel ID (len= 5) [ Ext: 1  IntID: Implicit  Other(PRI)  Spare: 0  Exclusive  Dchan: 0
<                       ChanSel: As indicated in following octets
<                       Ext: 1  Coding: 0  Number Specified  Channel Type: 3
<                       Ext: 1  Channel: 31 Type: CPE]
Received message for call 0x8dc4ca8 on 0x8e98e10 TEI/SAPI 0/0, call->pri is 0x8e98e10 TEI/SAPI 0/0
-- Processing IE 24 (cs0, Channel Identification)
q931.c:6998 post_handle_q931_message: Call 32769 enters state 3 (Outgoing Call Proceeding).  Hold state: Idle
    -- DAHDI/31-1 is proceeding passing it to SIP/200-0000004e

< Protocol Discriminator: Q.931 (8)  len=9
< TEI=0 Call Ref: len= 2 (reference 1/0x1) (Sent to originator)
< Message Type: PROGRESS (3)
< [1e 02 81 88]
< Progress Indicator (len= 4) [ Ext: 1  Coding: CCITT (ITU) standard (0)  0: 0  Location: Private network serving the local user (1)
<                               Ext: 1  Progress Description: Inband information or appropriate pattern now available. (8) ]
Received message for call 0x8dc4ca8 on 0x8e98e10 TEI/SAPI 0/0, call->pri is 0x8e98e10 TEI/SAPI 0/0
-- Processing IE 30 (cs0, Progress Indicator)
    -- DAHDI/31-1 is making progress passing it to SIP/200-0000004e
    -- DAHDI/31-1 is making progress passing it to SIP/200-0000004e

< Protocol Discriminator: Q.931 (8)  len=5
< TEI=0 Call Ref: len= 2 (reference 1/0x1) (Sent to originator)
< Message Type: CONNECT (7)
Received message for call 0x8dc4ca8 on 0x8e98e10 TEI/SAPI 0/0, call->pri is 0x8e98e10 TEI/SAPI 0/0
q931.c:6919 post_handle_q931_message: Call 32769 enters state 10 (Active).  Hold state: Idle

> DL-DATA request
> Protocol Discriminator: Q.931 (8)  len=5
> TEI=0 Call Ref: len= 2 (reference 1/0x1) (Sent from originator)
> Message Type: CONNECT ACKNOWLEDGE (15)
TEI=0 Transmitting N(S)=1, window is open V(A)=1 K=7

> Protocol Discriminator: Q.931 (8)  len=5
> TEI=0 Call Ref: len= 2 (reference 1/0x1) (Sent from originator)
> Message Type: CONNECT ACKNOWLEDGE (15)
    -- DAHDI/31-1 answered SIP/200-0000004e
    -- Executing [h@macro-dialout-trunk:1] Macro("SIP/200-0000004e", "hangupcall,") in new stack
    -- Executing [s@macro-hangupcall:1] GotoIf("SIP/200-0000004e", "1?noautomon") in new stack
    -- Goto (macro-hangupcall,s,3)
    -- Executing [s@macro-hangupcall:3] NoOp("SIP/200-0000004e", "TOUCH_MONITOR_OUTPUT=") in new stack
    -- Executing [s@macro-hangupcall:4] GotoIf("SIP/200-0000004e", "1?noautomon2") in new stack
    -- Goto (macro-hangupcall,s,6)
    -- Executing [s@macro-hangupcall:6] NoOp("SIP/200-0000004e", "MONITOR_FILENAME=") in new stack
    -- Executing [s@macro-hangupcall:7] GotoIf("SIP/200-0000004e", "1?skiprg") in new stack
    -- Goto (macro-hangupcall,s,10)
    -- Executing [s@macro-hangupcall:10] GotoIf("SIP/200-0000004e", "1?skipblkvm") in new stack
    -- Goto (macro-hangupcall,s,13)
    -- Executing [s@macro-hangupcall:13] GotoIf("SIP/200-0000004e", "1?theend") in new stack
    -- Goto (macro-hangupcall,s,15)
    -- Executing [s@macro-hangupcall:15] Hangup("SIP/200-0000004e", "") in new stack
  == Spawn extension (macro-hangupcall, s, 15) exited non-zero on 'SIP/200-0000004e' in macro 'hangupcall'
q931_hangup: other hangup
NEW_HANGUP DEBUG: Calling q931_hangup, ourstate Active, peerstate Connect Request, hold-state Idle
q931.c:4768 q931_disconnect: Call 32769 enters state 11 (Disconnect Request).  Hold state: Idle

> DL-DATA request
> Protocol Discriminator: Q.931 (8)  len=9
> TEI=0 Call Ref: len= 2 (reference 1/0x1) (Sent from originator)
> Message Type: DISCONNECT (69)
TEI=0 Transmitting N(S)=2, window is open V(A)=2 K=7

> Protocol Discriminator: Q.931 (8)  len=9
> TEI=0 Call Ref: len= 2 (reference 1/0x1) (Sent from originator)
> Message Type: DISCONNECT (69)
> [08 02 81 90]
> Cause (len= 4) [ Ext: 1  Coding: CCITT (ITU) standard (0)  Spare: 0  Location: Private network serving the local user (1)
>                  Ext: 1  Cause: Normal Clearing (16), class = Normal Event (1) ]
    -- Hungup 'DAHDI/31-1'
  == Spawn extension (macro-dialout-trunk, s, 19) exited non-zero on 'SIP/200-0000004e' in macro 'dialout-trunk'
  == Spawn extension (from-internal, 029009000, 4) exited non-zero on 'SIP/200-0000004e'

< Protocol Discriminator: Q.931 (8)  len=5
< TEI=0 Call Ref: len= 2 (reference 1/0x1) (Sent to originator)
< Message Type: RELEASE (77)
Received message for call 0x8dc4ca8 on 0x8e98e10 TEI/SAPI 0/0, call->pri is 0x8e98e10 TEI/SAPI 0/0
q931.c:7123 post_handle_q931_message: Call 32769 enters state 0 (Null).  Hold state: Idle
q931_hangup: other hangup
NEW_HANGUP DEBUG: Calling q931_hangup, ourstate Null, peerstate Release Request, hold-state Idle

> DL-DATA request
> Protocol Discriminator: Q.931 (8)  len=9
> TEI=0 Call Ref: len= 2 (reference 1/0x1) (Sent from originator)
> Message Type: RELEASE COMPLETE (90)
TEI=0 Transmitting N(S)=3, window is open V(A)=3 K=7

> Protocol Discriminator: Q.931 (8)  len=9
> TEI=0 Call Ref: len= 2 (reference 1/0x1) (Sent from originator)
> Message Type: RELEASE COMPLETE (90)
> [08 02 81 90]
> Cause (len= 4) [ Ext: 1  Coding: CCITT (ITU) standard (0)  Spare: 0  Location: Private network serving the local user (1)
>                  Ext: 1  Cause: Normal Clearing (16), class = Normal Event (1) ]
q931_hangup: other hangup
NEW_HANGUP DEBUG: Calling q931_hangup, ourstate Null, peerstate Null, hold-state Idle
NEW_HANGUP DEBUG: Destroying the call, ourstate Null, peerstate Null, hold-state Idle


อันนี้เป็น messages ตอนรับสายเข้ามาครับ

โค้ด: เลือกทั้งหมด
< Protocol Discriminator: Q.931 (8)  len=42
< TEI=0 Call Ref: len= 2 (reference 53/0x35) (Sent from originator)
< Message Type: SETUP (5)
< [a1]
< Sending Complete (len= 1)
< [04 03 80 90 a3]
< Bearer Capability (len= 5) [ Ext: 1  Q.931 Std: 0  Info transfer capability: Speech (0)
<                              Ext: 1  Trans mode/rate: 64kbps, circuit-mode (16)
<                                User information layer 1: A-Law (35)
< [18 03 a9 83 92]
< Channel ID (len= 5) [ Ext: 1  IntID: Implicit  Other(PRI)  Spare: 0  Exclusive  Dchan: 0
<                       ChanSel: As indicated in following octets
<                       Ext: 1  Coding: 0  Number Specified  Channel Type: 3
<                       Ext: 1  Channel: 18 Type: CPE]
< [6c 0c 21 80 30 38 35 31 36 31 39 34 33 39]
< Calling Number (len=14) [ Ext: 0  TON: National Number (2)  NPI: ISDN/Telephony Numbering Plan (E.164/E.163) (1)
<                           Presentation: Presentation permitted, user number not screened (0)  '0851619439' ]
< [70 0a a1 30 32 33 34 35 36 37 30 30]
< Called Number (len=12) [ Ext: 1  TON: National Number (2)  NPI: ISDN/Telephony Numbering Plan (E.164/E.163) (1)  '023456700' ]
-- Making new call for cref 53
Received message for call 0x8dc4ca8 on 0x8e98e10 TEI/SAPI 0/0, call->pri is 0x8e98e10 TEI/SAPI 0/0
-- Processing Q.931 Call Setup
-- Processing IE 161 (cs0, Sending Complete)
-- Processing IE 4 (cs0, Bearer Capability)
-- Processing IE 24 (cs0, Channel Identification)
-- Processing IE 108 (cs0, Calling Party Number)
-- Processing IE 112 (cs0, Called Party Number)
q931.c:6871 post_handle_q931_message: Call 53 enters state 6 (Call Present).  Hold state: Idle
q931.c:4524 q931_call_proceeding: Call 53 enters state 9 (Incoming Call Proceeding).  Hold state: Idle

> DL-DATA request
> Protocol Discriminator: Q.931 (8)  len=10
> TEI=0 Call Ref: len= 2 (reference 53/0x35) (Sent to originator)
> Message Type: CALL PROCEEDING (2)
TEI=0 Transmitting N(S)=8, window is open V(A)=8 K=7

> Protocol Discriminator: Q.931 (8)  len=10
> TEI=0 Call Ref: len= 2 (reference 53/0x35) (Sent to originator)
> Message Type: CALL PROCEEDING (2)
> [18 03 a9 83 92]
> Channel ID (len= 5) [ Ext: 1  IntID: Implicit  Other(PRI)  Spare: 0  Exclusive  Dchan: 0
>                       ChanSel: As indicated in following octets
>                       Ext: 1  Coding: 0  Number Specified  Channel Type: 3
>                       Ext: 1  Channel: 18 Type: CPE]
    -- Accepting call from '0851619439' to '023456700' on channel 0/18, span 1
    -- Executing [023456700@from-zaptel:1] Set("DAHDI/18-1", "DID=023456700") in new stack
    -- Executing [023456700@from-zaptel:2] Goto("DAHDI/18-1", "s,1") in new stack
    -- Goto (from-zaptel,s,1)
    -- Executing [s@from-zaptel:1] NoOp("DAHDI/18-1", "Entering from-zaptel with DID == 023456700") in new stack
    -- Executing [s@from-zaptel:2] Ringing("DAHDI/18-1", "") in new stack
q931.c:4552 q931_alerting: Call 53 enters state 7 (Call Received).  Hold state: Idle

> DL-DATA request
> Protocol Discriminator: Q.931 (8)  len=9
> TEI=0 Call Ref: len= 2 (reference 53/0x35) (Sent to originator)
> Message Type: ALERTING (1)
TEI=0 Transmitting N(S)=9, window is open V(A)=9 K=7

> Protocol Discriminator: Q.931 (8)  len=9
> TEI=0 Call Ref: len= 2 (reference 53/0x35) (Sent to originator)
> Message Type: ALERTING (1)
> [1e 02 81 88]
> Progress Indicator (len= 4) [ Ext: 1  Coding: CCITT (ITU) standard (0)  0: 0  Location: Private network serving the local user (1)
>                               Ext: 1  Progress Description: Inband information or appropriate pattern now available. (8) ]
    -- Executing [s@from-zaptel:3] Set("DAHDI/18-1", "DID=023456700") in new stack
    -- Executing [s@from-zaptel:4] NoOp("DAHDI/18-1", "DID is now 023456700") in new stack
    -- Executing [s@from-zaptel:5] GotoIf("DAHDI/18-1", "1?zapok:notzap") in new stack
    -- Goto (from-zaptel,s,8)
    -- Executing [s@from-zaptel:8] NoOp("DAHDI/18-1", "Is a Zaptel Channel") in new stack
    -- Executing [s@from-zaptel:9] Set("DAHDI/18-1", "CHAN=18-1") in new stack
    -- Executing [s@from-zaptel:10] Set("DAHDI/18-1", "CHAN=18") in new stack
    -- Executing [s@from-zaptel:11] Macro("DAHDI/18-1", "from-zaptel-18,023456700,1") in new stack
    -- Executing [s@from-zaptel:12] NoOp("DAHDI/18-1", "Returned from Macro from-zaptel-18") in new stack
    -- Executing [s@from-zaptel:13] Goto("DAHDI/18-1", "from-pstn,023456700,1") in new stack
    -- Goto (from-pstn,023456700,1)
    -- Executing [023456700@from-pstn:1] Set("DAHDI/18-1", "__FROM_DID=023456700") in new stack
    -- Executing [023456700@from-pstn:2] Gosub("DAHDI/18-1", "app-blacklist-check,s,1") in new stack
    -- Executing [s@app-blacklist-check:1] GotoIf("DAHDI/18-1", "0?blacklisted") in new stack
    -- Executing [s@app-blacklist-check:2] Set("DAHDI/18-1", "CALLED_BLACKLIST=1") in new stack
    -- Executing [s@app-blacklist-check:3] Return("DAHDI/18-1", "") in new stack
    -- Executing [023456700@from-pstn:3] ExecIf("DAHDI/18-1", "1 ?Set(CALLERID(name)=0851619439)") in new stack
    -- Executing [023456700@from-pstn:4] Set("DAHDI/18-1", "__CALLINGPRES_SV=allowed_not_screened") in new stack
    -- Executing [023456700@from-pstn:5] Set("DAHDI/18-1", "CALLERPRES()=allowed_not_screened") in new stack
    -- Executing [023456700@from-pstn:6] Goto("DAHDI/18-1", "from-did-direct,200,1") in new stack
    -- Goto (from-did-direct,200,1)
    -- Executing [200@from-did-direct:1] Macro("DAHDI/18-1", "exten-vm,novm,200") in new stack
    -- Executing [s@macro-exten-vm:1] Macro("DAHDI/18-1", "user-callerid,") in new stack
    -- Executing [s@macro-user-callerid:1] Set("DAHDI/18-1", "AMPUSER=0851619439") in new stack
    -- Executing [s@macro-user-callerid:2] GotoIf("DAHDI/18-1", "0?report") in new stack
    -- Executing [s@macro-user-callerid:3] ExecIf("DAHDI/18-1", "1?Set(REALCALLERIDNUM=0851619439)") in new stack
    -- Executing [s@macro-user-callerid:4] Set("DAHDI/18-1", "AMPUSER=") in new stack
    -- Executing [s@macro-user-callerid:5] Set("DAHDI/18-1", "AMPUSERCIDNAME=") in new stack
    -- Executing [s@macro-user-callerid:6] GotoIf("DAHDI/18-1", "1?report") in new stack
    -- Goto (macro-user-callerid,s,10)
    -- Executing [s@macro-user-callerid:10] GotoIf("DAHDI/18-1", "0?continue") in new stack
    -- Executing [s@macro-user-callerid:11] Set("DAHDI/18-1", "__TTL=64") in new stack
    -- Executing [s@macro-user-callerid:12] GotoIf("DAHDI/18-1", "1?continue") in new stack
    -- Goto (macro-user-callerid,s,19)
    -- Executing [s@macro-user-callerid:19] NoOp("DAHDI/18-1", "Using CallerID "0851619439" <0851619439>") in new stack
    -- Executing [s@macro-exten-vm:2] Set("DAHDI/18-1", "RingGroupMethod=none") in new stack
    -- Executing [s@macro-exten-vm:3] Set("DAHDI/18-1", "VMBOX=novm") in new stack
    -- Executing [s@macro-exten-vm:4] Set("DAHDI/18-1", "EXTTOCALL=200") in new stack
    -- Executing [s@macro-exten-vm:5] Set("DAHDI/18-1", "CFUEXT=") in new stack
    -- Executing [s@macro-exten-vm:6] Set("DAHDI/18-1", "CFBEXT=") in new stack
    -- Executing [s@macro-exten-vm:7] Set("DAHDI/18-1", "RT=""") in new stack
    -- Executing [s@macro-exten-vm:8] Macro("DAHDI/18-1", "record-enable,200,IN") in new stack
    -- Executing [s@macro-record-enable:1] GotoIf("DAHDI/18-1", "1?check") in new stack
    -- Goto (macro-record-enable,s,4)
    -- Executing [s@macro-record-enable:4] ExecIf("DAHDI/18-1", "0?MacroExit()") in new stack
    -- Executing [s@macro-record-enable:5] GotoIf("DAHDI/18-1", "0?Group:OUT") in new stack
    -- Goto (macro-record-enable,s,15)
    -- Executing [s@macro-record-enable:15] GotoIf("DAHDI/18-1", "1?IN") in new stack
    -- Goto (macro-record-enable,s,20)
    -- Executing [s@macro-record-enable:20] ExecIf("DAHDI/18-1", "1?MacroExit()") in new stack
    -- Executing [s@macro-exten-vm:9] Macro("DAHDI/18-1", "dial,,tr,200") in new stack
    -- Executing [s@macro-dial:1] GotoIf("DAHDI/18-1", "1?dial") in new stack
    -- Goto (macro-dial,s,3)
    -- Executing [s@macro-dial:3] AGI("DAHDI/18-1", "dialparties.agi") in new stack
    -- Launched AGI Script /var/lib/asterisk/agi-bin/dialparties.agi
dialparties.agi: Starting New Dialparties.agi
dialparties.agi: Caller ID name is '0851619439' number is '0851619439'
dialparties.agi: Methodology of ring is  'none'
    -- dialparties.agi: Added extension 200 to extension map
    -- dialparties.agi: Extension 200 cf is disabled
    -- dialparties.agi: Extension 200 do not disturb is disabled
dialparties.agi: EXTENSION_STATE: 0 (NOT_INUSE)
dialparties.agi: Extension 200 has ExtensionState: 0
    -- dialparties.agi: Checking CW and CFB status for extension 200
    -- dialparties.agi: dbset CALLTRACE/200 to 0851619439
    -- dialparties.agi: Filtered ARG3: 200
    -- <DAHDI/18-1>AGI Script dialparties.agi completed, returning 0
    -- Executing [s@macro-dial:7] Dial("DAHDI/18-1", "SIP/200,,tr") in new stack
  == Using SIP RTP TOS bits 184
  == Using SIP RTP CoS mark 5
    -- Called 200
    -- SIP/200-00000050 is ringing
    -- SIP/200-00000050 is ringing
    -- SIP/200-00000050 is ringing
    -- SIP/200-00000050 answered DAHDI/18-1
q931.c:4683 q931_connect: Call 53 enters state 8 (Connect Request).  Hold state: Idle

> DL-DATA request
> Protocol Discriminator: Q.931 (8)  len=14
> TEI=0 Call Ref: len= 2 (reference 53/0x35) (Sent to originator)
> Message Type: CONNECT (7)
TEI=0 Transmitting N(S)=10, window is open V(A)=10 K=7

> Protocol Discriminator: Q.931 (8)  len=14
> TEI=0 Call Ref: len= 2 (reference 53/0x35) (Sent to originator)
> Message Type: CONNECT (7)
> [18 03 a9 83 92]
> Channel ID (len= 5) [ Ext: 1  IntID: Implicit  Other(PRI)  Spare: 0  Exclusive  Dchan: 0
>                       ChanSel: As indicated in following octets
>                       Ext: 1  Coding: 0  Number Specified  Channel Type: 3
>                       Ext: 1  Channel: 18 Type: CPE]
> [1e 02 81 82]
> Progress Indicator (len= 4) [ Ext: 1  Coding: CCITT (ITU) standard (0)  0: 0  Location: Private network serving the local user (1)
>                               Ext: 1  Progress Description: Called equipment is non-ISDN. (2) ]

< Protocol Discriminator: Q.931 (8)  len=5
< TEI=0 Call Ref: len= 2 (reference 53/0x35) (Sent from originator)
< Message Type: CONNECT ACKNOWLEDGE (15)
Received message for call 0x8dc4ca8 on 0x8e98e10 TEI/SAPI 0/0, call->pri is 0x8e98e10 TEI/SAPI 0/0
q931.c:7024 post_handle_q931_message: Call 53 enters state 10 (Active).  Hold state: Idle
TEI=0 Sending REJ N(R)=9
elastix-a*CLI>
elastix-a*CLI>
elastix-a*CLI>
elastix-a*CLI>

... ฝั่ง E1 วางสาย...

< Protocol Discriminator: Q.931 (8)  len=9
< TEI=0 Call Ref: len= 2 (reference 53/0x35) (Sent from originator)
< Message Type: DISCONNECT (69)
< [08 02 82 90]
< Cause (len= 4) [ Ext: 1  Coding: CCITT (ITU) standard (0)  Spare: 0  Location: Public network serving the local user (2)
<                  Ext: 1  Cause: Normal Clearing (16), class = Normal Event (1) ]
Received message for call 0x8dc4ca8 on 0x8e98e10 TEI/SAPI 0/0, call->pri is 0x8e98e10 TEI/SAPI 0/0
-- Processing IE 8 (cs0, Cause)
-- Found active call: 0x8dc4ca8 cref:53
q931.c:7201 post_handle_q931_message: Call 53 enters state 12 (Disconnect Indication).  Hold state: Idle
    -- Channel 0/18, span 1 got hangup request, cause 16
    -- Executing [h@macro-dial:1] Macro("DAHDI/18-1", "hangupcall") in new stack
    -- Executing [s@macro-hangupcall:1] GotoIf("DAHDI/18-1", "1?noautomon") in new stack
    -- Goto (macro-hangupcall,s,3)
    -- Executing [s@macro-hangupcall:3] NoOp("DAHDI/18-1", "TOUCH_MONITOR_OUTPUT=") in new stack
    -- Executing [s@macro-hangupcall:4] GotoIf("DAHDI/18-1", "1?noautomon2") in new stack
    -- Goto (macro-hangupcall,s,6)
    -- Executing [s@macro-hangupcall:6] NoOp("DAHDI/18-1", "MONITOR_FILENAME=") in new stack
    -- Executing [s@macro-hangupcall:7] GotoIf("DAHDI/18-1", "1?skiprg") in new stack
    -- Goto (macro-hangupcall,s,10)
    -- Executing [s@macro-hangupcall:10] GotoIf("DAHDI/18-1", "1?skipblkvm") in new stack
    -- Goto (macro-hangupcall,s,13)
    -- Executing [s@macro-hangupcall:13] GotoIf("DAHDI/18-1", "1?theend") in new stack
    -- Goto (macro-hangupcall,s,15)
    -- Executing [s@macro-hangupcall:15] Hangup("DAHDI/18-1", "") in new stack
  == Spawn extension (macro-hangupcall, s, 15) exited non-zero on 'DAHDI/18-1' in macro 'hangupcall'
  == Spawn extension (macro-dial, s, 7) exited non-zero on 'DAHDI/18-1' in macro 'dial'
  == Spawn extension (macro-exten-vm, s, 9) exited non-zero on 'DAHDI/18-1' in macro 'exten-vm'
  == Spawn extension (from-did-direct, 200, 1) exited non-zero on 'DAHDI/18-1'
q931_hangup: other hangup
NEW_HANGUP DEBUG: Calling q931_hangup, ourstate Disconnect Indication, peerstate Disconnect Request, hold-state Idle
q931.c:4721 q931_release: Call 53 enters state 19 (Release Request).  Hold state: Idle

> DL-DATA request
> Protocol Discriminator: Q.931 (8)  len=9
> TEI=0 Call Ref: len= 2 (reference 53/0x35) (Sent to originator)
> Message Type: RELEASE (77)
TEI=0 Transmitting N(S)=11, window is open V(A)=11 K=7

> Protocol Discriminator: Q.931 (8)  len=9
> TEI=0 Call Ref: len= 2 (reference 53/0x35) (Sent to originator)
> Message Type: RELEASE (77)
> [08 02 81 90]
> Cause (len= 4) [ Ext: 1  Coding: CCITT (ITU) standard (0)  Spare: 0  Location: Private network serving the local user (1)
>                  Ext: 1  Cause: Normal Clearing (16), class = Normal Event (1) ]
    -- Hungup 'DAHDI/18-1'

< Protocol Discriminator: Q.931 (8)  len=5
< TEI=0 Call Ref: len= 2 (reference 53/0x35) (Sent from originator)
< Message Type: RELEASE COMPLETE (90)
Received message for call 0x8dc4ca8 on 0x8e98e10 TEI/SAPI 0/0, call->pri is 0x8e98e10 TEI/SAPI 0/0
q931.c:7083 post_handle_q931_message: Call 53 enters state 0 (Null).  Hold state: Idle
q931_hangup: other hangup
NEW_HANGUP DEBUG: Calling q931_hangup, ourstate Null, peerstate Null, hold-state Idle
NEW_HANGUP DEBUG: Destroying the call, ourstate Null, peerstate Null, hold-state Idle


2. พอดีบัคเสร็จแล้วก็ยกเลิก
โค้ด: เลือกทั้งหมด
elastix-a*CLI> pri set debug off span 1


3. ส่งผลการดีบัคไปเก็บไว้ในไฟล์
ปกติการดีบัคมันจะโชว์ผลในหน้า console ซึ่งบางทีก็ดูยากครับ เรามีวิธีดีบัคแล้วให้เก็บไว้ในไฟล์ แล้วเอามาเปิดดูภายหลัง ตามนี้ครับ

elastix-a*CLI> pri set debug file /tmp/e1-span1-debug
elastix-a*CLI> pri set debug on span 1
...
จะมีข้อความบน console มากมายทั้งที่เกี่ยวกับ E1 และไม่เกี่ยว
...
elastix-a*CLI> pri set debug off span 1

ในไฟล์ /tmp/e1-span1-debug จะมีข้อมูลที่เกี่ยวกับพอร์ต E1 เท่านั้น ดูง่ายดีครับ

โค้ด: เลือกทั้งหมด
< Protocol Discriminator: Q.931 (8)  len=42
< TEI=0 Call Ref: len= 2 (reference 56/0x38) (Sent from originator)
< Message Type: SETUP (5)
< [a1]
< Sending Complete (len= 1)
< [04 03 80 90 a3]
< Bearer Capability (len= 5) [ Ext: 1  Q.931 Std: 0  Info transfer capability: Speech (0)
<                              Ext: 1  Trans mode/rate: 64kbps, circuit-mode (16)
<                                User information layer 1: A-Law (35)
< [18 03 a9 83 85]
< Channel ID (len= 5) [ Ext: 1  IntID: Implicit  Other(PRI)  Spare: 0  Exclusive  Dchan: 0
<                       ChanSel: As indicated in following octets
<                       Ext: 1  Coding: 0  Number Specified  Channel Type: 3
<                       Ext: 1  Channel: 5 Type: CPE]
< [6c 0c 21 80 30 38 35 31 36 31 39 34 33 39]
< Calling Number (len=14) [ Ext: 0  TON: National Number (2)  NPI: ISDN/Telephony Numbering Plan (E.164/E.163) (1)
<                           Presentation: Presentation permitted, user number not screened (0)  '0851619439' ]
< [70 0a a1 30 32 33 34 35 36 37 30 30]
< Called Number (len=12) [ Ext: 1  TON: National Number (2)  NPI: ISDN/Telephony Numbering Plan (E.164/E.163) (1)  '023456700' ]
-- Making new call for cref 56
Received message for call 0x8dc4ca8 on 0x8e98e10 TEI/SAPI 0/0, call->pri is 0x8e98e10 TEI/SAPI 0/0
-- Processing Q.931 Call Setup
-- Processing IE 161 (cs0, Sending Complete)
-- Processing IE 4 (cs0, Bearer Capability)
-- Processing IE 24 (cs0, Channel Identification)
-- Processing IE 108 (cs0, Calling Party Number)
-- Processing IE 112 (cs0, Called Party Number)
q931.c:6871 post_handle_q931_message: Call 56 enters state 6 (Call Present).  Hold state: Idle
q931.c:4524 q931_call_proceeding: Call 56 enters state 9 (Incoming Call Proceeding).  Hold state: Idle

> DL-DATA request
> Protocol Discriminator: Q.931 (8)  len=10
> TEI=0 Call Ref: len= 2 (reference 56/0x38) (Sent to originator)
> Message Type: CALL PROCEEDING (2)
TEI=0 Transmitting N(S)=20, window is open V(A)=20 K=7

> Protocol Discriminator: Q.931 (8)  len=10
> TEI=0 Call Ref: len= 2 (reference 56/0x38) (Sent to originator)
> Message Type: CALL PROCEEDING (2)
> [18 03 a9 83 85]
> Channel ID (len= 5) [ Ext: 1  IntID: Implicit  Other(PRI)  Spare: 0  Exclusive  Dchan: 0
>                       ChanSel: As indicated in following octets
>                       Ext: 1  Coding: 0  Number Specified  Channel Type: 3
>                       Ext: 1  Channel: 5 Type: CPE]
q931.c:4552 q931_alerting: Call 56 enters state 7 (Call Received).  Hold state: Idle

> DL-DATA request
> Protocol Discriminator: Q.931 (8)  len=9
> TEI=0 Call Ref: len= 2 (reference 56/0x38) (Sent to originator)
> Message Type: ALERTING (1)
TEI=0 Transmitting N(S)=21, window is open V(A)=20 K=7

> Protocol Discriminator: Q.931 (8)  len=9
> TEI=0 Call Ref: len= 2 (reference 56/0x38) (Sent to originator)
> Message Type: ALERTING (1)
> [1e 02 81 88]
> Progress Indicator (len= 4) [ Ext: 1  Coding: CCITT (ITU) standard (0)  0: 0  Location: Private network serving the local user (1)
>                               Ext: 1  Progress Description: Inband information or appropriate pattern now available. (8) ]
q931.c:4683 q931_connect: Call 56 enters state 8 (Connect Request).  Hold state: Idle

> DL-DATA request
> Protocol Discriminator: Q.931 (8)  len=14
> TEI=0 Call Ref: len= 2 (reference 56/0x38) (Sent to originator)
> Message Type: CONNECT (7)
TEI=0 Transmitting N(S)=22, window is open V(A)=22 K=7

> Protocol Discriminator: Q.931 (8)  len=14
> TEI=0 Call Ref: len= 2 (reference 56/0x38) (Sent to originator)
> Message Type: CONNECT (7)
> [18 03 a9 83 85]
> Channel ID (len= 5) [ Ext: 1  IntID: Implicit  Other(PRI)  Spare: 0  Exclusive  Dchan: 0
>                       ChanSel: As indicated in following octets
>                       Ext: 1  Coding: 0  Number Specified  Channel Type: 3
>                       Ext: 1  Channel: 5 Type: CPE]
> [1e 02 81 82]
> Progress Indicator (len= 4) [ Ext: 1  Coding: CCITT (ITU) standard (0)  0: 0  Location: Private network serving the local user (1)
>                               Ext: 1  Progress Description: Called equipment is non-ISDN. (2) ]

< Protocol Discriminator: Q.931 (8)  len=5
< TEI=0 Call Ref: len= 2 (reference 56/0x38) (Sent from originator)
< Message Type: CONNECT ACKNOWLEDGE (15)
Received message for call 0x8dc4ca8 on 0x8e98e10 TEI/SAPI 0/0, call->pri is 0x8e98e10 TEI/SAPI 0/0
q931.c:7024 post_handle_q931_message: Call 56 enters state 10 (Active).  Hold state: Idle
q931_hangup: other hangup
NEW_HANGUP DEBUG: Calling q931_hangup, ourstate Active, peerstate Active, hold-state Idle
q931.c:4768 q931_disconnect: Call 56 enters state 11 (Disconnect Request).  Hold state: Idle

> DL-DATA request
> Protocol Discriminator: Q.931 (8)  len=9
> TEI=0 Call Ref: len= 2 (reference 56/0x38) (Sent to originator)
> Message Type: DISCONNECT (69)
TEI=0 Transmitting N(S)=23, window is open V(A)=23 K=7

> Protocol Discriminator: Q.931 (8)  len=9
> TEI=0 Call Ref: len= 2 (reference 56/0x38) (Sent to originator)
> Message Type: DISCONNECT (69)
> [08 02 81 90]
> Cause (len= 4) [ Ext: 1  Coding: CCITT (ITU) standard (0)  Spare: 0  Location: Private network serving the local user (1)
>                  Ext: 1  Cause: Normal Clearing (16), class = Normal Event (1) ]

< Protocol Discriminator: Q.931 (8)  len=5
< TEI=0 Call Ref: len= 2 (reference 56/0x38) (Sent from originator)
< Message Type: RELEASE (77)
Received message for call 0x8dc4ca8 on 0x8e98e10 TEI/SAPI 0/0, call->pri is 0x8e98e10 TEI/SAPI 0/0
q931.c:7123 post_handle_q931_message: Call 56 enters state 0 (Null).  Hold state: Idle
q931_hangup: other hangup
NEW_HANGUP DEBUG: Calling q931_hangup, ourstate Null, peerstate Release Request, hold-state Idle

> DL-DATA request
> Protocol Discriminator: Q.931 (8)  len=9
> TEI=0 Call Ref: len= 2 (reference 56/0x38) (Sent to originator)
> Message Type: RELEASE COMPLETE (90)
TEI=0 Transmitting N(S)=24, window is open V(A)=24 K=7

> Protocol Discriminator: Q.931 (8)  len=9
> TEI=0 Call Ref: len= 2 (reference 56/0x38) (Sent to originator)
> Message Type: RELEASE COMPLETE (90)
> [08 02 81 90]
> Cause (len= 4) [ Ext: 1  Coding: CCITT (ITU) standard (0)  Spare: 0  Location: Private network serving the local user (1)
>                  Ext: 1  Cause: Normal Clearing (16), class = Normal Event (1) ]
q931_hangup: other hangup
NEW_HANGUP DEBUG: Calling q931_hangup, ourstate Null, peerstate Null, hold-state Idle
NEW_HANGUP DEBUG: Destroying the call, ourstate Null, peerstate Null, hold-state Idle


5. ดู message ที่พอร์ต E1 คุยกับอุปกรณ์ที่มันต่ออยู่
เช็คว่าพอร์ต E1 คุยอะไรกับอุปกรณ์ที่มันต่ออยู่บ้าง อันนี้เอาไว้เช็คการเชื่อมต่อได้ด้วยนะครับ ยกตัวอย่างเช่น มีแต่ส่งออกจากพอร์ต E1 แต่ไม่มีอะไรเข้ามาเลย พอร์ตก็ยัง Sync อยู่ เราก็แจ้ง จนท ซึ่งดูแล E1 ให้ช่วยเช็คให้

เครื่องหมาย < หมายถึงรับเข้ามา (inbound) ที่พอร์ต E1 ส่วนเครื่องหมาย > หมายถึงส่งออกไป (outbound) จากพอร์ต E1

โค้ด: เลือกทั้งหมด
elastix-a*CLI> pri intense debug span 1
Enabled debugging on span 1

< TEI: 0 State 7(Multi-frame established)
< V(A)=29, V(S)=29, V(R)=21
< K=7, RC=1, l3initiated=0, reject_except=-1, ack_pend=0
< T200_id=0, N200=3, T203_id=1
< [ 02 01 01 3b ]
< Supervisory frame:
< SAPI: 00  C/R: 1 EA: 0
<  TEI: 000        EA: 1
< Zero: 0     S: 0 01: 1  [ RR (receive ready) ]
< N(R): 029 P/F: 1
< 0 bytes of data

> TEI: 0 State 7(Multi-frame established)
> V(A)=29, V(S)=29, V(R)=21
> K=7, RC=1, l3initiated=0, reject_except=-1, ack_pend=0
> T200_id=0, N200=3, T203_id=1
> [ 02 01 01 2b ]
> Supervisory frame:
> SAPI: 00  C/R: 1 EA: 0
>  TEI: 000        EA: 1
> Zero: 0     S: 0 01: 1  [ RR (receive ready) ]
> N(R): 021 P/F: 1
> 0 bytes of data
-- Got ACK for N(S)=29 to (but not including) N(S)=29
-- T200 requested to stop when not started
T203 requested to start without stopping first
-- Starting T203 timer
Done handling message for SAPI/TEI=0/0
t203_expire

> TEI: 0 State 7(Multi-frame established)
> V(A)=29, V(S)=29, V(R)=21
> K=7, RC=1, l3initiated=0, reject_except=-1, ack_pend=0
> T200_id=0, N200=3, T203_id=0
> [ 00 01 01 2b ]
> Supervisory frame:
> SAPI: 00  C/R: 0 EA: 0
>  TEI: 000        EA: 1
> Zero: 0     S: 0 01: 1  [ RR (receive ready) ]
> N(R): 021 P/F: 1
> 0 bytes of data
-- Starting T200 timer

< TEI: 0 State 8(Timer recovery)
< V(A)=29, V(S)=29, V(R)=21
< K=7, RC=0, l3initiated=0, reject_except=-1, ack_pend=0
< T200_id=1, N200=3, T203_id=0
< [ 00 01 01 3b ]
< Supervisory frame:
< SAPI: 00  C/R: 0 EA: 0
<  TEI: 000        EA: 1
< Zero: 0     S: 0 01: 1  [ RR (receive ready) ]
< N(R): 029 P/F: 1
< 0 bytes of data
-- Got ACK for N(S)=29 to (but not including) N(S)=29
-- Stopping T200 timer
-- Starting T203 timer
Done handling message for SAPI/TEI=0/0


มาดู message ขณะที่พอร์ต E1 ดาวน์ สังเกตุว่ามีแต่ข้อความที่พอร์ต E1 ส่งออก ไม่มีรับเข้ามาเลย

โค้ด: เลือกทั้งหมด
t200_expire
  TEI: 0 State 5(Awaiting establishment)
  V(A)=29, V(S)=29, V(R)=21
  K=7, RC=3, l3initiated=1, reject_except=0, ack_pend=0
  T200_id=1, N200=3, T203_id=0
TEI=0 MDL-ERROR (G): T200 expired N200 times sending SABME in state 5(Awaiting establishment)
Changing from state 5(Awaiting establishment) to 4(TEI assigned)
q931.c:7700 q931_dl_indication: link is DOWN
-- T203 requested to stop when not started
-- Restarting T200 timer
TEI=0 Sending SABME

> TEI: 0 State 4(TEI assigned)
> V(A)=29, V(S)=29, V(R)=21
> K=7, RC=0, l3initiated=1, reject_except=0, ack_pend=0
> T200_id=1, N200=3, T203_id=0
> [ 00 01 7f ]
> Unnumbered frame:
> SAPI: 00  C/R: 0 EA: 0
>  TEI: 000        EA: 1
>   M3: 3   P/F: 1 M2: 3 11: 3  [ SABME (set asynchronous balanced mode extended) ]
> 0 bytes of data
Changing from state 4(TEI assigned) to 5(Awaiting establishment)
t200_expire
  TEI: 0 State 5(Awaiting establishment)
  V(A)=29, V(S)=29, V(R)=21
  K=7, RC=0, l3initiated=1, reject_except=0, ack_pend=0
  T200_id=1, N200=3, T203_id=0
TEI=0 Sending SABME

> TEI: 0 State 5(Awaiting establishment)
> V(A)=29, V(S)=29, V(R)=21
> K=7, RC=1, l3initiated=1, reject_except=0, ack_pend=0
> T200_id=0, N200=3, T203_id=0
> [ 00 01 7f ]
> Unnumbered frame:
> SAPI: 00  C/R: 0 EA: 0
>  TEI: 000        EA: 1
>   M3: 3   P/F: 1 M2: 3 11: 3  [ SABME (set asynchronous balanced mode extended) ]
> 0 bytes of data
-- Starting T200 timer
t200_expire
  TEI: 0 State 5(Awaiting establishment)
  V(A)=29, V(S)=29, V(R)=21
  K=7, RC=1, l3initiated=1, reject_except=0, ack_pend=0
  T200_id=1, N200=3, T203_id=0
TEI=0 Sending SABME

> TEI: 0 State 5(Awaiting establishment)
> V(A)=29, V(S)=29, V(R)=21
> K=7, RC=2, l3initiated=1, reject_except=0, ack_pend=0
> T200_id=0, N200=3, T203_id=0
> [ 00 01 7f ]
> Unnumbered frame:
> SAPI: 00  C/R: 0 EA: 0
>  TEI: 000        EA: 1
>   M3: 3   P/F: 1 M2: 3 11: 3  [ SABME (set asynchronous balanced mode extended) ]
> 0 bytes of data
-- Starting T200 timer
t200_expire
  TEI: 0 State 5(Awaiting establishment)
  V(A)=29, V(S)=29, V(R)=21
  K=7, RC=2, l3initiated=1, reject_except=0, ack_pend=0
  T200_id=1, N200=3, T203_id=0
TEI=0 Sending SABME

> TEI: 0 State 5(Awaiting establishment)
> V(A)=29, V(S)=29, V(R)=21
> K=7, RC=3, l3initiated=1, reject_except=0, ack_pend=0
> T200_id=0, N200=3, T203_id=0
> [ 00 01 7f ]
> Unnumbered frame:
> SAPI: 00  C/R: 0 EA: 0
>  TEI: 000        EA: 1
>   M3: 3   P/F: 1 M2: 3 11: 3  [ SABME (set asynchronous balanced mode extended) ]
> 0 bytes of data
-- Starting T200 timer
t200_expire
  TEI: 0 State 5(Awaiting establishment)
  V(A)=29, V(S)=29, V(R)=21
  K=7, RC=3, l3initiated=1, reject_except=0, ack_pend=0
  T200_id=1, N200=3, T203_id=0
TEI=0 MDL-ERROR (G): T200 expired N200 times sending SABME in state 5(Awaiting establishment)
Changing from state 5(Awaiting establishment) to 4(TEI assigned)
q931.c:7700 q931_dl_indication: link is DOWN
-- T203 requested to stop when not started
-- Restarting T200 timer
TEI=0 Sending SABME

> TEI: 0 State 4(TEI assigned)
> V(A)=29, V(S)=29, V(R)=21
> K=7, RC=0, l3initiated=1, reject_except=0, ack_pend=0
> T200_id=1, N200=3, T203_id=0
> [ 00 01 7f ]
> Unnumbered frame:
> SAPI: 00  C/R: 0 EA: 0
>  TEI: 000        EA: 1
>   M3: 3   P/F: 1 M2: 3 11: 3  [ SABME (set asynchronous balanced mode extended) ]
> 0 bytes of data
Changing from state 4(TEI assigned) to 5(Awaiting establishment)
t200_expire
  TEI: 0 State 5(Awaiting establishment)
  V(A)=29, V(S)=29, V(R)=21
  K=7, RC=0, l3initiated=1, reject_except=0, ack_pend=0
  T200_id=1, N200=3, T203_id=0
TEI=0 Sending SABME

> TEI: 0 State 5(Awaiting establishment)
> V(A)=29, V(S)=29, V(R)=21
> K=7, RC=1, l3initiated=1, reject_except=0, ack_pend=0
> T200_id=0, N200=3, T203_id=0
> [ 00 01 7f ]
> Unnumbered frame:
> SAPI: 00  C/R: 0 EA: 0
>  TEI: 000        EA: 1
>   M3: 3   P/F: 1 M2: 3 11: 3  [ SABME (set asynchronous balanced mode extended) ]
> 0 bytes of data
-- Starting T200 timer
t200_expire
  TEI: 0 State 5(Awaiting establishment)
  V(A)=29, V(S)=29, V(R)=21
  K=7, RC=1, l3initiated=1, reject_except=0, ack_pend=0
  T200_id=1, N200=3, T203_id=0
TEI=0 Sending SABME

> TEI: 0 State 5(Awaiting establishment)
> V(A)=29, V(S)=29, V(R)=21
> K=7, RC=2, l3initiated=1, reject_except=0, ack_pend=0
> T200_id=0, N200=3, T203_id=0
> [ 00 01 7f ]
> Unnumbered frame:
> SAPI: 00  C/R: 0 EA: 0
>  TEI: 000        EA: 1
>   M3: 3   P/F: 1 M2: 3 11: 3  [ SABME (set asynchronous balanced mode extended) ]
> 0 bytes of data
-- Starting T200 timer
t200_expire
  TEI: 0 State 5(Awaiting establishment)
  V(A)=29, V(S)=29, V(R)=21
  K=7, RC=2, l3initiated=1, reject_except=0, ack_pend=0
  T200_id=1, N200=3, T203_id=0
TEI=0 Sending SABME

> TEI: 0 State 5(Awaiting establishment)
> V(A)=29, V(S)=29, V(R)=21
> K=7, RC=3, l3initiated=1, reject_except=0, ack_pend=0
> T200_id=0, N200=3, T203_id=0
> [ 00 01 7f ]
> Unnumbered frame:
> SAPI: 00  C/R: 0 EA: 0
>  TEI: 000        EA: 1
>   M3: 3   P/F: 1 M2: 3 11: 3  [ SABME (set asynchronous balanced mode extended) ]
> 0 bytes of data
-- Starting T200 timer
t200_expire
  TEI: 0 State 5(Awaiting establishment)
  V(A)=29, V(S)=29, V(R)=21
  K=7, RC=3, l3initiated=1, reject_except=0, ack_pend=0
  T200_id=1, N200=3, T203_id=0
TEI=0 MDL-ERROR (G): T200 expired N200 times sending SABME in state 5(Awaiting establishment)
Changing from state 5(Awaiting establishment) to 4(TEI assigned)
q931.c:7700 q931_dl_indication: link is DOWN
-- T203 requested to stop when not started
-- Restarting T200 timer
TEI=0 Sending SABME

> TEI: 0 State 4(TEI assigned)
> V(A)=29, V(S)=29, V(R)=21
> K=7, RC=0, l3initiated=1, reject_except=0, ack_pend=0
> T200_id=1, N200=3, T203_id=0
> [ 00 01 7f ]
> Unnumbered frame:
> SAPI: 00  C/R: 0 EA: 0
>  TEI: 000        EA: 1
>   M3: 3   P/F: 1 M2: 3 11: 3  [ SABME (set asynchronous balanced mode extended) ]
> 0 bytes of data
Changing from state 4(TEI assigned) to 5(Awaiting establishment)


บทความที่เกี่ยวข้อง
เทคนิคการติดตั้งและใช้งานการ์ด Digital E1 - TE110P บน Elastix
** หากมีปัญหากับอุปกรณ์ที่ซื้อมาเองหรือบริการที่ทำขึ้นมาเอง ให้โพสต์ถามในเว็บบอร์ดนี้นะครับ **
** งานเร่งด่วนติดต่อว่าจ้างที่เบอร์ 08-5161-9439 อีเมล์ iamaladin@gmail.com ไลน์ NuizVoip ครับ **
nuiz
Diamond Member
 
โพสต์: 6995
ลงทะเบียนเมื่อ: 24 มี.ค. 2010 09:33

Re: เทคนิคการดีบัคพอร์ต E1 PRI ด้วยคำสั่ง pri

โพสต์โดย Alpacino » 08 ก.ค. 2011 11:07

ขอเสริมคุณหนุ่ยนิดหนึ่งครับ พอดีผมใช้ E1 ของ Sangoma ซึ่งเราสามารถ capture packet ของ card ได้เหมือนกับ lan card โดยใช้คำสั่ง


Sangoma PRI/BRI port configured for CPE Mode
-> wanpipemon -i w1g1 -pcap -pcap_file isdn.pcap -prot ISDN -full -systime -c trd

Sangoma PRI/BRI port configured for NET Mode
-> wanpipemon -i w1g1 -pcap -pcap_file isdn.pcap -prot ISDN -pcap_isdn_network -full -systime -c trd



แล้วเราก็จะได้ file นามสกุล pcap ซึ่งสามารถนำมาเปิดใน wireshark เพื่อวิเคราะห์ดูได้นะครับ จะเป็นถึงแค่ระดับ Layer 2 นะครับ
ความรู้คือการแบ่งปัน
Alpacino
Bronz Member
 
โพสต์: 17
ลงทะเบียนเมื่อ: 20 ต.ค. 2010 09:06

Re: เทคนิคการดีบัคพอร์ต E1 PRI ด้วยคำสั่ง pri

โพสต์โดย nuiz » 08 ก.ค. 2011 18:12

ขอบคุณครับ
ไว้มีการ์ด sangoma แล้วจะลองดูมั่ง
** หากมีปัญหากับอุปกรณ์ที่ซื้อมาเองหรือบริการที่ทำขึ้นมาเอง ให้โพสต์ถามในเว็บบอร์ดนี้นะครับ **
** งานเร่งด่วนติดต่อว่าจ้างที่เบอร์ 08-5161-9439 อีเมล์ iamaladin@gmail.com ไลน์ NuizVoip ครับ **
nuiz
Diamond Member
 
โพสต์: 6995
ลงทะเบียนเมื่อ: 24 มี.ค. 2010 09:33


ย้อนกลับไปยัง Asterisk SIP Server

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และ บุคคลทั่วไป 2 ท่าน

cron