Skip to content

Commit 4d69029

Browse files
authored
Update concepts-network-fabric-optionA-optionB.md
1 parent 5e37f55 commit 4d69029

File tree

1 file changed

+69
-95
lines changed

1 file changed

+69
-95
lines changed

articles/operator-nexus/concepts-network-fabric-optionA-optionB.md

Lines changed: 69 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ author: jmmason70
55
ms.author: jeffreymason
66
ms.service: azure-operator-nexus
77
ms.topic: concept-article
8-
ms.date: 02/11/2025
8+
ms.date: 02/12/2025
99
---
1010

1111
# Network Fabric OptionA and OptionB
@@ -16,132 +16,106 @@ The edge routers in each Autonomous Systems are manually configured with a set o
1616

1717
There are two peering standards relevant to Nexus:
1818

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.
2020

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.
2222

2323
For more information on Multi-Autonomous Systems, see section 10 of [RFC 4364](https://www.ietf.org/rfc/rfc4364.txt).
2424

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).
2526

26-
## Create a Network Fabric
27+
The two steps where Option A and Option B are specified are 'fabric create' and 'nni create'.
2728

28-
The following steps (with examples) are used in creating and provisioning a Nexus Network Fabric.
29+
1. Fabric Create
2930

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.
3333

34+
**Examples:** \
35+
**Network Fabric create with option A Properties**
36+
3437
```azurecli
3538
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'}}}"
4952
5053
```
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
5454

55+
**Network Fabric create with option B Properties**
5556

56-
**Create a Network Fabric with option B Properties**
57-
58-
```azurecli
57+
```azurecli
5958
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"]}}}}'
7473
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+
```
7975
8076
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.
8278
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].
8481
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".
9684
97-
**Create egress ACL**
85+
--option-b-layer3-configuration : Common properties for Option B Layer3Configuration.
9886
87+
**Examples:** \
88+
**NNI create with option A Properties**
89+
9990
```azurecli
10091
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+
107102
108103
````
109104
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**
111106
112107
```azurecli
113108
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}" \
121117
--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'}"
122118
--ingress-acl-id "/subscriptions/xxxxx-xxxx-xxxx-xxxx-xxxxx/resourceGroups/example-rg/providers/Microsoft.ManagedNetworkFabric/accesscontrollists/example-Ipv4ingressACL"
123119
--egress-acl-id "/subscriptions/xxxxx-xxxx-xxxx-xxxx-xxxxx/resourceGroups/example-rg/providers/Microsoft.ManagedNetworkFabric/accesscontrollists/example-Ipv4egressACL"
124120
125121
````
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

Comments
 (0)