[ovs-dev] ovn-nbctl and patch ports for logical routers

Lance Richardson lrichard at redhat.com
Fri May 12 13:47:46 UTC 2017


With branch-2.6, we've noticed a difference in behavior when configuring
logical switch ports via "ovn-nbctl lsp-set-*" vs. using "ovn-nbctl set
Logical_Switch_Port". The difference seems to be a matter of setting
individual columns for a logical switch port in multiple transactions
versus setting all of them in a single transaction.

For example (note "<error>" string in patch port names):

----
ovn-nbctl ls-add s0
ovn-nbctl ls-add s1
ovn-nbctl lr-add r0

ovn-nbctl lrp-add r0 r0_s0 00:de:ad:ff:00:01 192.168.1.1/24
ovn-nbctl lrp-add r0 r0_s1 00:de:ad:ff:00:02 172.16.101.10/24

ovn-nbctl lsp-add s1 s1_r0
ovn-nbctl lsp-set-type s1_r0 router
ovn-nbctl lsp-set-addresses s1_r0 00:de:ad:ff:00:02
ovn-nbctl lsp-set-options s1_r0 router-port r0_s1


ovn-nbctl lsp-add s0 s0_r0
ovn-nbctl lsp-set-type s0_r0 router
ovn-nbctl lsp-set-addresses s0_r0 00:de:ad:ff:00:01
ovn-nbctl lsp-set-options s0_r0 router-port=r0_s0

$ ovs-vsctl show
74c40ced-675b-49df-a39c-c308681c54f4
    Bridge br-int
        fail_mode: secure
        Port "patch-r0_s1-to-<error>"
            Interface "patch-r0_s1-to-<error>"
                type: patch
                options: {peer="patch-<error>-to-r0_s1"}
        Port "patch-s0_r0-to-r0_s0"
            Interface "patch-s0_r0-to-r0_s0"
                type: patch
                options: {peer="patch-r0_s0-to-s0_r0"}
        Port "patch-r0_s0-to-s0_r0"
            Interface "patch-r0_s0-to-s0_r0"
                type: patch
                options: {peer="patch-s0_r0-to-r0_s0"}
        Port "patch-s1_r0-to-<error>"
            Interface "patch-s1_r0-to-<error>"
                type: patch
                options: {peer="patch-<error>-to-s1_r0"}
        Port br-int
            Interface br-int
                type: internal
---

Equivalent (in theory) to the above, but setting multiple columns
in a single transaction:

----
ovn-nbctl ls-add s0
ovn-nbctl ls-add s1
ovn-nbctl lr-add r0

ovn-nbctl lrp-add r0 r0_s0 00:de:ad:ff:00:01 192.168.1.1/24
ovn-nbctl lrp-add r0 r0_s1 00:de:ad:ff:00:02 172.16.101.10/24

ovn-nbctl lsp-add s1 s1_r0 -- \
    set Logical_Switch_Port s1_r0 type=router \
    options:router-port=r0_s1 \
    addresses='"00:de:ad:ff:00:02"'

ovn-nbctl lsp-add s0 s0_r0 -- \
    set Logical_Switch_Port s0_r0 type=router \
    options:router-port=r0_s0 \
    addresses='"00:de:ad:ff:00:01"'

$ ovs-vsctl show
613524c4-77bb-4496-b1a4-a64129d8e6d8
    Bridge br-int
        fail_mode: secure
        Port "patch-s1_r0-to-r0_s1"
            Interface "patch-s1_r0-to-r0_s1"
                type: patch
                options: {peer="patch-r0_s1-to-s1_r0"}
        Port "patch-r0_s1-to-s1_r0"
            Interface "patch-r0_s1-to-s1_r0"
                type: patch
                options: {peer="patch-s1_r0-to-r0_s1"}
        Port "patch-r0_s0-to-s0_r0"
            Interface "patch-r0_s0-to-s0_r0"
                type: patch
                options: {peer="patch-s0_r0-to-r0_s0"}
        Port "patch-s0_r0-to-r0_s0"
            Interface "patch-s0_r0-to-r0_s0"
                type: patch
                options: {peer="patch-r0_s0-to-s0_r0"}
        Port br-int
            Interface br-int
                type: internal

----

Is this a known issue in 2.6? I noticed that the unit tests involving
router ports use the second method.

Thanks,

   Lance


More information about the dev mailing list