I'm back with a little progress.
Anyway, I found that vpp interface has MTU size as 9220B.
And I just tried to change it to 1500B as below.
# vppctl set interface mtu 1500 VirtualFunctionEthernet0/8/0

It works!
My VM with VPP/DPDK ping/pong to outside server via VF of Intel 82599 10G
NIC.
But, I could not understand why MTU configuration affect to simple ping
test.

In addition, I need to measure this VM's performance with pktgen-dpdk which
has no MTU option as far as I know.
When I shoot packets from pktgen, VM does not receive packets nor ping does
not work again.
(i.e. pktgen and VM are directly connected with 10G link.)

I appreciate any comment.


On Tue, Apr 10, 2018 at 9:16 PM, Moon-Sang Lee <sang0...@gmail.com> wrote:

>
> 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*
> 
>
>


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

Reply via email to