rekrowteN | Networker

All you want to know about computer networks and more

Ultimate Dial Peer Test with T (Part 3)

This post continues with our tests on dial peers in CUCME. I am testing longest number match rule by using different wildcard masks. More about dial peers in CUCME is in this post. First post from this series describes basic tests. Previous post was testing 128 dial peers with various wildcards. But I was missing one wildcard – T character and today is time to test it.

So, this is today’s baseline for testing.

terminal length 0
conf t
no ip domain-lookup
int f1/0
ip add 10.0.0.1 255.255.255.252
no sh
end
!
!
conf t
!
dial-peer voice 1 voip
destination-pattern ^5552222T$
session target ipv4:10.0.0.2
!
dial-peer voice 2 voip
destination-pattern ^5552222T
session target ipv4:10.0.0.2
!
dial-peer voice 3 voip
destination-pattern 5552222T$
session target ipv4:10.0.0.2
!
dial-peer voice 4 voip
destination-pattern 5552222T
session target ipv4:10.0.0.2
!
dial-peer voice 5 voip
destination-pattern ^555222T$
session target ipv4:10.0.0.2
!
dial-peer voice 6 voip
destination-pattern ^555222T
session target ipv4:10.0.0.2
!
dial-peer voice 7 voip
destination-pattern 555222T$
session target ipv4:10.0.0.2
!
dial-peer voice 8 voip
destination-pattern 555222T
session target ipv4:10.0.0.2
!
dial-peer voice 9 voip
destination-pattern ^55522[2]T$
session target ipv4:10.0.0.2
!
dial-peer voice 10 voip
destination-pattern ^55522[2]T
session target ipv4:10.0.0.2
!
dial-peer voice 11 voip
destination-pattern 55522[2]T$
session target ipv4:10.0.0.2
!
dial-peer voice 12 voip
destination-pattern 55522[2]T
session target ipv4:10.0.0.2
!
dial-peer voice 13 voip
destination-pattern ^55522.T$
session target ipv4:10.0.0.2
!
dial-peer voice 14 voip
destination-pattern ^55522.T
session target ipv4:10.0.0.2
!
dial-peer voice 15 voip
destination-pattern 55522.T$
session target ipv4:10.0.0.2
!
dial-peer voice 16 voip
destination-pattern 55522.T
session target ipv4:10.0.0.2
!

You can’t use T in square brackets, round brackets and with combination with ?, %, * characters. T must be last character or before last character, when $ is last character.

T character matches from none to 32 characters. Because fixed number of numbers is not defined, called number must end with # symbol or you must wait timeout period. While testing, I will simulate timeout period. It is the same as using # character.

Here is couple of numbers that I have tested. See, which tags are matching and can be used. I will make tables soon.

Dialed number 5552222.

Router#show dialplan number 5552222 timeout | i tag = [0-9]+, des
 tag = 1, destination-pattern = `^5552222T$',
 tag = 3, destination-pattern = `5552222T$',
 tag = 2, destination-pattern = `^5552222T',
 tag = 10, destination-pattern = `^55522[2]T',
 tag = 4, destination-pattern = `5552222T',
 tag = 6, destination-pattern = `^555222T',
 tag = 12, destination-pattern = `55522[2]T',
 tag = 8, destination-pattern = `555222T',
 tag = 14, destination-pattern = `^55522.T',
 tag = 16, destination-pattern = `55522.T',

Look for tags that are not used, for example tag 5. I would say that it is also a match, but it isn’t.

Dialed number 555222.

Router#show dialplan number 555222 timeout | i tag = [0-9]+, des
 tag = 9, destination-pattern = `^55522[2]T$',
 tag = 5, destination-pattern = `^555222T$',
 tag = 11, destination-pattern = `55522[2]T$',
 tag = 6, destination-pattern = `^555222T',
 tag = 7, destination-pattern = `555222T$',
 tag = 13, destination-pattern = `^55522.T$',
 tag = 10, destination-pattern = `^55522[2]T',
 tag = 8, destination-pattern = `555222T',
 tag = 14, destination-pattern = `^55522.T',
 tag = 12, destination-pattern = `55522[2]T',
 tag = 15, destination-pattern = `55522.T$',
 tag = 16, destination-pattern = `55522.T',

