[ovs-discuss] openflow packet_out and openvswitch

Justin Pettit jpettit at nicira.com
Sun Nov 7 18:32:52 UTC 2010


I've not used the OpenFlow Wireshark plug-in before, so I'm not familiar with its output. However, it looks to me like you're trying to send the packet out the port it came in on (port 1).  If that's the case (and it's what you intended), you need to use the OFPP_IN_PORT virtual port, which is defined by OpenFlow as such:

    OFPP_IN_PORT    = 0xfff8,  /* Send the packet out the input port.  This
                                  virtual port must be explicitly used
                                  in order to send back out of the input
                                  port. */

If this isn't your problem, can you send a raw dump of the OpenFlow packet in hex?  I would be more sure of what's being requested then.

--Justin


On Nov 7, 2010, at 9:50 AM, Haris Rotsos wrote:

> I am currently using nox and openvswitch in order to write a simple
> dhcp plugin for nox. I am trying to generate dhcp packets on the
> controller and push them out throught the openvswitch to the network.
> the packet I send is (using -V option on tshark):
> 
> Frame 1 (372 bytes on wire, 372 bytes captured)
>    Frame Number: 1
>    Frame Length: 372 bytes
>    Capture Length: 372 bytes
>    [Frame is marked: False]
>    [Protocols in frame: eth:ip:tcp:of:eth:ip:udp:bootp]
> Ethernet II, Src: 00:00:00_00:00:00 (00:00:00:00:00:00), Dst:
> 00:00:00_00:00:00 (00:00:00:00:00:00)
>    Destination: 00:00:00_00:00:00 (00:00:00:00:00:00)
>        Address: 00:00:00_00:00:00 (00:00:00:00:00:00)
>        .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
>        .... ..0. .... .... .... .... = LG bit: Globally unique
> address (factory default)
>    Source: 00:00:00_00:00:00 (00:00:00:00:00:00)
>        Address: 00:00:00_00:00:00 (00:00:00:00:00:00)
>        .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
>        .... ..0. .... .... .... .... = LG bit: Globally unique
> address (factory default)
>    Type: IP (0x0800)
> Internet Protocol, Src: 127.0.0.1 (127.0.0.1), Dst: 127.0.0.1 (127.0.0.1)
>    Version: 4
>    Header length: 20 bytes
>    Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
>        0000 00.. = Differentiated Services Codepoint: Default (0x00)
>        .... ..0. = ECN-Capable Transport (ECT): 0
>        .... ...0 = ECN-CE: 0
>    Total Length: 358
>    Identification: 0x4c06 (19462)
>    Flags: 0x02 (Don't Fragment)
>        0.. = Reserved bit: Not Set
>        .1. = Don't fragment: Set
>        ..0 = More fragments: Not Set
>    Fragment offset: 0
>    Time to live: 64
>    Protocol: TCP (0x06)
>    Header checksum: 0xef89 [correct]
>        [Good: True]
>        [Bad : False]
>    Source: 127.0.0.1 (127.0.0.1)
>    Destination: 127.0.0.1 (127.0.0.1)
> Transmission Control Protocol, Src Port: 6633 (6633), Dst Port: 35686
> (35686), Seq: 1, Ack: 1, Len: 306
>    Source port: 6633 (6633)
>    Destination port: 35686 (35686)
>    [Stream index: 0]
>    Sequence number: 1    (relative sequence number)
>    [Next sequence number: 307    (relative sequence number)]
>    Acknowledgement number: 1    (relative ack number)
>    Header length: 32 bytes
>    Flags: 0x18 (PSH, ACK)
>        0... .... = Congestion Window Reduced (CWR): Not set
>        .0.. .... = ECN-Echo: Not set
>        ..0. .... = Urgent: Not set
>        ...1 .... = Acknowledgement: Set
>        .... 1... = Push: Set
>        .... .0.. = Reset: Not set
>        .... ..0. = Syn: Not set
>        .... ...0 = Fin: Not set
>    Window size: 1540
>    Checksum: 0xff5a [validation disabled]
>        [Good Checksum: False]
>        [Bad Checksum: False]
>    Options: (12 bytes)
>        NOP
>        NOP
>        Timestamps: TSval 9608020, TSecr 9608020
>    [SEQ/ACK analysis]
>        [Number of bytes in flight: 306]
>    [PDU Size: 306]
> OpenFlow Protocol
>    Header
>        Version: 0x01
>        Type: Packet Out (CSM) (13)
>        Length: 306
>        Transaction ID: 0
>    Packet Out
>        Buffer ID: None
>        Frame Recv Port: 1
>        Size of action array in bytes: 8
>        Output Action(s)
>            Action
>                Type: Output to switch port (0)
>                Len: 8
>                Output port: 1
>                Max Bytes to Send: 0
>            # of Actions: 1
>        Frame Data: 080027D6A219080027EE1D9F08004500010C000000008011...
>            Ethernet II, Src: CadmusCo_ee:1d:9f (08:00:27:ee:1d:9f),
> Dst: CadmusCo_d6:a2:19 (08:00:27:d6:a2:19)
>                Destination: CadmusCo_d6:a2:19 (08:00:27:d6:a2:19)
>                    Address: CadmusCo_d6:a2:19 (08:00:27:d6:a2:19)
>                    .... ...0 .... .... .... .... = IG bit: Individual
> address (unicast)
>                    .... ..0. .... .... .... .... = LG bit: Globally
> unique address (factory default)
>                Source: CadmusCo_ee:1d:9f (08:00:27:ee:1d:9f)
>                    Address: CadmusCo_ee:1d:9f (08:00:27:ee:1d:9f)
>                    .... ...0 .... .... .... .... = IG bit: Individual
> address (unicast)
>                    .... ..0. .... .... .... .... = LG bit: Globally
> unique address (factory default)
>                Type: IP (0x0800)
>            Internet Protocol, Src: 10.2.0.1 (10.2.0.1), Dst:
> 255.255.255.255 (255.255.255.255)
>                Version: 4
>                Header length: 20 bytes
>                Differentiated Services Field: 0x00 (DSCP 0x00:
> Default; ECN: 0x00)
>                    0000 00.. = Differentiated Services Codepoint:
> Default (0x00)
>                    .... ..0. = ECN-Capable Transport (ECT): 0
>                    .... ...0 = ECN-CE: 0
>                Total Length: 268
>                Identification: 0x0000 (0)
>                Flags: 0x00
>                    0.. = Reserved bit: Not Set
>                    .0. = Don't fragment: Not Set
>                    ..0 = More fragments: Not Set
>                Fragment offset: 0
>                Time to live: 128
>                Protocol: UDP (0x11)
>                Header checksum: 0x2fdf [correct]
>                    [Good: True]
>                    [Bad : False]
>                Source: 10.2.0.1 (10.2.0.1)
>                Destination: 255.255.255.255 (255.255.255.255)
>            User Datagram Protocol, Src Port: bootps (67), Dst Port: bootpc (68)
>                Source port: bootps (67)
>                Destination port: bootpc (68)
>                Length: 248
>                Checksum: 0x0000 (none)
>                    Good Checksum: False
>                    Bad Checksum: False
>            Bootstrap Protocol
>                Message type: Boot Reply (2)
>                Hardware type: Ethernet
>                Hardware address length: 6
>                Hops: 0
>                Transaction ID: 0xdeb10011
>                Seconds elapsed: 0
>                Bootp flags: 0x0000 (Unicast)
>                    0... .... .... .... = Broadcast flag: Unicast
>                    .000 0000 0000 0000 = Reserved flags: 0x0000
>                Client IP address: 0.0.0.0 (0.0.0.0)
>                Your (client) IP address: 10.2.0.2 (10.2.0.2)
>                Next server IP address: 10.2.0.1 (10.2.0.1)
>                Relay agent IP address: 0.0.0.0 (0.0.0.0)
>                Client MAC address: CadmusCo_d6:a2:19 (08:00:27:d6:a2:19)
>                Client hardware address padding: 00000000000000000000
>                Server host name not given
>                Boot file name not given
>                Bootp vendor specific options
> 
> The packet thought contained in the openflow packet_out packet, is
> never seen going out in any of the interfaces (I use tcpdump to
> monitor the relevant interfaces).
> 
> My questions are the following:
> 1) Is packet_out supported by openvswitch?
> 2) Where would I see a message in case the packet I send is malformed?
> 3) Is there maybe something wrong with the packet I send?
> 
> thanks in advance for any help provided.
> 
> 
> -- 
> Charalampos Rotsos
> PhD student
> The University of Cambridge
> Computer Laboratory
> William Gates Building
> JJ Thomson Avenue
> Cambridge
> CB3 0FD
> 
> Phone: +44-(0) 1223 767032
> Email: cr409 at cl.cam.ac.uk
> _______________________________________________
> discuss mailing list
> discuss at openvswitch.org
> http://openvswitch.org/mailman/listinfo/discuss_openvswitch.org





More information about the discuss mailing list