Skip to content

Concurix/LINC-Switch

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LINC - OpenFlow software switch

What is LINC?

LINC is a pure OpenFlow switch written in Erlang. It's implemented in operating system's userspace as an Erlang node. Such approach is not the most efficient one, compared to Open vSwitch implemented in Linux kernel, or pure hardware implementations of traditional switches, but it gives a lot of flexibility and allows quick deployments and tests of new OpenFlow features.

Features

Planned features

How to use it?

Erlang

To use LINC you need to have an Erlang runtime installed on your machine. Required version is R15B.

Install from sources

To build Erlang from sources first you have to install some required system packages.

On Ubuntu:

# apt-get install gcc wget make autoconf openssl libssl0.9.8 libssl-dev libncurses5 libncurses5-dev

On RedHat/CentOS:

# yum install gcc wget make autoconf openssl openssl-devel ncurses ncurses-devel

On other Linux systems you need to install the counterparts of aforementioned packages.

When your system environment is ready download the sources from erlang.org. Unpack, compile and install:

% ./configure
% make
# make install

Install from binaries

If you're lazy you can also use Erlang binary packages created by Erlang Solutions.

LINC

To build the switch you need to install the following additional libraries and tools.

On Ubuntu:

# apt-get install git-core bridge-utils libpcap0.8 libpcap-dev libcap2-bin uml-utilities

On RedHat/CentOS:

# yum install git sudo bridge-utils libpcap libpcap-devel libcap tunctl

Note that on RedHat/CentOS 5.x you need a newer version of libpcap:

# yum erase libpcap libpcap-devel
# yum install flex byacc
# wget http://www.tcpdump.org/release/libpcap-1.2.1.tar.gz
# tar xzf libpcap-1.2.1.tar.gz
# cd libpcap-1.2.1
# ./configure
# make && make install

On other Linux systems you need to install the counterparts of aforementioned packages.

When your environment is set up you are ready to build and run LINC.

Clone this git repository:

% git clone <REPO>

Compile everything:

% make

Generate an Erlang release:

% make rel

Adjust switch configuration by editing the rel/openflow/releases/0.1/sys.config file which looks like this:

{of_switch, [
    {controllers, [
        {"localhost", 6633}
    ]},
    {ports, [
        [{ofs_port_no, 1},
         {interface, "eth0"},
         {queues, [{0, [{ofp_queue_prop_min_rate, 0},
                        {ofp_queue_prop_max_rate, 1000}]}]},
         {rate, {1, gibps}}],
        [{ofs_port_no, 2},
         {interface, "eth1"},
         {queues, [{0, [{ofp_queue_prop_min_rate, 0},
                        {ofp_queue_prop_max_rate, 1000}]}]},
         {rate, {1, gibps}}]
    ]}
]}.

At the moment you can change the list of controllers and ports used by the switch.

Start LINC switch in console mode:

% rel/openflow/bin/openflow console

For further instructions on how to use LINC check the "Ping example".

For detailed explanation on how to setup simple LINC testbed check the "Testbed setup".

Read more...

Support

If you have any technical questions, problems or suggestions regarding LINC please contact [email protected].

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Erlang 92.3%
  • Shell 5.1%
  • Perl 2.6%