Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
kebyn opened this issue Jan 8, 2021 · 11 comments
Open

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

kebyn opened this issue Jan 8, 2021 · 11 comments

Comments

@kebyn
Copy link

kebyn commented Jan 8, 2021

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
Copy link
Collaborator

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
Copy link
Author

kebyn commented Jan 8, 2021

@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
Copy link
Collaborator

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

@kebyn
Copy link
Author

kebyn commented Jan 9, 2021

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

@kebyn
Copy link
Author

kebyn commented Jan 9, 2021

The DPDK function of Open vSwitch makes OVN compilation fail

@ExploreScience
Copy link

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

@numansiddique
Copy link
Collaborator

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
Copy link

Thanks for your reply.

@ExploreScience
Copy link

@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
Copy link
Collaborator

@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
Copy link

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants