@@ -5,7 +5,7 @@ author: jmmason70
5
5
ms.author : jeffreymason
6
6
ms.service : azure-operator-nexus
7
7
ms.topic : concept-article
8
- ms.date : 02/11 /2025
8
+ ms.date : 02/12 /2025
9
9
---
10
10
11
11
# Network Fabric OptionA and OptionB
@@ -16,132 +16,106 @@ The edge routers in each Autonomous Systems are manually configured with a set o
16
16
17
17
There are two peering standards relevant to Nexus:
18
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 this is implementation dependent and not guaranteed.
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 this is implementation dependent and not guaranteed.
20
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.
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
22
23
23
For more information on Multi-Autonomous Systems, see section 10 of [ RFC 4364] ( https://www.ietf.org/rfc/rfc4364.txt ) .
24
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 ) .
25
26
26
- ## Create a Network Fabric
27
+ The two steps where Option A and Option B are specified are 'fabric create' and 'nni create'.
27
28
28
- The following steps (with examples) are used in creating and provisioning a Nexus Network Fabric.
29
+ 1 . Fabric Create
29
30
30
- 1 . Create Fabric
31
-
32
- ** Create a Network Fabric with option A Properties**
31
+ Specified in the following property: \
32
+ --managed-network-config [ Required] : Configuration to be used to setup the management network.
33
33
34
+ ** Examples:** \
35
+ ** Network Fabric create with option A Properties**
36
+
34
37
``` azurecli
35
38
36
- az networkfabric fabric create
37
- --resource-group "<NFResourceGroup>"
38
- --location "<Location>"
39
- --resource-name "<NFName>"
40
- --nf-sku "<NFSKU>"
41
- --fabric-version "x.x.x"
42
- --nfc-id "/subscriptions/<subscription_id>/resourceGroups/<NFResourceGroup>/providers/Microsoft.ManagedNetworkFabric/networkFabricControllers/<NFCName>"
43
- --fabric-asn 65048
44
- --ipv4-prefix x.x.x.x/19
45
- --rack-count 4
46
- --server-count-per-rack 8
47
- --ts-config "{primaryIpv4Prefix:'x.x.0.0 /30',secondaryIpv4Prefix:'x.x.x.x/30',username:'****',password:'*****',serialNumber:<TS_SN>}"
48
- --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'}}}" --debug --no-wait
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'}}}"
49
52
50
53
```
51
- > [ !Note]
52
- > * if it's a four racks set up then the rack count would be 4
53
- > * if it's an eight rack set up then the rack count would be 8
54
54
55
+ ** Network Fabric create with option B Properties**
55
56
56
- ** Create a Network Fabric with option B Properties**
57
-
58
- ``` azurecli
57
+ ``` azurecli
59
58
60
- az networkfabric fabric create
61
- --resource-group "<NFResourceGroup>"
62
- --location "<Location>"
63
- --resource-name "<NFName>"
64
- --nf-sku "<NFSKU>"
65
- --fabric-version "x.x.x"
66
- --nfc-id "/subscriptions/<subscription_id>/resourceGroups/<NFResourceGroup>/providers/Microsoft.ManagedNetworkFabric/networkFabricControllers/<NFCName>"
67
- --fabric-asn 65048
68
- --ipv4-prefix "x.x.x.x/19"
69
- --ipv6-prefix "xxxx:xxxx:xxxx:xxxx::xx/59"
70
- --rack-count 8
71
- --server-count-per-rack 16
72
- --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"}'
73
- --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"]}}}}' --debug --no-wait
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"]}}}}'
74
73
75
- ```
76
- > [ !Note]
77
- > * if it's a four racks set up then the rack count would be 4
78
- > * if it's an eight rack set up then the rack count would be 8
74
+ ```
79
75
80
76
81
- 2 . Create NNI ingress and egress ACLs
77
+ 1 . NNI Create (Network-to-NetworkInterface). This is created after fabric create but before network device update and fabric provision.
82
78
83
- ** Create ingress ACL**
79
+ Specified in the following properties: \
80
+ --use-option-b [Required] : Selection of option B for NNI. Allowed values: [False, True].
84
81
85
- ``` azurecli
86
-
87
- az networkfabric acl create --resource-group "<NFResourceGroup>"
88
- --location "<Location>"
89
- --resource-name "<example-Ipv4ingressACL>"
90
- --configuration-type "Inline"
91
- --default-action "Permit"
92
- --dynamic-match-configurations "[{ipGroups:[{name:'example-ipGroup',ipAddressType:IPv4,ipPrefixes:['x.x.x.x/20']}],vlanGroups:[{name:'example-vlanGroup',vlans:['20-30']}],portGroups:[{name:'example-portGroup',ports:['100-200']}]}]"
93
- --match-configurations "[{matchConfigurationName:'example-match',sequenceNumber:123,ipAddressType:IPv4,matchConditions:[{etherTypes:['0x1'],fragments:['0xff00-0xffff'],ipLengths:['4094-9214'],ttlValues:[23],dscpMarkings:[32],portCondition:{flags:[established],portType:SourcePort,layer4Protocol:TCP,ports:['1-20']},protocolTypes:[TCP],vlanMatchCondition:{vlans:['20-30'],innerVlans:[30]},ipCondition:{type:SourceIP,prefixType:Prefix,ipPrefixValues:['x.x.x.x/12']}}],actions:[{type:Count,counterName:'example-counter'}]}]"
94
-
95
- ````
82
+ For option A, set --use-option-b to "False". \
83
+ For Option B, set --use-option-b to "True".
96
84
97
- **Create egress ACL**
85
+ --option-b-layer3-configuration : Common properties for Option B Layer3Configuration.
98
86
87
+ **Examples:** \
88
+ **NNI create with option A Properties**
89
+
99
90
```azurecli
100
91
101
- az networkfabric acl create --resource-group "<NFResourceGroup>"
102
- --location "<Location>"
103
- --resource-name "<example-Ipv4egressACL>"
104
- --configuration-type "File" \
105
- --acls-url "https://ACL-Storage-URL" --default-action "Permit"
106
- --dynamic-match-configurations "[{ipGroups:[{name:'example-ipGroup',ipAddressType:IPv4,ipPrefixes:['x.x.x.x/20']}],vlanGroups:[{name:'example-vlanGroup',vlans:['20-30']}],portGroups:[{name:'example-portGroup',ports:['100-200']}]}]"
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
+
107
102
108
103
````
109
104
110
- 3. Create NNI (Network-to-NetworkInterface). Completed after the fabric create but before device update and fabric provision.
105
+ ** NNI create with option B Properties**
111
106
112
107
```azurecli
113
108
114
- az networkfabric nni create --resource-group "<NFResourceGroup>"
115
- --fabric "<NFFabric>"
116
- --resource-name "<NFNNIName>"
117
- --nni-type "CE"
118
- --is-management-type "True"
119
- --use-option-b "True"
120
- --layer2-configuration "{interfaces:['/subscriptions/xxxxx-xxxx-xxxx-xxxx-xxxxx/resourceGroups/example-rg/providers/Microsoft.ManagedNetworkFabric/networkDevices/example-networkDevice/networkInterfaces/example-interface'],mtu:1500}"
109
+ az networkfabric nni create \
110
+ --resource-group "<NFResourceGroup>" \
111
+ --fabric "<NFFabric>" \
112
+ --resource-name "<NFNNIName>" \
113
+ --nni-type "CE" \
114
+ --is-management-type "True" \
115
+ --use-option-b "True" \
116
+ --layer2-configuration "{interfaces:['/subscriptions/xxxxx-xxxx-xxxx-xxxx-xxxxx/resourceGroups/example-rg/providers/Microsoft.ManagedNetworkFabric/networkDevices/example-networkDevice/networkInterfaces/example-interface'],mtu:1500}" \
121
117
--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'}"
122
118
--ingress-acl-id "/subscriptions/xxxxx-xxxx-xxxx-xxxx-xxxxx/resourceGroups/example-rg/providers/Microsoft.ManagedNetworkFabric/accesscontrollists/example-Ipv4ingressACL"
123
119
--egress-acl-id "/subscriptions/xxxxx-xxxx-xxxx-xxxx-xxxxx/resourceGroups/example-rg/providers/Microsoft.ManagedNetworkFabric/accesscontrollists/example-Ipv4egressACL"
124
120
125
121
````
126
-
127
- 4. Update devices
128
-
129
- The following command should be run for each network fabric device.
130
-
131
- ```azurecli
132
-
133
- az networkfabric device update --resource-group "<NFResourceGroup>"
134
- --resource-name "<Network-Device-Name>"
135
- --host-name <example-device-hostname>
136
- --serial-number <NF_DEVICE_SN>
137
-
138
- ````
139
-
140
- 6. Provision network fabric
141
-
142
- ```azurecli
143
-
144
- az networkfabric fabric provision --resource-group "<NFResourceGroup>"
145
- --resource-name "<NFName>"
146
-
147
- ````
0 commit comments