Showing posts from August, 2012

[Ubuntu] How to build local apt repositories

[SDN] HP's SDN solution

HP provides 3 tools (softwares) to deal with network virtualization using SDN
EVI (Ethernet Virtual Interconnect)EVI creates a tunnel through the Layer 3 network by encapsulating the packets traveling between the data centers. Rival Cisco already has software that can do this, called OTV (Overlay Transport Virtualization), but it charges extra for that software.MDC (Multitenant Device Context)It allows for segregating the resources of multiple tenants in a virtualized environment without buying separate switches. This secures the data and applications of one department or cloud service customer from other tenants.VSAStoreVirtual VSA, for virtualizing storage management. The software is based on VSA (virtual storage appliance) technology from LeftHand Networks, which HP acquired in 2008.

[Trema] The real case to test flow-based ECMP Routing Switch App

The following picture is a topology that used in testing my ECMP Routing Switch App.

After host3 send packets to host1, the app starts making path process and the related log as below. You will see this app picks up 2 paths ( "0xe5->0xe3->0xe4"  and  "0xe5->0xe2->0xe4" ) and choose one of them to setup flow entries.

[pickup_next_candidate] Find a candidate = 0xe5
[update_distance] node = 0xe3, distance = 1
[update_distance] node = 0xe2, distance = 1
[pickup_next_candidate] Find a candidate = 0xe3
[update_distance] node = 0xe1, distance = 2
[update_distance] node = 0xe4, distance = 2
[update_distance] node = 0xe2, distance = 1
[pickup_next_candidate] Find a candidate = 0xe2
[update_distance] node = 0xe1, distance = 2
[update_distance] node = 0xe4, distance = 2
[pickup_next_candidate] Find a candidate = 0xe1
[pickup_next_candidate] Find a candidate = 0xe4
[build_hop_list] build a hop = 0xe4
[build_hop_list] build a hop = 0xe3
[build_hop_list] build a ho…

[Trema][Concept] How to do flow-based ECMP in Routing Switch App

As we have known that Routing Switch App uses Dijkstra algorithm to pick up the lowest cost of the path. Only one path will be selected. If we want to do flow-based ECMP, how to do it? I have a simple way to slightly modify the Routing Switch App and then it can become "ECMP Routing Switch" App.

  Here is a topology as follows. If the source is PC1 and destination is PC2, we can know that the source switch is A and destination switch is B. I will base on this to explain my idea.

  First, we setup a number of multi-path , for instance, 8, and let the loop to do Dijkstra algorithm these times.
  Second, we need to add a new chosen flag to record nodes in the path that we have picked up, and get rid of the source and destination node. And also, when Dijkstra algorithm is running, we also need to add a condition to avoid from choosing the node whose chosen flag is true.

For instance, Path 1 is A->B->C->D. We need to add flag on B and C as true.

[Trema] Provide a monitoring application to watch port and flow loading

I currently provide a initial version of monitoring application to watch port and flow loading information. Here are some items about the configuration and criteria for sending notification.

The configuration
port_percentage_conditionthe threshold of port loading percentageport_setting_feature_ratethe speed rate of portflow_bit_rate_conditonthe threshold of flow loadingflow_times_conditionhow many seconds will flow become big flow when being over the threshold of flow loading
The notification criteria of Port Loading
Check port loading per 4 secondsCalculate the percentage of port loadingport_bit_rate = avg_rx_bytes * 8port_loading_percentage = port_bit_rate * 100 / port_feature_rateIf the port loading percentage is higer than port_percentage_condition, then it sends port loading notificationThe notification criteria of Flow Loading
Check port loading per 4 secondsCalculate the flow loading ( flow_bit_rate )flow_bit_rate = bytes_count * 8 / duration secondsIf flow_bit_rate  is bigger than…

[Introduction] ar and ranlib

ar and ranlib
ar this program can do the following actions to the archive (static library)
create, modify, and extract.Following is a list of several commonly used options explained:
d: deleteRemove files from the archiver: replaceInsert archive files to be replacedu: updateoption 'r' is usually to replace all, but the option u only will be inserted over the files in the archive inv: verboseThe implementation, as well as additional information for example:
   > ar uv mylib.a first.o second.o

These directives is to establish two obj file into a mylib.a, and shows the implementation of the process information

ranlib generates an index to the contents of an archive and stores it in the archive. The index lists each symbol defined by a member of an archive that is a relocatable object file.

You can use nm-s or nm, - print-armap Include to list this index

To run this program is to increase the speed of linking to the library and allows routines in the library can call each other witho…

[Cucumber] An brief introduction
I just saw the "Cucumber" and was amazed by its power of scenario testing with human-readable syntax and sentences. It is so amazing...
If you guys want to do the job for testing, that is a good choice~

For more information in details, please also check it out:

How to install Cucumber
sudo apt-get install libxslt1-dev libxml2-dev racc
sudo apt-get install gem
sudo gem install gherkin
sudo gem install cucumber./script/generate cucumber
rake features

[How To] Add ZeroMQ in Trema App

If someone wants to add the mechanism of ZeroMQ to send message from Trema Application, for instance, Routing_Switch, there are several things that need to do and I have tested OK.

Example Trema App: Routing_Switch

1. Install ZeroMQ
Please follow the instruction from the offical web site: 2. Modify its Makefile: 
add the include folder location of ZeroMQ :CFLAGS = $(shell $(TREMA)/trema-config --cflags) -I/home/liudanny/SourceCode/zeromq2-1/include -I../topology -g -std=gnu99 -D_GNU_SOURCE -fno-strict-aliasing -Werror -Wall -Wextra -Wformat=2 -Wcast-qual -Wcast-align -Wwrite-strings -Wconversion -Wfloat-equal -Wpointer-arithadd library name of zeroMQ and link it:LDFLAGS = $(shell $(TREMA)/trema-config --libs) -lzmq -L../topology -ltopology 3. Write your ZeroMQ code in Routing_Switch.