Dialed number 555222222235648724.

Router#show dialplan number 555222222235648724 timeout | i tag = [0-9]+, des
 tag = 2, destination-pattern = `^5552222T',
 tag = 6, destination-pattern = `^555222T',
 tag = 4, destination-pattern = `5552222T',
 tag = 10, destination-pattern = `^55522[2]T',
 tag = 8, destination-pattern = `555222T',
 tag = 12, destination-pattern = `55522[2]T',
 tag = 14, destination-pattern = `^55522.T',
 tag = 16, destination-pattern = `55522.T',

Dialed number 55522.

Router#show dialplan number 55522 timeout | i tag = [0-9]+, des

Dialed number 55522565.

Router#show dialplan number 55522565 timeout | i tag = [0-9]+, des
 tag = 14, destination-pattern = `^55522.T',
 tag = 16, destination-pattern = `55522.T',

Dialed number 555222565.

Router#show dialplan number 555222565 timeout | i tag = [0-9]+, des
 tag = 6, destination-pattern = `^555222T',
 tag = 10, destination-pattern = `^55522[2]T',
 tag = 8, destination-pattern = `555222T',
 tag = 12, destination-pattern = `55522[2]T',
 tag = 14, destination-pattern = `^55522.T',
 tag = 16, destination-pattern = `55522.T',

As usually, I want to determine positions of tags. I want to know, which tags are more specific than others. I will add next five tags. Tag 17 was on the first position in previous tests and is one of the most specific tags. If some of the previous 16 tags will share position with tag 17, it means that these tags are equally long as tag 17. Tag 18 was on the second position in previous tests, etc.

dial-peer voice 17 voip
destination-pattern ^5552222$
session target ipv4:10.0.0.2
!
dial-peer voice 18 voip
destination-pattern ^5552222
session target ipv4:10.0.0.2
!
dial-peer voice 19 voip
destination-pattern 5552222
session target ipv4:10.0.0.2
!
dial-peer voice 20 voip
destination-pattern 555222.
session target ipv4:10.0.0.2
!
dial-peer voice 21 voip
destination-pattern 55522..
session target ipv4:10.0.0.2
!

I will always run 100 tests. I have modified my script once again a little bit. I have introduced new variable tags2. Some of the defined tags are never used. Because of my matching rules, I need to determine, how many tags are matching dialed number (how many lines from one test) and this is my new variable. Principle is the same as in my previous tests in previous posts. Don’t forget these rules:

To start the test, use next TCL script:

Router#tclsh
Router(tcl)#

for { set i 1 } { $i <= 100 } { incr i } {
puts "\nTest: $i\n\n"
show dialplan number 5552222 \| i tag = \[0-9\]\+, des
}

After end, type:

Router(tcl)# tclquit

Number 5552222

telnet 127.0.0.1 2000 | tee dial_T5552222

for { set i 1 } { $i <= 100 } { incr i } {
puts "\nTest: $i\n\n"
show dialplan number 5552222 timeout \| i tag = \[0-9\]\+, des
}

cat dial_T5552222 | grep -o “tag = [0-9]\+” | sed “s/tag = //” | sed “s/^[0-9]$/0/” | tr “\n” ” ” | awk ‘{tags=21; tests=100; tags2=15; for(i=1;i<=tags;i++) {for(j=1;j<=tags;j++) {num[i,j] = 0;}}; printf(“\nPos. #  “); for(j=1;j<=tags;j++) {if (j < 10) {printf(” “)};printf(“#”j)}; printf(“\n——————————————————————————–\n”); for (i=1;i<=tests;i++) {for (j=1;j<=tags2;j++) {p=substr($0,1+(i*tags2*3)+j*3-tags2*3-3,2); if (substr(p,0,1) == “0”) {p=substr(p,2,1)}; num[j,p]++;}}; for (i=1;i<=tags;i++) {printf(“Pos.%2d: “,i); for (j=1;j<=tags;j++) {printf(“%3d”,num[i,j]);} printf(“\n”)}}’

