Skip to content

Commit c10d608

Browse files
authored
Merge pull request #294272 from jmmason70/Concepts-Network-Fabric-OptionA-OptionB
Concepts network fabric optionA and optionB
2 parents e987d44 + e81c28c commit c10d608

File tree

2 files changed

+125
-0
lines changed

2 files changed

+125
-0
lines changed

articles/operator-nexus/TOC.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@
6464
href: reference-isolation-domain-technical-requirements.md
6565
- name: Access Control Lists
6666
href: concepts-access-control-lists.md
67+
- name: Network Fabric OptionA and OptionB
68+
href: concepts-network-fabric-optionA-optionB.md
6769
- name: Nexus Kubernetes Cluster
6870
expanded: false
6971
items:
Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
---
2+
title: "Azure Operator Nexus: Network Fabric OptionA and OptionB"
3+
description: Learn about Network Fabric OptionA and OptionB.
4+
author: jmmason70
5+
ms.author: jeffreymason
6+
ms.service: azure-operator-nexus
7+
ms.topic: concept-article
8+
ms.date: 02/12/2025
9+
---
10+
11+
# Network Fabric OptionA and OptionB
12+
13+
BGP (Border Gateway Protocol) is a protocol used on the internet between routers to allow traffic to be routed between Autonomous Systems (AS). Autonomous Systems use BGP to advertise to their peers which IPs they can route to and which ASs they go through to get there. For example, an ISP (Internet Service Provider) advertises traffic to enter their network via their ingress points. They'll advertise they know how to route to the public IPs on their network, without them having to share how they do that routing internally.
14+
15+
The edge routers in each Autonomous Systems are manually configured with a set of BGP peers they trust and only accept traffic routed from those peers.
16+
17+
There are two peering standards relevant to Nexus:
18+
19+
**Option A**: This option is simpler but less scalable than Option B, and only supports IPv4 in the standard. It can support IPv6 and multicast as well, but is implementation dependent and not guaranteed.
20+
21+
**Option B**: This option is more complex but supports IPv4, IPv6, and multicast in the standard. It's also more scalable than Option A. Nexus supports IPv4, IPv6, and multicast.
22+
23+
For more information on Multi-Autonomous Systems, see section 10 of [RFC 4364](https://www.ietf.org/rfc/rfc4364.txt).
24+
25+
For more information on the commands involved in creating and provisioning Network Fabric, see [Create and Provision a Network Fabric using Azure CLI](./howto-configure-network-fabric.md).
26+
27+
Option A and Option B are specified in the steps **fabric create** and **nni create**.
28+
29+
1. Fabric Create
30+
31+
Specified in the following property: \
32+
--managed-network-config [Required]: Configuration to be used to set up the management network.
33+
34+
**Examples:** \
35+
**Network Fabric create with option A Properties**
36+
37+
```azurecli
38+
39+
az networkfabric fabric create \
40+
--resource-group "<NFResourceGroup>" \
41+
--location "<Location>" \
42+
--resource-name "<NFName>" \
43+
--nf-sku "<NFSKU>" \
44+
--fabric-version "x.x.x" \
45+
--nfc-id "/subscriptions/<subscription_id>/resourceGroups/<NFResourceGroup>/providers/Microsoft.ManagedNetworkFabric/networkFabricControllers/<NFCName>" \
46+
--fabric-asn 65048 \
47+
--ipv4-prefix x.x.x.x/19 \
48+
--rack-count 4 \
49+
--server-count-per-rack 8 \
50+
--ts-config "{primaryIpv4Prefix:'x.x.x.x/30',secondaryIpv4Prefix:'x.x.x.x/30',username:'****',password:'*****',serialNumber:<TS_SN>}" \
51+
--managed-network-config "{infrastructureVpnConfiguration:{networkToNetworkInterconnectId:'/subscriptions/xxxxx-xxxx-xxxx-xxxx-xxxxx/resourceGroups/example-rg/providers/Microsoft.ManagedNetworkFabric/networkFabrics/example-fabric/networkToNetworkInterconnects/example-nni',peeringOption:OptionA,optionAProperties:{bfdConfiguration:{multiplier:5,intervalInMilliSeconds:300},mtu:1500,vlanId:520,peerASN:65133,primaryIpv4Prefix:'x.x.x.x/31',secondaryIpv4Prefix:'x.x.x.x/31'}},workloadVpnConfiguration:{networkToNetworkInterconnectId:'/subscriptions/xxxxx-xxxx-xxxx-xxxx-xxxxx/resourceGroups/example-rg/providers/Microsoft.ManagedNetworkFabric/networkFabrics/example-fabric/networkToNetworkInterconnects/example-nni',peeringOption:OptionA,optionAProperties:{bfdConfiguration:{multiplier:5,intervalInMilliSeconds:300},mtu:1500,vlanId:520,peerASN:65133,primaryIpv4Prefix:'x.x.x.x/31',secondaryIpv4Prefix:'x.x.x.x/31',primaryIpv6Prefix:'xxxx:xxxx:xxxx:xxxx::xx/127',secondaryIpv6Prefix:'xxxx:xxxx:xxxx:xxxx::xx/127'}}}"
52+
53+
```
54+
55+
**Network Fabric create with option B Properties**
56+
57+
```azurecli
58+
59+
az networkfabric fabric create \
60+
--resource-group "<NFResourceGroup>" \
61+
--location "<Location>" \
62+
--resource-name "<NFName>" \
63+
--nf-sku "<NFSKU>" \
64+
--fabric-version "x.x.x" \
65+
--nfc-id "/subscriptions/<subscription_id>/resourceGroups/<NFResourceGroup>/providers/Microsoft.ManagedNetworkFabric/networkFabricControllers/<NFCName>" \
66+
--fabric-asn 65048 \
67+
--ipv4-prefix "x.x.x.x/19" \
68+
--ipv6-prefix "xxxx:xxxx:xxxx:xxxx::xx/59" \
69+
--rack-count 8 \
70+
--server-count-per-rack 16 \
71+
--ts-config '{"primaryIpv4Prefix": "x.x.x.x/30", "secondaryIpv4Prefix": "x.x.x.x/30", "username": "'$TS_USER'", "password": "'$TS_PASSWORD'", "serialNumber": "<TS_SN>", "primaryIpv6Prefix": "xxxx:xxxx:xxxx:xxxx::xx/64", "secondaryIpv6Prefix": "xxxx:xxxx:xxxx:xxxx::xx/64"}' \
72+
--managed-network-config '{"infrastructureVpnConfiguration": {"peeringOption": "OptionB", "optionBProperties": {"routeTargets": {"exportIpv4RouteTargets": ["13979:2928504", "13979:106948"], "exportIpv6RouteTargets": ["13979:2928504", "13979:106948"], "importIpv4RouteTargets": ["13979:2928504", "13979:106947"], "importIpv6RouteTargets": ["13979:2928504", "13979:106947"]}}}, "workloadVpnConfiguration": {"peeringOption": "OptionB", "optionBProperties": {"routeTargets": {"exportIpv4RouteTargets": ["13979:2928516"], "exportIpv6RouteTargets": ["13979:2928516"], "importIpv4RouteTargets": ["13979:2928516"], "importIpv6RouteTargets": ["13979:2928516"]}}}}'
73+
74+
```
75+
76+
77+
1. NNI (Network-to-NetworkInterface) Create. The NNI is created after fabric create but before network device update and fabric provision.
78+
79+
Specified in the following properties: \
80+
--use-option-b [Required]: Selection of option B for NNI. Allowed values: [False, True].
81+
82+
For option A, set to "False" \
83+
For Option B, set to "True"
84+
85+
--option-b-layer3-configuration: Common properties for Option B Layer3Configuration.
86+
87+
**Examples:** \
88+
**NNI (Network-to-NetworkInterface) create with option A Properties**
89+
90+
```azurecli
91+
92+
az networkfabric nni create \
93+
--resource-group "<NFResourceGroup>" \
94+
--fabric "<NFFabric>" \
95+
--resource-name "<NFNNIName>" \
96+
--nni-type "CE" \
97+
--is-management-type "True" \
98+
--use-option-b "False" \
99+
--layer2-configuration "{interfaces:['/subscriptions/xxxxx-xxxx-xxxx-xxxx-xxxxx/resourceGroups/example-rg/providers/Microsoft.ManagedNetworkFabric/networkDevices/example-networkDevice/networkInterfaces/example-interface'],mtu:1500}" \
100+
--layer3-configuration '{"peerASN": 65048, "vlanId": 501, "primaryIpv4Prefix": "x.x.x.x/30", "secondaryIpv4Prefix": "x.x.x.x/30", "primaryIpv6Prefix": "xxxx:xxxx:xxxx:xxxx::xx/127", "secondaryIpv6Prefix": "xxxx:xxxx:xxxx:xxxx::xx/127"}' \
101+
--ingress-acl-id "/subscriptions/xxxxx-xxxx-xxxx-xxxx-xxxxx/resourceGroups/example-rg/providers/Microsoft.ManagedNetworkFabric/accesscontrollists/example-Ipv4ingressACL" \
102+
--egress-acl-id "/subscriptions/xxxxx-xxxx-xxxx-xxxx-xxxxx/resourceGroups/example-rg/providers/Microsoft.ManagedNetworkFabric/accesscontrollists/example-Ipv4egressACL"
103+
104+
105+
````
106+
107+
**NNI (Network-to-NetworkInterface) create with option B Properties**
108+
109+
```azurecli
110+
111+
az networkfabric nni create \
112+
--resource-group "<NFResourceGroup>" \
113+
--fabric "<NFFabric>" \
114+
--resource-name "<NFNNIName>" \
115+
--nni-type "CE" \
116+
--is-management-type "True" \
117+
--use-option-b "True" \
118+
--layer2-configuration "{interfaces:['/subscriptions/xxxxx-xxxx-xxxx-xxxx-xxxxx/resourceGroups/example-rg/providers/Microsoft.ManagedNetworkFabric/networkDevices/example-networkDevice/networkInterfaces/example-interface'],mtu:1500}" \
119+
--option-b-layer3-configuration "{peerASN:28,vlanId:501,primaryIpv4Prefix:'x.x.x.x/30',secondaryIpv4Prefix:'x.x.x.x/30',primaryIpv6Prefix:'xxxx:xxxx:xxxx:xxxx::xx/127',secondaryIpv6Prefix:'xxxx:xxxx:xxxx:xxxx::xx/127'}" \
120+
--ingress-acl-id "/subscriptions/xxxxx-xxxx-xxxx-xxxx-xxxxx/resourceGroups/example-rg/providers/Microsoft.ManagedNetworkFabric/accesscontrollists/example-Ipv4ingressACL" \
121+
--egress-acl-id "/subscriptions/xxxxx-xxxx-xxxx-xxxx-xxxxx/resourceGroups/example-rg/providers/Microsoft.ManagedNetworkFabric/accesscontrollists/example-Ipv4egressACL"
122+
123+
````

0 commit comments

Comments
 (0)