{"action":"created","comment":{"url":"https://api.github.com/repos/mspnp/architecture-center/pulls/comments/115321743","pull_request_review_id":36851291,"id":115321743,"diff_hunk":"@@ -0,0 +1,430 @@\n+---\n+title: Implementing a hub-spoke topology in Azure\n+description: >-\n+  How to implement a hub-spoke network topoly in Azure.\n+author: telmosampaio\n+ms.service: guidance\n+ms.topic: article\n+ms.date: 05/05/2017\n+ms.author: pnp\n+\n+pnp.series.title: Implement a hub-spoke network topology in Azure\n+pnp.series.prev: expressroute\n+cardTitle: Improving availability\n+---\n+# Implement a hub-spoke topology in Azure\n+\n+This reference architecture shows how to implement a hub-spoke topology in Azure, using the hub as a gateway between Azure and your on-premises datacenter.\n+\n+Traffic flows between the on-premises datacenter and Azure through an ExpressRoute or VPN gateway connection. This connection is made to a hub virtual network (VNet) in Azure, which in turn is peered to other VNets in the same Azure region, as seen in the piture below.[**Deploy this solution**](#deploy-the-solution).\n+\n+> [!NOTE]\n+> Azure has two different deployment models: [Resource Manager](/azure/azure-resource-manager/resource-group-overview) and classic. This reference architecture uses Resource Manager, which Microsoft recommends for new deployments.\n+\n+Typical uses for this architecture include:\n+\n+* Workloads deployed in different environments (development, testing, production) that require the specific services that can be shared (in the hub VNet) while maintaining isolation (deployed to spokes).\n+* Workloads that do not require connectivity among themselves, but require access to shared services, such as DNS, AD DS, firewall, among others.\n+* Enterprises that require a central control over security aspects (firewall in the hub as a DMZ), and segregated management for each workload (individual spokes).\n+\n+## Architecture\n+\n+The following diagram highlights the important components in this architecture:\n+\n+> A Visio document that includes this architecture diagram is available for download from the [Microsoft download center][visio-download]. This diagram is on the \"Hub Spoke\" page.\n+\n+![[0]][0]\n+\n+The hub VNet, and each spoke VNet, can be implemented in different resource groups, and even different subscriptions, as long as they belong to the same Azure tenant in the same Azure region. This allows for a decentralized management of each workload, while sharing services maintained in the hub VNet. However, if you have several spokes that need to connect to the same hub, you will run out of possible peering connections very quickly due to the [limitation on number of VNets peerings per VNet][vnet-peering-limit].\n+\n+The architecture consists of the following components.\n+\n+* **On-premises network**. A private local-area network running within an organization.\n+\n+* **VPN device**. A device or service that provides external connectivity to the on-premises network. The VPN device may be a hardware device, or it can be a software solution such as the Routing and Remote Access Service (RRAS) in Windows Server 2012. For a list of supported VPN appliances and information on configuring selected VPN appliances for connecting to Azure, see [About VPN devices for Site-to-Site VPN Gateway connections][vpn-appliance].\n+\n+* **ExpressRoute circuit**. A layer 2 or layer 3 circuit supplied by the connectivity provider that joins the on-premises network with Azure through the edge routers. The circuit uses the hardware infrastructure managed by the connectivity provider.\n+\n+> [!NOTE]\n+> Our sample reference architecture uses a VPN connection, instead of an ExpressRoute circuit.\n+\n+* **ExpressRoute virtual network gateway**. The ExpressRoute virtual network gateway enables the VNet to connect to the ExpressRoute circuit used for connectivity with your on-premises network.\n+\n+* **Virtual network gateway**. The  virtual network gateway enables the VNet to connect to the VPN appliance in the on-premises network, or routers used for an ExpressRoute circuit. For more information, see [Connect an on-premises network to a Microsoft Azure virtual network][connect-to-an-Azure-vnet].","path":"docs/reference-architectures/hybrid-networking/vnet-topology-hub-spoke.md","position":53,"original_position":53,"commit_id":"07798edcfa1449c37b30812bea7ca054c1aefebd","original_commit_id":"07798edcfa1449c37b30812bea7ca054c1aefebd","user":{"login":"MikeWasson","id":3992422,"avatar_url":"https://avatars1.githubusercontent.com/u/3992422?v=3","gravatar_id":"","url":"https://api.github.com/users/MikeWasson","html_url":"https://github.com/MikeWasson","followers_url":"https://api.github.com/users/MikeWasson/followers","following_url":"https://api.github.com/users/MikeWasson/following{/other_user}","gists_url":"https://api.github.com/users/MikeWasson/gists{/gist_id}","starred_url":"https://api.github.com/users/MikeWasson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MikeWasson/subscriptions","organizations_url":"https://api.github.com/users/MikeWasson/orgs","repos_url":"https://api.github.com/users/MikeWasson/repos","events_url":"https://api.github.com/users/MikeWasson/events{/privacy}","received_events_url":"https://api.github.com/users/MikeWasson/received_events","type":"User","site_admin":false},"body":"Is this gateway in the diagram?","created_at":"2017-05-08T18:39:35Z","updated_at":"2017-05-08T18:39:35Z","html_url":"https://github.com/mspnp/architecture-center/pull/78#discussion_r115321743","pull_request_url":"https://api.github.com/repos/mspnp/architecture-center/pulls/78","_links":{"self":{"href":"https://api.github.com/repos/mspnp/architecture-center/pulls/comments/115321743"},"html":{"href":"https://github.com/mspnp/architecture-center/pull/78#discussion_r115321743"},"pull_request":{"href":"https://api.github.com/repos/mspnp/architecture-center/pulls/78"}}},"pull_request":{"url":"https://api.github.com/repos/mspnp/architecture-center/pulls/78","id":118867154,"html_url":"https://github.com/mspnp/architecture-center/pull/78","diff_url":"https://github.com/mspnp/architecture-center/pull/78.diff","patch_url":"https://github.com/mspnp/architecture-center/pull/78.patch","issue_url":"https://api.github.com/repos/mspnp/architecture-center/issues/78","number":78,"state":"open","locked":false,"title":"Added hub-spoke topology RA","user":{"login":"telmosampaio","id":9137826,"avatar_url":"https://avatars3.githubusercontent.com/u/9137826?v=3","gravatar_id":"","url":"https://api.github.com/users/telmosampaio","html_url":"https://github.com/telmosampaio","followers_url":"https://api.github.com/users/telmosampaio/followers","following_url":"https://api.github.com/users/telmosampaio/following{/other_user}","gists_url":"https://api.github.com/users/telmosampaio/gists{/gist_id}","starred_url":"https://api.github.com/users/telmosampaio/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/telmosampaio/subscriptions","organizations_url":"https://api.github.com/users/telmosampaio/orgs","repos_url":"https://api.github.com/users/telmosampaio/repos","events_url":"https://api.github.com/users/telmosampaio/events{/privacy}","received_events_url":"https://api.github.com/users/telmosampaio/received_events","type":"User","site_admin":false},"body":"","created_at":"2017-05-03T22:18:28Z","updated_at":"2017-05-08T18:39:35Z","closed_at":null,"merged_at":null,"merge_commit_sha":"d7b9a58ab6d7a58163f2a2730a207bb5b51e63c4","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/mspnp/architecture-center/pulls/78/commits","review_comments_url":"https://api.github.com/repos/mspnp/architecture-center/pulls/78/comments","review_comment_url":"https://api.github.com/repos/mspnp/architecture-center/pulls/comments{/number}","comments_url":"https://api.github.com/repos/mspnp/architecture-center/issues/78/comments","statuses_url":"https://api.github.com/repos/mspnp/architecture-center/statuses/07798edcfa1449c37b30812bea7ca054c1aefebd","head":{"label":"mspnp:telmos/vnet-topology","ref":"telmos/vnet-topology","sha":"07798edcfa1449c37b30812bea7ca054c1aefebd","user":{"login":"mspnp","id":1373420,"avatar_url":"https://avatars1.githubusercontent.com/u/1373420?v=3","gravatar_id":"","url":"https://api.github.com/users/mspnp","html_url":"https://github.com/mspnp","followers_url":"https://api.github.com/users/mspnp/followers","following_url":"https://api.github.com/users/mspnp/following{/other_user}","gists_url":"https://api.github.com/users/mspnp/gists{/gist_id}","starred_url":"https://api.github.com/users/mspnp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mspnp/subscriptions","organizations_url":"https://api.github.com/users/mspnp/orgs","repos_url":"https://api.github.com/users/mspnp/repos","events_url":"https://api.github.com/users/mspnp/events{/privacy}","received_events_url":"https://api.github.com/users/mspnp/received_events","type":"Organization","site_admin":false},"repo":{"id":81886010,"name":"architecture-center","full_name":"mspnp/architecture-center","owner":{"login":"mspnp","id":1373420,"avatar_url":"https://avatars1.githubusercontent.com/u/1373420?v=3","gravatar_id":"","url":"https://api.github.com/users/mspnp","html_url":"https://github.com/mspnp","followers_url":"https://api.github.com/users/mspnp/followers","following_url":"https://api.github.com/users/mspnp/following{/other_user}","gists_url":"https://api.github.com/users/mspnp/gists{/gist_id}","starred_url":"https://api.github.com/users/mspnp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mspnp/subscriptions","organizations_url":"https://api.github.com/users/mspnp/orgs","repos_url":"https://api.github.com/users/mspnp/repos","events_url":"https://api.github.com/users/mspnp/events{/privacy}","received_events_url":"https://api.github.com/users/mspnp/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/mspnp/architecture-center","description":"Azure Architecture Center","fork":false,"url":"https://api.github.com/repos/mspnp/architecture-center","forks_url":"https://api.github.com/repos/mspnp/architecture-center/forks","keys_url":"https://api.github.com/repos/mspnp/architecture-center/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mspnp/architecture-center/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mspnp/architecture-center/teams","hooks_url":"https://api.github.com/repos/mspnp/architecture-center/hooks","issue_events_url":"https://api.github.com/repos/mspnp/architecture-center/issues/events{/number}","events_url":"https://api.github.com/repos/mspnp/architecture-center/events","assignees_url":"https://api.github.com/repos/mspnp/architecture-center/assignees{/user}","branches_url":"https://api.github.com/repos/mspnp/architecture-center/branches{/branch}","tags_url":"https://api.github.com/repos/mspnp/architecture-center/tags","blobs_url":"https://api.github.com/repos/mspnp/architecture-center/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mspnp/architecture-center/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mspnp/architecture-center/git/refs{/sha}","trees_url":"https://api.github.com/repos/mspnp/architecture-center/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mspnp/architecture-center/statuses/{sha}","languages_url":"https://api.github.com/repos/mspnp/architecture-center/languages","stargazers_url":"https://api.github.com/repos/mspnp/architecture-center/stargazers","contributors_url":"https://api.github.com/repos/mspnp/architecture-center/contributors","subscribers_url":"https://api.github.com/repos/mspnp/architecture-center/subscribers","subscription_url":"https://api.github.com/repos/mspnp/architecture-center/subscription","commits_url":"https://api.github.com/repos/mspnp/architecture-center/commits{/sha}","git_commits_url":"https://api.github.com/repos/mspnp/architecture-center/git/commits{/sha}","comments_url":"https://api.github.com/repos/mspnp/architecture-center/comments{/number}","issue_comment_url":"https://api.github.com/repos/mspnp/architecture-center/issues/comments{/number}","contents_url":"https://api.github.com/repos/mspnp/architecture-center/contents/{+path}","compare_url":"https://api.github.com/repos/mspnp/architecture-center/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mspnp/architecture-center/merges","archive_url":"https://api.github.com/repos/mspnp/architecture-center/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mspnp/architecture-center/downloads","issues_url":"https://api.github.com/repos/mspnp/architecture-center/issues{/number}","pulls_url":"https://api.github.com/repos/mspnp/architecture-center/pulls{/number}","milestones_url":"https://api.github.com/repos/mspnp/architecture-center/milestones{/number}","notifications_url":"https://api.github.com/repos/mspnp/architecture-center/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mspnp/architecture-center/labels{/name}","releases_url":"https://api.github.com/repos/mspnp/architecture-center/releases{/id}","deployments_url":"https://api.github.com/repos/mspnp/architecture-center/deployments","created_at":"2017-02-14T00:21:56Z","updated_at":"2017-04-27T18:18:56Z","pushed_at":"2017-05-08T18:31:19Z","git_url":"git://github.com/mspnp/architecture-center.git","ssh_url":"git@github.com:mspnp/architecture-center.git","clone_url":"https://github.com/mspnp/architecture-center.git","svn_url":"https://github.com/mspnp/architecture-center","homepage":"https://docs.microsoft.com/azure/architecture","size":32338,"stargazers_count":15,"watchers_count":15,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":28,"mirror_url":null,"open_issues_count":24,"forks":28,"open_issues":24,"watchers":15,"default_branch":"master"}},"base":{"label":"mspnp:master","ref":"master","sha":"af10a9211e9159864d002b4e218c83b1734ac55d","user":{"login":"mspnp","id":1373420,"avatar_url":"https://avatars1.githubusercontent.com/u/1373420?v=3","gravatar_id":"","url":"https://api.github.com/users/mspnp","html_url":"https://github.com/mspnp","followers_url":"https://api.github.com/users/mspnp/followers","following_url":"https://api.github.com/users/mspnp/following{/other_user}","gists_url":"https://api.github.com/users/mspnp/gists{/gist_id}","starred_url":"https://api.github.com/users/mspnp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mspnp/subscriptions","organizations_url":"https://api.github.com/users/mspnp/orgs","repos_url":"https://api.github.com/users/mspnp/repos","events_url":"https://api.github.com/users/mspnp/events{/privacy}","received_events_url":"https://api.github.com/users/mspnp/received_events","type":"Organization","site_admin":false},"repo":{"id":81886010,"name":"architecture-center","full_name":"mspnp/architecture-center","owner":{"login":"mspnp","id":1373420,"avatar_url":"https://avatars1.githubusercontent.com/u/1373420?v=3","gravatar_id":"","url":"https://api.github.com/users/mspnp","html_url":"https://github.com/mspnp","followers_url":"https://api.github.com/users/mspnp/followers","following_url":"https://api.github.com/users/mspnp/following{/other_user}","gists_url":"https://api.github.com/users/mspnp/gists{/gist_id}","starred_url":"https://api.github.com/users/mspnp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mspnp/subscriptions","organizations_url":"https://api.github.com/users/mspnp/orgs","repos_url":"https://api.github.com/users/mspnp/repos","events_url":"https://api.github.com/users/mspnp/events{/privacy}","received_events_url":"https://api.github.com/users/mspnp/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/mspnp/architecture-center","description":"Azure Architecture Center","fork":false,"url":"https://api.github.com/repos/mspnp/architecture-center","forks_url":"https://api.github.com/repos/mspnp/architecture-center/forks","keys_url":"https://api.github.com/repos/mspnp/architecture-center/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mspnp/architecture-center/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mspnp/architecture-center/teams","hooks_url":"https://api.github.com/repos/mspnp/architecture-center/hooks","issue_events_url":"https://api.github.com/repos/mspnp/architecture-center/issues/events{/number}","events_url":"https://api.github.com/repos/mspnp/architecture-center/events","assignees_url":"https://api.github.com/repos/mspnp/architecture-center/assignees{/user}","branches_url":"https://api.github.com/repos/mspnp/architecture-center/branches{/branch}","tags_url":"https://api.github.com/repos/mspnp/architecture-center/tags","blobs_url":"https://api.github.com/repos/mspnp/architecture-center/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mspnp/architecture-center/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mspnp/architecture-center/git/refs{/sha}","trees_url":"https://api.github.com/repos/mspnp/architecture-center/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mspnp/architecture-center/statuses/{sha}","languages_url":"https://api.github.com/repos/mspnp/architecture-center/languages","stargazers_url":"https://api.github.com/repos/mspnp/architecture-center/stargazers","contributors_url":"https://api.github.com/repos/mspnp/architecture-center/contributors","subscribers_url":"https://api.github.com/repos/mspnp/architecture-center/subscribers","subscription_url":"https://api.github.com/repos/mspnp/architecture-center/subscription","commits_url":"https://api.github.com/repos/mspnp/architecture-center/commits{/sha}","git_commits_url":"https://api.github.com/repos/mspnp/architecture-center/git/commits{/sha}","comments_url":"https://api.github.com/repos/mspnp/architecture-center/comments{/number}","issue_comment_url":"https://api.github.com/repos/mspnp/architecture-center/issues/comments{/number}","contents_url":"https://api.github.com/repos/mspnp/architecture-center/contents/{+path}","compare_url":"https://api.github.com/repos/mspnp/architecture-center/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mspnp/architecture-center/merges","archive_url":"https://api.github.com/repos/mspnp/architecture-center/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mspnp/architecture-center/downloads","issues_url":"https://api.github.com/repos/mspnp/architecture-center/issues{/number}","pulls_url":"https://api.github.com/repos/mspnp/architecture-center/pulls{/number}","milestones_url":"https://api.github.com/repos/mspnp/architecture-center/milestones{/number}","notifications_url":"https://api.github.com/repos/mspnp/architecture-center/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mspnp/architecture-center/labels{/name}","releases_url":"https://api.github.com/repos/mspnp/architecture-center/releases{/id}","deployments_url":"https://api.github.com/repos/mspnp/architecture-center/deployments","created_at":"2017-02-14T00:21:56Z","updated_at":"2017-04-27T18:18:56Z","pushed_at":"2017-05-08T18:31:19Z","git_url":"git://github.com/mspnp/architecture-center.git","ssh_url":"git@github.com:mspnp/architecture-center.git","clone_url":"https://github.com/mspnp/architecture-center.git","svn_url":"https://github.com/mspnp/architecture-center","homepage":"https://docs.microsoft.com/azure/architecture","size":32338,"stargazers_count":15,"watchers_count":15,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":28,"mirror_url":null,"open_issues_count":24,"forks":28,"open_issues":24,"watchers":15,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/mspnp/architecture-center/pulls/78"},"html":{"href":"https://github.com/mspnp/architecture-center/pull/78"},"issue":{"href":"https://api.github.com/repos/mspnp/architecture-center/issues/78"},"comments":{"href":"https://api.github.com/repos/mspnp/architecture-center/issues/78/comments"},"review_comments":{"href":"https://api.github.com/repos/mspnp/architecture-center/pulls/78/comments"},"review_comment":{"href":"https://api.github.com/repos/mspnp/architecture-center/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/mspnp/architecture-center/pulls/78/commits"},"statuses":{"href":"https://api.github.com/repos/mspnp/architecture-center/statuses/07798edcfa1449c37b30812bea7ca054c1aefebd"}}}}
{"actor":{"display_login":"MikeWasson"}}