Posts

Showing posts from 2013

[Open Source] A list of useful Python Open Source Projects

Tornado is a Python web framework and asynchronous networking library
http://www.tornadoweb.org/en/stable/

a powerful interactive packet manipulation program
http://www.secdev.org/projects/scapy/

[NSX] Network Visualization Gets Physical

Image
In VMware NSX, how to let network visualization gets physical?
The answer is "Layer 2 Gateway Services". The physical switches have to implement the OVSDB and related APIs that communicate with NSX Controller so that they can provide the mapping of the segment in virtual network and VLAN in physical network. For more information in details, you can check out the following URLs.

http://networkheresy.com/2013/08/15/network-virtualization-gets-physical/


https://www.youtube.com/watch?v=QDOlggwyrVA&feature=c4-overview-vl&list=PLdYldEmmLm2lz5Bd0bzGCDKSULL52ytJT

Ivan's NSX Architecture Introduction, it is very good.
http://demo.ipspace.net/get/NSXArch

[OpenVNet] The introduction of OpenVNet

Why I pay attention to OpenVNet is because it uses Trema-Edge as OpenFlow 1.3 Controller to communicate with Open vSwitch 1.10. It gives us a great example to use Trema-Edge in Virtual Network Environment and learn more about some use cases. Please check out the following lists:

What is OpenVNet?
http://www.slideshare.net/akirayokokawa/openvnet

Offical Web Site:
http://openvnet.com/

Github Source:
https://github.com/axsh/openvnet

[Quagga] How to compile and install Quagga on Ubuntu 12.04

The following steps are the compilation and installation for Quagga on Ubuntu 12.04. Hopefully it is helpful for you.
Install all dependency(package) sudo apt-get build-dep quaggaGive the path for all configurations files and libraries used by quagga for starting. I use this one /opt/quagga .... and this is done by this comand:./configure --enable-vtysh --prefix=/opt/quagga --localstatedir=/opt/quagga sysconfdir=/opt/quaggaCreate new folder:sudo mkdir /opt/quaggaAdd new user : sudo adduser quaggaGive the priviledge for the user quagga over the folder: /opt/quagga and for the folders and subfolders you give the privilegde for all rights : reading, changing and executingsudo chown quagga:quagga /opt/quaggasudo chmod 777 /opt/quaggaThen you will be able to comiple Quagga: makesudo make install Quagga configuration -------------------- quagga version : 0.99.22 host operating system : linux-gnu source code location : . compiler : gcc compiler flags : -O…

[EVB] What is EVB?

The introduction of EVB
http://networkerhere.blogspot.tw/2012/11/impact-of-server-virtualization-on_13.html
http://blog.ipspace.net/2011/05/edge-virtual-bridging-evb-8021qbg-eases.html

Due to overlay network, EVB is becoming to die ...!? The most main reason is that VLAN is not able to scale:
http://blog.ipspace.net/2012/02/edge-virtual-bridging-8021qbg.html

There are also some similar approaches, such as, VN-Tags that can do the same thing as EVB.
http://www.definethecloud.net/access-layer-network-virtualization-vn-tag-and-vepa/

[Puppet] The studying track of Puppet

After taking some time to study Puppet a while, I become to believe more and more that it is a great auto configuration tool. The following URLs are my studying track of Puppet.

For the beginner, it is recommended to walk through for learning the basic concept
Learning Puppet
http://docs.puppetlabs.com/learning/index.html

Once you finish the above document, you probably want to do your own type and provider. Here you go:
Customer Type
http://docs.puppetlabs.com/guides/custom_types.html
Provider Development
http://docs.puppetlabs.com/guides/provider_development.html

Juniper provides its open source project for using Puppet to manage and configure the switches that support Puppet Agent. It is a very good example for you to understand how to define customer type and to implement provider.

To define customer type:
https://github.com/NetdevOps/puppet-netdev-stdlib
To implement provider:
https://github.com/Juniper/puppet-netdev-stdlib-junos

[OpenFlow 1.X] The Flow Table Usage

