ExpressRoute 可以通過經連接提供商加速的專用連接將本地網絡擴展到 Microsoft 云中,涉及以下三個不同的網絡區域:
客戶網絡
提供商網絡
Azure 數據中心
本文檔的目的是幫助用戶確定存在連接問題的位置和區域(或者只是單純地確定是否存在連接問題),從而向相應的團隊尋求幫助,解決問題。如果需要 Azure 的支持才能解決問題,請開具一張Azure 支持部門的支持票證。
Important
本文檔旨在幫助用戶診斷和修復簡單問題。它不是為了替代 Azure 支持部門。如果無法通過所提供的指南解決問題,則請開具一張Azure 支持部門的支持票證。
概述
下圖顯示了客戶網絡通過 ExpressRoute 連接到 Azure 網絡時的邏輯連接。
在上圖中,數字表示關鍵網絡點。在本文中,網絡點通常通過其關聯的數字來引用。
網絡點 3 和 4 可以是交換機(第 2 層設備),具體取決于 ExpressRoute 連接模型(云交換歸置、點到點以太網連接,或任意位置之間的連接 (IPVPN))。 上述關鍵網絡點詳述如下:
客戶計算設備(例如服務器或電腦)
CE:客戶邊緣路由器
PE(面向 CE):面向客戶邊緣路由器的提供商邊緣路由器/交換機。 本文檔中稱為“PE-CE”。
PE(面向 MSEE):面向 MSEE 的提供商邊緣路由器/交換機。 本文檔中稱為“PE-MSEE”。
MSEE:Microsoft 企業邊緣 (MSEE) ExpressRoute 路由器
虛擬網絡 (VNet) 網關
Azure VNet 上的計算設備
如果使用“云交換歸置”或“點到點以太網連接”連接模型,客戶邊緣路由器 (2) 會與 MSEE (5) 建立 BGP 對等互連。 網絡點 3 和 4 仍將存在,但作為第 2 層設備,其在某種程度上是透明的。
如果使用“任意位置之間的連接 (IPVPN)”連接模型,PE(面向 MSEE)(4) 會與 MSEE (5) 建立 BGP 對等互連。 然后,路由會通過 IPVPN 服務提供商網絡傳播回客戶網絡。
Note
為了確保 ExpressRoute 高可用性,Azure 要求在 MSEE (5) 和 PE-MSEE (4) 之間存在冗余性的 BGP 會話對。 另外還建議在客戶網絡和 PE-CE 之間設置冗余性的網絡路徑對。 但是,在“任意位置之間的連接 (IPVPN)”模型中,單個 CE 設備 (2) 可能會連接到一個或多個 PE (3)。
若要驗證 ExpressRoute 線路,可執行以下步驟(網絡點以關聯的數字表示):
驗證是否已配置至少一個 ExpressRoute 對等互連 (5)
驗證 Azure 和服務提供商之間的 ARP(4 和 5 之間的鏈接)
驗證 MSEE 上的 BGP 和路由(4 到 5 之間的 BGP,如果連接了 VNet,則還包括 5 到 6 之間的 BGP)
將來會添加更多的驗證和檢查,請每月回來查看!
驗證線路預配和狀態
不管什么連接模型,都必須創建 ExpressRoute 線路,從而生成用于線路預配的服務密鑰。 預配 ExpressRoute 線路即可在 PE-MSEE (4) 和 MSEE (5) 之間建立冗余性的第 2 層連接。 若要詳細了解如何創建、修改、預配和驗證 ExpressRoute 線路,請參閱創建和修改 ExpressRoute 線路一文。
Tip
服務密鑰可以唯一地標識 ExpressRoute 線路。對于本文檔中提到的大多數 PowerShell 命令,此密鑰是必需的。另外,如果需要 Azure 或 ExpressRoute 合作伙伴的幫助來排查 ExpressRoute 問題,請提供服務密鑰,以便標識線路。
通過 Azure 門戶進行驗證
在 Azure 門戶的左側邊欄菜單中選擇“
”,并選擇 ExpressRoute 線路,即可查看 ExpressRoute 線路的狀態。 選擇“所有資源”下列出的 ExpressRoute 線路即可打開 ExpressRoute 線路邊欄選項卡。 邊欄選項卡的“
”部分列出了 ExpressRoute 概要,如以下屏幕截圖所示:
在 ExpressRoute 的“概要”中,“線路狀態”表示 Azure 這一側線路的狀態。“提供商狀態”表示線路在服務提供商這一側的狀態是“已預配”還是“未預配”。
若要確保 ExpressRoute 線路正常運行,“線路狀態”必須為“已啟用”,“提供商狀態”必須為“已預配”。
Note
如果“線路狀態”不是“已啟用”,請與Azure 支持部門聯系。如果“提供商狀態”不是“已預配”,請與服務提供商聯系。
通過 PowerShell 進行驗證
若要列出資源組中的所有 ExpressRoute 線路,請使用以下命令:
復制
Get-AzureRmExpressRouteCircuit -ResourceGroupName "Test-ER-RG"
Tip
可以通過 Azure 門戶獲取資源組名稱。 請參閱本文檔的上一小節,另請注意,資源組名稱已在示例屏幕截圖中列出。
若要選擇資源組中的特定 ExpressRoute 線路,請使用以下命令:
復制
Get-AzureRmExpressRouteCircuit -ResourceGroupName "Test-ER-RG" -Name "Test-ER-Ckt"
示例響應如下:
復制
Name? ? ? ? ? ? ? ? ? ? ? ? ? ? : Test-ER-Ckt
ResourceGroupName? ? ? ? ? ? ? ? : Test-ER-RG
Location? ? ? ? ? ? ? ? ? ? ? ? : chinaeast
Id? ? ? ? ? ? ? ? ? ? ? ? ? ? ? : /subscriptions/***************************/resourceGroups/Test-ER-RG/providers/***********/expressRouteCircuits/Test-ER-Ckt
Etag? ? ? ? ? ? ? ? ? ? ? ? ? ? : W/"################################"
ProvisioningState? ? ? ? ? ? ? ? : Succeeded
Sku? ? ? ? ? ? ? ? ? ? ? ? ? ? ? : {
"Name": "Standard_UnlimitedData",
"Tier": "Standard",
"Family": "UnlimitedData"
}
CircuitProvisioningState? ? ? ? : Enabled
ServiceProviderProvisioningState : Provisioned
ServiceProviderNotes? ? ? ? ? ? :
ServiceProviderProperties? ? ? ? : {
"ServiceProviderName": "****",
"PeeringLocation": "******",
"BandwidthInMbps": 100
}
ServiceKey? ? ? ? ? ? ? ? ? ? ? : **************************************
Peerings? ? ? ? ? ? ? ? ? ? ? ? : []
Authorizations? ? ? ? ? ? ? ? ? : []
若要確認 ExpressRoute 線路是否正常運行,請特別注意以下字段:
復制
CircuitProvisioningState? ? ? ? : Enabled
ServiceProviderProvisioningState : Provisioned
Note
如果“CircuitProvisioningState”不是“已啟用”,請與Azure 支持部門聯系。如果“ServiceProviderProvisioningState”不是“已預配”,請與服務提供商聯系。
通過 PowerShell(經典)進行驗證
若要列出訂閱的所有 ExpressRoute 線路,請使用以下命令:
復制
Get-AzureDedicatedCircuit
若要選擇特定 ExpressRoute 線路,請使用以下命令:
復制
Get-AzureDedicatedCircuit -ServiceKey **************************************
示例響應如下:
復制
andwidth? ? ? ? ? ? ? ? ? ? ? ? : 100
BillingType? ? ? ? ? ? ? ? ? ? ? : UnlimitedData
CircuitName? ? ? ? ? ? ? ? ? ? ? : Test-ER-Ckt
Location? ? ? ? ? ? ? ? ? ? ? ? : chinaeast
ServiceKey? ? ? ? ? ? ? ? ? ? ? : **************************************
ServiceProviderName? ? ? ? ? ? ? : ****
ServiceProviderProvisioningState : Provisioned
Sku? ? ? ? ? ? ? ? ? ? ? ? ? ? ? : Standard
Status? ? ? ? ? ? ? ? ? ? ? ? ? : Enabled
若要確認 ExpressRoute 線路是否正常運行,請特別注意以下字段:ServiceProviderProvisioningState:已預配 狀態:已啟用
Note
如果“狀態”不是“已啟用”,請與Azure 支持部門聯系。如果“ServiceProviderProvisioningState”不是“已預配”,請與服務提供商聯系。
驗證對等互連配置
在服務提供商完成對 ExpressRoute 線路的預配以后,即可基于 MSEE-PR (4) 和 MSEE (5) 之間的 ExpressRoute 線路創建路由配置。每個 ExpressRoute 線路可以啟用一個、兩個或三個路由上下文:Azure 專用對等互連(流量通往 Azure 中的專用虛擬網絡)和 Azure 公共對等互連(流量通往 Azure 中的公共 IP 地址)。有關如何創建和修改路由配置的詳細信息,請參閱創建和修改 ExpressRoute 線路的路由一文。
通過 Azure 門戶進行驗證
Note
如果服務提供商提供第 3 層且對等互連在門戶中為空,請使用門戶中的刷新按鈕來刷新線路配置。 此操作會將正確的線路配置應用到你的線路。
在 Azure 門戶的左側邊欄菜單中選擇“
”,并選擇 ExpressRoute 線路,即可查看 ExpressRoute 線路的狀態。 選擇“所有資源”下列出的 ExpressRoute 線路可打開 ExpressRoute 線路邊欄選項卡。 邊欄選項卡的“
”部分列出了 ExpressRoute 概要,如以下屏幕截圖所示:
如以上示例所述,Azure 專用對等互連路由上下文已啟用,而 Azure 公共對等互連路由上下文則未啟用。 成功啟用的對等互連上下文還會列出主要的和輔助的點到點(BGP 所必需)子網。 /30 子網用于 MSEE 和 PE-MSEE 的接口 IP 地址。
Note
如果未啟用對等互連,請檢查分配的主要子網和輔助子網是否符合 PE-MSEE 上的配置。 否則,若要更改 MSEE 路由器上的配置,請參閱創建和修改 ExpressRoute 線路的路由
通過 PowerShell 進行驗證
若要獲取 Azure 專用對等互連配置詳細信息,請使用以下命令:
復制
$ckt = Get-AzureRmExpressRouteCircuit -ResourceGroupName "Test-ER-RG" -Name "Test-ER-Ckt"
Get-AzureRmExpressRouteCircuitPeeringConfig -Name "AzurePrivatePeering" -Circuit $ckt
已成功配置的專用對等互連的示例響應如下:
復制
Name? ? ? ? ? ? ? ? ? ? ? : AzurePrivatePeering
Id? ? ? ? ? ? ? ? ? ? ? ? : /subscriptions/***************************/resourceGroups/Test-ER-RG/providers/***********/expressRouteCircuits/Test-ER-Ckt/peerings/AzurePrivatePeering
Etag? ? ? ? ? ? ? ? ? ? ? : W/"################################"
PeeringType? ? ? ? ? ? ? ? : AzurePrivatePeering
AzureASN? ? ? ? ? ? ? ? ? : 12076
PeerASN? ? ? ? ? ? ? ? ? ? : ####
PrimaryPeerAddressPrefix? : 172.16.0.0/30
SecondaryPeerAddressPrefix : 172.16.0.4/30
PrimaryAzurePort? ? ? ? ? :
SecondaryAzurePort? ? ? ? :
SharedKey? ? ? ? ? ? ? ? ? :
VlanId? ? ? ? ? ? ? ? ? ? : 300
MicrosoftPeeringConfig? ? : null
ProvisioningState? ? ? ? ? : Succeeded
成功啟用的對等互連上下文會列出主要的和輔助的地址前綴。 /30 子網用于 MSEE 和 PE-MSEE 的接口 IP 地址。
若要獲取 Azure 公共對等互連配置詳細信息,請使用以下命令:
復制
$ckt = Get-AzureRmExpressRouteCircuit -ResourceGroupName "Test-ER-RG" -Name "Test-ER-Ckt"
Get-AzureRmExpressRouteCircuitPeeringConfig -Name "AzurePublicPeering" -Circuit $ckt
如果未配置對等互連,則會出現錯誤消息。 當所述對等互連(本示例中為 Azure 公共對等互連)未在線路中配置時的示例響應如下:
復制
Get-AzureRmExpressRouteCircuitPeeringConfig : Sequence contains no matching element
At line:1 char:1
+ Get-AzureRmExpressRouteCircuitPeeringConfig -Name "AzurePublicPeering ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo? ? ? ? ? : CloseError: (:) [Get-AzureRmExpr...itPeeringConfig], InvalidOperationException
+ FullyQualifiedErrorId : Microsoft.Azure.Commands.Network.GetAzureExpressRouteCircuitPeeringConfigCommand
Note
如果未啟用對等互連,請檢查分配的主要子網和輔助子網是否符合鏈接的 PE-MSEE 上的配置。 另請檢查是否在 MSEE 上使用了正確的 VlanId、AzureASN 和 PeerASN,以及這些值是否映射到鏈接的 PE-MSEE 上使用的對應項。 如果選擇了 MD5 哈希,則 MSEE 和 PE-MSEE 對上的共享密鑰應相同。 若要更改 MSEE 路由器上的配置,請參閱創建和修改 ExpressRoute 線路的路由。
通過 PowerShell(經典)進行驗證
若要獲取 Azure 專用對等互連配置詳細信息,請使用以下命令:
復制
Get-AzureBGPPeering -AccessType Private -ServiceKey "*********************************"
已成功配置的專用對等互連的示例響應如下:
復制
AdvertisedPublicPrefixes? ? ? :
AdvertisedPublicPrefixesState? : Configured
AzureAsn? ? ? ? ? ? ? ? ? ? ? : 12076
CustomerAutonomousSystemNumber :
PeerAsn? ? ? ? ? ? ? ? ? ? ? ? : ####
PrimaryAzurePort? ? ? ? ? ? ? :
PrimaryPeerSubnet? ? ? ? ? ? ? : 10.0.0.0/30
RoutingRegistryName? ? ? ? ? ? :
SecondaryAzurePort? ? ? ? ? ? :
SecondaryPeerSubnet? ? ? ? ? ? : 10.0.0.4/30
State? ? ? ? ? ? ? ? ? ? ? ? ? : Enabled
VlanId? ? ? ? ? ? ? ? ? ? ? ? : 100
成功啟用的對等互連上下文會列出主要的和輔助的對等子網。 /30 子網用于 MSEE 和 PE-MSEE 的接口 IP 地址。
若要獲取 Azure 公共對等互連配置詳細信息,請使用以下命令:
復制
Get-AzureBGPPeering -AccessType Public -ServiceKey "*********************************"
Important
如果服務提供商設置了第 3 層對等互連,則通過門戶或 PowerShell 設置 ExpressRoute 對等互連會覆蓋服務提供商設置。 重置提供商這一側的對等互連設置需要服務提供商的支持。 如果確定服務提供商只提供第 2 層服務,則只修改 ExpressRoute 對等互連!
Note
如果未啟用對等互連,請檢查分配的主要對等子網和輔助對等子網是否符合鏈接的 PE-MSEE 上的配置。 另請檢查是否在 MSEE 上使用了正確的 VlanId、AzureAsn 和 PeerAsn,以及這些值是否映射到鏈接的 PE-MSEE 上使用的對應項。 若要更改 MSEE 路由器上的配置,請參閱創建和修改 ExpressRoute 線路的路由。
驗證 Azure 和服務提供商之間的 ARP
本部分使用 PowerShell(經典)命令。 如果一直使用 PowerShell Azure 資源管理器命令,請確保對訂閱具有管理員/共同管理員權限。 若要使用 Azure Resource Manager 命令進行故障排除,請參閱在 Resource Manager 部署模型中獲取 ARP 表文檔。
Note
若要獲取 ARP,可以使用 Azure 門戶和 Azure Resource Manager PowerShell 命令。 如果使用 Azure Resource Manager PowerShell 命令時出錯,則應使用經典 PowerShell 命令,因為經典 PowerShell 命令也適用于 Azure Resource Manager ExpressRoute 線路。
若要從用于專用對等互連的主要 MSEE 路由器獲取 ARP 表,請使用以下命令:
復制
Get-AzureDedicatedCircuitPeeringArpInfo -AccessType Private -Path Primary -ServiceKey "*********************************"
如果成功,該命令的示例響應如下:
復制
ARP Info:
Age? ? ? ? ? Interface? ? ? ? ? IpAddress? ? ? ? ? MacAddress
113? ? ? ? ? ? On-Prem? ? ? 10.0.0.1? ? ? ? ? e8ed.f335.4ca9
0? ? ? ? ? Microsoft? ? ? 10.0.0.2? ? ? ? ? 7c0e.ce85.4fc9
同樣,對于專用/公共對等互連,也可在主要/輔助路徑中查看 MSEE 提供的 ARP 表。
以下示例顯示某個對等互連的命令響應不存在。
復制
ARP Info:
Note
如果 ARP 表沒有將接口的 IP 地址映射到 MAC 地址,請查詢以下信息:
為 MSEE-PR 和 MSEE 之間的鏈接分配的 /30 子網的第一個 IP 地址是否用在 MSEE-PR 的接口上。 Azure 始終使用 MSEE 的第二個 IP 地址。
驗證客戶型 (C-Tag) 和服務型 (S-Tag) VLAN 標記在 MSEE-PR 和 MSEE 對上是否均匹配。
驗證 BGP 以及 MSEE 上的路由
本部分使用 PowerShell(經典)命令。 如果一直使用 PowerShell Azure 資源管理器命令,請確保對訂閱具有管理員/共同管理員權限。
Note
若要獲取 BGP 信息,可以使用 Azure 門戶和 Azure Resource Manager PowerShell 命令。如果使用 Azure Resource Manager PowerShell 命令時出錯,則應使用經典 PowerShell 命令,因為經典 PowerShell 命令也適用于 Azure Resource Manager ExpressRoute 線路。
若要獲取特定路由上下文的路由表(BGP 鄰居)摘要,請使用以下命令:
復制
Get-AzureDedicatedCircuitPeeringRouteTableSummary -AccessType Private -Path Primary -ServiceKey "*********************************"
示例響應如下:
復制
Route Table Summary:
Neighbor? ? ? ? ? ? ? ? ? V? ? ? ? ? ? ? ? ? AS? ? ? ? ? ? ? UpDown? ? ? ? StatePfxRcd
10.0.0.1? ? ? ? ? ? ? ? ? 4? ? ? ? ? ? ? ? ####? ? ? ? ? ? ? ? 8w4d? ? ? ? ? ? ? ? ? 50
如以上示例所示,該命令用于確定路由上下文已建立多長時間。它還指示對等互連的路由器播發的路由前綴的數。
Note
如果狀態為“活動”或“空閑”,請檢查分配的主要對等子網和輔助對等子網是否符合鏈接的 PE-MSEE 上的配置。 另請檢查是否在 MSEE 上使用了正確的 VlanId、AzureAsn 和 PeerAsn,以及這些值是否映射到鏈接的 PE-MSEE 上使用的對應項。 如果選擇了 MD5 哈希,則 MSEE 和 PE-MSEE 對上的共享密鑰應相同。 若要更改 MSEE 路由器上的配置,請參閱創建和修改 ExpressRoute 線路的路由。
Note
如果某些目標無法通過特定對等互連訪問,請檢查屬于特定對等互連上下文的 MSEE 的路由表。 如果路由表中存在匹配的前綴(可能是 NAT 型 IP),則請檢查路徑上是否設置了防火墻/NSG/ACL,以及這些設置是否允許通信。
對于特定的“專用”路由上下文,若要獲取“主要”路徑上的 MSEE 提供的完整路由表,請使用以下命令:
復制
Get-AzureDedicatedCircuitPeeringRouteTableInfo -AccessType Private -Path Primary -ServiceKey "*********************************"
如果成功,該命令的示例結果如下:
復制
Route Table Info:
Network? ? ? ? ? ? NextHop? ? ? ? ? ? ? LocPrf? ? ? ? ? ? ? Weight? ? ? ? ? ? ? ? Path
10.1.0.0/16? ? ? ? ? ? 10.0.0.1? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 0? ? #### ##### #####
10.2.0.0/16? ? ? ? ? ? 10.0.0.1? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 0? ? #### ##### #####
...
同樣,對于專用/公共對等互連上下文,也可在主要/輔助路徑中查看 MSEE 提供的路由表。
以下示例顯示某個對等互連的命令響應不存在:
復制
Route Table Info:
檢查流量統計信息
若要獲取對等互連上下文在主要路徑和輔助路徑上的綜合流量統計信息(出入字節數),請使用以下命令:
復制
Get-AzureDedicatedCircuitStats -ServiceKey 97f85950-01dd-4d30-a73c-bf683b3a6e5c -AccessType Private
該命令的示例輸出如下:
復制
PrimaryBytesIn PrimaryBytesOut SecondaryBytesIn SecondaryBytesOut
-------------- --------------- ---------------- -----------------
240780020? ? ? 239863857? ? ? ? 240565035? ? ? ? 239628474
對于不存在的對等互連,該命令的示例輸出如下:
復制
Get-AzureDedicatedCircuitStats : ResourceNotFound: Can not find any subinterface for peering type 'Public' for circuit '97f85950-01dd-4d30-a73c-bf683b3a6e5c' .
At line:1 char:1
+ Get-AzureDedicatedCircuitStats -ServiceKey 97f85950-01dd-4d30-a73c-bf ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo? ? ? ? ? : CloseError: (:) [Get-AzureDedicatedCircuitStats], CloudException
+ FullyQualifiedErrorId : Microsoft.WindowsAzure.Commands.ExpressRoute.GetAzureDedicatedCircuitPeeringStatsCommand
后續步驟
有關詳細信息或幫助,請查看以下鏈接:
立即訪問http://market.azure.cn