Pos. #   #1 #2 #3 #4 #5 #6 #7 #8 #9#10#11#12#13#14#15#16#17#18#19#20#21
--------------------------------------------------------------------------------
Pos. 1:  53  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0 47  0  0  0  0
Pos. 2:  47  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0 53  0  0  0  0
Pos. 3:   0 31 32  0  0  0  0  0  0  0  0  0  0  0  0  0  0 37  0  0  0
Pos. 4:   0 27 36  0  0  0  0  0  0  0  0  0  0  0  0  0  0 37  0  0  0
Pos. 5:   0 42 32  0  0  0  0  0  0  0  0  0  0  0  0  0  0 26  0  0  0
Pos. 6:   0  0  0 17  0 25  0  0  0 29  0  0  0  0  0  0  0  0 29  0  0
Pos. 7:   0  0  0 27  0 22  0  0  0 21  0  0  0  0  0  0  0  0 30  0  0
Pos. 8:   0  0  0 28  0 29  0  0  0 26  0  0  0  0  0  0  0  0 17  0  0
Pos. 9:   0  0  0 28  0 24  0  0  0 24  0  0  0  0  0  0  0  0 24  0  0
Pos.10:   0  0  0  0  0  0  0 21  0  0  0 21  0 31  0  0  0  0  0 27  0
Pos.11:   0  0  0  0  0  0  0 20  0  0  0 28  0 26  0  0  0  0  0 26  0
Pos.12:   0  0  0  0  0  0  0 28  0  0  0 27  0 21  0  0  0  0  0 24  0
Pos.13:   0  0  0  0  0  0  0 31  0  0  0 24  0 22  0  0  0  0  0 23  0
Pos.14:   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0 43  0  0  0  0 57
Pos.15:   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0 57  0  0  0  0 43
Pos.16:   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
Pos.17:   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
Pos.18:   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
Pos.19:   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
Pos.20:   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
Pos.21:   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0

Table shows, which tag belongs to which dial peer. Pos. 1 means that one tag chosen randomly from this category is used to match number 5552222. If both tags 1 and 17 on position 1 are down, random tag from position 2 is chosen (actually, it is position 3 in the table).

This means that tag 1 is equal to tag 17. So ^5552222T$ is equal to ^5552222$. I think that you get the rest of outputs based on the previous posts. As you can see, T character is also very strong wildcard.

Number 555222

telnet 127.0.0.1 2000 | tee dial_T555222

for { set i 1 } { $i <= 100 } { incr i } {
puts "\nTest: $i\n\n"
show dialplan number 555222 timeout \| i tag = \[0-9\]\+, des
}

cat dial_T555222 | grep -o “tag = [0-9]\+” | sed “s/tag = //” | sed “s/^[0-9]$/0/” | tr “\n” ” ” | awk ‘{tags=21; tests=100; tags2=12; for(i=1;i<=tags;i++) {for(j=1;j<=tags;j++) {num[i,j] = 0;}}; printf(“\nPos. #  “); for(j=1;j<=tags;j++) {if (j < 10) {printf(” “)};printf(“#”j)}; printf(“\n——————————————————————————–\n”); for (i=1;i<=tests;i++) {for (j=1;j<=tags2;j++) {p=substr($0,1+(i*tags2*3)+j*3-tags2*3-3,2); if (substr(p,0,1) == “0”) {p=substr(p,2,1)}; num[j,p]++;}}; for (i=1;i<=tags;i++) {printf(“Pos.%2d: “,i); for (j=1;j<=tags;j++) {printf(“%3d”,num[i,j]);} printf(“\n”)}}’

