annotations:
  - border_color: '#808080FF'
    border_style: ''
    color: '#FFFFFFFF'
    line_end: null
    line_start: null
    thickness: 1
    type: line
    x1: -200.0
    y1: -40.0
    x2: -200.0
    y2: -40.0
    z_index: 0
  - border_color: '#00000000'
    border_style: ''
    color: '#808080FF'
    rotation: 0
    text_bold: true
    text_content: '     192.168.216.2/24'
    text_font: sans-serif
    text_italic: false
    text_size: 11
    text_unit: pt
    thickness: 1
    type: text
    x1: -120.0
    y1: -120.0
    z_index: 5
  - border_color: '#00000000'
    border_style: ''
    color: '#808080FF'
    rotation: 0
    text_bold: true
    text_content: |2-



          client: cisco / cisco
          server: cisco / cisco
    text_font: sans-serif
    text_italic: false
    text_size: 11
    text_unit: pt
    thickness: 1
    type: text
    x1: -600.0
    y1: 0.0
    z_index: 15
  - border_color: '#00000000'
    border_style: ''
    color: '#808080FF'
    rotation: 0
    text_bold: true
    text_content: |2-




      WAN
    text_font: sans-serif
    text_italic: false
    text_size: 12
    text_unit: pt
    thickness: 1
    type: text
    x1: -240.0
    y1: -160.0
    z_index: 16
  - border_color: '#00000000'
    border_style: ''
    color: '#808080FF'
    rotation: 0
    text_bold: true
    text_content: |2-


            100 Mbps
    text_font: sans-serif
    text_italic: false
    text_size: 11
    text_unit: pt
    thickness: 1
    type: text
    x1: -280.0
    y1: -80.0
    z_index: 17
  - border_color: '#00000000'
    border_style: ''
    color: '#808080FF'
    rotation: 0
    text_bold: true
    text_content: |2-








           192.168.216.10/24
    text_font: sans-serif
    text_italic: false
    text_size: 11
    text_unit: pt
    thickness: 1
    type: text
    x1: -600.0
    y1: -160.0
    z_index: 18
  - border_color: '#00000000'
    border_style: ''
    color: '#808080FF'
    rotation: 0
    text_bold: true
    text_content: |2-








         192.168.216.100/24
    text_font: sans-serif
    text_italic: false
    text_size: 11
    text_unit: pt
    thickness: 1
    type: text
    x1: 0.0
    y1: -160.0
    z_index: 19
smart_annotations: []
nodes:
  - boot_disk_size: null
    configuration:
      - name: default
        content: System Bridge
    cpu_limit: null
    cpus: null
    data_volume: null
    hide_links: false
    id: n0
    image_definition: null
    label: Internet
    node_definition: external_connector
    parameters: {}
    ram: null
    tags: []
    x: -120
    y: -200
    interfaces:
      - id: i0
        label: port
        mac_address: null
        slot: 0
        type: physical
  - boot_disk_size: null
    configuration:
      - name: user-data
        content: |-
          #cloud-config
          hostname: client
          manage_etc_hosts: True
          system_info:
            default_user:
              name: cisco
          password: cisco
          chpasswd: { expire: False }
          ssh_pwauth: True
          ssh_authorized_keys:
            - your-ssh-pubkey-line-goes-here

          package_update: True
          packages:
            - iperf3

          bootcmd:
            - 'tc qdisc add dev ens2 root handle 1: tbf rate 100Mbit burst 256k latency 2ms'
            - 'tc qdisc add dev ens2 parent 1: handle 10: netem delay 2ms loss 0.7%'

          runcmd:
            - echo "[*] Installing custom MOTD..."

            - chmod -x /etc/update-motd.d/*

            - |
              cat <<'EOF' > /etc/update-motd.d/00-custom
              #!/bin/sh
              cat <<EOT
              ===============================================

              iPerf3 Client Node

              🌐 FREE courses, tools, and automation labs
              🔗 Visit: https://www.cisconetsolutions.com

              CISCONET Training Solutions

              ===============================================
              EOT
              EOF

            - chmod +x /etc/update-motd.d/00-custom

            - rm -f /run/motd.dynamic /var/run/motd.dynamic 2>/dev/null || true
      - name: network-config
        content: |-
          #network-config
          version: 2
          ethernets:
            ens2:
              dhcp4: false
              addresses:
                - 192.168.216.10/24
              routes:
                - to: default
                  via: 192.168.216.2
              nameservers:
                addresses:
                  - 8.8.8.8
    cpu_limit: null
    cpus: null
    data_volume: null
    hide_links: false
    id: n1
    image_definition: null
    label: client
    node_definition: ubuntu
    parameters: {}
    ram: null
    tags: []
    x: -520
    y: -40
    interfaces:
      - id: i0
        label: ens2
        mac_address: null
        slot: 0
        type: physical
  - boot_disk_size: null
    configuration:
      - name: user-data
        content: |-
          #cloud-config
          hostname: server
          manage_etc_hosts: True
          system_info:
            default_user:
              name: cisco
          password: cisco
          chpasswd: { expire: False }
          ssh_pwauth: True
          ssh_authorized_keys:
            - your-ssh-pubkey-line-goes-here

          package_update: True
          packages:
            - iperf3

          bootcmd:
            - 'tc qdisc add dev ens2 root handle 1: tbf rate 100Mbit burst 256k latency 2ms'
            - 'tc qdisc add dev ens2 parent 1: handle 10: netem delay 2ms loss 0.7%'
      - name: network-config
        content: |-
          #network-config
          version: 2
          ethernets:
            ens2:
              dhcp4: false
              addresses:
                - 192.168.216.100/24
              routes:
                - to: default
                  via: 192.168.216.2
              nameservers:
                addresses:
                  - 8.8.8.8
    cpu_limit: null
    cpus: null
    data_volume: null
    hide_links: false
    id: n2
    image_definition: null
    label: server
    node_definition: ubuntu
    parameters: {}
    ram: null
    tags: []
    x: 80
    y: -40
    interfaces:
      - id: i0
        label: ens2
        mac_address: null
        slot: 0
        type: physical
  - boot_disk_size: null
    configuration: []
    cpu_limit: null
    cpus: null
    data_volume: null
    hide_links: false
    id: n3
    image_definition: null
    label: net1
    node_definition: unmanaged_switch
    parameters: {}
    ram: null
    tags: []
    x: -320
    y: -40
    interfaces:
      - id: i0
        label: port0
        mac_address: null
        slot: 0
        type: physical
      - id: i1
        label: port1
        mac_address: null
        slot: 1
        type: physical
      - id: i2
        label: port2
        mac_address: null
        slot: 2
        type: physical
      - id: i3
        label: port3
        mac_address: null
        slot: 3
        type: physical
      - id: i4
        label: port4
        mac_address: null
        slot: 4
        type: physical
      - id: i5
        label: port5
        mac_address: null
        slot: 5
        type: physical
      - id: i6
        label: port6
        mac_address: null
        slot: 6
        type: physical
      - id: i7
        label: port7
        mac_address: null
        slot: 7
        type: physical
  - boot_disk_size: null
    configuration: []
    cpu_limit: null
    cpus: null
    data_volume: null
    hide_links: false
    id: n4
    image_definition: null
    label: net2
    node_definition: unmanaged_switch
    parameters: {}
    ram: null
    tags: []
    x: -120
    y: -40
    interfaces:
      - id: i0
        label: port0
        mac_address: null
        slot: 0
        type: physical
      - id: i1
        label: port1
        mac_address: null
        slot: 1
        type: physical
      - id: i2
        label: port2
        mac_address: null
        slot: 2
        type: physical
      - id: i3
        label: port3
        mac_address: null
        slot: 3
        type: physical
      - id: i4
        label: port4
        mac_address: null
        slot: 4
        type: physical
      - id: i5
        label: port5
        mac_address: null
        slot: 5
        type: physical
      - id: i6
        label: port6
        mac_address: null
        slot: 6
        type: physical
      - id: i7
        label: port7
        mac_address: null
        slot: 7
        type: physical
links:
  - id: l0
    n1: n1
    n2: n3
    i1: i0
    i2: i0
    conditioning: {}
    label: client-ens2<->net1-port0
  - id: l1
    n1: n3
    n2: n4
    i1: i1
    i2: i2
    conditioning: {}
    label: net1-port1<->net2-port2
  - id: l2
    n1: n4
    n2: n2
    i1: i0
    i2: i0
    conditioning: {}
    label: net2-port0<->server-ens2
  - id: l3
    n1: n0
    n2: n4
    i1: i0
    i2: i1
    conditioning: {}
    label: Internet-port<->net2-port1
lab:
  description: networking lab
  notes: ''
  title: iPerf3-WAN
  version: 0.3.0
