<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Networking on Mike Hacker</title>
        <link>https://blog.mikehacker.net/categories/networking/</link>
        <description>Recent content in Networking on Mike Hacker</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en-us</language>
        <lastBuildDate>Tue, 04 Aug 2026 16:17:06 +0000</lastBuildDate><atom:link href="https://blog.mikehacker.net/categories/networking/index.xml" rel="self" type="application/rss+xml" /><item>
            <title>Fine-Grained BGP Control With Azure Route Server Route Maps: A Hands-On Guide for Government Networks</title>
            <link>https://blog.mikehacker.net/p/fine-grained-bgp-control-with-azure-route-server-route-maps-a-hands-on-guide-for-government-networks/</link>
            <pubDate>Tue, 04 Aug 2026 16:17:06 +0000</pubDate>
            <guid>https://blog.mikehacker.net/p/fine-grained-bgp-control-with-azure-route-server-route-maps-a-hands-on-guide-for-government-networks/</guid>
            <description>&lt;img src=&#34;https://blog.mikehacker.net/p/fine-grained-bgp-control-with-azure-route-server-route-maps-a-hands-on-guide-for-government-networks/cover.png&#34; alt=&#34;Featured image of post Fine-Grained BGP Control With Azure Route Server Route Maps: A Hands-On Guide for Government Networks&#34; /&gt;&lt;p&gt;Hybrid connectivity is the backbone of most public sector cloud footprints. A city government running line-of-business systems on-premises while modernizing workloads in Azure, or a state agency stitching together dozens of departmental networks over ExpressRoute and VPN, quickly discovers that the hard part isn&amp;rsquo;t the tunnels - it&amp;rsquo;s the routing. Border Gateway Protocol (BGP) makes hybrid routing dynamic, but dynamic routing without control is how you leak a data center prefix into a partner network or blow past an ExpressRoute route limit.&lt;/p&gt;&#xA;&lt;p&gt;Azure Route Server has been the managed BGP route reflector at the center of these topologies for years. What has been missing is granular, per-connection control over which routes flow where and how they are shaped. &lt;strong&gt;Route maps for Azure Route Server&lt;/strong&gt; fill that gap. This capability remains in public preview as of this writing, so treat it as production-adjacent: excellent for design validation and non-critical paths, but confirm your support posture before you put it in the middle of a mission-critical circuit.&lt;/p&gt;&#xA;&lt;p&gt;This post is written for the network engineers who actually own the BGP tables. We will cover what route maps do, where they attach, the match-and-action model, and concrete Bicep plus CLI examples.&lt;/p&gt;&#xA;&lt;h2 id=&#34;what-azure-route-server-route-maps-actually-do&#34;&gt;What Azure Route Server route maps actually do&#xA;&lt;/h2&gt;&lt;p&gt;Azure Route Server sits between your on-premises networks, network virtual appliances (NVAs), and your Azure virtual networks, exchanging routes over BGP and programming them into the Azure software-defined network. Per the current Microsoft Learn overview (last updated September 2025), it supports up to 16 BGP peers, 4,000 routes per peer, and 10,000 total prefixes.&lt;/p&gt;&#xA;&lt;p&gt;Route maps let you intercept and reshape routes at the point they enter or leave Route Server. According to the &amp;ldquo;About route maps for Azure Route Server&amp;rdquo; documentation on Microsoft Learn, you can apply a route map in two directions on three connection types:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Inbound route map&lt;/strong&gt; - applied to routes Route Server &lt;em&gt;receives&lt;/em&gt; from a BGP peering, ExpressRoute gateway, or VPN gateway.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Outbound route map&lt;/strong&gt; - applied to routes Route Server &lt;em&gt;sends&lt;/em&gt; to a BGP peering, ExpressRoute gateway, or VPN gateway.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The three attachment points are:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;BGP peerings between Route Server and your NVAs (SD-WAN, next-gen firewalls, etc.).&lt;/li&gt;&#xA;&lt;li&gt;The ExpressRoute gateway connection in the same virtual network.&lt;/li&gt;&#xA;&lt;li&gt;The VPN gateway connection in the same virtual network.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;One important constraint: you can apply &lt;strong&gt;only one route map per direction per connection&lt;/strong&gt;. And outbound route maps modify advertisements &lt;em&gt;only&lt;/em&gt; - they do not influence Route Server&amp;rsquo;s best-path selection, because path selection happens before the outbound map runs. Keep that ordering in mind when you reason about traffic engineering.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-match-and-action-model&#34;&gt;The match-and-action model&#xA;&lt;/h2&gt;&lt;p&gt;A route map is an ordered list of rules. Each rule has &lt;strong&gt;match conditions&lt;/strong&gt; and &lt;strong&gt;actions&lt;/strong&gt;. This will feel familiar if you have written route-maps on traditional routers, but the Azure implementation has its own vocabulary.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Match conditions&lt;/strong&gt; evaluate a route&amp;rsquo;s prefix, AS-Path, and BGP community:&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Property&lt;/th&gt;&#xA;          &lt;th&gt;Criterion&lt;/th&gt;&#xA;          &lt;th&gt;Behavior&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Route-prefix&lt;/td&gt;&#xA;          &lt;td&gt;Equals&lt;/td&gt;&#xA;          &lt;td&gt;Matches exactly those prefixes; not more-specifics&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Route-prefix&lt;/td&gt;&#xA;          &lt;td&gt;Contains&lt;/td&gt;&#xA;          &lt;td&gt;Matches the listed prefixes and everything underneath them&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Community&lt;/td&gt;&#xA;          &lt;td&gt;Equals&lt;/td&gt;&#xA;          &lt;td&gt;Route must carry all listed communities&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Community&lt;/td&gt;&#xA;          &lt;td&gt;Contains&lt;/td&gt;&#xA;          &lt;td&gt;Route carries one or more of the listed communities&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;AS-Path&lt;/td&gt;&#xA;          &lt;td&gt;Equals&lt;/td&gt;&#xA;          &lt;td&gt;AS-PATH must contain the ASNs in the listed order&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;AS-Path&lt;/td&gt;&#xA;          &lt;td&gt;Contains&lt;/td&gt;&#xA;          &lt;td&gt;AS-PATH contains one or more listed ASNs, order irrelevant&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;If a rule has multiple match conditions, a route must satisfy &lt;strong&gt;all&lt;/strong&gt; of them. A route map with no match condition matches every route on that connection.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Actions&lt;/strong&gt; then drop or modify matched routes:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Drop&lt;/strong&gt; - filter the matched routes out of the advertisement.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Route-prefix Replace&lt;/strong&gt; - summarize or substitute the matched routes with the prefixes you specify.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;AS-Path Add&lt;/strong&gt; - prepend the listed ASNs (in order) to make a path less preferable.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;AS-Path Replace&lt;/strong&gt; - set the AS-PATH to a specific list, or, with no value, strip it entirely.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Community Add / Replace / Remove&lt;/strong&gt; - tag, overwrite, or selectively remove BGP communities.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Each rule&amp;rsquo;s &lt;strong&gt;Next step&lt;/strong&gt; setting (&lt;code&gt;Continue&lt;/code&gt; or &lt;code&gt;Terminate&lt;/code&gt;) decides whether processing proceeds to the next rule or stops. A critical default to internalize: &lt;strong&gt;when no rule matches, the default action is permit, not deny&lt;/strong&gt;. If your intent is an allow-list, you must end with an explicit drop rule. Government teams accustomed to default-deny firewall thinking should not assume the same semantics apply here.&lt;/p&gt;&#xA;&lt;h2 id=&#34;two-scenarios-that-matter-for-hybrid-government-networks&#34;&gt;Two scenarios that matter for hybrid government networks&#xA;&lt;/h2&gt;&lt;h3 id=&#34;scenario-1-summarizing-on-premises-routes-to-stay-under-expressroute-limits&#34;&gt;Scenario 1: Summarizing on-premises routes to stay under ExpressRoute limits&#xA;&lt;/h3&gt;&lt;p&gt;A common pain point: a large agency advertises hundreds of internal /24s from its data center over ExpressRoute. Combined with virtual network prefixes, you risk hitting route-advertisement ceilings - and the Learn documentation notes that when branch-to-branch is enabled, total routes advertised toward an ExpressRoute circuit must not exceed 1,000. An inbound route map on the ExpressRoute gateway connection can aggregate &lt;code&gt;10.2.1.0/24&lt;/code&gt;, &lt;code&gt;10.2.2.0/24&lt;/code&gt;, and &lt;code&gt;10.2.3.0/24&lt;/code&gt; down to a single &lt;code&gt;10.2.0.0/16&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;One caveat worth flagging loudly: &lt;strong&gt;route summarization strips the BGP Community and AS-PATH attributes from the summarized routes&lt;/strong&gt;, for both inbound and outbound. If you depend on community tags for downstream policy, summarize deliberately.&lt;/p&gt;&#xA;&lt;h3 id=&#34;scenario-2-filtering-and-de-preferring-routes-from-an-nva&#34;&gt;Scenario 2: Filtering and de-preferring routes from an NVA&#xA;&lt;/h3&gt;&lt;p&gt;Suppose an SD-WAN appliance advertises a broad set of prefixes, but you only want a subset reaching your Azure workloads, and you want a specific path treated as a backup. An inbound route map on the NVA BGP peering can drop the unwanted prefixes, and AS-Path prepending can de-preference a redundant path so it is only used on failover.&lt;/p&gt;&#xA;&lt;p&gt;Remember the reserved-number rules from the documentation: do &lt;strong&gt;not&lt;/strong&gt; prepend private ASNs, and do not use ASNs Azure reserves (public 8074, 8075, 12076; private 65515, 65517-65520). Do not remove Azure&amp;rsquo;s own BGP communities (such as 65517:12001 and the related set). Route maps also support &lt;strong&gt;2-byte ASNs only&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;building-a-route-map-with-bicep&#34;&gt;Building a route map with Bicep&#xA;&lt;/h2&gt;&lt;p&gt;Route maps are configurable through the Azure portal, and the resource itself is fully expressible as infrastructure-as-code via the &lt;code&gt;Microsoft.Network/virtualHubs/routeMaps&lt;/code&gt; resource. The schema below is verified against API version &lt;code&gt;2025-07-01&lt;/code&gt; on Microsoft Learn (page last updated October 2025). Here is an inbound map that summarizes three data center prefixes and drops a management range:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bicep&#34; data-lang=&#34;bicep&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;param&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;location&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;resourceGroup&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;().&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;location&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;param&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;routeServerHubName&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;resource&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;routeMap&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#39;Microsoft.Network/virtualHubs/routeMaps@2025-07-01&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;routeServerHubName&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;/summarize-onprem-inbound&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;properties&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;rules&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#39;drop-mgmt-range&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;matchCriteria&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;          &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;            &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;matchCondition&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#39;Contains&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;            &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;routePrefix&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#39;10.2.250.0/24&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;          &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;actions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;          &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;            &lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#39;Drop&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;            &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;parameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;              &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;routePrefix&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#39;10.2.250.0/24&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;            &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;          &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;nextStepIfMatched&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#39;Terminate&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#39;summarize-datacenter&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;matchCriteria&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;          &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;            &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;matchCondition&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#39;Contains&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;            &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;routePrefix&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#39;10.2.0.0/16&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;          &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;actions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;          &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;            &lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#39;Replace&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;            &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;parameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;              &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;routePrefix&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#39;10.2.0.0/16&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;            &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;          &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;nextStepIfMatched&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#39;Continue&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;Note the property names exactly as the ARM schema defines them: &lt;code&gt;matchCriteria&lt;/code&gt;, &lt;code&gt;matchCondition&lt;/code&gt;, &lt;code&gt;nextStepIfMatched&lt;/code&gt;, and action &lt;code&gt;type&lt;/code&gt; values of &lt;code&gt;Add&lt;/code&gt;, &lt;code&gt;Drop&lt;/code&gt;, &lt;code&gt;Remove&lt;/code&gt;, or &lt;code&gt;Replace&lt;/code&gt;. Associating the map with a specific connection is done through the &lt;code&gt;associatedInboundConnections&lt;/code&gt; and &lt;code&gt;associatedOutboundConnections&lt;/code&gt; properties (arrays of connection resource IDs), or through the portal&amp;rsquo;s connection configuration.&lt;/p&gt;&#xA;&lt;h2 id=&#34;verifying-behavior-from-the-cli&#34;&gt;Verifying behavior from the CLI&#xA;&lt;/h2&gt;&lt;p&gt;Route maps themselves are managed through the portal and ARM/Bicep, but the &lt;code&gt;az network routeserver&lt;/code&gt; command group is essential for verification. These commands are generally available. After you apply a map, confirm what Route Server is actually learning and advertising:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# List routes a BGP peer has advertised INTO Route Server (pre/post inbound map)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;az network routeserver peering list-learned-routes &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --name myNvaPeering &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --routeserver myRouteServer &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --resource-group myResourceGroup&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# List routes Route Server is advertising OUT to a peer (post outbound map)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;az network routeserver peering list-advertised-routes &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --name myNvaPeering &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --routeserver myRouteServer &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --resource-group myResourceGroup&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;These two commands are your ground truth. If a summarized prefix is not appearing, or a dropped prefix still shows up, comparing learned versus advertised output tells you exactly where in the pipeline the rule is or isn&amp;rsquo;t firing.&lt;/p&gt;&#xA;&lt;h2 id=&#34;operational-realities-to-plan-around&#34;&gt;Operational realities to plan around&#xA;&lt;/h2&gt;&lt;p&gt;From the current documentation, budget for these:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;First route map triggers a ~30 minute upgrade.&lt;/strong&gt; The first time you create a route map on a Route Server, the service undergoes a one-time upgrade of roughly 30 minutes. Schedule accordingly.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Route maps incur additional charges&lt;/strong&gt; beyond base Route Server pricing.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;You can modify the default route&lt;/strong&gt; (&lt;code&gt;0.0.0.0/0&lt;/code&gt;) only when it originates from on-premises or an NVA.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Route maps cannot modify the virtual network address space&lt;/strong&gt; Route Server advertises, and you cannot use route maps to create more-specific routes - only summarization is supported.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;You cannot apply route maps on the Microsoft Enterprise Edge (MSEE)&lt;/strong&gt; for ExpressRoute connections; the map lives on the gateway connection inside your virtual network.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;IPv6 is not supported&lt;/strong&gt; by Azure Route Server.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;a-note-on-azure-us-government-and-gcc&#34;&gt;A note on Azure US Government and GCC&#xA;&lt;/h2&gt;&lt;p&gt;Many public sector customers operate across both Azure commercial and Azure Government, and staff sit in Microsoft 365 GCC tenants. Route maps are a networking-plane feature of Azure Route Server rather than a Microsoft 365 capability, so GCC tenancy does not gate them. That said, preview features frequently reach the Azure US Government cloud on a later schedule than commercial. Before you standardize a design on route maps in a sovereign region, confirm current regional availability against the Azure Government documentation and validate the exact API version in your target cloud, since ARM API versions can trail commercial. Design your Bicep so the &lt;code&gt;apiVersion&lt;/code&gt; is a parameter you can adjust per environment.&lt;/p&gt;&#xA;&lt;h2 id=&#34;why-this-matters-for-government&#34;&gt;Why This Matters for Government&#xA;&lt;/h2&gt;&lt;p&gt;Public sector networks are rarely greenfield. They are decades of accumulated address space, mergers of departmental networks, mandated traffic-inspection paths, and hard external route limits imposed by carriers and circuits. Route maps give network engineers the surgical control they have long had on physical routers, now applied to Azure&amp;rsquo;s managed hybrid fabric without standing up and patching their own route reflectors.&lt;/p&gt;&#xA;&lt;p&gt;The concrete wins for a city or state IT organization are threefold. First, &lt;strong&gt;route summarization protects you from route-limit outages&lt;/strong&gt; - the kind of failure that takes down an ExpressRoute path during a routine advertisement change. Second, &lt;strong&gt;route filtering enforces segmentation intent&lt;/strong&gt;: a health department&amp;rsquo;s prefixes should not leak into a public-safety network just because BGP is transitive by default, and an explicit drop rule makes that boundary auditable in code. Third, &lt;strong&gt;AS-Path and community manipulation give you deterministic failover&lt;/strong&gt;, so a backup circuit stays a backup until it is genuinely needed - critical when continuity-of-operations plans hinge on predictable path selection.&lt;/p&gt;&#xA;&lt;p&gt;Because the entire configuration is expressible as Bicep, it also lands in source control, pull requests, and change review - exactly the governance posture auditors expect. That turns routing policy from tribal knowledge on a whiteboard into reviewable, versioned infrastructure.&lt;/p&gt;&#xA;&lt;h2 id=&#34;getting-started&#34;&gt;Getting started&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;Read &lt;a class=&#34;link&#34; href=&#34;https://learn.microsoft.com/en-us/azure/route-server/route-maps-about&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;About route maps for Azure Route Server&lt;/a&gt; on Microsoft Learn for the full match-and-action reference.&lt;/li&gt;&#xA;&lt;li&gt;Review &lt;a class=&#34;link&#34; href=&#34;https://learn.microsoft.com/en-us/azure/route-server/overview&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;What is Azure Route Server?&lt;/a&gt; for limits and integration patterns (updated September 2025).&lt;/li&gt;&#xA;&lt;li&gt;Bookmark the &lt;a class=&#34;link&#34; href=&#34;https://learn.microsoft.com/en-us/azure/templates/microsoft.network/virtualhubs/routemaps&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Microsoft.Network/virtualHubs/routeMaps&lt;/a&gt; ARM/Bicep schema (API 2025-07-01).&lt;/li&gt;&#xA;&lt;li&gt;Use the &lt;a class=&#34;link&#34; href=&#34;https://learn.microsoft.com/en-us/cli/azure/network/routeserver&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;az network routeserver&lt;/a&gt; command reference for peering and route verification.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Start in a non-production hub, apply a single summarization rule, and use &lt;code&gt;list-learned-routes&lt;/code&gt; and &lt;code&gt;list-advertised-routes&lt;/code&gt; to watch the pipeline behave before you touch a circuit that carries constituent traffic.&lt;/p&gt;&#xA;</description>
        </item></channel>
</rss>