Image
When OpenFlow 1.0 guys try to reach the version 1.1 or more, the first question coming up with would most likely be "how to use multi-flow tables ?" Well, we could see an example in RYU OpenFlow Controller as follow: http://www.slideshare.net/yamahata/ryu-sdnframeworkupload
In page 33, there are 3 flow tables which contains match conditons and actions. It can give an initial idea for that question.






P.S: Pica8 works with Broadcom to double flow table size in its OF1.3 Switch
http://searchsdn.techtarget.com/news/2240214709/Pica8-doubles-flow-rule-capacity-in-its-new-OpenFlow-13-switch

[Info] Interface to the Routing System (I2RS)

IETF is trying to build its SDN standard by forming a group called Interface to the Routing System (I2RS) . They are going to define SDN based on networking vendor side and could effect SDN market sooner or later.  http://searchsdn.techtarget.com/opinion/IETF-SDN-standards-emerge-Southbound-protocols-NFV-service-chains?src=5174092
The Drafts:
Interface to the Routing System (i2rs) Internet Drafts

[Trema] A good example with Trema to build OpenFlow Controller ( use case )

Image
Previously I just wondered how to use Trema to build a useful and piratical solution with a good architecture for users to leverage its functionality. Well, it does exist. The following URL is a good example of a good use case containing a good architecture.
http://www.slideshare.net/chibayasunobu/developing-production-open-flow-controller-with-trema-201304160

Source Code:
https://github.com/trema/virtual-network-platform


Design:


Implementation:

[Network] EtherTypes Reference

802 EtherTypes Reference:

0x0000
-
0x05DCIEEE 802.3 length.0x0600XEROX NS IDP.0x0660
0x0661DLOG.0x0800IP, Internet Protocol.0x0801X.75 Internet.0x0802NBS Internet.0x0803ECMA Internet.0x0804Chaosnet.0x0805X.25 Level 3.0x0806ARP, Address Resolution Protocol.0x0807XNS compatability.0x0808Frame Relay ARP.0x8035DRARP, Dynamic RARP.
RARP, Reverse Address Resolution Protocol.0x80F3AARP, AppleTalk Address Resolution Protocol.0x8100EAPS, Ethernet Automatic Protection Switching.0x8137IPX, Internet Packet Exchange.0x814CSNMP, Simple Network Management Protocol.0x86DDIPv6, Internet Protocol version 6.0x8808MPCP, Multi-Point Control Protocol.0x880BPPP, Point-to-Point Protocol.0x880CGSMP, General Switch Management Protocol.0x8847MPLS, Multi-Protocol Label Switching (unicast).0x8848MPLS, Multi-Protocol Label Switching (multicast).0x8863PPPoE, PPP Over Ethernet (Discovery Stage).0x8864PPPoE, PPP Over Ethernet (PPP Session Stage).0x886FNetwork Load Balancing.0x888EEAPOL, EAP over LAN.0x88A2AoE, ATA over Et…

[Static Analysis] Tools for static analysis ( C/C++ )

Here are the list of some software tools for static analysis ( C/C++ ). FYI. Klocwork Insight ( Commercial )CppcheckLintProject Proscan-build

[dbus] The notes for DBus APIs

The previous post: [dbus] The useful information and example of D-Bus has introduced the concept and an example. This post is focused on its API.

DBusConnection:
http://dbus.freedesktop.org/doc/api/html/group__DBusConnection.html#details
The keypoint that is worth mentioning is about dealing with asynchronous message. 
The function dbus_connection_read_write_dispatch() for example does all three of these things, offering a simple alternative to a main loop.If you don't need to be asynchronous, you can ignore DBusWatchDBusTimeout, and dbus_connection_dispatch(). Instead, dbus_connection_read_write_dispatch() can be used.

Here is an example of how to use dbus watch and dbus timeout:
http://stackoverflow.com/questions/9378593/dbuswatch-and-dbustimeout-examples
#include<errno.h>#include<stdio.h>#include<stdlib.h>#include<string.h>#include<unistd.h>#include<signal.h>#include<sys/types.h>#include<sys/wait.h>#include<sys/socket.h>#include…