1. L2 network created successfully, but interfaces are not getting IPs

L2 network created successfully, but interfaces are not getting IPs

Home Forums FABRIC General Questions and Discussion L2 network created successfully, but interfaces are not getting IPs

Viewing 8 posts - 1 through 8 (of 8 total)
  • Author
    Posts
  • #9644

    Hi all,

    I’m having trouble with a FABRIC slice where I created two nodes at MASS and NEWY and connected them with an L2 network, but the interfaces are not getting IP addresses.

    Slice ID: 0c80b4be-6b12-4d87-8e85-e76bc8c44ddb
    Slice name: iPerf3-tuned-nic-x6-64gb-512GB

    What happened

    Initially, I had two nodes:

    • Node-MASS
    • Node-NEWY

    I created an L2 network between them. The network showed up in the topology, but the interfaces did not seem to get usable IPs.

    To reconfigure, I fetched the latest slice topology, deleted the old network, and ran the modification script again. The new network (net4) now appears as Active, and the interfaces are attached, but the IP addresses are still None.

    Modification code used

    ## NOTE: Always get the latest slice topology before requesting any updates
    slice = fablib.get_slice(slice_name)
    
    # Removing NIC1 from Node1
    node1 = slice.get_node(name="Node-MASS")
    node2 = slice.get_node(name="Node-NEWY")
    net1 = slice.get_network(name="net1")
    
    net1.delete()
    
    net2 = slice.add_l2network(name="net4", subnet=IPv4Network("192.168.2.0/24"))
    
    iface1 = node1.get_interfaces()[0]
    iface1.set_mode('auto')
    net2.add_interface(iface1)
    
    iface2 = node2.get_interfaces()[0]
    iface2.set_mode('auto')
    net2.add_interface(iface2)
    
    slice.submit()

    Current state

    After running the script:

    • net4 is created and shows as Active
    • both nodes are still Active
    • the interfaces are attached to net4
    • but the IP address fields remain None

    What I checked

    When I try to retrieve the IP from the interface, I get None:

    node2_addr = node2.get_interface(network_name="net4").get_ip_addr()
    print(node2_addr)
    stdout, stderr = node1.execute(f'ping -c 5 {node2_addr}')

    This prints:

    None

    Question

    What can I do to fix this? I want a network with great speed.

    Any guidance would be appreciated.

    #9645
    Tom Lehman
    Participant

      Hello, The FABRIC MASS dataplane link was having some problems, however that should be working now. Please try your service again and let us know if all is working.  Thanks, Tom

      #9646

      Hello, The FABRIC MASS dataplane link was having some problems, however that should be working now. Please try your service again and let us know if all is working.  Thanks, Tom

      Hello,

      Thanks for the update.

      I removed the old slice and created a new one to retry from scratch, but I am still seeing the same issue. The new slice is:

      • Slice ID: f00b699f-7332-4cd5-b4fd-f64b0da3afe3
      • Slice name: iPerf3-tuned-nic-x6-64gb

      In this new slice, the L2 network was created successfully and shows Active, and both nodes are also Active. The interfaces are attached to net1, but the IP Address field still remains None for both sides.

      Current setup:

      • Node-FIU at FIU
      • Node-KANS at KANS
      • Network: net1
      • Subnet: 192.168.1.0/24

      From the topology view:

      • Node-FIU-nic1-p1 is attached to net1, mode auto, IP Address None
      • Node-KANS-nic1-p1 is attached to net1, mode auto, IP Address None

      So the issue still seems to be that the network is created, but IPs are not being assigned to the interfaces.

      Please let me know whether there is an additional step needed for IP assignment on L2 networks, or if this indicates another dataplane/control-plane issue.

      Thank you.

       

      Code:

      #Create Slice
      slice = fablib.new_slice(name=slice_name)

      net1 = slice.add_l2network(name=network_name, subnet=subnet)

      for s in sites:
      # Node1
      node1 = slice.add_node(name=f”Node-{s}”, cores=cores, ram=ram, disk=disk, site=s, image=image)

      iface1 = node1.add_component(model=model_name, name=nic_name).get_interfaces()[0]
      node1.add_component(model=’NVME_P4510′, name=’nvme1′)
      iface1.set_mode(‘auto’)
      net1.add_interface(iface1)
      net1.set_bandwidth(60)

      node1.add_post_boot_upload_directory(‘node_tools’,’.’)
      node1.add_post_boot_execute(‘sudo node_tools/host_tune.sh’)
      # node1.add_post_boot_execute(‘node_tools/enable_docker.sh {{ _self_.image }} ‘)
      # node1.add_post_boot_execute(‘docker pull fabrictestbed/slice-vm-ubuntu20-network-tools:0.0.1 ‘)

      #Submit Slice Request
      slice.submit();

      #9647
      Komal Thareja
      Participant

        Hi Rasman,

        Which JH container are you using?

        Best,

        Komal

        #9650

        Hi Rasman,

        Which JH container are you using?

        Best,

        Komal

        Hi Komal,

        I am using the default FABRIC JupyterHub container (

        (default) FABRIC Examples v1.9.0, FABlib v1.9.3: released: 07/28/2025, stable: Summer 2025

        ) from the FABRIC portal, not a custom local environment.

        If you need additional details, I can also share those.

        Best,
        Rasman

        #9651
        Komal Thareja
        Participant

          Hi Rasman,

          I tried both your shared NICs example and the iperf3 (CX5) notebook, and I do see IPs being configured on the VMs.

          Could you please run the following notebook:
          jupyter-examples-*/configure_and_validate/configure_and_validate.ipynb?

          It’s possible that your bastion keys have expired, which may be preventing fablib from properly configuring the nodes.

          I’ve attached a snapshot of the output from my runs below for reference.

          Best,
          Komal

          #9654

          Yes. That was the case. My bad. Do I need to delete the slice and then reserve again, or there is any way to continue with the existing slice?

           

          Thank you for your assistance.

          #9655
          Komal Thareja
          Participant

            You should be able to re-use the existing slice.

            Just run the following in a cell.

            slice=fablib.get_slice(slice_name)

            slice.post_boot_config()

            slice.list_nodes();

            slice.list_interfaces();

            Thanks,

            Komal

          Viewing 8 posts - 1 through 8 (of 8 total)
          • You must be logged in to reply to this topic.