|
0:00:13
|
Let's take a look at dial plan part three for IOS.
|
|
0:00:17
|
So first of all let's take a look, we've talked briefly about
|
|
0:00:20
|
inbound dial peer matching in previous sections.
|
|
0:00:24
|
We mentioned that there's always two call legs for every gateway.
|
|
0:00:28
|
And really there's always if a call is going between multiple gateways
|
|
0:00:32
|
then there's always four call legs.
|
|
0:00:34
|
One for each gateway, so if I have a call coming it starts in CUCM
|
|
0:00:40
|
it comes inbound through a phone and outbound through
|
|
0:00:44
|
a trunk, then goes over to CME let's say just without the use of a gatekeeper
|
|
0:00:49
|
or CUBE, then there is the ingress dial peer from CME
|
|
0:00:56
|
or an IOS gateway in general
|
|
0:00:57
|
and egress dial peer let's say POTS out to an IP phone for instance.
|
|
0:01:02
|
But for IOS inbound dial peer matching
|
|
0:01:05
|
how are we going to match our dial peers?
|
|
0:01:09
|
When the -- in the inbound call leg is of the type VoIP
|
|
0:01:16
|
and actually this also applies for POTS if the call leg is
|
|
0:01:21
|
ISDN, if it's CAS, then this doesn't apply in this order
|
|
0:01:25
|
it's actually just any one of these, but if it's PRI or BRI
|
|
0:01:30
|
so ISDN or VoIP, the first priority for a matched type
|
|
0:01:38
|
is incoming called number and this associates the called number as
|
|
0:01:44
|
the statement says. Incoming called number, so it matches the dnis.
|
|
0:01:50
|
Or else if the type VoIP or ISDN is matched
|
|
0:01:55
|
for the command answer address, this actually associates with the
|
|
0:01:59
|
calling number or else if the type is matched for VoIP and ISDN
|
|
0:02:08
|
then use the destination pattern.
|
|
0:02:10
|
Now destination pattern sounds like called number or dnis
|
|
0:02:15
|
and it is for outbound dial peers.
|
|
0:02:17
|
And I've already mentioned this earlier, but I just want to mention it again
|
|
0:02:21
|
for an inbound dial peer it matches ANI or calling number.
|
|
0:02:26
|
Finally, if none of those three have been configured
|
|
0:02:30
|
it will -- I shouldn't say finally, next to finally
|
|
0:02:33
|
it will match a port if it's a POTS ISDN obviously for VoIP
|
|
0:02:40
|
there is not port
|
|
0:02:44
|
well there's a TCP or UDP port, but that's not what we're talking about
|
|
0:02:47
|
we're talking about physical voice port here
|
|
0:02:50
|
and then finally in 124 code and before it will match peer ID 0
|
|
0:03:00
|
and again, this has been removed for 15.X
|
|
0:03:05
|
Ok, taking a look at the idea of digit manipulation in IOS.
|
|
0:03:10
|
Obviously, defining it is the task of adding or subtracting digits from
|
|
0:03:16
|
its original number to meet whatever the numbering plan requirements are
|
|
0:03:19
|
that we may have.
|
|
0:03:21
|
This of course can occur in H.323 or SIP gateways.
|
|
0:03:25
|
In an IOS gateway, we use a number of options.
|
|
0:03:31
|
We can use a prefix which can only be used after outbound
|
|
0:03:36
|
POTS dial peer match.
|
|
0:03:38
|
We already took a look earlier today at using a tech prefix
|
|
0:03:43
|
if the dial peer is of the type VoIP
|
|
0:03:48
|
and of course that really only takes effect if we're going to
|
|
0:03:51
|
session target RAS.
|
|
0:03:54
|
We can use forward digits, so this will tell us how many digits
|
|
0:04:00
|
should we forward on to a POTS trunk, to a carrier.
|
|
0:04:05
|
This is only for POTS type.
|
|
0:04:08
|
And we should talk real briefly about forward digits
|
|
0:04:12
|
and about with the destination pattern which is used to match
|
|
0:04:16
|
called or dnis numbers in IOS
|
|
0:04:22
|
for outbound dial peers
|
|
0:04:25
|
what digits are automatically passed on by default?
|
|
0:04:30
|
Now if the call or if the dial peer is of the type VoIP
|
|
0:04:35
|
then it forwards all digits regardless of whether they've been explicitly
|
|
0:04:39
|
matched, whether they were a partial wildcard match or a
|
|
0:04:44
|
fully global wildcard match like a dot, just could be anything.
|
|
0:04:52
|
So if it's the type POTS, then anything that’s explicitly
|
|
0:04:57
|
matched or explicitly configured will by default meet the fate of the
|
|
0:05:05
|
digit strip command, so in every POTS dial peer there is an implicitly
|
|
0:05:10
|
configured command called digit-strip
|
|
0:05:12
|
and we can always say no digit-strip
|
|
0:05:15
|
that' s not a problem, but by default digit-strip is on
|
|
0:05:19
|
and it strips any digits that have been explicitly matched.
|
|
0:05:23
|
When we were looking at gateways and trunks
|
|
0:05:26
|
a few modules back, if you happen to recall I set up a 911 and a 112
|
|
0:05:33
|
on two separate gateways dial peers
|
|
0:05:37
|
outbound to POTS and linked them to their T1 and E1 respectively
|
|
0:05:43
|
at the corporate headquarter and Branch 1 site.
|
|
0:05:45
|
And if you recall, I actually placed a call and we saw the calls go
|
|
0:05:52
|
out to the PSTN, but they immediately cleared.
|
|
0:05:55
|
They immediately had normal call clearing. There was no real answer
|
|
0:05:58
|
from the side, but debug isdn q931 showed them going out.
|
|
0:06:02
|
If you happen to catch in there and I didn't talk about it right
|
|
0:06:07
|
then because I knew we were going to cover it later and I didn't want to get too far off topic.
|
|
0:06:10
|
If you recall, you happened to see in the debug isdn q931, you saw the
|
|
0:06:18
|
calling number was populated with the 4-digit extension
|
|
0:06:22
|
that made the call, but the called number didn't show anything.
|
|
0:06:26
|
And this was because destination pattern was 911
|
|
0:06:30
|
it really doesn't matter what the digits are, but they were
|
|
0:06:32
|
all three explicitly configured and so digit strip did its job
|
|
0:06:37
|
and stripped all three digits before it sent the call out
|
|
0:06:40
|
to ISDN.
|
|
0:06:41
|
So when the carrier or Cisco router that is our pseudo PSTN simulator
|
|
0:06:47
|
picked up the call, it had no dnis with which to route the call
|
|
0:06:51
|
and so it simply cleared the call.
|
|
0:06:53
|
Simply said, 'Ok well obviously can't do anything because I don't know where to route the call
|
|
0:06:56
|
I don't have PLAR configured'
|
|
0:07:00
|
So the call's dead, drop it.
|
|
0:07:04
|
Same thing with the 112
|
|
0:07:06
|
three explicitly matched digits, so digit strips any explicitly matched digits.
|
|
0:07:12
|
Now any sort of a wildcard whether I have [2-9]
|
|
0:07:19
|
that's a wildcard. It's a limited wildcard. It can't be any digit, but
|
|
0:07:23
|
it's still a wildcard.
|
|
0:07:25
|
Or if I have a dot indicating any digit, anything that I have
|
|
0:07:29
|
that's a wildcard will be by default passed on to the POTS
|
|
0:07:34
|
the other side of the trunk, whoever the carrier is.
|
|
0:07:38
|
Ok, so prefix is one of those things that we can use to
|
|
0:07:43
|
prefix digits before something gets dropped, so in the case of
|
|
0:07:47
|
like 011, maybe 9011 where the amount of digits that can come after 011 are
|
|
0:07:55
|
variable, so we can't just program a set number of dots or if we
|
|
0:07:59
|
did, it would only be for one country and even then there might be
|
|
0:08:03
|
variable, many countries have variable length patterns
|
|
0:08:09
|
within their country, whether it's LAN line or mobile
|
|
0:08:13
|
that's something if you're watching this and you're from
|
|
0:08:16
|
the US, that might be a foreign concept because all of our
|
|
0:08:19
|
LAN lines and our mobile phone numbers have the
|
|
0:08:21
|
same format, they all follow the North American numbering plan
|
|
0:08:24
|
and they're all of the same length, the E.164 numbers.
|
|
0:08:29
|
That's definitely not so in most other countries. Most countries have
|
|
0:08:33
|
a separate mobile and separate LAN line structure for how their
|
|
0:08:36
|
calls are placed and received. They can go back and forth
|
|
0:08:40
|
between them of course, in other words calls can be placed between
|
|
0:08:43
|
LAN lines and mobile, but the varying -- the length of digits is a lot of times different.
|
|
0:08:50
|
Ok, so that's a good place for a prefix.
|
|
0:08:55
|
9011 we would want to drop the 9, but not the 011
|
|
0:09:00
|
Well with digit strip we can't really have both.
|
|
0:09:03
|
We can't say drop the 9, but don't drop the 0 and 1
|
|
0:09:06
|
It's not like CUCM where we have a discard digit predot.
|
|
0:09:10
|
And we could put a dot there as a delineation.
|
|
0:09:13
|
With IOS, we just have to say leave the digit strip as
|
|
0:09:17
|
the default which doesn't show up in the dial peer config and show run.
|
|
0:09:21
|
Let it strip 9 and 011 and then prefix 011 back on.
|
|
0:09:27
|
For many other numbers, let's say a 7 or 10-digit local number
|
|
0:09:35
|
I might have a 9 indicating secondary dial tone
|
|
0:09:38
|
or matching someone dialing that for secondary dial tone
|
|
0:09:41
|
and then I might have seven digits
|
|
0:09:44
|
or nine and then ten digits.
|
|
0:09:46
|
In that case where I have a fixed length dial plan
|
|
0:09:50
|
and not a .T or wait for interdigit timeout
|
|
0:09:54
|
which that's what the capital T is
|
|
0:09:56
|
is Timeout for interdigit timeout.
|
|
0:09:58
|
If I have a fixed number of digits that need to be passed
|
|
0:10:01
|
to the PSTN, I can say forward digits and seven or forward digits ten
|
|
0:10:07
|
and of the let's say eleven digits that were dialed, nine and then ten digits
|
|
0:10:15
|
I'll only forward ten of those regardless of whether they were
|
|
0:10:18
|
explicitly or wildcard matched.
|
|
0:10:23
|
Number expansion, we showed how we could use that
|
|
0:10:26
|
with a tech prefix to strip off the tech prefix.
|
|
0:10:31
|
We'll look at where that applies in just a little bit.
|
|
0:10:34
|
But that's certainly a useful piece.
|
|
0:10:38
|
We have voice translation rule.
|
|
0:10:40
|
This can apply pretty much anywhere, just depends on where
|
|
0:10:44
|
it's actually configured to be applied.
|
|
0:10:48
|
And then caller ID, we actually can manipulate or altogether change
|
|
0:10:54
|
essentially our calling number after any outbound dial peer match.
|
|
0:11:02
|
So let's look at IOS digit manipulation options.
|
|
0:11:05
|
And specifically I want to look at voice translation rules.
|
|
0:11:10
|
So voice translation rules were adapted from the Unix GPL
|
|
0:11:17
|
SED or SED stands for Serial Editor Program.
|
|
0:11:25
|
Basically gnu license program that's in most flavors of Unix
|
|
0:11:31
|
IOS adapted it from this and it basically states although
|
|
0:11:34
|
the format is a little different if you're used to or familiar with
|
|
0:11:37
|
Unix or maybe you've worked with it on Linux SED
|
|
0:11:41
|
or S, E, D however you might prefer to call it or refer to it.
|
|
0:11:49
|
There are typically three forward slashes in SED.
|
|
0:11:53
|
And that delineates the beginning and end of the whole string
|
|
0:11:57
|
the matched and translated and the middle forward slash
|
|
0:12:01
|
delineates between the two strings, the matched and the translated.
|
|
0:12:07
|
With IOS they decided to split that up,
|
|
0:12:10
|
so there's actually four forward slashes.
|
|
0:12:13
|
So as we're inside of a voice translation rule
|
|
0:12:18
|
we explicitly then say rule one and by the way, when we call something a voice
|
|
0:12:25
|
translation rule up here at this level, it should actually be
|
|
0:12:29
|
called a rule set.
|
|
0:12:31
|
Ok, this is a voice translation rule set.
|
|
0:12:34
|
In fact when we do a debug voice translation as we most
|
|
0:12:39
|
certainly will do in the demonstration
|
|
0:12:43
|
you'll actually see the debug refer to this as rule set ten.
|
|
0:12:47
|
And it's a rule set because it's a set of rules.
|
|
0:12:51
|
Ok, it's not rule ten and then what happens when you get to rule ten within rule ten?
|
|
0:12:55
|
Well it's actually rule ten within rule set ten.
|
|
0:12:58
|
Ok, so for each rule we have a matched number
|
|
0:13:02
|
and a translated number.
|
|
0:13:05
|
And the matched number is delineated or isolated
|
|
0:13:11
|
with or identified beginning with a forward slash and ending with
|
|
0:13:17
|
a forward slash, then we have a space and then in some of these
|
|
0:13:21
|
like for instance this one I exaggerated the space.
|
|
0:13:24
|
This one I just left it as a single space character
|
|
0:13:28
|
This one's a little bit easier to read with the spaces a little
|
|
0:13:31
|
exaggerated, but there's a single space and then a forward slash
|
|
0:13:34
|
and then the translated number and a forward slash to indicate the end.
|
|
0:13:39
|
We have something similar with number expansion
|
|
0:13:42
|
except that we don't have the forward slashes between the matched and translated number.
|
|
0:13:47
|
There's also something else called a translation rule
|
|
0:13:50
|
which is different than a voice translation rule.
|
|
0:13:54
|
Translation rules were around first and like number expansion
|
|
0:13:59
|
they don't have the forward slashes. They only have matched number
|
|
0:14:03
|
and then translated number.
|
|
0:14:08
|
And they can actually be used for things other than just voice.
|
|
0:14:12
|
Voice translation rules were built later in IOS
|
|
0:14:16
|
and can do everything that translation rules can do
|
|
0:14:19
|
but a whole lot more, so we really don't talk about
|
|
0:14:22
|
translation rules almost ever because voice translation rules
|
|
0:14:27
|
are so much more powerful.
|
|
0:14:30
|
When we're within the matched number, we can define sets.
|
|
0:14:36
|
So these sets are defined by parenthetical or they
|
|
0:14:40
|
define parenthetical sections.
|
|
0:14:42
|
Ok, so in other words anything I have in parentheses
|
|
0:14:45
|
will be called a set. If I have multiple sets of parentheses
|
|
0:14:50
|
then they'll go in order from left to right.
|
|
0:14:53
|
And I'll have set 1, set 2 and set 3 for instance.
|
|
0:14:58
|
I typically don't have that many, but it isn't uncommon
|
|
0:15:01
|
to have one or two
|
|
0:15:02
|
and sometimes three, but I haven't really found a use for three yet.
|
|
0:15:06
|
The only thing to keep in mind is that the parentheses is treated
|
|
0:15:12
|
as a literal string unless you or I'm sorry it's treated
|
|
0:15:15
|
as an -- it's treated as part of the string. We have to backslash it
|
|
0:15:20
|
to escape it
|
|
0:15:22
|
so that it's actually used as that special operator defined as a set.
|
|
0:15:30
|
So the open parentheses and -- both the open parentheses and the closed parentheses
|
|
0:15:34
|
you have to have a backslash right before that.
|
|
0:15:37
|
Regular expressions can be used
|
|
0:15:39
|
so carrot and dollar sign indicate the beginning and an end of a line respectively.
|
|
0:15:46
|
We could use plus which indicates one or more of
|
|
0:15:50
|
the previous item.
|
|
0:15:55
|
We can -- there's a lot of different things that we can use
|
|
0:15:59
|
basically just about any regular expression we can use
|
|
0:16:02
|
if you're familiar with regular expressions, incredibly powerful
|
|
0:16:06
|
we'll definitely use a few such as carrot and dollar sign
|
|
0:16:11
|
in our voice translation rules and otherwise in other places in IOS.
|
|
0:16:17
|
And then at the end of the translated string or actually
|
|
0:16:20
|
anywhere in the translated string I should say
|
|
0:16:22
|
we can always have a backslash and then a single numeral indicating
|
|
0:16:28
|
which set in the original matched number we wish to
|
|
0:16:32
|
append at that location.
|
|
0:16:34
|
And we can append multiple sets if we wish.
|
|
0:16:38
|
There's also another character that we can use which is the
|
|
0:16:41
|
ampersand and the ampersand actually does the same thing as
|
|
0:16:45
|
backslash zero. When we talk about sets and I said let's say
|
|
0:16:49
|
you have three sets in the matched number, so three
|
|
0:16:52
|
parentheses sections.
|
|
0:16:58
|
I have set number, I guess I should back up and say
|
|
0:17:03
|
we don't count those canonically, so I don't count those three separate
|
|
0:17:06
|
sets from left to right as 0, 1 and 2
|
|
0:17:10
|
I do count them as 1, 2 and 3
|
|
0:17:13
|
because backslash zero is actually a special set
|
|
0:17:18
|
that actually contains everything in the original matched number
|
|
0:17:22
|
regardless of whether it was inside a set or not, so
|
|
0:17:26
|
backslash zero is a special entity.
|
|
0:17:30
|
It's a special reserved set.
|
|
0:17:33
|
And the ampersand basically does the same thing,
|
|
0:17:35
|
so let's take a look at this. Let's break this down.
|
|
0:17:39
|
Ok, so I've got my rule one
|
|
0:17:43
|
and I've got my two forward slashes which delineate the
|
|
0:17:47
|
matched number. Within it I have my carrot saying this
|
|
0:17:51
|
is the beginning of the string.
|
|
0:17:53
|
If I don't put my carrot in here, then this rule will match a number
|
|
0:17:58
|
that is 2065011001, but it would just as well if I didn't
|
|
0:18:06
|
have the carrot, it would just as well match 12065011001
|
|
0:18:12
|
Why?
|
|
0:18:13
|
Because I didn't say the carrot indicated that the two had to be
|
|
0:18:17
|
the first digit. With the carrot, I'm saying the two must be the
|
|
0:18:20
|
first digit and then the rest of it must match accordingly.
|
|
0:18:24
|
So 206501 1 anything, anything, anything.
|
|
0:18:30
|
And I have this set defined around 1 anything, anything, anything
|
|
0:18:35
|
so I have to escape it before I can actually have it there.
|
|
0:18:41
|
And then I have a dollar sign indicating the end of the string
|
|
0:18:44
|
or end of the line actually.
|
|
0:18:46
|
So if I didn't have the dollar sign, this would match 2065011001
|
|
0:18:56
|
It's always good to have the carrot and dollar sign,
|
|
0:18:59
|
but don't get too overzealous with them. Keep in mind that sometimes
|
|
0:19:02
|
they'll actually cause your match not to be exact
|
|
0:19:06
|
if you wanted it to match something more than
|
|
0:19:09
|
what those are limiting it to.
|
|
0:19:11
|
So then I have my translated number. I've got my two forward slashes
|
|
0:19:14
|
and sometimes when you're first beginning in voice translation rules
|
|
0:19:18
|
I find it useful to write them in Notepad or Text pad
|
|
0:19:23
|
or whatever you have. In the lab you'd have Notepad
|
|
0:19:25
|
but hopefully you're very familiar with them.
|
|
0:19:26
|
VERY, let me emphasize, VERY familiar.
|
|
0:19:31
|
Let me maybe emphasize a little bit more.
|
|
0:19:33
|
By the time you get to the lab, you should be
|
|
0:19:35
|
so intimately familiar with voice translation rules that you can do
|
|
0:19:39
|
them in your sleep, literally.
|
|
0:19:41
|
Ok, just to give you a preparation level of
|
|
0:19:45
|
understanding where you need to be.
|
|
0:19:47
|
But when you're first starting out doing them in Notepad
|
|
0:19:50
|
can be really useful because you can sit here and create let's see
|
|
0:19:53
|
two forward slashes for my matched space two forward slashes for my translated
|
|
0:19:58
|
and then backspace and then fill in what you need.
|
|
0:20:01
|
Expand that out to with a bunch of spaces or as you go along
|
|
0:20:06
|
206 and then go back and then put in the carrot
|
|
0:20:09
|
and then 501 and then go back and put in a set or a
|
|
0:20:13
|
dollar sign or whatever. You can do all that with Notepad.
|
|
0:20:19
|
Ok, so anyhow here I just have backslash 1, so what that's doing is
|
|
0:20:23
|
saying the backslash here in the translated number is
|
|
0:20:28
|
not escaping things. That's only in the matched number.
|
|
0:20:31
|
But here, backslash 1 is calling this set and passing it on
|
|
0:20:37
|
so the number came in 2065011 anything, anything, anything
|
|
0:20:41
|
and we're translating it to 1 anything, anything, anything
|
|
0:20:45
|
and there's a great test command in executive mode
|
|
0:20:48
|
not in the config t, but test voice translation rule and then
|
|
0:20:51
|
you can give it the rule set number test voice translation rule ten
|
|
0:20:57
|
and then give it the number you wish to test against.
|
|
0:20:59
|
And it will tell you if it matched and what it translated it to.
|
|
0:21:03
|
It's very powerful, it's a great tool.
|
|
0:21:07
|
We'll cover that in the demo of course.
|
|
0:21:08
|
So for instance, rule two here I'm just matching a 4-digit
|
|
0:21:13
|
extension or 4-digit dnis or calling number or redirect calling number.
|
|
0:21:19
|
Actually, it all depends on how I apply it with my voice
|
|
0:21:22
|
translation rule. Here I'm saying called, but I could just as easily
|
|
0:21:26
|
say -- and this matches this
|
|
0:21:30
|
Ok, but I could just as easily say translate calling
|
|
0:21:33
|
ten or translate redirect called ten or translate redirect target ten.
|
|
0:21:41
|
So here I'm doing 1...
|
|
0:21:43
|
this can only be 1... because of the carrot and dollar sign respectively.
|
|
0:21:51
|
And I'm then saying for my translated number 20650&
|
|
0:22:01
|
So ampersand is saying pull everything from the matched number
|
|
0:22:06
|
and append it to wherever my ampersand happens to be.
|
|
0:22:09
|
Append it to the end in this case.
|
|
0:22:12
|
I realize that's messy, so I'm going to go and wipe all that off.
|
|
0:22:17
|
And I probably wouldn't have both of these rules in the same
|
|
0:22:20
|
particular rule set. I just had them there for
|
|
0:22:25
|
really screen real estate, so I didn't take up too much space.
|
|
0:22:29
|
So for instance, just take a look at the first rule
|
|
0:22:33
|
and maybe I have a voice translation profile called 10-digit dnis
|
|
0:22:37
|
to four digits, it's not really indicative of the second rule
|
|
0:22:43
|
within the rule set, but it is of the first rule
|
|
0:22:45
|
and I'm translating called or dnis
|
|
0:22:49
|
for rule set ten.
|
|
0:22:51
|
So...
|
|
0:22:54
|
Actually this would make more sense as an incoming
|
|
0:22:57
|
but let's say -- who knows, who knows what it is I'm trying to accomplish.
|
|
0:23:01
|
Maybe I'm trying to -- actually this would be just fine.
|
|
0:23:04
|
Maybe I'm trying to send a call out to maybe not POTS
|
|
0:23:10
|
maybe VoIP out to a CUCM.
|
|
0:23:13
|
So destination pattern
|
|
0:23:15
|
whoops
|
|
0:23:16
|
206501 1000 series, so let me actually take a step back and
|
|
0:23:22
|
talk about how we -- not how we match dial peers
|
|
0:23:25
|
we've already talked about how we match dial peers, but
|
|
0:23:29
|
when it comes to things such as voice translation rules
|
|
0:23:36
|
or we're going to talk about in a moment when it comes to
|
|
0:23:40
|
core lists and class of restrictions
|
|
0:23:43
|
the first thing that's always done is the outbound dial peer's always
|
|
0:23:48
|
matched or if we're first coming into the router with a call, then
|
|
0:23:53
|
the inbound dial peer is matched.
|
|
0:23:54
|
But what I'm trying to boil down to is the dial peer is
|
|
0:23:59
|
always matched first and then we do whatever it is that we
|
|
0:24:04
|
are attempting to do. Whether it's to match class of restriction
|
|
0:24:10
|
and try to figure out if the call should be allowed to go through or not
|
|
0:24:15
|
or if it's voice translation applying a profile in an incoming or
|
|
0:24:20
|
outgoing direction to translate called or calling or whatever
|
|
0:24:23
|
and make that rule apply to that type of number
|
|
0:24:29
|
we always match the dial peer first.
|
|
0:24:31
|
So the reason that's important is we need to whatever the matched
|
|
0:24:35
|
number is, the matched number was matched by the destination
|
|
0:24:38
|
pattern or by the incoming called number
|
|
0:24:40
|
or by the answer address
|
|
0:24:42
|
or by -- really those are the three
|
|
0:24:46
|
that it would be matched by.
|
|
0:24:47
|
Destination pattern would match as we said earlier called for outbound
|
|
0:24:52
|
dial peers, calling for inbound dial peers.
|
|
0:24:57
|
So once we match that, then we invoke the translation profile.
|
|
0:25:02
|
Or when it comes to class of restriction that we're about to talk about
|
|
0:25:05
|
then we match the class of restriction.
|
|
0:25:07
|
And this is very different thinking of -- it's a big departure from
|
|
0:25:12
|
the way CUCM does it.
|
|
0:25:13
|
And of course you have to understand why
|
|
0:25:17
|
Cisco was doing toll bypass and had these kind of
|
|
0:25:22
|
mechanisms in place for IOS digit manipulation
|
|
0:25:27
|
long before they even bought Selsius which was the company
|
|
0:25:29
|
that brought them call manager, communications manager.
|
|
0:25:33
|
Ok, so they had already been doing toll bypass, voice over frame
|
|
0:25:38
|
voice over -- even Voice Over IP, voice over ATM
|
|
0:25:41
|
voice over Docs, voice over PPP
|
|
0:25:44
|
for years before that.
|
|
0:25:46
|
So the constructs and the fundamental thinking of how the programming went into
|
|
0:25:53
|
effect and takes place was very different from and
|
|
0:25:58
|
remains very different and probably always will be between
|
|
0:26:00
|
IOS and CUCM,
|
|
0:26:03
|
so in other words, in CUCM you never match the pattern
|
|
0:26:08
|
if your calling search space, your class of restriction can't
|
|
0:26:12
|
see the partition that the pattern is in.
|
|
0:26:16
|
In IOS it's opposite. First you match the DN, then you see if
|
|
0:26:21
|
the calling search space or really not the calling search space
|
|
0:26:24
|
sorry pardon my slip
|
|
0:26:25
|
but the class of restriction, the core list if that is going to
|
|
0:26:30
|
allow the call to go through and we're going to talk about that in a moment.
|
|
0:26:33
|
But the dial peer's always matched first.
|
|
0:26:35
|
Ok, so let's look at some useful show and debugs.
|
|
0:26:39
|
Show active call voice, show active call voice brief as well
|
|
0:26:44
|
show voice call status
|
|
0:26:46
|
show dial-peer voice summary
|
|
0:26:51
|
Why almost all of these don't start with show voice
|
|
0:26:55
|
or show voip, you know show voip call
|
|
0:26:59
|
show voice or voip call status
|
|
0:27:04
|
show voip or show voice dial peer
|
|
0:27:06
|
show voice dial plan, I have no idea
|
|
0:27:09
|
and it's so frustrating and you've probably seen me on other videos
|
|
0:27:12
|
you'll continue to see me on videos type show voice dial question
|
|
0:27:17
|
because I always get confused wait a minute is it show dial plan
|
|
0:27:23
|
or show voice dial plan, is it show call dial plan
|
|
0:27:26
|
show dial plan voice, show call voice dial plan e.i.e.i
|
|
0:27:33
|
I don't know why they don't just maybe leave -- I realize that this has evolved
|
|
0:27:39
|
over time just like I got done saying, but I don't know why
|
|
0:27:41
|
they don't leave those as usable options, but then
|
|
0:27:46
|
also create duplicate show commands all
|
|
0:27:49
|
housed under the heading of VoIP
|
|
0:27:51
|
or just voice in general.
|
|
0:27:55
|
I don't know, but then again
|
|
0:27:57
|
so debug voip dial peer
|
|
0:28:00
|
we've used that already in a number of situations
|
|
0:28:04
|
with gatekeepers.
|
|
0:28:06
|
Debug voice translation we're definitely going to look at that.
|
|
0:28:09
|
Debug isn q931 and if you need to, hopefully not
|
|
0:28:13
|
at a lower level 921 to see why TEI isn't possibly becoming assigned or
|
|
0:28:18
|
multiple frames aren't becoming established
|
|
0:28:20
|
probably because TEI hasn't been assigned.
|
|
0:28:23
|
Test voice translation rule very powerful, we'll definitely
|
|
0:28:27
|
look at that and csim start, that's actually a hidden command
|
|
0:28:30
|
at exec mode, all of these are of course at exec
|
|
0:28:35
|
And this will actually start a call.
|
|
0:28:37
|
It won't really have an inbound call leg
|
|
0:28:39
|
because the router itself is starting it, but it will have
|
|
0:28:41
|
an outbound and the call won't setup properly
|
|
0:28:46
|
but it will actually allow you to just quickly test
|
|
0:28:51
|
although you won’t' have medial and like I said the
|
|
0:28:54
|
call won't fully setup properly, but it just allows you to test
|
|
0:28:56
|
some basic dial plan functionality.
|
|
0:29:00
|
Ok, CVP actually does have an equivalent of csim start
|
|
0:29:04
|
that's really nice that does allow you to set up a full SIP call.
|
|
0:29:06
|
But anyhow, that's not in the lab.
|
|
0:29:08
|
Let's take a look at IOS digit manipulation and the order of operations.
|
|
0:29:13
|
So this is an H.323 or SIP gateway or CME, it's doesn't matter. It's IOS.
|
|
0:29:20
|
So I am going to have a phone on here so this
|
|
0:29:24
|
does tend to go more towards in this specific example
|
|
0:29:28
|
having this gateway CME enabled
|
|
0:29:32
|
because I have a phone hanging off here or at least SRST enabled.
|
|
0:29:35
|
And if you will recall before I begin and not because I've said it formally, but
|
|
0:29:41
|
just said it in passing a few times in this ATC class is that the
|
|
0:29:49
|
the dial peer that's created when I have a skinny phone is a POTS dial peer
|
|
0:29:54
|
and the dial peer that's created when I have a SIP phone is a VoIP dial peer.
|
|
0:30:00
|
Ok, so anyhow
|
|
0:30:03
|
let's say I have a call coming in from the PSTN.
|
|
0:30:07
|
The first thing it's going to do is hit a physical voice port.
|
|
0:30:10
|
And I have an option that I can do digit manipulation here
|
|
0:30:13
|
such as I can do a voice translation profile.
|
|
0:30:17
|
So I could say translation profile incoming and then I could state what I want it to do.
|
|
0:30:22
|
Obviously it would be a tag I was calling a previously created translation profile
|
|
0:30:28
|
and that translation profile then indicated what rule set I was trying to translate.
|
|
0:30:35
|
It's at the application of the translation profile at the port or dial peer
|
|
0:30:40
|
that we state the direction of the call when we wish to translate it.
|
|
0:30:47
|
If it's incoming, so only if this port's being used for incoming
|
|
0:30:51
|
but if calls are going out of this port presently, then it's not
|
|
0:30:55
|
invoking this and then it's at the translation profile, the actual definition
|
|
0:31:00
|
of voice translation profile that we define what we want to translate.
|
|
0:31:05
|
Is it called, calling or redirect call or redirect target
|
|
0:31:11
|
and which rule set and then it's at the rule set level, so voice
|
|
0:31:15
|
translation rule that we define what the number is that we wish to match.
|
|
0:31:20
|
So they're three separate places. They abstracted those on purpose
|
|
0:31:25
|
to give you a lot more flexibility and granularity.
|
|
0:31:30
|
Ok, then we hit -- and note that I'm saying this is possible manipulation.
|
|
0:31:34
|
What I'm giving you here is an example if we wanted to manipulate it
|
|
0:31:38
|
at any step along the way, sometimes we'll manipulate it at multiple
|
|
0:31:42
|
the called or calling or both
|
|
0:31:46
|
number at multiple places along the way.
|
|
0:31:50
|
But not typically, maybe sometimes we'll manipulate it at two.
|
|
0:31:53
|
But normally we'll manipulate it at one of these spots, so
|
|
0:31:56
|
I'm not necessarily saying you should perform digit manipulation
|
|
0:32:00
|
at all of these locations; I'm simply giving you an example as to where
|
|
0:32:05
|
these digit manipulations could be applied and when they would be applied
|
|
0:32:12
|
depending on which type of digit manipulation you're using.
|
|
0:32:15
|
So then, after I hit a physical voice port for inbound, then I hit an inbound dial peer.
|
|
0:32:22
|
And by the way, since -- well actually no, I've got that
|
|
0:32:26
|
covered here, so I will show that. Never mind.
|
|
0:32:28
|
Let me just back up and forget I started to say anything.
|
|
0:32:32
|
So here I've got an incoming called number dot and maybe another translation profile.
|
|
0:32:37
|
Or this is the only place I have one for instance.
|
|
0:32:40
|
The benefit of translating at the voice port is
|
|
0:32:44
|
let's say I have multiple inbound dial peers which I normally don't, but
|
|
0:32:49
|
maybe I do, doing different things. They're more specific each than just dot.
|
|
0:32:53
|
Maybe one's incoming called number 3500, one's incoming called number
|
|
0:32:58
|
3825, whatever.
|
|
0:33:03
|
If I translate at the port, it's affecting all of the possible matched inbound dial peers.
|
|
0:33:11
|
And in fact I should say one other thing. This is also something that
|
|
0:33:16
|
in no way shares any characteristics with CUCM.
|
|
0:33:18
|
When we just talked about CUCM in the last two sub modules of dial plan
|
|
0:33:24
|
we talked about CUCM tentatively does digit manipulation at the route pattern
|
|
0:33:30
|
then route list details, then gateway level depending on
|
|
0:33:33
|
something down the line trumping or taking precedence
|
|
0:33:37
|
over my currently tentatively scheduled digit manipulation.
|
|
0:33:42
|
In IOS there's none of that.
|
|
0:33:43
|
Think of every place in IOS that you can perform digit manipulation
|
|
0:33:48
|
think of that as a translation rule.
|
|
0:33:49
|
In CUCM, a translation rule immediately transforms the number.
|
|
0:33:55
|
Ok, every place in IOS that you can transform a number
|
|
0:34:00
|
if you choose to do so, it happens immediately.
|
|
0:34:03
|
So if I transform let's say a 10-digit number down to a
|
|
0:34:06
|
4-digit number, then my dial peer will be incoming called number matching four digits.
|
|
0:34:12
|
If I were to have an incoming called number trying to match ten digits
|
|
0:34:16
|
2065011...
|
|
0:34:20
|
but I had already transformed 10-digit dnis down to 4-digit dnis
|
|
0:34:25
|
on the incoming voice port, this incoming called number
|
|
0:34:28
|
that matched or had the pattern 2065011... it would never work.
|
|
0:34:33
|
It would never match, it would never be the chosen dial peer.
|
|
0:34:36
|
So whatever I do here at the voice port takes effect immediately.
|
|
0:34:41
|
Anything I do anywhere in IOS takes effect immediately.
|
|
0:34:45
|
So then after the inbound dial peer comes number expansion
|
|
0:34:51
|
or global expansion or as we saw in that show dial plan number command
|
|
0:34:58
|
I think yesterday when we were looking at gatekeeper
|
|
0:35:02
|
or earlier for those watching the recorded version, we saw the words
|
|
0:35:09
|
macro expansion. This happens -- it's configured globally.
|
|
0:35:13
|
It's not applied anywhere other than the global configuration
|
|
0:35:17
|
except to say that it is actually applied, it's applied globally
|
|
0:35:21
|
but that doesn't just mean that it's kind of in the ethereal
|
|
0:35:25
|
and it just takes effect whenever it wants. No, it takes effect after
|
|
0:35:30
|
an inbound dial peer regardless of type, regardless of whether it's
|
|
0:35:33
|
POTS or VoIP
|
|
0:35:36
|
or MMO IP or EIEIO
|
|
0:35:40
|
and then it happens before the outbound dial peer match.
|
|
0:35:44
|
So a number expansion happens after an inbound
|
|
0:35:48
|
and before an outbound dial peer match.
|
|
0:35:52
|
Ok, so outbound dial peer is the next thing and in this case
|
|
0:35:56
|
I've got dial peer voice 20002 POTS
|
|
0:36:00
|
This is actually set up by CUCME
|
|
0:36:04
|
or Communications Manager Express
|
|
0:36:07
|
for a voice port which is 50/0/1
|
|
0:36:14
|
if you remember the way that IOS names their ports
|
|
0:36:20
|
it names them network module
|
|
0:36:23
|
or slot/sub slot/port
|
|
0:36:29
|
So you could look at it as network module/slot/port on the slot
|
|
0:36:34
|
or network module/wick/port
|
|
0:36:38
|
Ok, the idea is that they chose 50 as a high number because they
|
|
0:36:43
|
essentially thought either we're never going to have router that has
|
|
0:36:47
|
50 network modules in it. If you had a router that had 50 network modules
|
|
0:36:52
|
it's called a CRS 1
|
|
0:36:54
|
or a 12 thousand series BFR, GSR whatever you want to call it.
|
|
0:37:01
|
Or if we do have one, then by that time we'll have rewritten IOS
|
|
0:37:05
|
and CME will choose a higher port number or something.
|
|
0:37:10
|
But that's a virtual port.
|
|
0:37:12
|
This is actually what's called an EFXS port or an Electronic FXS
|
|
0:37:18
|
or Electronic Foreign Exchange Station.
|
|
0:37:21
|
Ok, so that's what CME uses for IP phones.
|
|
0:37:25
|
So we could do digit manipulation
|
|
0:37:30
|
at the actual outbound dial peer.
|
|
0:37:35
|
Whether that outbound dial peer was stated or slated for
|
|
0:37:39
|
CME, a phone in CME
|
|
0:37:42
|
whether it's skinny or SIP or whether it was an outbound
|
|
0:37:47
|
POTS dial peer, maybe come in from POTS go out to POTS, maybe it was
|
|
0:37:51
|
an outbound VoIP dial peer.
|
|
0:37:54
|
Now, one exception here, if there's an outbound VoIP dial peer
|
|
0:38:00
|
then we don't have an outbound port. Actually if we have a dial peer
|
|
0:38:05
|
period that is of type VoIP, there is no port.
|
|
0:38:08
|
So if we're coming in from VoIP
|
|
0:38:11
|
it hits the dial peer VoIP first, there is no port.
|
|
0:38:14
|
If it's going out to VoIP to a trunk of some sort
|
|
0:38:18
|
it goes out through the dial peer VoIP, but there is no port.
|
|
0:38:21
|
So keep that in mind. That's one less place to do digit manipulation.
|
|
0:38:25
|
But if we are going out to POTS, we hit the dial peer first, then
|
|
0:38:29
|
we go out to the port. If we're coming in from POTS
|
|
0:38:32
|
the reversed happens. We come into the port and then come into the dial peer.
|
|
0:38:39
|
Ok, and by the way, if we did want to apply a translation
|
|
0:38:42
|
profile to a ephone for like CME
|
|
0:38:48
|
or even CME as SRST
|
|
0:38:51
|
then we would put it on the ephone DN.
|
|
0:38:55
|
The ephone DN is actually what creates the dial peer.
|
|
0:39:02
|
The ephone is what creates the voice port.
|
|
0:39:05
|
It's really both together that do it, but those are where the break downs are.
|
|
0:39:12
|
So....
|
|
0:39:15
|
And by the way, since we just mentioned about CME
|
|
0:39:18
|
and whether it's VoIP SIP phones or POTS skinny phones
|
|
0:39:27
|
it can be confusing
|
|
0:39:28
|
when we're -- which is what we're going to look at next when we're looking at core.
|
|
0:39:34
|
Same thing, it can be confusing when you're looking at translation profiles.
|
|
0:39:37
|
And what can be confusing is the incoming versus outgoing.
|
|
0:39:41
|
Sometimes people see something on a ephone DN whether it's a
|
|
0:39:46
|
class of restriction or a voice translation profile, voice translation rule
|
|
0:39:51
|
that says incoming, so they think, 'Ok when the call is going
|
|
0:39:56
|
to the phone, it's incoming into the phone.' You cannot look at it
|
|
0:40:01
|
from that perspective.
|
|
0:40:03
|
Any time you're looking at incoming or outgoing
|
|
0:40:06
|
picture yourself as the router
|
|
0:40:07
|
and put your two arms out and those are your two call legs.
|
|
0:40:12
|
So if you are the router and the dial peer is actually part of you,
|
|
0:40:16
|
the router, the phone uses the dial peer, but it's not part of
|
|
0:40:19
|
the phone, it's part of you, the router and you're going out, then you're going
|
|
0:40:24
|
out to the phone. Some people say, 'Ok if I have a class of restriction
|
|
0:40:29
|
or a translation profile outgoing, that's when the phone makes outgoing calls, right?'
|
|
0:40:33
|
No, not at all.
|
|
0:40:35
|
'Or incoming, that's when the phone has incoming calls.' No, not at all.
|
|
0:40:38
|
It's opposite. Picture from the perspective of the router.
|
|
0:40:43
|
You are the router, if I have translation profile outgoing
|
|
0:40:46
|
it's going out to the phone, if I have translation profile incoming
|
|
0:40:49
|
that means the phone has gone off hook and it's coming
|
|
0:40:52
|
into me, the router, from the phone.
|
|
0:40:56
|
Ok, so that's the perspective to look at it.
|
|
0:41:00
|
Again, if there's any questions I will -- go ahead and key them in
|
|
0:41:03
|
to the live online classroom. I have no problem with that, but I can't
|
|
0:41:08
|
answer them because I can't see them until after we finish
|
|
0:41:11
|
with the lecture which won't be much longer.
|
|
0:41:13
|
So let's take a look at class of restriction logic.
|
|
0:41:17
|
This is really, this says CUCME
|
|
0:41:21
|
so Cisco Unified Communications Manager Express class of restriction,
|
|
0:41:25
|
but it really has to do with anything in IOS.
|
|
0:41:28
|
It doesn't have to be CME. Any IOS gateway that isn't
|
|
0:41:33
|
and MGCP gateway, so essentially anything that has dial peers that are
|
|
0:41:37
|
active even an MGCP gateway if we're in fallback mode
|
|
0:41:42
|
anything that has active dial peers can use this
|
|
0:41:45
|
class of restriction logic or a core list as they're called.
|
|
0:41:51
|
And we're not going to look at this from the perspective of
|
|
0:41:56
|
calling search spaces and partitions.
|
|
0:41:59
|
That's the way CUCM uses class of restrictions or defines class of restrictions
|
|
0:42:06
|
as well as other things like site specific call routing and everything we've seen.
|
|
0:42:10
|
It's really a disservice to try to use that analogy. It's a bad analogy.
|
|
0:42:16
|
What is a really good analogy -- actually Cisco Press Book for CME
|
|
0:42:22
|
the very first Cisco Press Book for CME, the author of that book
|
|
0:42:27
|
whom I know is a -- has come up with this analogy of locks and keys
|
|
0:42:34
|
and doors and openings.
|
|
0:42:37
|
And I really like the idea of a key ring and a key and a door
|
|
0:42:42
|
and a lock, so we're going to use this analogy for the core lists.
|
|
0:42:51
|
So essentially the analogy goes like this:
|
|
0:42:55
|
If you have doors in an office building, most of them probably have
|
|
0:43:00
|
locks on them and we're actually going to say that there are no doors
|
|
0:43:06
|
that don't have locks.
|
|
0:43:08
|
Now there may be openings like pass-through ways or openings
|
|
0:43:12
|
that don't have a door and so therefore don't have a lock.
|
|
0:43:15
|
But there are no doors without locks, so we either have just openings
|
|
0:43:20
|
or we have doors and they have at least one lock per door.
|
|
0:43:24
|
and to keep it simple, we're only ever going to put one lock per door.
|
|
0:43:29
|
Now I have certainly seen complex configurations or
|
|
0:43:34
|
analogies or even just examples that have multiple locks per door.
|
|
0:43:42
|
But I just don't like that
|
|
0:43:46
|
because it just -- I think it muddies the water a little bit too much
|
|
0:43:50
|
beyond what's necessary.
|
|
0:43:53
|
Now, converse from that everyone is going to be
|
|
0:43:59
|
carrying key rings and as I carry my key ring, I have possibly only one key
|
|
0:44:07
|
but a lot of times I have multiple keys on my key ring.
|
|
0:44:12
|
Now there are also, just like there are some openings that don't actually
|
|
0:44:16
|
have doors and so therefore don't have locks, there are some people that
|
|
0:44:19
|
maybe walk into the building and they hopefully belong there at that building
|
|
0:44:25
|
but they forgot their key ring that day and so therefore they
|
|
0:44:28
|
don't have any keys to get in any doors and we'll see what happens
|
|
0:44:31
|
with that in a moment, but we've got this analogy of the
|
|
0:44:35
|
building, openings have doors and therefore they have a lock on each one
|
|
0:44:40
|
and we've got the people walking around with key rings
|
|
0:44:43
|
and they have keys on those.
|
|
0:44:45
|
So here I've got an ephone DN or voice register pool
|
|
0:44:49
|
so I've got essentially my CME skinny phone DN or the actual
|
|
0:44:55
|
in SIP we don't do it on the voice register DN, we do it on the pool.
|
|
0:45:00
|
And they are the ones that are requesting the service.
|
|
0:45:06
|
So when you're requesting the service, that is you are coming into the router
|
|
0:45:12
|
then you have the key ring.
|
|
0:45:16
|
And we define these key rings the same way that we define
|
|
0:45:20
|
the doors and that is by use of a command called core list.
|
|
0:45:24
|
Ok, we actually have to define these global, these are actually showing them
|
|
0:45:29
|
applied, but we have to define them globally.
|
|
0:45:32
|
So we would define core list key ring local, core list key ring
|
|
0:45:39
|
national, core list key ring unrestricted,
|
|
0:45:43
|
so those would be like three classes of service.
|
|
0:45:45
|
And then we're going to define core list door
|
|
0:45:49
|
and -- sorry door local, core list door national, core list
|
|
0:45:54
|
door international.
|
|
0:45:56
|
And those are three separate doors.
|
|
0:45:58
|
Now, within those core lists, IOS technically calls what are in there: members.
|
|
0:46:06
|
We're going to label them as member LOK
|
|
0:46:10
|
That means it's a lock or a key.
|
|
0:46:12
|
Which one is it?
|
|
0:46:14
|
Well, it's a lock when it's applied to a door.
|
|
0:46:17
|
It's a key when it's applied to a key ring.
|
|
0:46:20
|
And if you think about the analogy of the locks and the doors
|
|
0:46:23
|
whenever you go to a key smith or whatever they might call them
|
|
0:46:27
|
in wherever you're from
|
|
0:46:30
|
you get -- for those people that still go to those old tradesmen
|
|
0:46:37
|
then you're going to purchase a lock, but you're never just
|
|
0:46:42
|
going to purchase a lock without also at the same time
|
|
0:46:45
|
purchasing a key. Right?
|
|
0:46:47
|
You have to purchase the key with the lock.
|
|
0:46:50
|
I suppose you could go purchase a key that would be
|
|
0:46:53
|
made to fit the lock, but if you're purchasing a lock
|
|
0:46:56
|
you're always purchasing a key, so that's where the analogy LOK
|
|
0:46:59
|
or Lock Or Key is going to come up.
|
|
0:47:01
|
So if the member LOK is part of a key ring
|
|
0:47:06
|
well, then it's a key.
|
|
0:47:07
|
If the member LOK local which this is the same member
|
|
0:47:11
|
same entity is part of the door well, then it's a lock.
|
|
0:47:18
|
Ok, so if I have a core list key ring local and I've got the member
|
|
0:47:23
|
lock or key local and I go to make a call,
|
|
0:47:26
|
first of all I choose the outgoing dial peer based on the matching pattern first.
|
|
0:47:32
|
I already stated that.
|
|
0:47:34
|
Then, core list, the logic checks all the locks and I do say
|
|
0:47:40
|
all because there can be more than one lock
|
|
0:47:43
|
against all of the keys.
|
|
0:47:46
|
So it checks all the locks on the outgoing door
|
|
0:47:50
|
against all of the keys on the incoming key ring.
|
|
0:47:53
|
And again, these are just naming conventions.
|
|
0:47:56
|
You can call them whatever you want.
|
|
0:47:58
|
The technical way to say it is that the outgoing core list
|
|
0:48:05
|
must be a subset or equal to the incoming core list members.
|
|
0:48:12
|
Or another way to say it would be that my incoming
|
|
0:48:16
|
core list must be -- I must have equal number of same named members
|
|
0:48:22
|
as the outgoing core list members or I must have more.
|
|
0:48:27
|
But if there are let's say three locks and again don't do it
|
|
0:48:31
|
just to save yourself the confusion, but if there's three locks
|
|
0:48:34
|
I have to have the three keys that match those locks and
|
|
0:48:37
|
I can more than that, but I have to have at least those three.
|
|
0:48:41
|
So the call goes through if I have the necessary key unlock the doors.
|
|
0:48:48
|
Ok, another example
|
|
0:48:51
|
I go to dial double zero, so 00107047444
|
|
0:49:00
|
and first the dial peer is matched, so this is a matching pattern.
|
|
0:49:07
|
Once the matching pattern has been established, I check my
|
|
0:49:10
|
keys against the lock and I've got the lock or key local
|
|
0:49:15
|
but they have the lock or key -- I actually have the key local
|
|
0:49:18
|
they have the lock national, it is not a match
|
|
0:49:22
|
therefore the call is rejected.
|
|
0:49:27
|
One more example
|
|
0:49:29
|
what if I have an ephone DN
|
|
0:49:33
|
or any sort -- remember an ephone DN is a POTS dial peer, so I have an inbound
|
|
0:49:38
|
POTS dial peer for CME skinny phones
|
|
0:49:42
|
for just coming in from the PSTN, it doesn't matter
|
|
0:49:46
|
or I've got a VoIP dial peer for a SIP phone or coming in from a trunk.
|
|
0:49:50
|
Again, it doesn't matter. Treated the same way.
|
|
0:49:53
|
And the person forgot their key ring.
|
|
0:49:57
|
In the case that someone forgets their key ring
|
|
0:50:00
|
they essentially become Kevin Mitnick and they are an expert social hacker.
|
|
0:50:07
|
And they can talk anyone into the building into unlocking any door.
|
|
0:50:10
|
At least that's how I want you to remember the analogy
|
|
0:50:13
|
because if you don't have a key ring, then you are allowed to go out
|
|
0:50:19
|
any door, it doesn't matter how many locks are on it.
|
|
0:50:22
|
May not make sense unless you think yourself as a social hacker.
|
|
0:50:26
|
And then you can convince anyone that you simply locked
|
|
0:50:30
|
your keys in your office and maybe the cleaning crew's there
|
|
0:50:34
|
or a receptionist and no problem talking them into letting you in your office.
|
|
0:50:40
|
I've done this, you've probably done this, it's possible.
|
|
0:50:43
|
Ok, so that's the idea. If I don't have a key ring, I can get out any
|
|
0:50:48
|
locked door. Also the converse is also true.
|
|
0:50:52
|
If I have a key ring, but there is no door, so there is no door core list
|
|
0:50:59
|
so therefore there is no key, that actually just makes sense.
|
|
0:51:02
|
I just happen to have a key ring full of keys and I can walk through any opening
|
|
0:51:07
|
because there's no door. That won't actually makes sense.
|
|
0:51:10
|
So if there is no incoming or no outgoing core list
|
|
0:51:16
|
and that's Boolean Or, then the call is allowed to go completely free
|
|
0:51:21
|
no problems.
|
|
0:51:22
|
So I'm going to go ahead and take questions at this point.
|
|
0:51:26
|
There already are one
|
|
0:51:29
|
or actually are some, sorry.
|
|
0:51:32
|
Someone said, "Mark, does the number expansion affect outbound VoIP dial peers
|
|
0:51:36
|
as well?" Great question.
|
|
0:51:38
|
Let me go back here real briefly.
|
|
0:51:44
|
It doesn't matter what...
|
|
0:51:49
|
let me go over here
|
|
0:51:54
|
It doesn't matter what type of dial peers these are.
|
|
0:51:57
|
It doesn't matter whether they're VoIP, POTS or anything else
|
|
0:52:01
|
after the inbound dial peer
|
|
0:52:05
|
and before the outbound dial peer number expansion will always be
|
|
0:52:11
|
applied regardless, so
|
|
0:52:14
|
hopefully that is a simple answer.
|
|
0:52:19
|
And you also asked or someone asked
|
|
0:52:22
|
also, "Can you use the caller ID to manipulate or the clid command
|
|
0:52:27
|
rather, to manipulate the caller ID from CME to CUCM?"
|
|
0:52:32
|
"For example, you'd like extensions from CME starting with 4XXX to be presented
|
|
0:52:38
|
as 885004XXX when calling to CUCM."
|
|
0:52:47
|
So in other words you're going out of VoIP dial peer, I'd have to
|
|
0:52:51
|
check to see if VoIP -- I know that POTS supports the dial peer type.
|
|
0:52:59
|
So for instance, if I have dial peer voice let's just choose something high
|
|
0:53:07
|
POTS
|
|
0:53:08
|
then I can certainly do clid
|
|
0:53:13
|
but if I have dial peer
|
|
0:53:17
|
whoops
|
|
0:53:19
|
I did not mean to make that pots. I meant to make that voip
|
|
0:53:23
|
I don't believe -- yep there's a clid
|
|
0:53:25
|
So yep I could do a clid substitute that's for missing.
|
|
0:53:32
|
I could do strip or restrict
|
|
0:53:35
|
to provide a network number.
|
|
0:53:38
|
I could definitely remove it altogether
|
|
0:53:41
|
restrict presentation of it
|
|
0:53:44
|
or substitute it
|
|
0:53:53
|
and in POTS you can override it with something specific
|
|
0:54:00
|
with rdnis if available
|
|
0:54:03
|
so actually the clid command is going to be mainly used
|
|
0:54:08
|
for restricting, stripping, overriding with rdnis. It's not really going to be used to
|
|
0:54:15
|
change it to something else. If you want to do changing
|
|
0:54:18
|
it to something else, that's very simple. That's a voice translation rule.
|
|
0:54:22
|
So we would create a voice translation rule.
|
|
0:54:28
|
Ok,
|
|
0:54:30
|
Oh, sorry voice space translation-rule
|
|
0:54:32
|
sorry
|
|
0:54:33
|
let's say 10
|
|
0:54:35
|
and then I would create rule 1
|
|
0:54:37
|
and I would say -- and we're going to do all this demo in a little bit, but
|
|
0:54:42
|
just to answer your question I would say rule 1/4...
|
|
0:54:48
|
and I would probably be more specific ^4...$
|
|
0:54:54
|
and then I would have a space
|
|
0:54:56
|
and then a forward slash and you wanted to translate it to 88500 and then
|
|
0:55:03
|
the 4XXX, so I would simply say ampersand and that
|
|
0:55:09
|
ampersand pulls everything from the matched number over.
|
|
0:55:15
|
Forward slash, then I would exit out and do a voice translation profile,
|
|
0:55:22
|
call it change to CUCM
|
|
0:55:28
|
and I would translate the -- you want caller ID, so calling number
|
|
0:55:37
|
calling for rule 10
|
|
0:55:40
|
or rule set 10
|
|
0:55:43
|
and then on my egress dial peer
|
|
0:55:48
|
there we go, there was my dial peer.
|
|
0:55:49
|
I would do translation profile
|
|
0:55:53
|
whoops
|
|
0:55:54
|
translation profile outgoing, so as I'm leaving to go to CUCM
|
|
0:56:00
|
change to CUCM, so do sh run | s let's say...
|
|
0:56:07
|
translation|voice space that
|
|
0:56:17
|
Ok, so here would be my voice translation rule set 10
|
|
0:56:20
|
with my rule 1 in there taking any 4-digit extension
|
|
0:56:25
|
that begins with a four and essentially prefixing 88500
|
|
0:56:32
|
I'm applying that rule set and all of its rules to this profile for
|
|
0:56:37
|
calling numbers. Calling it -- I'm naming it this.
|
|
0:56:40
|
And then in my outbound dial peer where I would have session target CUCM
|
|
0:56:45
|
or whatever I'm saying, once you match this dial peer and
|
|
0:56:51
|
by the way, that dial peer would have to have a destination pattern
|
|
0:56:56
|
of the original matched number
|
|
0:56:59
|
so
|
|
0:57:02
|
and just do this again so you can see it all together.
|
|
0:57:05
|
So once you've matched the dial peer, then check the translation profile
|
|
0:57:10
|
to see if there's a match to this -- actually I'm sorry
|
|
0:57:15
|
that wouldn't be destination pattern that.
|
|
0:57:19
|
My fault.
|
|
0:57:21
|
That would have been the calling number, so the
|
|
0:57:23
|
destination pattern would have been 1 or 2... for instance.
|
|
0:57:32
|
Sorry about that.
|
|
0:57:33
|
So the dial peer would be matched,
|
|
0:57:36
|
then I would do a translation or invoke the translation profile
|
|
0:57:40
|
check it
|
|
0:57:41
|
Ok, we're basing on calling number, so check that
|
|
0:57:45
|
there we go
|
|
0:57:46
|
4, if that's my calling number, then it's going to transform to
|
|
0:57:50
|
88500 and I can show you with a test voice translation rule
|
|
0:57:57
|
for rule set number 10
|
|
0:57:59
|
see even in show commands they call it rule set
|
|
0:58:03
|
and then the actual number which is 4005 for instance
|
|
0:58:08
|
it's going to translate to 885004005
|
|
0:58:14
|
We'll do some more of those type of demos when we actually
|
|
0:58:19
|
go into the demonstration period.
|
|
0:58:21
|
But hopefully that answered your question. The clid isn't going to,
|
|
0:58:25
|
but voice translation would.
|