Saturday, February 28, 2015

Computer Networking 101 Part 2: "You Got Mail" - reaching the destination.

I am sure everyone knows what this icon is.  How many Email you have to read each day.  Are you able to keep your mail box at zero (0) unread mail?

Have you every wonder how Email reaches your mail box?

This post is not to explain how Email works.  With Email in mind I wanted touch another computer networking basic - reaching the destination.

Sending information from one host to another is just like sending a letter - it needs an address.  There are different kinds of addresses as I have mentioned in part 1, namely:
  • MAC address
  • IP address
  • TCP or UDP port
There are other address with different communication protocol but in general are IP based.

In a computer network there are 3 kinds of traffic
  1. Broadcast
  2. Multicast
  3. Unicast
These 3 kinds of traffic can be applied to layer-2 switching or layer-3 routing.  Layer-3 routing is much more complicated than layer-2 switching but the principle is the same and in this article I am going to treat layer-2 switching and layer-3 routing the same in the context of traffic type.

Broadcast traffic
These are the traffic that all devices on the same domain will received a copy.  In layer 2, it can be with destination MAC address ff:ff:ff:ff:ff:ff or destination unknown in which the switch has to flood the incoming packet to all port on the same domain.  In layer 3, the original packet will not be flooded but the router is going to send a layer-3 broadcast ARP packet to see if anyone knows where the destination is.  Layer-3 broadcast packet has the destination IP address as 255.255.255.255 or each IP subnet has a broadcast address.

image source: http://upload.wikimedia.org/wikipedia/commons/thumb/d/dc/Broadcast.svg/2000px-Broadcast.svg.png

All members on the same domain receives the broadcast traffic.

Multicast traffic
In layer 2 multicast is treated as the broadcast.  MAC address has a multicast bit and if it is set, the layer-2 frame is a multicast frame and layer-2 switch will not learn this address.
I work as a software developer for networking equipment company.  Often time we have to construct our Layer-2 frames.  I will always use 00:11:22:33;44:55 and I will not use 11:22:33:44:55:66 because the second MAC address the multicast bit is turned on and it will be treated as a multicast frame.  

image source: http://upload.wikimedia.org/wikipedia/commons/b/be/Multicast-multicast.png

The above diagram explains the concepts of multicast very well.  All circles are devices on the same domain but only the green circles registered to a multicast group and thus only the green circles will receive the multicast traffic.

In layer-3, there is the concept of multicast group and device will have to register to the multicast group to receive a copy of the layer-3 packet.  VXLAN relies heavily on this.  Multicast limits the flooding of the layer-3 packet to members of the multicast group.

Unicast traffic
This is the traffic type where networking equipment know exactly where the destination is and is the most efficient way of sending network traffic because it does not need to replicate the original traffic and to use unnecessary bandwidth.

image source: http://upload.wikimedia.org/wikipedia/commons/thumb/7/75/Unicast.svg/640px-Unicast.svg.png

Only one member receives the traffic.

Reaching the destination
Networking equipment makes forwarding decisions on these 3 kinds of traffic and send the traffic to the indent destination based on the unique MAC or IP address as well as the TCP/UDP ports. Traffic type has huge impact on the network resources and networking equipment vendors always wanted to find ways to streamline the traffic forwarding process as well as to maximize all the networking resources such as CPU cycles, buffers and/or memory usage.  In the case of VXLAN, since the early days of VXLAN, vendors or open source community tried to find ways to avoid IP multicast for “flooding” the IP packet to all VTEP in the same multicast group.

Networking is a huge subject and is not easy to cover it in one or two blog post.  I am hoping to lay down some important concept so that as I journey to the cloud and pick up new things in the networking area, I am able to refer to these "networking basic" posts.  I will come back to update and clarify these posts as I move on.  So stay tune.

Tuesday, February 24, 2015

Computer Networking 101 Part 1: The 7 Layers of the OSI model.



Most people are familiar with this icon.  This is the icon of wireless network but to most people this means, "I have connection to the internet" which translate to I can surf the web and get information.

My definition of computer networking is connecting 2 end points allowing them to communication with each other

There are different kinds of networks.  The most famous and popular is the internet.  There is local area network (LAN), wireless network, Metropolitan Area Network (MAN).  Regardless of what they are called or how they are implemented they serve one purpose – provide connection between end points so they can exchange information.

In the coming few blog series, I am going to bring out some basis networking concepts and terminologies.

When it comes to networking, the most important concept is the 7 Layers of the OSI model. I major in Computer Information Systems when I was in college.  Half of my classes are computer programming and half of them are business classes.  There was one elective class call “Data Communication”.  I fall in love with data communication/computer networking ever since and this one class changed my whole life.  One thing that was taught in that class was the “7 Layers of the OSI model”.

I am a software developer for networking equipment. In specific I develop firmware for enterprise grade switch and router.  I will go into switch and router later in the series.  What I found is that able to master the 7 Layers of the OSI model helps me to design and write communication software.

