Sure. I made these blog posts documenting my journey and how I solved 'my issue'. :D

http://gregorygee.wordpress.com/2014/02/08/running-open-vswitch-in-network-namespace/
http://gregorygee.wordpress.com/2014/04/03/running-open-vswitch-in-network-namespace-inband-controller/

  Actually, I think you saw reference to these in the Mininet mailing list.

Greg

On 04/04/2014 3:31 AM, Volkan YAZICI wrote:
Kudos Gregory! I think this in-band problem in mininet is equivalent to Fermat's last theorem in math. Congrats again. BTW, it would be awesome if you can share the steps that you took in a blog post.


On Fri, Apr 4, 2014 at 5:19 AM, Gregory Gee <gee.develo...@gmail.com <mailto:gee.develo...@gmail.com>> wrote:


     I figured out the problem I was having.  It was a simple IP
    address assignment issue.  For the IP addresses that I gave the
    internal bridge interfaces, I used a /32 prefix.  I should have
    given them the same /8 prefix that the host was using that had the
    controller. Once I set the correct MASK, the controller started
    getting control messages.

      I got myself mixed up configuring the internal bridge interface
    like a layer 3 loopback interface on a router instead of
    configuring it like  the IP address of an SVI/VLAN interface.  I'm
    glad that's all that needed to be done.  I've finally been able to
    complete my experiment of running multiple OVS on a host but each
    in their own network namespace and talking to an inband controller
    all inside Mininet.

    Thanks for the push.

    Greg


    On 03/04/2014 10:47 AM, Ben Pfaff wrote:

        OVS uses flooding and MAC learning to find the controller.

        Yes, setting an IP is all that is needed.

        On Thu, Apr 03, 2014 at 08:58:40AM -0400, Gregory Gee wrote:

              So if there is no extra configuration required, how does
            OVS know
            which port to send the control traffic to the controller?
             Are you
            saying that setting an IP on the internal bridge interface
            is all
            that is required for inband control to work?

            Greg

            On 02/04/2014 5:02 PM, Ben Pfaff wrote:

                OK.

                No extra flows are needed, so this is a configuration
                error or a bug.

                On Wed, Apr 02, 2014 at 02:46:56PM -0400, Gregory Gee
                wrote:

                    No, as you can see in the original email, the
                    11.0.0.1 and 11.0.0.2 are on
                    the bridge internal interface.  Instead of the
                    interface being called br0
                    as in your example, they are called s1 and s2 in
                    my setup.

                       So I have the IP address set on the bridge
                    internal interface as needed.
                      What are the extra flows that I need to install
                    that tells OVS which port
                    to talk to the controller.  My setup works fine if
                    I have the controller
                    out of band, but I can't figure out the extra
                    steps to make the controller
                    connection work if it is inband.

                    Greg





                    On Wed, Apr 2, 2014 at 12:06 AM, Ben Pfaff
                    <b...@nicira.com <mailto:b...@nicira.com>> wrote:

                        On Tue, Apr 01, 2014 at 10:49:16PM -0400,
                        Gregory Gee wrote:

                              I've been searching for quite a while
                            and experimenting but there
                            must be an extra step I am missing to get
                            a simple inband controller
                            example to work.  Here is the simple
                            example topology.

                            s2---s1---controller

                            s1 = 11.0.0.1/32 <http://11.0.0.1/32>
                            s2 = 11.0.0.2/32 <http://11.0.0.2/32>
                            controller = 11.0.0.100/8
                            <http://11.0.0.100/8>

                              An example ovs-vsctl show.

                                 Bridge "s1"
                                     Controller "tcp:11.0.0.100:6633
                            <http://11.0.0.100:6633>"
                                     fail_mode: secure
                                     Port "s1-eth1"
                                         Interface "s1-eth1"
                                     Port "s1-eth2"
                                         Interface "s1-eth2"
                                     Port "s1-eth12"
                                         Interface "s1-eth12"
                                     Port "s1"
                                         Interface "s1"
                                             type: internal
                                 ovs_version: "1.10.0"

                            # ovs-ofctl show s1
                            OFPT_FEATURES_REPLY (xid=0x2):
                            dpid:0000000000000001
                            n_tables:254, n_buffers:256
                            capabilities: FLOW_STATS TABLE_STATS
                            PORT_STATS QUEUE_STATS ARP_MATCH_IP
                            actions: OUTPUT SET_VLAN_VID SET_VLAN_PCP
                            STRIP_VLAN SET_DL_SRC
                            SET_DL_DST SET_NW_SRC SET_NW_DST
                            SET_NW_TOS SET_TP_SRC SET_TP_DST
                            ENQUEUE
                              1(s1-eth1): addr:0a:a7:af:32:d9:7c
                                  config:     0
                                  state:      0
                                  current:    10GB-FD COPPER
                                  speed: 10000 Mbps now, 0 Mbps max
                              2(s1-eth2): addr:06:57:97:21:9f:d5
                                  config:     0
                                  state:      0
                                  current:    10GB-FD COPPER
                                  speed: 10000 Mbps now, 0 Mbps max
                              3(s1-eth12): addr:26:96:80:3e:77:12
                                  config:     0
                                  state:      0
                                  current:    10GB-FD COPPER
                                  speed: 10000 Mbps now, 0 Mbps max
                              LOCAL(s1): addr:36:21:10:be:02:43
                                  config:     0
                                  state:      0
                                  speed: 0 Mbps now, 0 Mbps max
                            OFPT_GET_CONFIG_REPLY (xid=0x4):
                            frags=normal miss_send_len=0

                            # ifconfig s1
                            s1        Link encap:Ethernet  HWaddr
                            36:21:10:be:02:43
                                       inet addr:11.0.0.1
                             Bcast:255.255.255.255 Mask:0.0.0.0
                                       UP BROADCAST RUNNING  MTU:1500
                             Metric:1
                                       RX packets:0 errors:0 dropped:0
                            overruns:0 frame:0
                                       TX packets:0 errors:0 dropped:0
                            overruns:0 carrier:0
                                       collisions:0 txqueuelen:0
                                       RX bytes:0 (0.0 B)  TX bytes:0
                            (0.0 B)

                        It looks like you put your IP address on a
                        physical (or virtualized
                        physical) interface.  IP addresses need to be
                        on internal interfaces.
                        Please see the FAQ:

                        Q: I created a bridge and added my Ethernet
                        port to it, using commands
                            like these:

                                ovs-vsctl add-br br0
                                ovs-vsctl add-port br0 eth0

                            and as soon as I ran the "add-port"
                        command I lost all connectivity
                            through eth0.  Help!

                        A: A physical Ethernet device that is part of
                        an Open vSwitch bridge
                            should not have an IP address.  If one
                        does, then that IP address
                            will not be fully functional.

                            You can restore functionality by moving
                        the IP address to an Open
                            vSwitch "internal" device, such as the
                        network device named after
                            the bridge itself.  For example, assuming
                        that eth0's IP address is
                            192.168.128.5, you could run the commands
                        below to fix up the
                            situation:

                                ifconfig eth0 0.0.0.0
                                ifconfig br0 192.168.128.5

                            (If your only connection to the machine
                        running OVS is through the
                            IP address in question, then you would
                        want to run all of these
                            commands on a single command line, or put
                        them into a script.)  If
                            there were any additional routes assigned
                        to eth0, then you would
                            also want to use commands to adjust these
                        routes to go through br0.

                            If you use DHCP to obtain an IP address,
                        then you should kill the
                            DHCP client that was listening on the
                        physical Ethernet interface
                            (e.g. eth0) and start one listening on the
                        internal interface
                            (e.g. br0).  You might still need to
                        manually clear the IP address
                            from the physical interface (e.g. with
                        "ifconfig eth0 0.0.0.0").

                            There is no compelling reason why Open
                        vSwitch must work this way.
                            However, this is the way that the Linux
                        kernel bridge module has
                            always worked, so it's a model that those
                        accustomed to Linux
                            bridging are already used to.  Also, the
                        model that most people
                            expect is not implementable without kernel
                        changes on all the
                            versions of Linux that Open vSwitch supports.

                            By the way, this issue is not specific to
                        physical Ethernet
                            devices.  It applies to all network
                        devices except Open vswitch
                            "internal" devices.


    _______________________________________________
    discuss mailing list
    discuss@openvswitch.org <mailto:discuss@openvswitch.org>
    http://openvswitch.org/mailman/listinfo/discuss



_______________________________________________
discuss mailing list
discuss@openvswitch.org
http://openvswitch.org/mailman/listinfo/discuss

Reply via email to