Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master' into ovn
Browse files Browse the repository at this point in the history
Conflicts:
	tutorial/ovs-sandbox
  • Loading branch information
Justin Pettit committed Apr 12, 2015
2 parents 717c7fc + e8fe6ad commit daaeeec
Show file tree
Hide file tree
Showing 160 changed files with 7,296 additions and 2,107 deletions.
1 change: 1 addition & 0 deletions .travis/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ function install_dpdk()
fi
find ./ -type f | xargs sed -i 's/max-inline-insns-single=100/max-inline-insns-single=400/'
sed -ri 's,(CONFIG_RTE_BUILD_COMBINE_LIBS=).*,\1y,' config/common_linuxapp
sed -ri 's,(CONFIG_RTE_LIBRTE_VHOST=).*,\1y,' config/common_linuxapp
sed -ri '/CONFIG_RTE_LIBNAME/a CONFIG_RTE_BUILD_FPIC=y' config/common_linuxapp
sed -ri '/EXECENV_CFLAGS = -pthread -fPIC/{s/$/\nelse ifeq ($(CONFIG_RTE_BUILD_FPIC),y)/;s/$/\nEXECENV_CFLAGS = -pthread -fPIC/}' mk/exec-env/linuxapp/rte.vars.mk
make config CC=gcc T=x86_64-native-linuxapp-gcc
Expand Down
3 changes: 3 additions & 0 deletions .travis/prepare.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@
sudo apt-get update -qq
sudo apt-get install -qq libssl-dev llvm-dev
sudo apt-get install -qq gcc-multilib
if [ "$DPDK" ]; then
sudo apt-get install -qq libfuse-dev
fi

git clone git://git.kernel.org/pub/scm/devel/sparse/chrisl/sparse.git
cd sparse && make && sudo make install PREFIX=/usr && cd ..
5 changes: 5 additions & 0 deletions AUTHORS
Original file line number Diff line number Diff line change
Expand Up @@ -85,12 +85,14 @@ Jesse Gross [email protected]
Jing Ai [email protected]
Joe Perches [email protected]
Joe Stringer [email protected]
Jonathan Vestin [email protected]
Jun Nakajima [email protected]
Justin Pettit [email protected]
Keith Amidon [email protected]
Ken Ajiro [email protected]
Kenneth Duda [email protected]
Kentaro Ebisawa [email protected]
Kevin Lo [email protected]
Kevin Traynor [email protected]
Kmindg G [email protected]
Krishna Kondaka [email protected]
Expand Down Expand Up @@ -215,6 +217,7 @@ Brad Hall [email protected]
Brandon Heller [email protected]
Brendan Kelley [email protected]
Brent Salisbury [email protected]
Brian Field [email protected]
Bryan Fulton [email protected]
Bryan Osoro [email protected]
Cedric Hobbs [email protected]
Expand Down Expand Up @@ -246,6 +249,7 @@ Gur Stavi [email protected]
Hari Sasank Bhamidipalli [email protected]
Hassan Khan [email protected]
Hector Oron [email protected]
Hemanth Kumar Mantri [email protected]
Henrik Amren [email protected]
Hiroshi Tanaka [email protected]
Hiroshi Miyata [email protected]
Expand Down Expand Up @@ -345,6 +349,7 @@ Voravit T. [email protected]
Yeming Zhao [email protected]
Ying Chen [email protected]
Yongqiang Liu [email protected]
Zhangguanghui [email protected]
Ziyou Wang [email protected]
Zoltán Balogh [email protected]
ankur dwivedi [email protected]
Expand Down
2 changes: 2 additions & 0 deletions Documentation/automake.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
EXTRA_DIST += \
Documentation/group-selection-method-property.txt
153 changes: 153 additions & 0 deletions Documentation/group-selection-method-property.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
Proposal for Group Selection Method Property
Version: 0.0.3

Author: Simon Horman <[email protected]>, et al.
Initial Public Revision: September 2014


Contents
========

1. Introduction
2. How it Works
3. Experimenter Id
4. Experimenter Messages
5. History


1. Introduction
===============

This text describes a Netronome Extension to (draft) OpenFlow 1.5 that allows a
controller to provide more information on the selection method for select
groups. This proposal is in the form of an enhanced select group type.

This may subsequently be proposed as an extension or update to
the OpenFlow specification.


2. How it works
===============

A new Netronome group experimenter property is defined which provides
compatibility with the group mod message defined in draft Open Flow 1.5
(also known as ONF EXT-350) and allows parameters for the selection
method of select groups to be passed by the controller. In particular it
allows controllers to:

* Specify the fields used for bucket selection by the select group.

* Designate the selection method used.

* Provide a non-field parameter to the selection method.


3. Experimenter ID
==================

The Experimenter ID of this extension is:

NTR_VENDOR_ID = 0x00001540


4. Group Experimenter Property
==============================

The following group property experimenter type defined by this extension.

enum ntr_group_mod_subtype {
NTRT_SELECTION_METHOD = 1,
};


Modifications to the group table from the controller may be done with a
OFPT_GROUP_MOD message described (draft) Open Flow 1.5. Group Entry
Message. Of relevance here is that (draft) Open Flow 1.5 group messages
have properties.

This proposal is defined in terms of an implementation of struct
ofp_group_prop_experimenter which is described in (draft) Open Flow 1.5.
The implementation is:

struct ntr_group_prop_selection_method {
ovs_be16 type; /* OFPGPT_EXPERIMENTER. */
ovs_be16 length; /* Length in bytes of this property. */
ovs_be32 experimenter; /* NTR_VENDOR_ID. */
ovs_be32 exp_type; /* NTRT_SELECTION_METHOD. */
ovs_be32 pad;
char selection_method[NTR_MAX_SELECTION_METHOD_LEN];
/* Null-terminated */
ovs_be64 selection_method_param; /* Non-Field parameter for
* bucket selection. */

/* Followed by:
* - Exactly (length - 40) (possibly 0) bytes containing OXM TLVs, then
* - Exactly ((length + 7)/8*8 - length) (between 0 and 7) bytes of
* all-zero bytes
* In summary, ntr_group_prop_selection_method is padded as needed,
* to make its overall size a multiple of 8, to preserve alignment
* in structures using it.
*/
/* uint8_t field_array[0]; */ /* Zero or more fields encoded as
* OXM TLVs where the has_mask bit must
* be zero and the value it specifies is
* a mask to apply to packet fields and
* then input them to the selection
* method of a select group. */
/* uint8_t pad2[0]; */
};
OFP_ASSERT(sizeof(struct ntr_group_mod) == 40);


This property may only be used with group mod messages whose:
* command is OFPGC_ADD or OFPGC_MODIFY; and
* type is OFPGT_SELECT


The type field is the OFPGPT_EXPERIMENTER which is
defined in EXT-350 as 0xffff.


The experimenter field is the Experimenter ID (see 3).


The exp_type field is NTRT_SELECTION_METHOD.


The group selection_method is a null-terminated string which if non-zero
length specifies a selection method known to an underlying layer of the
switch. The value of NTR_MAX_SELECTION_METHOD_LEN is 16.

The group selection_method may be zero-length to request compatibility with
Open Flow 1.4.


The selection_method_param provides a non-field parameter for
the group selection_method. It must be all-zeros unless the
group selection_method is non-zero length.

The selection_method_param may for example be used as an initial value for
the hash of a hash group selection method.


The fields field is an ofp_match structure which includes the fields which
should be used as inputs to bucket selection. ofp_match is described in
Open Flow 1.4 section 7.2.2 Flow Match Structures.

Fields must not be specified unless the group selection_method is non-zero
length.

The pre-requisites for fields specified must be satisfied in the match for
any flow that uses the group.

Masking is allowed but not required for fields whose TLVs allow masking.

The fields may for example be used as the fields that are hashed
by a hash group selection method.


5. History
==========

This proposal has been developed independently of any similar work in this
area. No such work is known.
9 changes: 9 additions & 0 deletions FAQ.md
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,7 @@ A: Support for tunnels was added to the upstream Linux kernel module
|:--------:|:-------------:
| GRE | 3.11
| VXLAN | 3.12
| Geneve | 3.18
| LISP | <not upstream>

If you are using a version of the kernel that is older than the one
Expand All @@ -216,6 +217,14 @@ A: Support for tunnels was added to the upstream Linux kernel module
persist after doing this, check to make sure that the module that is
loaded is the one you expect.

### Q: Why are UDP tunnel checksums not computed for VXLAN or Geneve?

A: Generating outer UDP checksums requires kernel support that was not
part of the initial implementation of these protocols. If using the
upstream Linux Open vSwitch module, you must use kernel 4.0 or
newer. The out-of-tree modules from Open vSwitch release 2.4 and later
support UDP checksums.

### Q: What features are not available when using the userspace datapath?

A: Tunnel virtual ports are not supported, as described in the
Expand Down
Loading

0 comments on commit daaeeec

Please sign in to comment.