Commit Graph

269 Commits

Author SHA1 Message Date
Tatsuya Yabe 6778bd8cdf Add a hardware implementation template
Set of modifications and additions to establish a platform
for implementing a hardware table in userspace. Modules in
skeleton directory is used as a template for creating
hardware dependent libraries.
2010-05-03 15:54:37 -07:00
Glen Gibb 3897db46e5 openflow.h: consistency fixes
Fixes:
 - use char instead of uint_8 for string (ofp_phy_port)
 - use [0] when declaring variable-length array
   (ofp_queue_get_config_reply)

Thanks to KK Yap (yapkke@stanford.edu) for reporting these issues.
2009-12-19 10:52:50 -08:00
Glen Gibb eb81428386 version: set version number to 0x01
First non-experimental version number
2009-12-19 10:52:43 -08:00
Yiannis Yiakoumis cb38fcc3fb spec : Clarify valid ports for enqueue action.
- Only ports < OFPP_MAX and OFPP_IN_PORT are valid ports
  for enqueuing.
- Also fixed spec typo (thanks to Reid Price for reporting).
2009-12-16 01:57:16 -08:00
Glen Gibb 9521a635c0 ip-in-arp: add capability bit for feature
Added capability bit to indicate if the switch supports matching IP
fields in ARP packets.
2009-12-17 16:44:44 -08:00
Dan Talayco 2babc729f7 Added comment regarding namespace collision for error codes 2009-12-17 13:25:25 -08:00
Justin Pettit bba589829e spec: Describe L3 ARP payload matching 2009-12-17 13:17:08 -08:00
Glen Gibb b113ab3fe8 Clearify openflow.h comment
Updated comment for OFPET_PORT_MOD_FAILED that replaces "OFPT_PORT_MOD"
with a textual description of this message.
2009-12-15 11:17:04 -08:00
Rob Sherwood ed2d28c865 added dpctl support for setting ofp_desc_stat->dp_desc
* udatapath : tested and works
* kernel datapath : implemented, but build is broken :-(
* addressed Glen's code review at :
    https://mailman.stanford.edu/pipermail/openflow-dev/2009-December/000620.html
2009-12-11 18:16:39 -08:00
Glen Gibb f557a21416 Version: bump openflow wire version number 2009-12-11 18:16:21 -08:00
Brandon Heller bb697af959 Spec: remove multi_phy_tx spec text and capability bit
This flag was added on March 3, 2008 to comply with a specific vendor's
hardware limitations.  This vendor is out of business, and with the
assumption of a software datapath backup, it is unlikely that a switch
would be unable to support sending to a physical port and the controller
simultaneously.

This commmit removes the corresponding spec text and replaces the
capability bit with a reserved one.

Thanks to Justin Pettit for the history.
2009-12-11 18:14:38 -08:00
Brandon Heller d7707dc0af Spec: clarify execution order of actions 2009-12-11 18:14:38 -08:00
Brandon Heller f8f578f919 Fix minor typo in comment 2009-12-11 18:14:37 -08:00
Justin Pettit 88cbf56f30 Add some minor clarifications to openflow.h 2009-12-11 18:13:38 -08:00
Glen Gibb 47a0ed66bc Merge branch 'devel/yiannisy/slicing'
Conflicts:
	include/openflow/openflow.h
	regress/lib/Perl5/OF/OFUtil.pm
	regress/projects/black_box/regress/tests.txt
	udatapath/datapath.c
	utilities/wireshark_dissectors/openflow/packet-openflow.c
2009-12-11 18:11:16 -08:00
Mikio Hara f72223e66a Specify port number when requsting port stats
Enable the port stats for a particular port to be requested by
specifying a port number. Can request all port stats by specifying
OFPP_NONE for the port number.
2009-12-11 15:43:37 -08:00
Justin Pettit 1936cc1c68 Implement flow cookies in user datapath. 2009-12-11 15:43:36 -08:00
Justin Pettit d216ae2782 Document flow cookies for the OpenFlow spec. 2009-12-11 15:43:36 -08:00
Mikio Hara 1c9b2f7b2d IPv4 DSCP match: Add IPv4 DSCP field match feature
Note: Now regression test sets *and* tests the IPv4 DSCP bits.  Test
script was renamed from test_set_nw_tos to test_set_n_match_nw_tos.
2009-12-11 15:43:36 -08:00
Rob Sherwood 20634da473 added dp_desc field to ofp_stats_desc
added a human readable string to ofp_stats_desc to describe
the datapath, e.g., "switch4 in closet 3b of Gates"

* updated openflow.h
* updated udatapath: defaults to "$HOSTNAME pid=$$"
* updated kernel datapath: defaults to "$HOSTNAME idx=$i"
* updated wireshark plugin
* added regression test for ofp_desc_stats
* addressed KK's review comments from:
    https://mailman.stanford.edu/pipermail/openflow-dev/2009-December/000545.html
2009-12-11 15:43:35 -08:00
David Erickson bc94ac2e58 Improve flow duration precision
Improve precision of flow duration (time a flow has
been installed in a switch) from seconds to nanoseconds
to improve throughput measurement accuracy when using
flow stats messages. This implementation splits the
existing duration fields into duration_sec and
duration_nsec for both flow expiration and flow stats
messages. Passes included unit tests on Ubuntu 8.04.
2009-12-11 15:43:35 -08:00
Yiannis Yiakoumis 19bb7743e2 Fix len comment at ofp_action_enqueue (openflow.h)
All actions need to be *8 size. The length field
comment was left to the old 12 bytes value.
2009-12-08 09:41:16 -08:00
Justin Pettit 951f4ca9f5 Add new OpenFlow error messages for 1.0 release. 2009-12-07 23:45:02 -08:00
Yiannis Yiakoumis f53757c4dd Define vendor extension for queue configuration
Queue configuration is not part of the OpenFlow protocol.
We define a vendor extension to allow config through dpctl.

Code by Dan Talayco.
2009-12-04 14:44:48 -08:00
Yiannis Yiakoumis 7ef69e0259 Introduce slicing mechanism changes in spec and openflow.h
For further details refer to this feature wiki-page:
http://openflowswitch.org/wk/index.php/Slicing
2009-12-04 14:44:39 -08:00
Glen Gibb dcfbabe695 Unify big/little endian for PRIVATE vendor ext
Private vendor extension file had separate handling for big/little
endian. All places in the code where these values are put on/removed
from the wire are wrapped by hton* and ntoh* function calls, eliminating
the need for separate constants.
2009-10-14 15:56:36 -07:00
Mikio Hara 1a9e53a083 Remove boost dependency 2009-07-16 14:08:37 -07:00
Mikio Hara 623e899a93 Bug fix: Restore 64-bit struct alignment
Commit 238c5065 (Vlan pcp match: Reorder VLAN priority field...)
changed ofp_match from 36B to 40B, breaking the 8B alignment of a
number of structs.  This commit modifies those structs to at least
pass the assertion tests and regression tests.
2009-07-16 09:23:19 -07:00
Mikio Hara ad94e12a04 Change meaning miss_send_len of set config and max_len field of output
action

If "max_send_len" (or the "max_len" field for the controller output
action) is zero, then send a packet-in with zero bytes of the packet
data.
2009-07-15 09:47:15 -07:00
Brandon Heller 3087ecedcf Spec: Make datapath ID 64 bits, up from 48
This commit allows multiple virtual switch instances to share a single
physical switch.
2009-07-15 09:42:37 -07:00
Mikio Hara 9656de8a28 Vlan pcp match: Reorder VLAN priority field in ofp_match structure to
order their appearance on the wire
2009-07-15 09:38:55 -07:00
Mikio Hara 034c75b75d Emergency flow cache: Rename error code from OFPFMFC_EMERG to
OFPFMFC_BAD_EMERG_TIMEOUT
2009-07-15 09:38:15 -07:00
Mikio Hara 36a60a74fc Emergency flow cache: Suppress flow removed notification for flows in
emergency flow table, add logic to emergency flow to reject entries
with timer
2009-07-11 21:02:04 -07:00
Mikio Hara 46c78aa8aa Change wire protocol version to 0x98 and package version to 0.9.0-rc1 2009-07-02 06:28:15 -07:00
Mikio Hara aefade8e40 Spec: Rename flow expiration messages to flow removed
Now that delete operations can cause flow expirations, it makes sense
to rename them as flow removed messages.
2009-07-02 05:31:00 -07:00
Mikio Hara 01593f3c49 Namespace change: Rename flow expiration to flow removed 2009-07-01 19:58:06 -07:00
Mikio Hara 680f63b514 Rewrite IP ToS/DSCP: Add IP ToS/DSCP field rewrite feature 2009-07-01 11:28:51 -07:00
Brandon Heller b008eb8126 Fix typo
DSCP, not DCSP
2009-06-30 23:24:30 -07:00
Brandon Heller b1e7cc00bc Spec: Add IP ToS rewrite action
Enable additional basic QoS support, without requiring a full QoS
framework.  This commit defines a flow action to rewrite the DiffServ
CodePoint bits of the IP ToS field in the IP header.
2009-06-30 22:07:13 -07:00
Brandon Heller 1a5762fbd2 Spec: Fix ambiguity regarding the duration field in Flow Expirations
Before this spec change, flow expiration messages included a duration
field for the time the flow was active.  To find out the amount of time
the flow received traffic would have been much harder - the controller
would need to store a record of all flow mods it has sent, to know the
idle_timeout of this flow.  Additionally, both phrases, 'time flow was
active' and 'time traffic was received' were used in the spec for the
duration field.

Now we return the idle timeout in the flow expiration message, and ensure
duration is the time the entry was present in the flow table.  The hard
timeout will be obvious if it is the reason for the deletion, since the
reason field will be OFPER_HARD_TIMEOUT, and the duration will be the hard
timeout value.  From the duration and the idle_timeout, we can also
compute the time the flow received traffic.
2009-06-29 11:37:28 -07:00
Brandon Heller f874420531 Spec: Start port enumeration at 1
A number of protocols such as SNMP and STP start counting ports at one. To
increase compatibility, this commit adds a requirement that OpenFlow
ingress port values start at one.
2009-06-29 11:37:28 -07:00
Brandon Heller e9353ae079 Spec: Add _EPERM error codes
An OpenFlow hypervisor might choose to reject an OpenFlow request, but
currently has no message type defined for this error. It is not a
vendor-specific error, thus we define an _EPERM error code for each error
type.

Also remove unused, commented-out text.
2009-06-29 11:37:14 -07:00
Mikio Hara 0e59606d43 Remove experimental bridge compat header file 2009-06-29 11:36:09 -07:00
Mikio Hara 292ffb1f39 Barrier command: Add new protocol messages: barrier request and reply
When a switch receives a barrier message it must first complete all
commands sent before the barrier message before executing any commands
after it. When all commands before the Barrier message have completed,
it must send a barrier reply message back to the controller.
2009-06-29 11:21:40 -07:00
Yiannis Yiakoumis a47208dc76 Flow mod behavior: Add a new flag to flow mods and flow conflict
detection handler for table maintanance

Add a CHECK_OVERLAP flag to flow mods which requires the switch to do
the (potentially more costly) check that there doesn't already exist a
conflicting flow with the same priority. If there is one, the mod
fails and an error code is returned.

Flow expiry: Record OFPFF_SEND_FLOW_EXP flag in user data path
2009-06-29 10:00:55 -07:00
tyabe dde4979698 Vlan pcp match: Implemented on datapath and udatapath 2009-06-29 07:27:42 -07:00
Brandon Heller b5525791b5 Spec: Notify controller of flows that are forcefully deleted
Previously, a switch would only notify the controller when flows expired.
Now, when a switch is told to delete flows, it sends a flow expiration
message, enabling the controller to get packet and byte counts from
deleted flows. Without this, the controller must retrieve flow statistics
and then delete the flow, during which time the counts could change. This
could also aid in debugging if multiple applications or programs
controlling the same switch are deleting each others' flows.

This commit adds a OFPER_DELETE as a choice for the reason field of a flow
expiration.
2009-06-29 07:07:29 -07:00
Glen Gibb 44d43c2988 Flow expiry: Add send_flow_exp to nx_flow_end msg
Need to pass message that indicates whether to send flow expiry message
to the controller.
2009-06-29 07:04:02 -07:00
Brandon Heller a00b917457 Spec: Selective flow expirations
Make flow expirations per-flow-entry, rather than per-switch.

This commit should give controllers extra flexibility to decide when they
want expirations, will simplify the job of an OpenFlow hypervisor, and may
reduce CPU load at the switch.
2009-06-29 07:02:44 -07:00
Glen Gibb ad42ba0b93 Flow expiry: Added idle_timout to nx_flow_end struct
Extra field added to struct
Padding field split
Populate idle_timeout in dp_send_flow_end funcs
2009-06-29 06:59:05 -07:00