The Initial Journey
My journey with OpenStack started in December 2015, while I was working, since one and half years, at a Software company in Pune and my friend Akanksha Agrawal told me about Outreachy and the OpenStack Community.
Motivated by her, I decided to learn OpenStack and get back to doing Open Source work that I so much loved during my college days.
The most fulfilling part of my initial journey of learning OpenStack, was when I made my first contribution to OpenStack Ironic. I had picked up a bug to work on for the OpenStack Bug Smash Mitaka Pune and with the help of OpenStack Ironic Community was able to get my patch merged in Ironic. I am really grateful to everyone from the OpenStack Ironic Community to help me get kick started. It had been a very long time since I made another first contribution to an Open Source Project.
After that I started learning Neutron, the networking component of OpenStack and that interested me a lot. As I began understanding the Neutron architecture, I got in touch with my mentor Rossella Sblendido and she further encouraged me to learn OpenvSwitch.
My Internship Project
A Switch is a device that connects multiple devices together on a computer network. In Neutron, a virtual switch connects a physical interface to a virtual interface. OpenvSwitch is a software based switch used by Neutron to implement virtual switches.
My project, Neutron – Metering agent add port statistics, requires me to use the OpenvSwitch tools to provide port statistics to the Neutron Metering Agent.
The Neutron Metering Agent is used to send metering notifications about network related metrics (These are measurable network usage data).
The Switch related meters that provide network port statistics are:
Received Packets: switch.port.receive.packets
Transmitted Packets: switch.port.transmit.packets
Received Bytes: switch.port.receive.bytes
Transmitted Bytes: switch.port.transmit.bytes
Receive Drops: switch.port.receive.drops
Transmit Drops: switch.port.transmit.drops
Receive Errors: switch.port.receive.errors
Transmit Errors: switch.port.transmit.errors
Receive Frame Alignment Errors : switch.port.receive.frame_error
Receive Overrun Errors: switch.port.receive.overrun_error
Receive CRC Errors: switch.port.receive.crc_error
Progress So far
- I have been able to set up Neutron along with its plugins ( ML2, router, metering ) and agents (Metadata agent, L3 agent, Open vSwitch agent, DHCP agent, Metering agent ) on my DevStack setup.
- I’ve been learning to use the Neutron CLI by playing around ( creating Networks, adding Routers, adding interface to Router, adding gateway to Router, examining routers, understanding namespaces, adding rules to the default security group, attaching floating ip address to public network, etc).
- I am also learning to use ovs tools: ovs-vsctl and ovs-ofctl and have setup the following Switch configuration on my DevStack :
- I’ve set up Ceilometer on my DevStack ( yet to add switch meters).
- I am working on my patch to add port statistics to the metering agent and hopefully should be able to submit the patch by the end of this week.
I am grateful to my mentor Rossella for being extremely supportive and encouraging. I’ve learned a huge bunch of things and the whole journey is amazing.
That’s all for now. I’ll be posting soon on my progress further.