Skip to content

Virtual Network#

Virtual Networks → VNVirtual Networks

A virtual network is a collection of network connectivity services like BridgeDomains and Routers. It doesn't bring any new functionality, but rather serves as a logical grouping of connectivity services that belong together, for example to the same customer or to the same application.

Some examples:

The connectivity services that the VirtualNetwork manages are still visible in the user interface, as derived resources. To modify them, the operator should modify the VirtualNetwork those services belong to instead.

Refer to the referenced resources for a list of EDA resources that can be created and managed by the VirtualNetwork. Any dependencies of those resources are detailed in their respective documentation articles.

Dependencies#

The VirtualNetwork serves as a top-level abstraction for connectivity services, just like the Fabric is a top-level abstraction of the physical layout of a datacenter and the required elements to support virtualized connectivity services. Therefore, the VirtualNetwork has no dependencies.

Referenced resources#

BridgeDomain#

Bridge domains are virtual services that provide layer-2 connectivity between hosts in the same subnet. These virtual broadcast domains may be local to a specific node, or distributed with EVPN.

BridgeInterface#

To connect an Interface to a BridgeDomain, a BridgeInterface or VLAN resource must be created.

Router#

Routers are virtual services that provide layer-3 connectivity between hosts and BridgeDomain services. The routing table of a Router service may be local to a specific node, or distributed with EVPN.

RoutedInterface#

To connect an Interface to a Router, a RoutedInterface resource must be created. Typically this RoutedInterface is configured with an IP address in a point-to-point (/31 or /30) subnet.

IRBInterface#

To connect a BridgeDomain to a Router, an IRBInterface resource must be created. Typically this IRBInterface is configured with a gateway IP address, often the first host in a large (e.g. /24) subnet.

StaticRoute#

To configure reachability information for a particular subnet towards an external next-hop, a StaticRoute resource may be created.

BGP#

To exchange reachability information between the virtual Router service and an external endpoint (e.g. a firewall or datacenter gateway) using the BGP protocol, the VirtualNetwork allows for the creation of the following resources:

OSPF#

To exchange reachability information between the virtual Router service and an external endpoint (e.g. a firewall or datacenter gateway) using the OSPF protocol, the VirtualNetwork allows for the creation of the following resources:

IS-IS#

To exchange reachability information between the virtual Router service and an external endpoint using the IS-IS protocol, the VirtualNetwork allows for the creation of the following resources:

Routing policies#

To control which reachability information is imported into / exported out of the virtualized Router services, Policy resources may be configured that can be referenced by the BGP, OSPF, or IS-IS resources.

Routing policies can filter routes based on many criteria, including pre-defined PrefixSets containing lists of subnets that need to be accepted or rejected.

Examples#

apiVersion: services.eda.nokia.com/v2
kind: VirtualNetwork
metadata:
  name: my-vnet
  namespace: eda
spec:
  bridgeDomains:
    - name: bd-compute
      spec:
        encapOptions:
          vxlan:
            tunnelIndexPool: tunnel-index-pool
            vniPool: vni-pool
        eviPool: evi-pool
        macLearning:
          agingTimeSeconds: 300
          enabled: true
        type: EVPNVXLAN
    - name: bd-storage
      spec:
        encapOptions:
          vxlan:
            tunnelIndexPool: tunnel-index-pool
            vniPool: vni-pool
        eviPool: evi-pool
        macLearning:
          agingTimeSeconds: 300
          enabled: true
        type: EVPNVXLAN
  irbInterfaces:
    - name: compute-irb
      spec:
        bridgeDomain: bd-compute
        evpnRouteAdvertisementType:
          arpDynamic: true
          arpStatic: true
          ndDynamic: false
          ndStatic: false
        ipAddresses:
          - ipv4Address:
              anycast: true
              ipPrefix: 10.0.100.1/24
        ipMTU: 1500
        router: vnet-router
    - name: storage-irb
      spec:
        bridgeDomain: bd-storage
        evpnRouteAdvertisementType:
          arpDynamic: true
          arpStatic: true
          ndDynamic: false
          ndStatic: false
        ipAddresses:
          - ipv4Address:
              anycast: true
              ipPrefix: 10.0.200.1/24
        ipMTU: 1500
        router: vnet-router
  routers:
    - name: vnet-router
      spec:
        encapOptions:
          vxlan:
            tunnelIndexPool: tunnel-index-pool
            vniPool: vni-pool
        eviPool: evi-pool
        type: EVPNVXLAN
  vlans:
    - name: bd-compute-vlan100
      spec:
        bridgeDomain: bd-compute
        interfaceSelectors:
          - type = compute
        vlanID: '100'
    - name: bd-storage-vlan200
      spec:
        bridgeDomain: bd-storage
        interfaceSelectors:
          - type = storage
        vlanID: '200'
cat << 'EOF' | kubectl apply -f -
apiVersion: services.eda.nokia.com/v2
kind: VirtualNetwork
metadata:
  name: my-vnet
  namespace: eda
spec:
  bridgeDomains:
    - name: bd-compute
      spec:
        encapOptions:
          vxlan:
            tunnelIndexPool: tunnel-index-pool
            vniPool: vni-pool
        eviPool: evi-pool
        macLearning:
          agingTimeSeconds: 300
          enabled: true
        type: EVPNVXLAN
    - name: bd-storage
      spec:
        encapOptions:
          vxlan:
            tunnelIndexPool: tunnel-index-pool
            vniPool: vni-pool
        eviPool: evi-pool
        macLearning:
          agingTimeSeconds: 300
          enabled: true
        type: EVPNVXLAN
  irbInterfaces:
    - name: compute-irb
      spec:
        bridgeDomain: bd-compute
        evpnRouteAdvertisementType:
          arpDynamic: true
          arpStatic: true
          ndDynamic: false
          ndStatic: false
        ipAddresses:
          - ipv4Address:
              anycast: true
              ipPrefix: 10.0.100.1/24
        ipMTU: 1500
        router: vnet-router
    - name: storage-irb
      spec:
        bridgeDomain: bd-storage
        evpnRouteAdvertisementType:
          arpDynamic: true
          arpStatic: true
          ndDynamic: false
          ndStatic: false
        ipAddresses:
          - ipv4Address:
              anycast: true
              ipPrefix: 10.0.200.1/24
        ipMTU: 1500
        router: vnet-router
  routers:
    - name: vnet-router
      spec:
        encapOptions:
          vxlan:
            tunnelIndexPool: tunnel-index-pool
            vniPool: vni-pool
        eviPool: evi-pool
        type: EVPNVXLAN
  vlans:
    - name: bd-compute-vlan100
      spec:
        bridgeDomain: bd-compute
        interfaceSelectors:
          - type = compute
        vlanID: '100'
    - name: bd-storage-vlan200
      spec:
        bridgeDomain: bd-storage
        interfaceSelectors:
          - type = storage
        vlanID: '200'
EOF

Custom Resource Definition#

To browse the Custom Resource Definition go to crd.eda.dev.

VirtualNetwork

services.eda.nokia.com / v2

SPEC

VirtualNetworkSpec defines the desired state of VirtualNetwork

  • #
  • #
  • #
  • #
  • #
  • #
  • #

STATUS

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #