nfv validation and troubleshooting live demo for vran
play

NFV validation and troubleshooting live demo for vRAN (Telco EDGE) - PowerPoint PPT Presentation

NFV validation and troubleshooting live demo for vRAN (Telco EDGE) Franck Baudin, Sr Principal Product Manager - NFV Christophe Fontaine, Senior Software Engineer - NFV Open Infrastructure summit, Denver April 30th Deployment overview 1/3


  1. NFV validation and troubleshooting live demo for vRAN (Telco EDGE) Franck Baudin, Sr Principal Product Manager - NFV Christophe Fontaine, Senior Software Engineer - NFV Open Infrastructure summit, Denver April 30th

  2. Deployment overview 1/3 Dedicated session: “Demonstrating at-scale monitoring using Prometheus” Tomorrow at 4:20 room 505 undercloud provisioning-network compute controller collectd compute controller controller controller compute controller storage compute prometheus controllers Grafana openstack-networks

  3. Deployment overview 2/3 core site edge site undercloud provisioning-network provisioning-edge controller collectd controller controller computes controller compute compute-rt controller prometheus controllers hci Grafana openstack-networks openstack-networks

  4. Deployment overview 3/3 Focus on the Edge core site edge site router & dhcp-relay provisioning-edge compute-rt compute compute compute-rt compute-rt compute vm-k8s vm-k8s openstack-networks

  5. Deploy the modules you need $ ls ./templates/*.yaml Modular & extensible platform global-config.yaml collectd.yaml - SDN ceph.yaml - Storage ceph-collectd.yaml dpdk-config.yaml - Monitoring sriov-config.yaml hci-dpdk-config.yaml compute-rt-edge-config.yaml Feature enablement: ssl-certificates.yaml - 1 TripleO environment file - 1 parameter file resource_registry: OS::TripleO::Services::Collectd: $ openstack overcloud deploy \ ../docker/services/collectd.yaml -e $TRIPLEO/environments/collectd-environment.yaml -e ./templates/collectd.yaml \ ... parameter_defaults: CollectdServer: 172.16.0.1

  6. NFV (auto) Tuning: Mistral workflow Introspection data + role definition + user intent = generated parameters "cpu": { "count": 48 }, "memory": {"physical_mb": 131072 }, - name: ComputeOvsDpdkRTEdge0 "numa_topology": {"cpus": [ {"cpu": 0, ServicesDefault: "thread_siblings": [ 0, 24], - OS::TripleO::Services::ComputeNeutronOvsDpdk "numa_node": 0 }, … ] } "nics": [{"name": "p3p1", "numa_node": 1 }, ... ] ComputeOvsDpdkRTEdge0Parameters: IsolCpusList: 2-23,26-47 KernelArgs: default_hugepagesz=1GB hugepagesz=1G workflow_parameters: hugepages=120 intel_iommu=on iommu=pt isolcpus=2-23,26-47 tripleo.derive_params.v1.derive_parameters: NovaReservedHostMemory: 8192 num_phy_cores_per_numa_node_for_pmd: 1 NovaVcpuPinSet: 2-6,8-15,17-23,26-30,32-39,41-47 huge_page_allocation_percentage: 95 OvsDpdkCoreList: 0-1,24-25 OvsDpdkSocketMemory: 2048,1024 OvsPmdCoreList: 7,16,31,40

  7. Enabling vRAN usecase Compute RT Kernel & RT KVM Generic NFV characteristics Mix virtio + SRIOV VF ● RHOSP VM Device role tagging ● (overcloud)$ nova boot --nic net-id=$UPLINK_ID,tag=uplink --nic port-id=$RADIO_PORT_ID,tag=radio FGPA VF10 virtio (vm)$ jq '.devices[]|"\(.address) \(.mac) \(.tags[0])" meta_data.json "0000:00:04.0 fa:16:3e:fa:89:0f uplink" "0000:00:06.0 fa:16:3e:6f:dd:e8 radio" OVS-DPDK vRAN Specific SR-IOV FPGA (PCI passthrough) ● Real time ●

  8. Let’s have a look at the deployment

  9. Post-Deployment validation

  10. How to validate the NFVI? compute node VM: VNFc virtio VF10 internet OVS-DPDK SR-IOV radio uplink

  11. Simpler catch-all test compute node VM: testpmd This is not a benchmark! Make sure that the VM is not the bottleneck virtio VF10 => Use DPDK testpmd to forward packets OVS-DPDK Check expected Mpps and Latency SR-IOV => zero packet drop expected Single flow, 64 Bytes frames

  12. Issue detection Misconfiguration visible effect Performance lower than expected, packet drop ● Extra Packets ● Real example of misconfigurations caught Isolation/partitioning (vCPU or OVS-DPDK PMD preemption) ● => boot parameters, IRQ pinning, emulator thread pinning, ... ToR switch misconfiguration (missing packets or extra packets) ● BIOS misconfiguration (NUMA mode, Performance Policy, ...) ● HW: PCIe x4 slot instead of x16, missing RAM bank (mem channel) ● ... ●

  13. Troubleshooting

  14. Packet journey: radio -> uplink host CPU37 host CPU1 host CPU2 host CPU3 VM: testpmd OVS-DPDK OVS-DPDK ACTIVE LOOP virtio VF10 while (1) { RX-packet() SR-IOV forward-packe t () } uplink radio

  15. Packet journey: uplink -> radio host CPU37 host CPU1 host CPU2 host CPU3 VM: testpmd OVS-DPDK OVS-DPDK ACTIVE LOOP virtio VF10 while (1) { RX-packet() SR-IOV forward-packe t () } uplink radio

  16. Packet journey: radio <-> uplink host CPU37 host CPU1 host CPU2 host CPU3 VM: testpmd OVS-DPDK OVS-DPDK ACTIVE LOOP virtio VF10 while (1) { RX-packet() SR-IOV forward-packe t () } uplink radio

  17. No packets left behind! Packet are never lost, packets are dropped We always have a drop counter ● Except in case of a drop counter bug (SW, HW) ● Packets are dropped when a queue is full A queue is full because it is not drained fast enough ● The bottleneck is the entity supposed to drain the queue ●

  18. What if the VM is the bottleneck? host CPU37 host CPU1 host CPU2 host CPU3 VM: testpmd bottleneck OVS-DPDK OVS-DPDK drop virtio VF10 SR-IOV uplink radio

  19. Demo

  20. Final thoughts

  21. Same packet flow with or w/o Kubernetes! RHOSP VM default CNI Kubernetes pod Multus CNI virtio SR-IOV CNI VF10 internet OVS-DPDK OpenStack compute node SR-IOV radio uplink

  22. THANK YOU

Recommend


More recommend