Home

Awesome

LINCX - OpenFlow software switch

Build Status

What is LINCX?

LINCX is a pure OpenFlow software switch written in Erlang. It runs within a separate domain under Xen hypervisor using LING (erlangonxen.org).

LINCX is a new faster version of LINC-Switch.

Features

How to use it?

  1. Check that you have Erlang/OTP 17 installed. Other versions will NOT work.

  2. Clone the LINCX repository:

    % git clone https://github.com/FlowForwarding/lincx.git
  1. Compile the code:
    % ./rebar get-deps
	% ./rebar compile
  1. Create the configuration file:
	% cp lincx.config.sample lincx.config
  1. Edit lincx.config as needed.

  2. Build the Xen image for the switch:

	% ./railing image
  1. Boot the lincx Xen domain:
	% sudo xl create -c domain_config

How to configure LINCX?

lincx.config is the main configuration file of the LINCX switch. You can use the file lincx.config.sample as the starting point for you configuration file.

ipconf option defines the TCP/IP networking setup. To configure TCP/IP statically use:

	{ipconf, IpAddr, NetMask, Gateway}.

To use dhcp change the option to

	{ipconf, dhcp}.

To add an OpenFlow port use the following option:

	{port, PortNo}.
	{port, PortNo, AuxProps}.

By default, an OpenFlow port 1 connects to the bridge named br1 in Dom0. The name of the brdige can be set in auxilliary properties:

	{port, 1, [{bridge,br7}]}. %% connects the port to br7

To add multiple ports use:

	{ports, NumOfPorts}.
	{ports, NumOfPorts, AuxProps}.

By default, the ports are numbered from 1 to NumOfPorts and are connected to brdiges br1, br2, etc. The starting port number and the prefix for bridge names can be changed using auxilliary properties:

	%% adds ports 5,6,7 connected to xenbr5,xenbr6,xenbr7
	{ports, 3, [{start,5},{prefix,xenbr}]}.

To add an active connection to a controller use the following option:

	{controller,IpAddr,Port}.

To listen for connections from controllers:

	{listener,IpAddr,Port}.

To add a queue use:

	{queue, QueueNo, MinRate, MaxRate}.

A port can be connected to a queue using a property, e.g.

	{queue, 1, 0, 100}.
	{port, 1, [{queue,1}]}.

To set the memory size of the lincx domain (in MB, default = 1024):

	{memory, Memory}.

LINCX supports alternative format -- YAML -- of the configuration file. Rename the configuration file to lincx.yml to use YAML. See lincx.yml.sample as a starting point.

Support

If you have any technical questions, problems or suggestions regarding LINCX please send them to linc-dev@flowforwarding.org mailing list or create an Issue. Thanks.