Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

If you wish to build from source, download the SPRING-OPEN version of the ONOS controller source code. We are assuming you are running in an Ubuntu linux environment.

Code Block
languagetext
git clone https://gerrit.onosproject.org/spring-open

Compile the code.

You will also need Zookeeper 3.4.6: http://apache.arvixe.com/zookeeper/stable/

Download the tar file, and untar it is your home directory.

Run the controller Setup

Code Block
Code Block
languagetext
cd ~/spring-open
./onos.sh setup

Compile the Controller code.

Code Block
languagetext
mvn clean
mvn compile

To run the controller

Code Block
./onos.sh start

To see the controller logs

Code Block
tail -f onos-logs/onos.<host-name>.log

Note that ONOS needs to be configured to run a segment routed network. See Configuring ONOS for more details.

 

CLI for SPRING-OPEN

The CLI used for this project is a modified version of the CLI originally submitted to open-source here: https://github.com/opendaylight/net-virt-platform/tree/master/cli

...

For this you will need Dell 4810 switches. If you are a network operator and you wish to try out this prototype (for free) in your lab, contact Saurav Das or Jaiwant Virk.

Once you have the switches, you will need to load the Force10 OS (FTOS) version the binary for which can be freely downloaded here: http://downloads.onosproject.org/spring-open/FTOS-SE-1-0-0-3516.bin


<more coming soon>

 

 

CPqD Software Switch

  1. Download the source code

    Code Block
    languagetext
    git clone https://github.com/CPqD/ofsoftswitch13.git
  2. Go back to the specific version of Cpqd

    Code Block
    languagetext
    git checkout f308c28242de57502f06d3dee80ce47ac17b6603
  3. Apply the following patch

    Code Block
    languagetext
    titlepatchfile_cpqd
    collapsetrue
    diff --git oflib/oxm-match.c oflib/oxm-match.c
    index e21edaa..d763cf9 100644
    --- oflib/oxm-match.c
    +++ oflib/oxm-match.c
    @@ -202,14 +202,22 @@ oxm_prereqs_ok(const struct oxm_field *field, const struct ofl_match *rule)
                 return false;
         }
     
    +    
         /* Check for eth_type */
         if (!field->dl_type[0])
             return true;
    +    else if (field->dl_type[0] == htons(0x8847))
    +	// quick-fix:ignore check for ethtpe when setting mpls label-id
    +	// needs a cleaner solution which checks for a push-mpls action before the set
    +	return true;
         else {
             HMAP_FOR_EACH_WITH_HASH (omt, struct ofl_match_tlv, hmap_node, hash_int(OXM_OF_ETH_TYPE, 0),
                   &rule->match_fields) {
                   uint16_t eth_type;
                   memcpy(&eth_type, omt->value, sizeof(uint16_t));
    +	      //VLOG_INFO_RL(LOG_MODULE,&rl, "field-dltype %x ethtype %x htons %x", field->dl_type[0],
    +	      //		eth_type, htons(eth_type));
    +
                   if (field->dl_type[0] == htons(eth_type)) {
                     return true;
                   } else if (field->dl_type[1] && field->dl_type[1] ==  htons(eth_type)) {
    @@ -349,7 +357,8 @@ parse_oxm_entry(struct ofl_match *match, const struct oxm_field *f,
             case OFI_OXM_OF_IPV4_SRC_W:
             case OFI_OXM_OF_ARP_SPA_W:
             case OFI_OXM_OF_ARP_TPA_W:
    -             ofl_structs_match_put32m(match, f->header, *((uint32_t*) value), *((uint32_t*) mask));
    +	     // note that the mask is bitwise notted to match 1.3 description of mask
    +             ofl_structs_match_put32m(match, f->header, *((uint32_t*) value), ~(*((uint32_t*) mask)));
                  return 0;
             case OFI_OXM_OF_ARP_SHA:
             case OFI_OXM_OF_ARP_THA:
    
    

    If you save it as a file (patchfile_cpqd), then you can apply the patch as following

    Code Block
    languagetext
    patch -p0 < ../patchfile_cpqd 
  4. Build it following the README.md file in the directory

...