<div dir="ltr">Hi:<div>I make rpm packages for ovs and ovn with this document:<a href="http://docs.openvswitch.org/en/latest/intro/install/fedora/">http://docs.openvswitch.org/en/latest/intro/install/fedora/</a> . For use the kernel module in ovs tree, i configure with the command: <span style="color:rgb(0,0,0);font-size:14px">./configure --with-linux=/lib/modules/$(uname -r)/build .</span></div><div><font color="#000000"><span style="font-size:14px">Then install the rpm packages. </span></font></div><div><font color="#000000"><span style="font-size:14px">when i finished, i check the openvswitch.ko is like:</span></font></div><div># lsmod |  grep openvswitch<br>openvswitch           291276  0 <br>tunnel6                 3115  1 openvswitch<br>nf_defrag_ipv6         25957  2 nf_conntrack_ipv6,openvswitch<br>nf_nat_ipv6             6459  2 openvswitch,ip6table_nat<br>nf_nat_ipv4             6187  2 openvswitch,iptable_nat<br>nf_nat                 18080  5 xt_nat,openvswitch,nf_nat_ipv6,nf_nat_masquerade_ipv4,nf_nat_ipv4<br>nf_conntrack          102766  10 ip_vs,nf_conntrack_ipv6,openvswitch,nf_conntrack_ipv4,nf_conntrack_netlink,nf_nat_ipv6,nf_nat_masquerade_ipv4,xt_conntrack,nf_nat_ipv4,nf_nat<br>libcrc32c               1388  3 ip_vs,openvswitch,xfs<br>ipv6                  400397  92 ip_vs,nf_conntrack_ipv6,openvswitch,nf_defrag_ipv6,nf_nat_ipv6,bridge<font color="#000000"><span style="font-size:14px"><br></span></font></div><div># modinfo openvswitch<br>filename:       /lib/modules/4.9.18-19080201/extra/openvswitch/openvswitch.ko<br>alias:          net-pf-16-proto-16-family-ovs_ct_limit<br>alias:          net-pf-16-proto-16-family-ovs_meter<br>alias:          net-pf-16-proto-16-family-ovs_packet<br>alias:          net-pf-16-proto-16-family-ovs_flow<br>alias:          net-pf-16-proto-16-family-ovs_vport<br>alias:          net-pf-16-proto-16-family-ovs_datapath<br>version:        2.11.2<br>license:        GPL<br>description:    Open vSwitch switching datapath<br>srcversion:     9DDA327F9DD46B9813628A4<br>depends:        nf_conntrack,tunnel6,ipv6,nf_nat,nf_defrag_ipv6,libcrc32c,nf_nat_ipv6,nf_nat_ipv4<br>vermagic:       4.9.18-19080201 SMP mod_unload modversions <br>parm:           udp_port:Destination UDP port (ushort)<br></div><div># rpm -qf /lib/modules/4.9.18-19080201/extra/openvswitch/openvswitch.ko<br>openvswitch-kmod-2.11.2-1.el7.x86_64<br></div><div><br></div><div><font color="#000000"><span style="font-size:14px">Then i start to build my network structure. I have two node,and network namespace vm1 on node1, network namespace vm2 on node2. vm1&#39;s veth pair veth-vm1 is on node1&#39;s br-int. vm2&#39;s veth pair veth-vm2 is on node2&#39;s br-int. In logical layer, there is one logical switch test-subnet and two logical switch port node1 and node2 on it. like this:</span></font></div><div># ovn-nbctl show<br>switch 70585c0e-3cd9-459e-9448-3c13f3c0bfa3 (test-subnet)<br>    port node2<br>        addresses: [&quot;00:00:00:00:00:02 192.168.100.20&quot;]<br>    port node1<br>        addresses: [&quot;00:00:00:00:00:01 192.168.100.10&quot;]<font color="#000000"><span style="font-size:14px"><br></span></font></div><div>on node1:</div><div># ovs-vsctl show<br>5180f74a-1379-49af-b265-4403bd0d82d8<br>    Bridge br-int<br>        fail_mode: secure<br>        Port &quot;ovn-431b9e-0&quot;<br>            Interface &quot;ovn-431b9e-0&quot;<br>                type: geneve<br>                options: {csum=&quot;true&quot;, key=flow, remote_ip=&quot;10.18.124.2&quot;}<br>        Port br-int<br>            Interface br-int<br>                type: internal<br>        Port &quot;veth-vm1&quot;<br>            Interface &quot;veth-vm1&quot;<br>    ovs_version: &quot;2.11.2&quot;<br></div><div># ip netns exec vm1 ip a<br>1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1<br>    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00<br>    inet <a href="http://127.0.0.1/8">127.0.0.1/8</a> scope host lo<br>       valid_lft forever preferred_lft forever<br>    inet6 ::1/128 scope host <br>       valid_lft forever preferred_lft forever<br>14: ovs-gretap0@NONE: &lt;BROADCAST,MULTICAST&gt; mtu 1462 qdisc noop state DOWN group default qlen 1000<br>    link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff<br>15: erspan0@NONE: &lt;BROADCAST,MULTICAST&gt; mtu 1450 qdisc noop state DOWN group default qlen 1000<br>    link/ether 22:02:1b:08:ec:53 brd ff:ff:ff:ff:ff:ff<br>16: ovs-ip6gre0@NONE: &lt;NOARP&gt; mtu 1448 qdisc noop state DOWN group default qlen 1<br>    link/gre6 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 brd 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00<br>17: ovs-ip6tnl0@NONE: &lt;NOARP&gt; mtu 1452 qdisc noop state DOWN group default qlen 1<br>    link/tunnel6 :: brd ::<br>18: vm1-eth0@if17: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1400 qdisc noqueue state UP group default qlen 1000<br>    link/ether 00:00:00:00:00:01 brd ff:ff:ff:ff:ff:ff link-netnsid 0<br>    inet <a href="http://192.168.100.10/24">192.168.100.10/24</a> scope global vm1-eth0<br>       valid_lft forever preferred_lft forever<br>    inet6 fe80::200:ff:fe00:1/64 scope link <br>       valid_lft forever preferred_lft forever<br></div><div><br></div><div><br></div><div>on node2:# ovs-vsctl show</div>011332d0-78bc-47f7-be3c-fab0beb08e28<br>    Bridge br-int<br>        fail_mode: secure<br>        Port br-int<br>            Interface br-int<br>                type: internal<br>        Port &quot;ovn-c655f8-0&quot;<br>            Interface &quot;ovn-c655f8-0&quot;<br>                type: geneve<br>                options: {csum=&quot;true&quot;, key=flow, remote_ip=&quot;10.18.124.1&quot;}<br>        Port &quot;veth-vm2&quot;<br>            Interface &quot;veth-vm2&quot;<br>    ovs_version: &quot;2.11.2&quot;<div>#ip netns exec vm2 ip a<br>1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1<br>    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00<br>    inet <a href="http://127.0.0.1/8">127.0.0.1/8</a> scope host lo<br>       valid_lft forever preferred_lft forever<br>    inet6 ::1/128 scope host <br>       valid_lft forever preferred_lft forever<br>10: ovs-gretap0@NONE: &lt;BROADCAST,MULTICAST&gt; mtu 1462 qdisc noop state DOWN group default qlen 1000<br>    link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff<br>11: erspan0@NONE: &lt;BROADCAST,MULTICAST&gt; mtu 1450 qdisc noop state DOWN group default qlen 1000<br>    link/ether 4a:1d:ca:65:e3:ca brd ff:ff:ff:ff:ff:ff<br>12: ovs-ip6gre0@NONE: &lt;NOARP&gt; mtu 1448 qdisc noop state DOWN group default qlen 1<br>    link/gre6 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 brd 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00<br>13: ovs-ip6tnl0@NONE: &lt;NOARP&gt; mtu 1452 qdisc noop state DOWN group default qlen 1<br>    link/tunnel6 :: brd ::<br>17: vm2-eth0@if16: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1400 qdisc noqueue state UP group default qlen 1000<br>    link/ether 00:00:00:00:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0<br>    inet <a href="http://192.168.100.20/24">192.168.100.20/24</a> scope global vm2-eth0<br>       valid_lft forever preferred_lft forever<br>    inet6 fe80::200:ff:fe00:2/64 scope link <br>       valid_lft forever preferred_lft forever</div><div><br></div><div>then i start to use iperf to check the network performence, oh, by the way, i use geneve protocol between the two nodes, ovn-sbctl show is :</div><div># ovn-sbctl show<br>Chassis &quot;c655f877-b7ed-4bb5-a047-23521426d541&quot;<br>    hostname: &quot;<a href="http://node1.com">node1.com</a>&quot;<br>    Encap geneve<br>        ip: &quot;10.18.124.1&quot;<br>        options: {csum=&quot;true&quot;}<br>    Port_Binding &quot;node1&quot;<br>Chassis &quot;431b9efb-b464-42a1-a6dd-7fc6e0176137&quot;<br>    hostname: &quot;<a href="http://node2.com">node2.com</a>&quot;<br>    Encap geneve<br>        ip: &quot;10.18.124.2&quot;<br>        options: {csum=&quot;true&quot;}<br>    Port_Binding &quot;node2&quot;<br><div><font color="#000000"><span style="font-size:14px"><br></span></font></div><div><font color="#000000"><span style="font-size:14px">on node1, in network namespace vm1 i start the iperf3 as server:</span></font></div><div><font color="#000000"><span style="font-size:14px">#ip netns exec vm1 iperf3 -s</span></font></div><div><font color="#000000"><span style="font-size:14px">on node2, in network namespace vm2 i start the iper3 as client:</span></font></div><div># ip netns exec vm2 iperf3 -c 192.168.100.10<br>Connecting to host 192.168.100.10, port 5201<br>[  4] local 192.168.100.20 port 40708 connected to 192.168.100.10 port 5201<br>[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd<br>[  4]   0.00-1.00   sec   431 MBytes  3.61 Gbits/sec   34    253 KBytes       <br>[  4]   1.00-2.00   sec   426 MBytes  3.58 Gbits/sec    0    253 KBytes       <br>[  4]   2.00-3.00   sec   426 MBytes  3.57 Gbits/sec    0    253 KBytes       <br>[  4]   3.00-4.00   sec   401 MBytes  3.37 Gbits/sec    0    255 KBytes       <br>[  4]   4.00-5.00   sec   429 MBytes  3.60 Gbits/sec    0    255 KBytes       <br>[  4]   5.00-6.00   sec   413 MBytes  3.46 Gbits/sec    0    253 KBytes       <br>[  4]   6.00-7.00   sec   409 MBytes  3.43 Gbits/sec    0    250 KBytes       <br>[  4]   7.00-8.00   sec   427 MBytes  3.58 Gbits/sec    0    253 KBytes       <br>[  4]   8.00-9.00   sec   417 MBytes  3.49 Gbits/sec    0    250 KBytes       <br>[  4]   9.00-10.00  sec   385 MBytes  3.23 Gbits/sec    0   5.27 KBytes       <br>- - - - - - - - - - - - - - - - - - - - - - - - -<br>[ ID] Interval           Transfer     Bandwidth       Retr<br>[  4]   0.00-10.00  sec  4.07 GBytes  3.49 Gbits/sec   34             sender<br>[  4]   0.00-10.00  sec  4.07 GBytes  3.49 Gbits/sec                  receiver<br></div><div><br></div><div>as you see, the bw is only 3.xxGbits/sec, but my physics eth1&#39;s bw 10000M:</div><div># ethtool eth1<br>Settings for eth1:<br>        Supported ports: [ FIBRE ]<br>        Supported link modes:   10000baseT/Full <br>        Supported pause frame use: Symmetric<br>        Supports auto-negotiation: No<br>        Supported FEC modes: Not reported<br>        Advertised link modes:  10000baseT/Full <br>        Advertised pause frame use: Symmetric<br>        Advertised auto-negotiation: No<br>        Advertised FEC modes: Not reported<br>        Speed: 10000Mb/s<br>        Duplex: Full<br>        Port: Other<br>        PHYAD: 0<br>        Transceiver: external<br>        Auto-negotiation: off<br>        Supports Wake-on: d<br>        Wake-on: d<br>        Current message level: 0x00000007 (7)<br>                               drv probe link<br>        Link detected: yes<br></div><div><br></div><div>when i uninstall the openvswitch-kmod package and use the openvswitch.ko in the upstream linux kernel, like this:</div><div># lsmod | grep openvswitch<br>openvswitch            95805  0 <br>nf_defrag_ipv6         25957  2 nf_conntrack_ipv6,openvswitch<br>nf_nat_ipv6             6459  2 openvswitch,ip6table_nat<br>nf_nat_ipv4             6187  2 openvswitch,iptable_nat<br>nf_nat                 18080  5 xt_nat,openvswitch,nf_nat_ipv6,nf_nat_masquerade_ipv4,nf_nat_ipv4<br>nf_conntrack          102766  10 ip_vs,nf_conntrack_ipv6,openvswitch,nf_conntrack_ipv4,nf_conntrack_netlink,nf_nat_ipv6,nf_nat_masquerade_ipv4,xt_conntrack,nf_nat_ipv4,nf_nat<br>libcrc32c               1388  3 ip_vs,openvswitch,xfs<br></div><div># modinfo openvswitch<br>filename:       /lib/modules/4.9.18-19080201/kernel/net/openvswitch/openvswitch.ko<br>alias:          net-pf-16-proto-16-family-ovs_packet<br>alias:          net-pf-16-proto-16-family-ovs_flow<br>alias:          net-pf-16-proto-16-family-ovs_vport<br>alias:          net-pf-16-proto-16-family-ovs_datapath<br>license:        GPL<br>description:    Open vSwitch switching datapath<br>srcversion:     915B872C96FB1D38D107742<br>depends:        nf_conntrack,nf_nat,libcrc32c,nf_nat_ipv6,nf_nat_ipv4,nf_defrag_ipv6<br>intree:         Y<br>vermagic:       4.9.18-19080201 SMP mod_unload modversions <br></div><div><br></div><div>and do the same test in above, and i get the follow result:</div><div># ip netns exec vm2 iperf3 -c 192.168.100.10<br>Connecting to host 192.168.100.10, port 5201<br>[  4] local 192.168.100.20 port 40652 connected to 192.168.100.10 port 5201<br>[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd<br>[  4]   0.00-1.00   sec  1000 MBytes  8.39 Gbits/sec    4    290 KBytes       <br>[  4]   1.00-2.00   sec   994 MBytes  8.34 Gbits/sec    0    292 KBytes       <br>[  4]   2.00-3.00   sec  1002 MBytes  8.41 Gbits/sec    0    287 KBytes       <br>   4]   3.00-4.00   sec   994 MBytes  8.34 Gbits/sec    0    292 KBytes       <br>▽  4]   4.00-5.00   sec   992 MBytes  8.32 Gbits/sec    0    298 KBytes       <br>[  4]   5.00-6.00   sec   994 MBytes  8.34 Gbits/sec    0    305 KBytes       <br>[  4]   6.00-7.00   sec   989 MBytes  8.29 Gbits/sec    0    313 KBytes       <br>[  4]   7.00-8.00   sec   992 MBytes  8.32 Gbits/sec    0    290 KBytes       <br>[  4]   8.00-9.00   sec   996 MBytes  8.36 Gbits/sec    0    303 KBytes       <br>[  4]   9.00-10.00  sec   955 MBytes  8.01 Gbits/sec    0   5.27 KBytes       <br>- - - - - - - - - - - - - - - - - - - - - - - - -<br>[ ID] Interval           Transfer     Bandwidth       Retr<br>[  4]   0.00-10.00  sec  9.67 GBytes  8.31 Gbits/sec    4             sender<br>[  4]   0.00-10.00  sec  9.67 GBytes  8.31 Gbits/sec                  receiver<br></div><div><br></div><div>so, i cann&#39;t understand why the performence is so poor when i use the kernel module build from the ovs tree.</div><div><br></div><div>anyone can give me some advice where is wrong?</div><div><br></div><div>thx! </div><div><br></div></div></div>