Pos. #   #1 #2 #3 #4 #5 #6 #7 #8 #9#10#11#12#13#14#15#16#17#18#19#20#21
--------------------------------------------------------------------------------
Pos. 1:   0  0  0  0 50  0  0  0 50  0  0  0  0  0  0  0  0  0  0  0  0
Pos. 2:   0  0  0  0 50  0  0  0 50  0  0  0  0  0  0  0  0  0  0  0  0
Pos. 3:   0  0  0  0  0 17 13  0  0 18 22  0 30  0  0  0  0  0  0  0  0
Pos. 4:   0  0  0  0  0 22 30  0  0 22 16  0 10  0  0  0  0  0  0  0  0
Pos. 5:   0  0  0  0  0 22 21  0  0 22 18  0 17  0  0  0  0  0  0  0  0
Pos. 6:   0  0  0  0  0 17 19  0  0 19 21  0 24  0  0  0  0  0  0  0  0
Pos. 7:   0  0  0  0  0 22 17  0  0 19 23  0 19  0  0  0  0  0  0  0  0
Pos. 8:   0  0  0  0  0  0  0 28  0  0  0 19  0 20 33  0  0  0  0  0  0
Pos. 9:   0  0  0  0  0  0  0 22  0  0  0 28  0 32 18  0  0  0  0  0  0
Pos.10:   0  0  0  0  0  0  0 30  0  0  0 21  0 22 27  0  0  0  0  0  0
Pos.11:   0  0  0  0  0  0  0 20  0  0  0 32  0 26 22  0  0  0  0  0  0
Pos.12:   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0100  0  0  0  0  0
Pos.13:   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
Pos.14:   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
Pos.15:   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
Pos.16:   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
Pos.17:   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
Pos.18:   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
Pos.19:   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
Pos.20:   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
Pos.21:   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0

Number 555222222235648724

telnet 127.0.0.1 2000 | tee dial_T555222222235648724

for { set i 1 } { $i <= 100 } { incr i } {
puts "\nTest: $i\n\n"
show dialplan number 555222222235648724 timeout \| i tag = \[0-9\]\+, des
}

cat dial_T555222222235648724 | grep -o “tag = [0-9]\+” | sed “s/tag = //” | sed “s/^[0-9]$/0/” | tr “\n” ” ” | awk ‘{tags=21; tests=100; tags2=12; for(i=1;i<=tags;i++) {for(j=1;j<=tags;j++) {num[i,j] = 0;}}; printf(“\nPos. #  “); for(j=1;j<=tags;j++) {if (j < 10) {printf(” “)};printf(“#”j)}; printf(“\n——————————————————————————–\n”); for (i=1;i<=tests;i++) {for (j=1;j<=tags2;j++) {p=substr($0,1+(i*tags2*3)+j*3-tags2*3-3,2); if (substr(p,0,1) == “0”) {p=substr(p,2,1)}; num[j,p]++;}}; for (i=1;i<=tags;i++) {printf(“Pos.%2d: “,i); for (j=1;j<=tags;j++) {printf(“%3d”,num[i,j]);} printf(“\n”)}}’

Pos. #   #1 #2 #3 #4 #5 #6 #7 #8 #9#10#11#12#13#14#15#16#17#18#19#20#21
--------------------------------------------------------------------------------
Pos. 1:   0 55  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0 45  0  0  0
Pos. 2:   0 45  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0 55  0  0  0
Pos. 3:   0  0  0 20  0 29  0  0  0 32  0  0  0  0  0  0  0  0 19  0  0
Pos. 4:   0  0  0 27  0 19  0  0  0 26  0  0  0  0  0  0  0  0 28  0  0
Pos. 5:   0  0  0 37  0 23  0  0  0 15  0  0  0  0  0  0  0  0 25  0  0
Pos. 6:   0  0  0 16  0 29  0  0  0 27  0  0  0  0  0  0  0  0 28  0  0
Pos. 7:   0  0  0  0  0  0  0 18  0  0  0 23  0 32  0  0  0  0  0 27  0
Pos. 8:   0  0  0  0  0  0  0 32  0  0  0 22  0 25  0  0  0  0  0 21  0
Pos. 9:   0  0  0  0  0  0  0 30  0  0  0 28  0 18  0  0  0  0  0 24  0
Pos.10:   0  0  0  0  0  0  0 20  0  0  0 27  0 25  0  0  0  0  0 28  0
Pos.11:   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0 50  0  0  0  0 50
Pos.12:   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0 50  0  0  0  0 50
Pos.13:   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
Pos.14:   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
Pos.15:   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
Pos.16:   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
Pos.17:   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
Pos.18:   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
Pos.19:   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
Pos.20:   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
Pos.21:   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0

