On Tue, Apr 10, 2018 at 8:24 PM, Marco Varlese <mvarl...@suse.de> wrote:

> On Tue, 2018-04-10 at 19:33 +0900, Moon-Sang Lee wrote:
>
>
> Thanks for your interest, Marco.
>
> I follows the intel guideline, "As an SR-IOV VF network adapter using a
> KVM virtual network pool of adapters"
> from https://software.intel.com/en-us/articles/configure-
> sr-iov-network-virtual-functions-in-linux-kvm.
>
> In summary, I modprobe ixgbe on host side and creates one VF per PF.
> When I start VM using virsh, libvirt binds the VF to vfio-pci in host side.
> After VM finishes booting, I login to VM and bind the VF to igb_uio using
> dpdk-dev command.
> (i.e. only igb_uio works and other drivers like uio_pci_generic and
> vfio-pci fail to bind VF in VM side.)
>
> Yes, that's expected.
> If you want to use vfio-pci in the VM you'll need to enable the "no-iommu":
> # echo 1 > /sys/module/vfio/parameters/enable_unsafe_noiommu_mode
>

well, I cannot find such file in host nor VM.


>
>
> I don't edit startup.conf in VM, but I just bind the VF to dpdk-compatible
> driver, igb_uio, inside VM.
> With above configuration, I can bind the VF to guest kernel driver,
> ixgbevf, and also to DPDK PMD, igb_uio.
> As a result,  I can run VPP without DPDK using ixgbevf, and also DPDK
> applications using igb_uio.
> (i.e. I successfully runs l2fwd/l3fwd sample applications inside VM, so I
> guess VF biding has no problem.)
>
> However, I cannot run VPP with DPDK and I suspect hugepage is related to
> this problem as shown in my VPP log.
>
> So, what does the command "cat /proc/meminfo |grep HugePages_" shows?
>


well, 'cat /proc/meminfo |grep HugePages' seems ok even though I cannot
find any rtemap files neither in /dev/hugepages nor /run/vpp/hugepages.
When I run dpdk application, I can see rtemap files in /dev/hugepages.

HugePages_Total:    1024
HugePages_Free:      972
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB

FYI.
Apr 10 05:12:35 ubuntu1604 /usr/bin/vpp[1720]: dpdk_config:1271: EAL init
args: -c 1 -n 4 --huge-dir /run/vpp/hugepages --file-prefix vpp -b
0000:00:05.0 -b 0000:00:06.0 -b 0000:00:07.0 --master-lcore 0 --socket-mem
64




>
> Every packet sent from the VM is traversed via VF to the opposite side, a
> pktgen server.
> And pktgen replies to those packets, but VM does not receive those replies.
> (i.e. I ping to pktgen port from VM, where host server port is directly
> linked to pktgen server port.)
>
> Here is my vpp-config script.
> I test ping after running this script.
>
> #!/bin/sh
>
> vppctl enable tap-inject
> vppctl create loopback interface
> vppctl set interface state loop0 up
>
> vppctl show interface
> vppctl show hardware
> vppctl set interface state VirtualFunctionEthernet0/6/0 up
> vppctl set interface state VirtualFunctionEthernet0/7/0 up
> vppctl set interface ip address loop0 2.2.2.2/32
> vppctl set interface ip address VirtualFunctionEthernet0/6/0
> 192.168.0.1/24
> vppctl set interface ip address VirtualFunctionEthernet0/7/0
> 192.168.1.1/24
> vppctl show interface address
> vppctl show tap-inject
>
> ip addr add 2.2.2.2/32 dev vpp0
> ip addr add 192.168.0.1/24 dev vpp1
> ip addr add 192.168.1.1/24 dev vpp2
> ip link set dev vpp0 up
> ip link set dev vpp1 up
> ip link set dev vpp2 up
>
>
> On Tue, Apr 10, 2018 at 4:51 PM, Marco Varlese <mvarl...@suse.de> wrote:
>
> On Mon, 2018-04-09 at 22:53 +0900, Moon-Sang Lee wrote:
>
>
> I've configured a VM with KVM, and the VM is intended to run VPP with DPDK.
> In particular, the VM is connected to one of VFs. (i.e. SR-IOV)
> I can run DPDK sample applications,including l2fwd and l3fwd, in the VM,
> therefore I guess VM is successfully connected to the outside-world(pktgen
> server) via VFs.
>
> However, I cannot receive a packet when I run VPP/DPDK.
> I can see TX packets from the VM on the opposite side, pktgen server,
> but the VM does not receive any reply from  pktgen server which reports
> RX/TX packet count.
> (i.e. arping/ping from VM arrives in pktgen, but the reply from pktgen is
> not received in VM.)
> I found some strange log messages regarding vpp launching as below.
>
> I appreciate for any comment.
> Thanks in advance...
>
> - Host NIC: Intel 82599 10G NIC (i.e. VF binding with vfio-pci)
> - VM: 1 socket 4 vCPU
> - VPP: 18.04
> - DPDK binding: igb_uio
>
> It isn't clear to me who manages the PF in the host and how you created
> the VFs (kernel module or via DPDK binding)?
>
> Second, what do you mean by DPDK binding in the last line above?
> Is that what you have configured in startup.conf in the VM for VPP to be
> used?
>
> If so, what is the different between VF binding and DPDK binding in your
> short setup summary above? I'm confused by reading vfio-pci in one place
> and then igb_uio later on.
>
> Can you provide us with the startup.conf you have in the VM?
>
> Finally, if you are interested in using vfio-pci then you'll need to have
> the no-IOMMU enabled otherwise you can't use VFIO in the VM...
> probably, the easiest would be to use igb_uio everywhere...
>
>
> root@xenial-vpp-frr:~# vpp -c /etc/vpp/startup.conf
> vlib_plugin_early_init:359: plugin path /usr/lib/vpp_plugins
> load_one_plugin:187: Loaded plugin: acl_plugin.so (Access Control Lists)
> load_one_plugin:187: Loaded plugin: avf_plugin.so (Intel Adaptive Virtual
> Function (AVF) Device Plugin)
> load_one_plugin:189: Loaded plugin: cdp_plugin.so
> load_one_plugin:187: Loaded plugin: dpdk_plugin.so (Data Plane Development
> Kit (DPDK))
> load_one_plugin:187: Loaded plugin: flowprobe_plugin.so (Flow per Packet)
> load_one_plugin:187: Loaded plugin: gbp_plugin.so (Group Based Policy)
> load_one_plugin:187: Loaded plugin: gtpu_plugin.so (GTPv1-U)
> load_one_plugin:187: Loaded plugin: igmp_plugin.so (IGMP messaging)
> load_one_plugin:187: Loaded plugin: ila_plugin.so (Identifier-locator
> addressing for IPv6)
> load_one_plugin:187: Loaded plugin: ioam_plugin.so (Inbound OAM)
> load_one_plugin:117: Plugin disabled (default): ixge_plugin.so
> load_one_plugin:187: Loaded plugin: kubeproxy_plugin.so (kube-proxy data
> plane)
> load_one_plugin:187: Loaded plugin: l2e_plugin.so (L2 Emulation)
> load_one_plugin:187: Loaded plugin: lacp_plugin.so (Link Aggregation
> Control Protocol)
> load_one_plugin:187: Loaded plugin: lb_plugin.so (Load Balancer)
> load_one_plugin:187: Loaded plugin: memif_plugin.so (Packet Memory
> Interface (experimetal))
> load_one_plugin:187: Loaded plugin: nat_plugin.so (Network Address
> Translation)
> load_one_plugin:187: Loaded plugin: pppoe_plugin.so (PPPoE)
> load_one_plugin:187: Loaded plugin: router.so (router)
> load_one_plugin:187: Loaded plugin: srv6ad_plugin.so (Dynamic SRv6 proxy)
> load_one_plugin:187: Loaded plugin: srv6am_plugin.so (Masquerading SRv6
> proxy)
> load_one_plugin:187: Loaded plugin: srv6as_plugin.so (Static SRv6 proxy)
> load_one_plugin:187: Loaded plugin: stn_plugin.so (VPP Steals the NIC for
> Container integration)
> load_one_plugin:187: Loaded plugin: tlsmbedtls_plugin.so (mbedtls based
> TLS Engine)
> load_one_plugin:187: Loaded plugin: tlsopenssl_plugin.so (openssl based
> TLS Engine)
> load_one_plugin:67: Loaded plugin: /usr/lib/vpp_api_test_plugins/
> flowprobe_test_plugin.so
> load_one_plugin:67: Loaded plugin: /usr/lib/vpp_api_test_plugins/
> dpdk_test_plugin.so
> load_one_plugin:67: Loaded plugin: /usr/lib/vpp_api_test_plugins/
> ioam_export_test_plugin.so
> load_one_plugin:67: Loaded plugin: /usr/lib/vpp_api_test_plugins/
> cdp_test_plugin.so
> load_one_plugin:67: Loaded plugin: /usr/lib/vpp_api_test_plugins/
> kubeproxy_test_plugin.so
> load_one_plugin:67: Loaded plugin: /usr/lib/vpp_api_test_plugins/
> ioam_vxlan_gpe_test_plugin.so
> load_one_plugin:67: Loaded plugin: /usr/lib/vpp_api_test_plugins/
> stn_test_plugin.so
> load_one_plugin:67: Loaded plugin: /usr/lib/vpp_api_test_plugins/
> acl_test_plugin.so
> load_one_plugin:67: Loaded plugin: /usr/lib/vpp_api_test_plugins/
> lb_test_plugin.so
> load_one_plugin:67: Loaded plugin: /usr/lib/vpp_api_test_plugins/
> lacp_test_plugin.so
> load_one_plugin:67: Loaded plugin: /usr/lib/vpp_api_test_plugins/
> ioam_pot_test_plugin.so
> load_one_plugin:67: Loaded plugin: /usr/lib/vpp_api_test_plugins/
> pppoe_test_plugin.so
> load_one_plugin:67: Loaded plugin: /usr/lib/vpp_api_test_plugins/
> udp_ping_test_plugin.so
> load_one_plugin:67: Loaded plugin: /usr/lib/vpp_api_test_plugins/
> vxlan_gpe_ioam_export_test_plugin.so
> load_one_plugin:67: Loaded plugin: /usr/lib/vpp_api_test_plugins/
> memif_test_plugin.so
> load_one_plugin:67: Loaded plugin: /usr/lib/vpp_api_test_plugins/
> gtpu_test_plugin.so
> load_one_plugin:67: Loaded plugin: /usr/lib/vpp_api_test_plugins/
> ioam_trace_test_plugin.so
> load_one_plugin:67: Loaded plugin: /usr/lib/vpp_api_test_plugins/
> nat_test_plugin.so
> dpdk_config:1271: EAL init args: -c 1 -n 4 --huge-dir /run/vpp/hugepages
> --file-prefix vpp -w 0000:00:06.0 -w 0000:00:07.0 --master-lcore 0
> --socket-mem 512
> EAL: No free hugepages reported in hugepages-1048576kB
> EAL: VFIO support initialized
> EAL: WARNING: cpu flags constant_tsc=yes nonstop_tsc=no -> using
> unreliable clock cycles !
> EAL:   Invalid NUMA socket, default to 0
> EAL:   Invalid NUMA socket, default to 0
> DPDK physical memory layout:
> Segment 0: IOVA:0x33400000, len:25165824, virt:0x7ff739c00000,
> socket_id:0, hugepage_sz:2097152, nchannel:0, nrank:0
> Segment 1: IOVA:0x34e00000, len:2097152, virt:0x7ff739800000, socket_id:0,
> hugepage_sz:2097152, nchannel:0, nrank:0
> Segment 2: IOVA:0x87800000, len:509607936, virt:0x7ff707e00000,
> socket_id:0, hugepage_sz:2097152, nchannel:0, nrank:0
> dpdk_pool_create:550: ioctl(VFIO_IOMMU_MAP_DMA) pool
> 'dpdk_mbuf_pool_socket0': Invalid argument (errno 22)
> 0: dpdk_ipsec_process:1012: not enough DPDK crypto resources, default to
> OpenSSL
> 0: dpdk_lib_init:234: DPDK drivers found 2 ports...
>     _______    _        _   _____  ___
>  __/ __/ _ \  (_)__    | | / / _ \/ _ \
>  _/ _// // / / / _ \   | |/ / ___/ ___/
>  /_/ /____(_)_/\___/   |___/_/  /_/
>
> DBGvpp#
>
>
>
> --
>
> Marco V
>
> SUSE LINUX GmbH | GF: Felix Imendörffer, Jane Smithard, Graham Norton
> HRB 21284 (AG Nürnberg) Maxfeldstr. 5, D-90409, Nürnberg
> <https://maps.google.com/?q=Maxfeldstr.+5,+D-90409,+N%C3%BCrnberg&entry=gmail&source=g>
>
>
>
>
> --
>
> Marco V
>
> SUSE LINUX GmbH | GF: Felix Imendörffer, Jane Smithard, Graham Norton
> HRB 21284 (AG Nürnberg) Maxfeldstr. 5, D-90409, Nürnberg
> <https://maps.google.com/?q=Maxfeldstr.+5,+D-90409,+N%C3%BCrnberg&entry=gmail&source=g>
>



-- 
Moon-Sang Lee, SW Engineer
Email: sang0...@gmail.com
Wisdom begins in wonder. *Socrates*

Reply via email to