On 12/17/2018 11:50 AM, Siva Teja ARETI wrote:
Thanks Greg for explaining the correct way to do.

Siva Teja.

Glad to help and your case also drove me to finally pin down how the local_ip option can work.  TBH I'd never really taken the time to understand a working setup and I was able to increase my own knowledge here as
well.

So thank you for that!

- Greg


On Fri, Nov 30, 2018 at 12:55 PM Gregory Rose <[email protected] <mailto:[email protected]>> wrote:



    On 11/28/2018 3:15 PM, Siva Teja ARETI wrote:
    Hi Greg,

    Please find the answers inline below.

    On Tue, Nov 27, 2018 at 1:35 PM Gregory Rose
    <[email protected] <mailto:[email protected]>> wrote:

        Siva,

        You have a routing issue.

        See interalia
        https://github.com/OpenNebula/one/issues/2161
        
http://wwwaem.brocade.com/content/html/en/brocade-validated-design/brocade-vcs-fabric-ip-storage-bvd/GUID-CB5BFC4D-B2BE-4E9C-BA91-7E7E9BD35FCC.html
        
http://blog.arunsriraman.com/2017/02/how-to-setting-up-gre-or-vxlan-tunnel.html

        For this to work you must be able to ping from the local IP
        to the remote IP *through* the remote IP address.As we have
        seen that doesn't work.


    Did you mean to be able to ping using remote interface? I am able
    to get this to work when I connect the two bridges using a veth pair.

    [root@vm1 ~]# ping 30.30.0.193 -I eth2
    PING 30.30.0.193 (30.30.0.193) from 20.20.0.183 eth2: 56(84)
    bytes of data.
    64 bytes from 30.30.0.193 <http://30.30.0.193>: icmp_seq=1 ttl=64
    time=0.655 ms
    64 bytes from 30.30.0.193 <http://30.30.0.193>: icmp_seq=2 ttl=64
    time=0.574 ms
    64 bytes from 30.30.0.193 <http://30.30.0.193>: icmp_seq=3 ttl=64
    time=0.600 ms
    64 bytes from 30.30.0.193 <http://30.30.0.193>: icmp_seq=4 ttl=64
    time=0.604 ms
    64 bytes from 30.30.0.193 <http://30.30.0.193>: icmp_seq=5 ttl=64
    time=0.607 ms
    64 bytes from 30.30.0.193 <http://30.30.0.193>: icmp_seq=6 ttl=64
    time=0.620 ms
    64 bytes from 30.30.0.193 <http://30.30.0.193>: icmp_seq=7 ttl=64
    time=0.466 ms
    64 bytes from 30.30.0.193 <http://30.30.0.193>: icmp_seq=8 ttl=64
    time=0.623 ms
    ^C
    --- 30.30.0.193 ping statistics ---
    8 packets transmitted, 8 received, 0% packet loss, time 7000ms
    rtt min/avg/max/mdev = 0.466/0.593/0.655/0.059 ms
    Even with this routing setup, the local_ip option with vxlan
    tunnels does not seem to work and GRE tunnels work.

    So what you did there with the veth pair is not routing, it's
    bridging.


        As an aside, why do you have two bridges to the same VMs? 
        Your configuration makes it impossible to
        set a route because  you have two sets of IP addresses and
        routes all on two bridges going into the same
        VMs.  In that configuration the local ip option makes  no
        sense.  You don't need it - you're already bridged.


    I was to trying to mimic a use case with two hypervisors and each
    hypervisor is connected to two different underlay networks. So,
    used linux bridges when imitated the topology with VMs. Please
    advice if this is not the right approach.

    I don't see how that can work - there does not seem to be enough
    isolation.  The VMs are still connected to
    a single hypervisor and they're all bridged, not routed.


        I understand that you have seen the gre configuration work
        and I'm not sure why because it has the same
        requirements for the local ip to be routable through the
        remote ip.  And again, there is no point to the
        local ip option because the ip addresses do not need to be
        routed to reach each other.

        In any case, I'm going to set up a valid configuration and
        then make sure that the local ip option does work
        or not.  I'll report back when I'm done.


    I will look out for your conclusions.


    So I have gotten both gre and vxlan to work with the local_ip option.

    Below is my setup for vxlan. The one for gre is identical except
    it is gre tunneling instead of vxlan tunneling.
    I've highlighted in red notable configurations and IP addresses. 
    With this setup I can do this:

    From Machine B to Machine A:
    # ip netns exec ns0 ping 10.1.1.1
    PING 10.1.1.1 (10.1.1.1) 56(84) bytes of data.
    64 bytes from 10.1.1.1 <http://10.1.1.1>: icmp_seq=1 ttl=64
    time=0.966 ms
    64 bytes from 10.1.1.1 <http://10.1.1.1>: icmp_seq=2 ttl=64
    time=0.128 ms
    64 bytes from 10.1.1.1 <http://10.1.1.1>: icmp_seq=3 ttl=64
    time=0.116 ms
    64 bytes from 10.1.1.1 <http://10.1.1.1>: icmp_seq=4 ttl=64
    time=0.113 ms
    64 bytes from 10.1.1.1 <http://10.1.1.1>: icmp_seq=5 ttl=64
    time=0.155 ms
    64 bytes from 10.1.1.1 <http://10.1.1.1>: icmp_seq=6 ttl=64
    time=0.124 ms
    64 bytes from 10.1.1.1 <http://10.1.1.1>: icmp_seq=7 ttl=64
    time=0.133 ms

    As you can see the vxlan tunnel with local_ip option works fine
    when the base configuration is done
    correctly.  I think a lot of confusion in this case has been
    between bridging and routing.  They are
    really separate concepts.

    I hope this helps.

    Thanks,

    - Greg

    Setup follows:

    Machine A:
    # ovs-vsctl show
    e4490ab5-ba93-4291-8a4f-c6f71292310b
        Bridge br-test
    *        Port "vxlan0"
                Interface "vxlan0"
                    type: vxlan
    **options: {key="100", local_ip="201.20.20.1", remote_ip="200.0.0.2"}*
            Port "p1"
                Interface "p1"
            Port br-test
                Interface br-test
                    type: internal
        Bridge "br0"
            Port "br0-peer"
                Interface "br0-peer"
                    type: patch
                    options: {peer="br1-peer"}
            Port "em2"
                Interface "em2"
            Port "br0"
                Interface "br0"
                    type: internal
        Bridge "br1"
            Port "br1-peer"
                Interface "br1-peer"
                    type: patch
                    options: {peer="br0-peer"}
            Port "br1"
                Interface "br1"
                    type: internal
            Port br-test-patch
                Interface br-test-patch
                    type: patch
                    options: {peer="br1-patch"}
        ovs_version: "2.10.90"

    # ip addr show
    5: em2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master
    ovs-system state UP group default qlen 1000
        link/ether 24:6e:96:4a:f2:90 brd ff:ff:ff:ff:ff:ff
    12: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue
    state UNKNOWN group default qlen 1000
        link/ether 24:6e:96:4a:f2:90 brd ff:ff:ff:ff:ff:ff
    *    inet 201.20.20.1/24 <http://201.20.20.1/24> scope global br0*
           valid_lft forever preferred_lft forever
        inet6 fd01:1:3:1500:266e:96ff:fe4a:f290/64 scope global
    mngtmpaddr dynamic
           valid_lft forever preferred_lft forever
        inet6 fe80::266e:96ff:fe4a:f290/64 scope link
           valid_lft forever preferred_lft forever
    14: br1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue
    state UNKNOWN group default qlen 1000
        link/ether 6a:f6:c5:75:3f:44 brd ff:ff:ff:ff:ff:ff
        inet 201.20.20.9/24 <http://201.20.20.9/24> scope global br1
           valid_lft forever preferred_lft forever
        inet6 fd01:1:3:1500:68f6:c5ff:fe75:3f44/64 scope global
    mngtmpaddr dynamic
           valid_lft forever preferred_lft forever
        inet6 fe80::68f6:c5ff:fe75:3f44/64 scope link
           valid_lft forever preferred_lft forever
    18: p1@if19: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
    noqueue master ovs-system state UP group default qlen 1000
        link/ether c2:00:b3:6c:d4:08 brd ff:ff:ff:ff:ff:ff link-netnsid 0
        inet6 fe80::c000:b3ff:fe6c:d408/64 scope link
           valid_lft forever preferred_lft forever
    23: br-test: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN
    group default qlen 1000
        link/ether 9a:61:c4:03:30:46 brd ff:ff:ff:ff:ff:ff
    25: vxlan_sys_4789: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 65470
    qdisc noqueue master ovs-system state UNKNOWN group default qlen 1000
        link/ether 2e:a5:e4:4c:38:0f brd ff:ff:ff:ff:ff:ff
        inet6 fe80::2ca5:e4ff:fe4c:380f/64 scope link
           valid_lft forever preferred_lft forever

    # ip route show
    default via 10.172.211.253 dev em1 proto dhcp metric 100
    10.172.208.0/22 <http://10.172.208.0/22> dev em1 proto kernel
    scope link src 10.172.208.214 metric 100
    192.168.122.0/24 <http://192.168.122.0/24> dev virbr0 proto kernel
    scope link src 192.168.122.1
    *200.0.0.0/24 <http://200.0.0.0/24> via 201.20.20.1 dev br0*
    201.20.20.0/24 <http://201.20.20.0/24> dev br0 proto kernel scope
    link src 201.20.20.1
    201.20.20.0/24 <http://201.20.20.0/24> dev br1 proto kernel scope
    link src 201.20.20.9

    # ip netns exec ns0 ip addr show
    19: v1@if18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
    noqueue state UP group default qlen 1000
        link/ether 16:14:b4:4e:06:8a brd ff:ff:ff:ff:ff:ff link-netnsid 0
    *    inet 10.1.1.1/24 <http://10.1.1.1/24> scope global v1*
           valid_lft forever preferred_lft forever
        inet6 fe80::1414:b4ff:fe4e:68a/64 scope link
           valid_lft forever preferred_lft forever

    Machine B:
    # ovs-vsctl show
    021ce205-1cb1-441e-af92-f0316fe68f80
        Bridge "br1"
            Port "br1-peer"
                Interface "br1-peer"
                    type: patch
                    options: {peer="br0-peer"}
            Port "br1"
                Interface "br1"
                    type: internal
            Port br-test-patch
                Interface br-test-patch
                    type: patch
                    options: {peer="br1-patch"}
        Bridge "br0"
            Port "em2"
                Interface "em2"
            Port "br0-peer"
                Interface "br0-peer"
                    type: patch
                    options: {peer="br1-peer"}
            Port "br0"
                Interface "br0"
                    type: internal
        Bridge br-test
    *        Port "vxlan0"
                Interface "vxlan0"
                    type: vxlan
                    options: {key="100", local_ip="200.0.0.2",
    remote_ip="201.20.20.1"}
    *        Port br-test
                Interface br-test
                    type: internal
            Port "p1"
                Interface "p1"
        ovs_version: "2.10.90"

    # ip addr show
    5: em2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master
    ovs-system state UP group default qlen 1000
        link/ether 24:6e:96:4a:ec:b8 brd ff:ff:ff:ff:ff:ff
    12: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue
    state UNKNOWN group default qlen 1000
        link/ether 24:6e:96:4a:ec:b8 brd ff:ff:ff:ff:ff:ff
    *    inet 200.0.0.2/24 <http://200.0.0.2/24> scope global br0*
           valid_lft forever preferred_lft forever
        inet6 fd01:1:3:1500:266e:96ff:fe4a:ecb8/64 scope global
    mngtmpaddr dynamic
           valid_lft forever preferred_lft forever
        inet6 fe80::266e:96ff:fe4a:ecb8/64 scope link
           valid_lft forever preferred_lft forever
    14: br1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue
    state UNKNOWN group default qlen 1000
        link/ether 7a:fd:5c:43:fc:48 brd ff:ff:ff:ff:ff:ff
        inet 200.0.0.9/24 <http://200.0.0.9/24> scope global br1
           valid_lft forever preferred_lft forever
        inet6 fd01:1:3:1500:78fd:5cff:fe43:fc48/64 scope global
    mngtmpaddr dynamic
           valid_lft forever preferred_lft forever
        inet6 fe80::78fd:5cff:fe43:fc48/64 scope link
           valid_lft forever preferred_lft forever
    18: p1@if19: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
    noqueue master ovs-system state UP group default qlen 1000
        link/ether 92:c3:d0:65:82:0d brd ff:ff:ff:ff:ff:ff link-netnsid 0
        inet6 fe80::90c3:d0ff:fe65:820d/64 scope link
           valid_lft forever preferred_lft forever
    23: br-test: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN
    group default qlen 1000
        link/ether 5a:fc:3c:e9:1d:44 brd ff:ff:ff:ff:ff:ff
    25: vxlan_sys_4789: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 65470
    qdisc noqueue master ovs-system state UNKNOWN group default qlen 1000
        link/ether de:dd:e8:9a:88:a3 brd ff:ff:ff:ff:ff:ff
        inet6 fe80::dcdd:e8ff:fe9a:88a3/64 scope link
           valid_lft forever preferred_lft forever

    # ip route show
    default via 10.172.211.253 dev em1 proto dhcp metric 100
    10.172.208.0/22 <http://10.172.208.0/22> dev em1 proto kernel
    scope link src 10.172.208.215 metric 100
    192.168.122.0/24 <http://192.168.122.0/24> dev virbr0 proto kernel
    scope link src 192.168.122.1
    200.0.0.0/24 <http://200.0.0.0/24> dev br0 proto kernel scope link
    src 200.0.0.2
    200.0.0.0/24 <http://200.0.0.0/24> dev br1 proto kernel scope link
    src 200.0.0.9
    *201.20.20.0/24 <http://201.20.20.0/24> via 200.0.0.2 dev br0*

    # ip netns exec ns0 ip addr show
    19: v1@if18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
    noqueue state UP group default qlen 1000
        link/ether 6e:bd:8e:8c:e9:45 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    *    inet 10.1.1.2/24 <http://10.1.1.2/24> scope global v1*
           valid_lft forever preferred_lft forever
        inet6 fe80::6cbd:8eff:fe8c:e945/64 scope link





_______________________________________________
discuss mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-discuss

Reply via email to