Haiku #167

Friends, Romans, country

Men. I come to tell you of

Inter region routes.

 

OK, you ready for this? Here goes:

 

Friends, Romans, countrymen, lend me your ears;

I come to bury Caesar, not to praise him.

The evil that men do lives after them;

The good is oft-interred with their bones.

So let it be with Caesar.

The noble Brutus hath told you that Caesar was ambitious.

If it were so, it was a grievous fault,

And grievously hath Caesar answered for it.

Now come I, under leave of Brutus and the rest –

For Brutus is an honorable man,

So are they all honorable men –

To speak at Caesar's funeral.

That – more or less – represents the beginning few lines of Marc Antony's funeral oration for Julius Caesar, as written by William Shakespeare. When the author of today's haiku was a sophomore in high school, he was given one night to memorize Marc Antony's funeral oration. As you can see, he still remembers it, not perfectly perhaps, but reasonably close. And he still remembers it even though it's been at least 5 or 6 years – possibly more – since he was a sophomore in high school!

 

Note. Good question: why does he still remember it? Hey, who knows? Most likely it's because he was told to memorize it, and he always does exactly what he's told.

 

As it turns out, Marc Antony's funeral oration is one of two things that the author of today's haiku has managed to memorize during his life. The other one? This:

 

Every region within a CAC configuration must have some way to access every other region. While region links set bandwidth limitations on the connections between regions and also represent the physical links, a route determines which linked path the connection will traverse from one region to another. This cmdlet creates that route association.

 

That – more or less – represents the beginning few lines of the detailed description from the help topic for the New-CsNetworkInterRegionRoute cmdlet.

 

Note. Was that help topic also written by William Shakespeare? Sorry, but we have no comment on that: that is way too controversial for us to discuss in one of our daily Lync Server PowerShell haikus.

 

Admittedly, the author of today's haiku was a typical high school student: while he knew that memorizing Marc Antony's funeral oration would be incredibly useful throughout his adult life, he could never see the value of memorizing the detailed description of the New-CsNetworkInterRegionRoute cmdlet. Talk about naïve, huh? After all, today's haiku is all about the CsNetworkInterRegionRoute cmdlets, a family of cmdlets that include Get-CsNetworkInterRegionRoute, Remove-CsNetworkInterRegionRoute, Set-CsNetworkInterRegionRoute, and – you got it – New-CsNetworkInterRegionRoute.

 

And to think that some people question the value of our educational system.

 

But we digress; let's talk about region routes. We can't explain all the nitty-gritty details about Call Admission Control (CAC) in today's haiku: we don't have room for that and, besides, we're not totally sure that we know all the nitty-gritty details about Call Admission Control. We can tell you, however, that regions form an important part of the CAC infrastructure. We can also tell you that, in order for CAC to do what it's supposed to do (i.e., place bandwidth limitations on audio and video calls), each of your network regions must be connected to each of your other network regions. That's where our region routes come into play.

 

To give you a very rough idea of how this works, suppose we have three regions: NorthAmerica, SouthAmerica, and Europe. Suppose the connectivity between these three regions looks something like this:

 

 

NorthAmerica

SouthAmerica

Europe

NorthAmerica

--

Good

Good

SouthAmerica

Good

--

Poor

Europe

Good

Poor

--

 

As you can see, we have good connectivity between NorthAmerica and the other two regions; however, we have poor connectivity between SouthAmerica and Europe. Because of that, we might not want calls from SouthAmerica to go directly to Europe. Instead, we might want to route those calls through NorthAmerica and then to Europe. Make sense?

 

So how do we do that? Well, first we set up the following region links:

 

 

NorthAmerica

SouthAmerica

Europe

NorthAmerica

--

NA_SA

NA_EU

SouthAmerica

NA_SA

--

--

Europe

NA_EU

--

--

 

And once we have our region links in place (notice that we have no direct link between SouthAmerica and NorthAmerica) we can use the New-CsNetworkInterRegionRoute cmdlet to start linking regions together. For example:

 

New-CsNetworkInterRegionRoute -Identity SouthAmerica-to-Europe -NetworkRegionID1 SouthAmerica -NetworkRegionID2 Europe -NetworkRegionLinkIDs "NA_SA, NA_EU"

 

The command shown above defines the connection between the SouthAmerica region and the Europe region (and vice-versa). As you can see, we've given this route the Identity SouthAmerica-to-Europe because, well, because it defines the route from SouthAmerica to Europe. We've also specified the two regions being linked: SouthAmerica and Europe. To do that, we use the NetworkRegionID1 and NetworkRegionID2 parameters. Does it matter which region gets listed as NetworkRegionID1 and which gets listed as NetworkRegionID2? Nope. This command is functionally identical to the command we just showed you:

 

New-CsNetworkInterRegionRoute -Identity SouthAmerica-to-Europe -NetworkRegionID1 Europe -NetworkRegionID2 SouthAmerica -NetworkRegionLinks "NA_SA, NA_EU"

 

Finally, we use the NetworkRegionLinks parameter to specify the network links that will be used to route traffic between these two regions. As you might recall, we decide that the best way to route traffic from SouthAmerica to Europe was to use the NA_SA link and then use the NA_EU link. So guess which links we specified as the parameter value for the NetworkRegionLinks parameter?

 

Good guess.

 

See how that all works? Suppose we now want to define the route between NorthAmerica and Europe? That's easy, because that involves just one link: NA_EU. In other words:

 

New-CsNetworkInterRegionRoute -Identity NorthAmerica-to-Europe -NetworkRegionID1 NorthAmerica -NetworkRegionID2 Europe -NetworkRegionLinks "NA_EU"

 

Etc., etc.

 

As you might expect, the other cmdlets in the CsNetworkInterRegionRoute do pretty much what their names imply they do. For example, the Get-CsNetworkInterRegionRoute cmdlet lets you return information about your existing routes. This command returns information about all your routes:

 

Get-CsNetworkInterRegionRoute

 

This one returns information about the SouthAmerica-to-Europe route:

 

New-CsNetworkInterRegionRoute -Identity SouthAmerica-to-Europe

 

Here's a handy one; it shows you all the routes that involve the NorthAmerica region:

 

Get-CsNetworkInterRegionRoute | Where-Object {$_.NetworkRegionID1 -eq "NorthAmerica" -or $_.NetworkRegionID2 -eq "NorthAmerica"}

 

And, just for the heck of it, here's a command that shows you any routes that include the NA_EU link:

 

Get-CsNetworkInterRegionRoute | Where-Object {$_.NetworkRegionLinks -eq "NA_EU"}

 

Note. The Get-CsNetworkInterRegionRoute cmdlet is especially useful for those of you who, unlike the author of today's haiku, aren't interested in memorizing all your network links and region routes.

 

As you might expect, the Remove-CsNetworkInterRegionRoute cmdlet lets you remove an existing route:

 

Remove-CsNetworkInterRegionRoute -Identity SouthAmerica-to-Europe

 

Keep in mind, however, that if you remove the only route between two regions then you won't be able to apply bandwidth management to audio/video calls between those regions. Like they say, forewarned is forearmed.

 

Finally, the Set-CsNetworkInterRegionRoute cmdlet is typically used to add/remove links from a route. How do you add an additional link to a route? Like this:

 

Set-CsNetworkInterRegionRoute -Identity SouthAmerica-to-Europe -NetworkRegionLinks @{Add="SA_EU"}

 

And here's how you can remove a link from a route:

 

Set-CsNetworkInterRegionRoute -Identity SouthAmerica-to-Europe -NetworkRegionLinks @{Remove="SA_EU"}

 

That's all we have time for today. As it turns out, the author of today's haiku has memorized three things in his life: 1) Marc Antony's funeral oration; 2) the detailed description of the New-CsNetworkInterRegionRoute cmdlet; and, 3) when it's time to call it a day. And guess what? It's time to call it a day.

 

See you tomorrow.