The definition of the 7 Layers of the OSI model can easily be found on the web (such as here) and I will not go into detail in this post but I will try to address how is the 7 Layers of the OSI model important in understanding networking?

Extracting from this website the definition of the 7 Layers of the OSI model are:

  • Layer 7: The application layer. This is the layer at which communication partners are identified (Is there someone to talk to?), network capacity is assessed (Will the network let me talk to them right now?), and that creates a thing to send or opens the thing received.  (This layer is not the application itself, it is the set of services an application should be able to make use of directly, although some applications may perform application layer functions.
  • Layer 6: The presentation layer. This layer is usually part of an operating system (OS) and converts incoming and outgoing data from one presentation format to another (for example, from clear text to encrypted text at one end and back to clear text at the other).
  • Layer 5: The session layer. This layer sets up, coordinates and terminates conversations. Services include authentication and reconnection after an interruption. On the Internet, Transmission Control Protocol (TCP) and User Datagram Protocol (UDP) provide these services for most applications.
  • Layer 4: The transport layer. This layer manages packetization of data, then the delivery of the packets, including checking for errors in the data once it arrives. On the Internet, TCP and UDP provide these services for most applications as well.
  • Layer 3: The network layer. This layer handles the addressing and routing of the data (sending it in the right direction to the right destination on outgoing transmissions and receiving incoming transmissions at the packet level). IP is the network layer for the Internet.
  • Layer 2: The data-link layer. This layer sets up links across the physical network, putting packets into network frames. This layer has two sub-layers, the Logical Link Control Layer and the Media Access Control Layer. Ethernet is the main data link layer in use.
  • Layer 1: The physical layer. This layer conveys the bit stream through the network at the electrical, optical or radio level. It provides the hardware means of sending and receiving data on a carrier network.

The importance of the 7 Layers of the OSI model comes with these 2 key words – Layer and protocol.

Layer
The OSI model  has clear definitions for each layer and each layer has it own unique function. 

It is the concept of layering that makes this 7 Layers of OSI model is so useful.  Each layer build on top of another layer. 




image source: http://media.techtarget.com/digitalguide/images/Misc/osi.gif

Communication starts from layer 7 of Host A, going down to layer 6, layer 5, layer 4, layer 3 , layer 2 and then to layer 1 with more information encoded as the data travel down the stack and then sent to Host B in which information are decoded within each layer starting from layer 1 and then go up the stack to layer 7. 

Each layer is responsible for encoding and decoding information specifically to its layer. 

This 7 Layers of OSI model is useful when applied to both hosts that are trying to communication to each other as information are encoded on each layer on the sending host and decoded accordingly on the parallel layer on the receiving host. I.E. information encoded on layer 3 of the sending host is decoded on layer 3 of the receiving host.

Protocol
Each layer has its own protocol – how to talk to the corresponding layer of the remote device. 

Protocol is essential in helping the networking equipment to make decision on how to send the information from Device A to Device B over a “network”.   What is a protocol?  Most communication protocol are defined by RFC (Request for Comment) published by IETF (Internet Engineering Task Force).  It is how all networking equipment vendor implement their features.  One time our equipment has problem with a Cisco router and after investigation, we found that the Cisco router is not doing what the RFC specified and even we are a small company, we are able to make Cisco change their router according to what RFC has specified.  This is how powerful these RFCs are.

IP is a protocol.  TCP is another protocol that builds on top of IP even we often sees TCP/IP.  UDP is another protocol that builds on top of IP. Networking functions such as firewall or load balancer also relies on these protocol definitions to provide their network services.
 
There are also a few more concepts that is related to layer and protocol and they are
  1. MAC address:

  2. IP address

  3. TCP/UDP ports

These are unique identifiers on the network and they are like your house address such that information can be delivered to you.  Without these unique addresses, data will not be send correctly to the destination.

 

Reference:

"What Is OSI Reference Model (Open Systems Interconnection)? - Definition from WhatIs.com." SearchNetworking. N.p., n.d. Web. 24 Feb. 2015.

Tuesday, February 17, 2015

My Journey to the Cloud - a slight chance for a big jump



OpenStack has 2 summits each year where developers, users and administrator gather together to share their knowledge, experience, concerns or ideas about OpenStack.

Usually the first summit is held around the April or May time frame in North America and the second summit is held around October or November time frame. Starting 2013 the second summit is held in other parts of the world such as Hong Kong and Paris.

In 2015, the first OpenStack summit will be in Vancouver Canada from May 18 to May 22.
 image source: http://www.hitechagenda.com/wp-content/uploads/2015/05/OpenStack-Summit-2015.jpeg

One thing unique about OpenStack summit is that the OpenStack community can vote for what is being presented in the summit.  While a lot of other technical conferences have the Call for Paper in which everyone can submit their speaking proposal, the sessions are selected by a committee. 

I have wanted to attend an OpenStack Summit for a long time.  I believe this is a good chance for me to get more knowledge as well as to meet different people in this OpenStack community.  Last year when I participated in the Virtual Design Master, it taught me the value of a community.

On my journey to the cloud, I am on my own.  My company will not send me to any conference.  Last year I have written 20 blogs on OpenStack and I though this will be good if I can translate what I have written into a presentation. Speaker at the OpenStack Summit got a full conference pass for free.

Well, here I am, I have submitted a proposal to present at the OpenStack Summit and the topic is “What a Beginner should know about OpenStack

I believe my presentation will be beneficial to those who are new to OpenStack.  I have learned that there are a lots of attendees to OpenStack summit are beginners.


If I can attend the OpenStack Summit, for sure I will write about my experience and share in this blog what I learned during that intense and exciting week in Vancouver.

This coming OpenStack Summit has the following tracks:


Enterprise IT Strategies
Enterprise IT leaders building their cloud business case are facing unique requirements to manage legacy applications, new software development and shadow IT within industry regulations and business constraints. In this track, we'll discuss how OpenStack is meeting enterprise IT technical requirements and cover topics relevant to planning your cloud strategy, including culture change, cost management, vendor strategy and recruiting.
Telco Strategies
Telecommunications companies are one of the largest areas of growth for OpenStack around the world. In this track, we'll feature content relevant to these users, addressing the evolution of the network and emerging NFV architecture, the global IaaS market and role of telcos, industry regulation and data sovereignty, and industry cooperation around interoperability and federation.
How to Contribute
The How to Contribute track is for new community members and companies interested in contributing to the open source code, with a focus on OpenStack community processes, tools, culture and best practices.
Planning Your OpenStack Project
If you are new to OpenStack or just getting started planning your cloud strategy, this track will cover the basics for you to evaluate the technology, understand the different ways to consume OpenStack, review popular use cases and determine your path forward.
Products, Tools & Services
OpenStack's vibrant ecosystem and the different ways to consume it are among it's greatest strengths. In this track, you'll hear about the latest products, tools and services from the OpenStack ecosystem.
User Stories
Sharing knowledge is a core value for the OpenStack community. In the user stories track, you'll hear directly from enterprises, service providers and application developers who are using OpenStack to address their business problems. Learn best practices, challenges and recommendations directly from your industry peers.
Community Building
OpenStack is a large, diverse community with more than 75 user groups around the world. In the community building track, user group leaders will share their experiences growing and maturing their local groups, community leaders will discuss new tools and metrics, and we'll shine a spotlight on end user and contributing organizations who have experienced a significant internal culture change as participants of the OpenStack community.
Related OSS Projects
There is a rich ecosystem of open source projects that sit on top of, plug into or support the OpenStack cloud software. In this track, we'll demonstrate the capabilities and preview the roadmaps for open source projects relevant to OpenStack. This presentation track is separate from the open source project working sessions, which allow the contributors to those projects to gather and discuss features and requirements relevant to their integration with OpenStack. A separate application for those working sessions will be announced.
Operations
The Operations track is 100% focused on what it takes to run a production OpenStack cloud. Every presenter has put endless coffee-fueled hours into making services scale robustly, never go down, and automating, automating, automating. The track will cover efficient use of existing tools, managing upgrades and staying up-to-date with one of the world's fastest-moving code bases and "Architecture show and tell," where established clouds will lead a discussion around their architecture. If you're already running a cloud, you should also join us in the Ops Summit for some serious working sessions (no basic intros here) on making the OpenStack software and ops tools for it better.
Cloud Security
The Security track will feature technical presentations, design and implementation discussions relevant to cloud security and OpenStack.
Compute
Computing is a broad topic, but this track will offer technical presentations, use cases, and design and implementation specific to the OpenStack Compute project. Topics will include new features, integration with tools and technologies and configuration as well as hypervisors, HA, schedulers, bare metal computing and databases.
Cloud Storage
The Storage track will feature technical presentations, use cases, design and implementation discussions relevant to cloud storage and OpenStack.
Cloud Networking
The Networking track will feature technical presentations, use cases, design and implementation discussions relevant to cloud networking, specifically topics like SDN, scale, IPv6, policies, HA and performance.
Public & hybrid clouds
The public and hybrid clouds track will cover issues and considerations unique to organizations who are making use of public or hybrid cloud infrastructure, or are considering this approach.
Hands-On Labs (90 minutes)
Hands-on Labs offers a window into OpenStack training for operators and application developers. Sessions are typically 90 minutes and set classroom style for interaction. Bring your laptop and walk away with OpenStack skills.
Targeting Apps for OpenStack Clouds
A large community of application developers and ecosystem of development tools is growing around OpenStack. This track will be for users who are building and deploying applications on OpenStack clouds, and cover topics like automating and managing application deployment, application software configuration, SDKs, tools, PaaS and big data.
Cloudfunding: Startups and Capital
This track will discuss where investors are seeing the most opportunity to fund new startups as OpenStack growth continues in new markets around the globe. The track will also cover how to source and ask for funding if you have the next hot OpenStack-related startup idea.

The above is extracted from OpenStack Call For Speaker site.