Number 555222565

telnet 127.0.0.1 2000 | tee dial_T555222565

for { set i 1 } { $i <= 100 } { incr i } {
puts "\nTest: $i\n\n"
show dialplan number 555222565 timeout \| i tag = \[0-9\]\+, des
}

cat dial_T555222565 | grep -o “tag = [0-9]\+” | sed “s/tag = //” | sed “s/^[0-9]$/0/” | tr “\n” ” ” | awk ‘{tags=21; tests=100; tags2=8; for(i=1;i<=tags;i++) {for(j=1;j<=tags;j++) {num[i,j] = 0;}}; printf(“\nPos. #  “); for(j=1;j<=tags;j++) {if (j < 10) {printf(” “)};printf(“#”j)}; printf(“\n——————————————————————————–\n”); for (i=1;i<=tests;i++) {for (j=1;j<=tags2;j++) {p=substr($0,1+(i*tags2*3)+j*3-tags2*3-3,2); if (substr(p,0,1) == “0”) {p=substr(p,2,1)}; num[j,p]++;}}; for (i=1;i<=tags;i++) {printf(“Pos.%2d: “,i); for (j=1;j<=tags;j++) {printf(“%3d”,num[i,j]);} printf(“\n”)}}’

Pos. #   #1 #2 #3 #4 #5 #6 #7 #8 #9#10#11#12#13#14#15#16#17#18#19#20#21
--------------------------------------------------------------------------------
Pos. 1:   0  0  0  0  0 64  0  0  0 36  0  0  0  0  0  0  0  0  0  0  0
Pos. 2:   0  0  0  0  0 36  0  0  0 64  0  0  0  0  0  0  0  0  0  0  0
Pos. 3:   0  0  0  0  0  0  0 20  0  0  0 32  0 24  0  0  0  0  0 24  0
Pos. 4:   0  0  0  0  0  0  0 28  0  0  0 23  0 24  0  0  0  0  0 25  0
Pos. 5:   0  0  0  0  0  0  0 32  0  0  0 20  0 25  0  0  0  0  0 23  0
Pos. 6:   0  0  0  0  0  0  0 20  0  0  0 25  0 27  0  0  0  0  0 28  0
Pos. 7:   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0 40  0  0  0  0 60
Pos. 8:   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0 60  0  0  0  0 40
Pos. 9:   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
Pos.10:   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
Pos.11:   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
Pos.12:   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
Pos.13:   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
Pos.14:   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
Pos.15:   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
Pos.16:   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
Pos.17:   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
Pos.18:   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
Pos.19:   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
Pos.20:   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
Pos.21:   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0

I think that we can conclude these tests. Read also previous posts to have the full overview.

Want more? Check post from series:

Voice Dial Peers in CUCME (2011/10/24)
Longest Number Match Rule in CUCME (2011/10/31)
Ultimate Dial Peer Test (Part 2) (2011/11/07)
Ultimate Dial Peer Test with T (Part 3) (2011/11/14)

About these ads

3 responses to “Ultimate Dial Peer Test with T (Part 3)

  1. Pingback: Voice Dial Peers in CUCME « rekrowteN | Networker

  2. Pingback: Longest Number Match Rule in CUCME « rekrowteN | Networker

  3. Pingback: Ultimate Dial Peer Test (Part 2) « rekrowteN | Networker

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: