ovn-org / ovn

Open Virtual Network
Apache License 2.0
483 stars 243 forks source link

What OVN version does each Open vSwitch release work with? #71

Open kebyn opened 3 years ago

kebyn commented 3 years ago

My test results are as follows.

Open vSwitch OVN Work
2.13.1 20.06.2
2.13.1 20.09.0 ×
2.13.1 20.12.0 ×
numansiddique commented 3 years ago

Please note OVN 20.12.0 require OVS master to build.

Once OVS 2.15 is released we can tag OVN to OVS 2.15. Until then OVS master is required to build.

Regarding runtime compatibility, can you the report the failures ?

OVN 20.09.0 and 20.12.0 should work fine with OVS 2.13.1.

Thanks

kebyn commented 3 years ago

@numansiddique I hope OVN can have a clear compatibility list like Open vSwitch, thank you. My Open vSwitch turns on DPDK, And my guess is that the DPDK template in OVN is not compatible. The error log is as follows:

gcc -DHAVE_CONFIG_H -I.   -I ./include  -I ./include -I ./ovn -I ./include -I /root/ovn-20.09.0/../ovs-2.13.1/include -I /root/ovn-20.09.0/../ovs-2.13.1/include -I /root/ovn-20.09.0/../ovs-2.13.1/lib -I /root/ovn-20.09.0/../ovs-2.13.1/lib -I /root/ovn-20.09.0/../ovs-2.13.1 -I /root/ovn-20.09.0/../ovs-2.13.1 -I ./lib -I ./lib    -Wstrict-prototypes -Wall -Wextra -Wno-sign-compare -Wpointer-arith -Wformat -Wformat-security -Wswitch-enum -Wunused-parameter -Wbad-function-cast -Wcast-align -Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes -Wmissing-field-initializers -fno-strict-aliasing -Wswitch-bool -Wlogical-not-parentheses -Wsizeof-array-argument -Wbool-compare -Wshift-negative-value -Wduplicated-cond -Wshadow -Wmultistatement-macros -Wcast-align=strict   -g -O2 -MT controller/ovn-controller.o -MD -MP -MF $depbase.Tpo -c -o controller/ovn-controller.o controller/ovn-controller.c &&\
mv -f $depbase.Tpo $depbase.Po
controller/ovn-controller.c: In function ‘update_sb_db’:
controller/ovn-controller.c:524:9: warning: implicit declaration of function ‘ovsdb_idl_reset_min_index’; did you mean ‘ovsdb_idl_set_condition’? [-Wimplicit-function-declaration]
         ovsdb_idl_reset_min_index(ovnsb_idl);
         ^~~~~~~~~~~~~~~~~~~~~~~~~
         ovsdb_idl_set_condition
depbase=`echo controller/physical.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I.   -I ./include  -I ./include -I ./ovn -I ./include -I /root/ovn-20.09.0/../ovs-2.13.1/include -I /root/ovn-20.09.0/../ovs-2.13.1/include -I /root/ovn-20.09.0/../ovs-2.13.1/lib -I /root/ovn-20.09.0/../ovs-2.13.1/lib -I /root/ovn-20.09.0/../ovs-2.13.1 -I /root/ovn-20.09.0/../ovs-2.13.1 -I ./lib -I ./lib    -Wstrict-prototypes -Wall -Wextra -Wno-sign-compare -Wpointer-arith -Wformat -Wformat-security -Wswitch-enum -Wunused-parameter -Wbad-function-cast -Wcast-align -Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes -Wmissing-field-initializers -fno-strict-aliasing -Wswitch-bool -Wlogical-not-parentheses -Wsizeof-array-argument -Wbool-compare -Wshift-negative-value -Wduplicated-cond -Wshadow -Wmultistatement-macros -Wcast-align=strict   -g -O2 -MT controller/physical.o -MD -MP -MF $depbase.Tpo -c -o controller/physical.o controller/physical.c &&\
mv -f $depbase.Tpo $depbase.Po
/bin/sh ./libtool  --tag=CC   --mode=link gcc -Wstrict-prototypes -Wall -Wextra -Wno-sign-compare -Wpointer-arith -Wformat -Wformat-security -Wswitch-enum -Wunused-parameter -Wbad-function-cast -Wcast-align -Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes -Wmissing-field-initializers -fno-strict-aliasing -Wswitch-bool -Wlogical-not-parentheses -Wsizeof-array-argument -Wbool-compare -Wshift-negative-value -Wduplicated-cond -Wshadow -Wmultistatement-macros -Wcast-align=strict   -g -O2     -o controller/ovn-controller controller/bfd.o controller/binding.o controller/chassis.o controller/encaps.o controller/ha-chassis.o controller/ip-mcast.o controller/lflow.o controller/lport.o controller/ofctrl.o controller/pinctrl.o controller/patch.o controller/ovn-controller.o controller/physical.o lib/libovn.la /root/ovn-20.09.0/../ovs-2.13.1/lib/libopenvswitch.la -lpthread -lrt -lm
libtool: link: gcc -Wstrict-prototypes -Wall -Wextra -Wno-sign-compare -Wpointer-arith -Wformat -Wformat-security -Wswitch-enum -Wunused-parameter -Wbad-function-cast -Wcast-align -Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes -Wmissing-field-initializers -fno-strict-aliasing -Wswitch-bool -Wlogical-not-parentheses -Wsizeof-array-argument -Wbool-compare -Wshift-negative-value -Wduplicated-cond -Wshadow -Wmultistatement-macros -Wcast-align=strict -g -O2 -o controller/ovn-controller controller/bfd.o controller/binding.o controller/chassis.o controller/encaps.o controller/ha-chassis.o controller/ip-mcast.o controller/lflow.o controller/lport.o controller/ofctrl.o controller/pinctrl.o controller/patch.o controller/ovn-controller.o controller/physical.o  lib/.libs/libovn.a /root/ovn-20.09.0/../ovs-2.13.1/lib/.libs/libopenvswitch.a -L/usr/local/dpdk/lib64 -lrte_common_cpt -lrte_common_dpaax -lrte_common_octeontx -lrte_common_octeontx2 -lrte_bus_dpaa -lrte_bus_fslmc -lrte_bus_ifpga -lrte_bus_pci -lrte_bus_vdev -lrte_bus_vmbus -lrte_mempool_bucket -lrte_mempool_dpaa -lrte_mempool_dpaa2 -lrte_mempool_octeontx -lrte_mempool_octeontx2 -lrte_mempool_ring -lrte_mempool_stack -lrte_pmd_af_packet -lrte_pmd_ark -lrte_pmd_atlantic -lrte_pmd_avp -lrte_pmd_axgbe -lrte_pmd_bond -lrte_pmd_bnxt -lrte_pmd_cxgbe -lrte_pmd_dpaa -lrte_pmd_dpaa2 -lrte_pmd_e1000 -lrte_pmd_ena -lrte_pmd_enetc -lrte_pmd_enic -lrte_pmd_failsafe -lrte_pmd_fm10k -lrte_pmd_i40e -lrte_pmd_hinic -lrte_pmd_hns3 -lrte_pmd_iavf -lrte_pmd_ice -lrte_pmd_ifc -lrte_pmd_ixgbe -lrte_pmd_kni -lrte_pmd_liquidio -lrte_pmd_memif -lrte_pmd_netvsc -lrte_pmd_nfp -lrte_pmd_null -lrte_pmd_octeontx -lrte_pmd_octeontx2 -lrte_pmd_pfe -lrte_pmd_qede -lrte_pmd_ring -lrte_pmd_sfc -lrte_pmd_softnic -lrte_pmd_tap -lrte_pmd_thunderx -lrte_pmd_vdev_netvsc -lrte_pmd_vhost -lrte_pmd_virtio -lrte_pmd_vmxnet3 -lrte_rawdev_dpaa2_cmdif -lrte_rawdev_dpaa2_qdma -lrte_rawdev_ioat -lrte_rawdev_ntb -lrte_rawdev_octeontx2_dma -lrte_rawdev_skeleton -lrte_pmd_caam_jr -lrte_pmd_dpaa_sec -lrte_pmd_dpaa2_sec -lrte_pmd_nitrox -lrte_pmd_null_crypto -lrte_pmd_octeontx_crypto -lrte_pmd_octeontx2_crypto -lrte_pmd_crypto_scheduler -lrte_pmd_virtio_crypto -lrte_pmd_octeontx_compress -lrte_pmd_qat -lrte_pmd_dpaa_event -lrte_pmd_dpaa2_event -lrte_pmd_octeontx2_event -lrte_pmd_opdl_event -lrte_pmd_skeleton_event -lrte_pmd_sw_event -lrte_pmd_dsw_event -lrte_pmd_octeontx_event -lrte_pmd_bbdev_null -lrte_pmd_bbdev_turbo_sw -lrte_pmd_bbdev_fpga_lte_fec -lrte_bpf -lrte_flow_classify -lrte_pipeline -lrte_table -lrte_port -lrte_fib -lrte_ipsec -lrte_vhost -lrte_stack -lrte_security -lrte_sched -lrte_reorder -lrte_rib -lrte_rcu -lrte_rawdev -lrte_pdump -lrte_power -lrte_member -lrte_lpm -lrte_latencystats -lrte_kni -lrte_jobstats -lrte_ip_frag -lrte_gso -lrte_gro -lrte_eventdev -lrte_efd -lrte_distributor -lrte_cryptodev -lrte_compressdev -lrte_cfgfile -lrte_bitratestats -lrte_bbdev -lrte_acl -lrte_timer -lrte_hash -lrte_metrics -lrte_cmdline -lrte_pci -lrte_ethdev -lrte_meter -lrte_net -lrte_mbuf -lrte_mempool -lrte_ring -lrte_eal -lrte_kvargs -ldl -lpthread -lrt -lm -pthread
controller/ovn-controller.o: In function `update_sb_db':
/root/ovn-20.09.0/controller/ovn-controller.c:524: undefined reference to `ovsdb_idl_reset_min_index'
collect2: error: ld returned 1 exit status
make[1]: *** [Makefile:1609: controller/ovn-controller] Error 1
make[1]: Leaving directory '/root/ovn-20.09.0'
make: *** [Makefile:1312: all] Error 2
numansiddique commented 3 years ago

I think if you do make clean or make distclean and compile again (both for ovn and ovs) it should work.

kebyn commented 3 years ago

@numansiddique After trying again, it still has no effect.I remove the --with-dpdk parameter and it works normally

kebyn commented 3 years ago

The DPDK function of Open vSwitch makes OVN compilation fail

ExploreScience commented 1 year ago

If I want to use ovs version 2.16.1, which version of ovn should I use

numansiddique commented 1 year ago

Please see the reply from @igsilya here for a similar query - https://mail.openvswitch.org/pipermail/ovs-discuss/2023-July/052577.html

Qouting it here:


Hi, Joe.

The version of OVS to build with and version of OVS to run with are two different things. You should build OVN with the version of OVS provided in a submodule. For v22.03.2 it will be OVS commit 2410b95597fcec5f733caf77febdb46f4ffacd27.

OVN only uses some libraries from OVS sources. You should be able to run OVN built this way with your OVS 2.17.7 without any issues.

One inconvenience though is that, unfortunately, release archives on GitHub do not include submodules (GitHub doesn't support that). So, you'll need to check it out yourself.

Best regards, Ilya Maximets.


You can compile OVN without enablin dpdk config in OVS.

Thanks

ExploreScience commented 1 year ago

Thanks for your reply.

ExploreScience commented 1 year ago

@numansiddique I have installed ovs from package. I use the submodule ovs of ovn to build ovn. But when I install ovn, and start_nothd, The following question arises: image It seems ovn does not have access to the ovs libraries.

numansiddique commented 1 year ago

@ExploreScience You've 3 options

  1. When OVS or OVN are installed from packages, they use the paths - /usr/share/, /var/log etc but when OVN is configured without specifying any prefix , it uses the paths - /usr/local/share, /usr/loca/var etc. So to fix this you can create a symbolic links like - ln -s /var /usr/local/var (This approach is hacky but works for simple testing)
  2. Configure OVN with "--prefix=/usr" . See this as an example - https://github.com/ovn-org/ovn-fake-multinode/blob/main/install_ovn.sh#L52
  3. Build OVN rpm packages . For fedora/centos you can do
    • cd ovs
    • make dist
    • cd ..
    • make rpm-fedora Not sure how to generate packages for debian.
ExploreScience commented 1 year ago

Thank you very much for your answer, which is very helpful to me. @numansiddique