RSSAmplifier

Blog

Srivats P

Personal website of Srivats P - programmer, runner, creator

srivatsp.comRSS feed ↗66 posts

Latest posts

Enabling extra repos for RHEL on OBS

It took me a bit of time and effort to figure this out, so thought I’d post it for other people’s benefit (and for future-forgetful-me!). If you use Open Build Service (OBS) to build Linux RPM packages on RHEL-compatible distros like Alma Linux or Rocky Linux and your builds fail due to dependencies not being found, read on. This might help. Starting RHEL 8, RedHat (and clones) shifted to a…

veth on MacOS

Linux virtual-Ethernet (veth) interfaces are quite useful for a variety of purposes - for me, that’s to test Ostinato . I recently discovered MacOS also supports something similar - though they are called Fake Ethernet (feth) there. Not much information is available on these interfaces and their capabilities, but they do seem to work like basic veth pairs on Linux. Here’s how you can create…

Saving Ostinato port config

Back in Feb, as I was telling yet another customer that the easy way to start with Ostinato Python API is not to write python script from scratch, but to save your streams as a python script from the GUI, I remembered that python code is generated only for streams, not for emulated devices or port settings. High time I fixed that. File Format infra The infra is already there. I just need to do…

C++ Enum Support in LuaBridge2

Recently I was doing some work to add support for Lua scripting to the Ostinato network traffic generator . Although there are several solutions for Lua bindings for C++ out there, I decided to go with LuaBridge . Note that there is a fork of LuaBridge called LuaBridge3 , but it requires C++17 and with Ostinato I target a wide variety of platforms some of which are old and still use C++11. So I…

QtScript to QML Migration - Notes from the Trenches

Ostinato uses the QtScript module to support custom protocol userscripts . Qt5 had deprecated the QtScript module and replaced it with a new Javascript engine in the QML module. With Qt6, the QtScript module has been removed. To migrate Ostinato from Qt5 to Qt6, I needed to figure out the migration changes for QScriptEngine and related classes which were part of QtScript. A search for a migration…

doori

The backstory Watch the video first! The other day while I was browsing my LinkedIn feed, it stuck me suddenly that the logo for dori.ai is very similar to the Doordarshan (DD) logo. I was about to comment on this similarity on a WhatsApp group of friends and former colleagues. Instead, I spent an hour making this video! 🤷🏽 The title doori is of course a portmanteau of Dori and Doordarshan. A…

PCAP import - a crash and a flash

A few months ago an Ostinato customer reported the Ostinato GUI crashing when importing a large PCAP file (~600MB). After a few failed attempts at reproducing the error on Linux, I realized the customer was using Windows and switched to that. I was able to reproduce the crash with Ostinato on Windows - both with intelligent import enabled or disabled and set out to debug the same. I started with…

Making Ostinato's variable fields more flexible

The Problem Back in 2020, Javor wanted to test 2 million CGNAT scale using Ostinato but was running into a problem generating the flows he wanted. The stream just generated sequentially flows one by one like this for example: src-ip_1, src port 30001 -> dst-ip_1, port 1001 src-ip_2, src port 30002 -> dst-ip_2, port 1002 src-ip_3, src port 30003 -> dst-ip_3, port 1003 But I don’t want this. I would…

Ostinato Timed Transmit

Back in May, I implemented Transmit Duration in Ostinato. This was a pre-requisite to the next feature I planned to implement - Timed Transmit . I even teased a GUI image fragment. Unfortunately, 2 months passed before I could start working on Timed Transmit ( Solopreneur, juggling multiple hats! )! What’s Timed Transmit? The user specifies a time duration for Transmit and the agent automatically…

A Qt app with auto-resizing docks

Most desktop apps have a main window with one child window which displays the document surrounded by toolbars, toolboxes and palettes. You know what I’m talking about. Here’s an image from the Qt documentation. Ostinato (a desktop app built using Qt), however, has a main window with 3 dock windows ( QDockWidget ) - Ports & Streams , Port Statistics and Logs , but no central widget. When Ostinato…

Ostinato Show Transmit Duration

The Ostinato latency and jitter feature sends a timing tagged (TTAG) packet roughly every 5 seconds. While implementing the feature, I often had to keep track of the transmit duration to make sure that enough number of timing packets were sent out for the test case I was trying to verify. Manually tracking time was doable, but not ideal - so I added Show running Transmit Duration as a future…

Marketing to Developers

As a product creator with an engineering background, I’m always trying to learn more about good marketing. So when I saw this tweet from Kelsey Hightower, I got spelunking into the many many replies to it - from developers themselves! Although my product Ostinato is not targeted at developers but network engineers - the latter audience I believe is similar enough for the replies to be useful to…

Generate RARP (Reverse ARP) packets

Recently, Ostinato customer Barry sent me this email - I want to generate RARP request packets. I created an ARP packet in a stream. Saved the stream as a PCAP file. Hex edited the PCAP file to change the type to 0x0835. Imported and tried to send. It is not working. Do you have a suggestion? RARP (Reverse ARP) is a very old protocol that is not used these days and so Ostinato does not support it…

Ostinato goes Turbo at 100Gbps

Happy New Year! In true geek fashion, I spent the Christmas holidays tinkering - this time on the Ostinato network traffic generator’s high-speed add-on - Turbo Transmit . And I’m happy to share that Ostinato Turbo can now generate 100Gbps ! What was the trick you ask? Horizontal scaling - using multiple cores. The scaling problem The base Ostinato software can use a max of only one core per port…

Ostinato show reserved ports broken in 1.3.0

Close on the heels of releasing Ostinato v1.3.0 , I discovered a regression - the Show Reserved Ports Only feature is broken. When this option is selected in v1.3.0 - the port list is shown correctly, but the port statistics is empty. On investigation, it looks like this regression was introduced as part of the Port Stats UI improvement changes that went into 1.3.0. It was some minor code…

Latency and Jitter test

Like most products, the number of new features requested for Ostinato is long. The effort to implement these also vary widely. Earlier this year I decided to implement one big feature for the next Ostinato version and I zeroed in on latency and jitter measurement . The reason why this is big is because this requires timestamping packets which is an infra piece not yet supported in Ostinato. Also,…

Ostinato Port Stats UI improvements

Recently Ostinato user Ezra gave me some feedback about the Ostinato Port Stats UI - I find it very unreadable when for every parameter there is Rx and bellow Tx. I think it would be much clearer if all TX (byte, packets, whatever) will be on top and then all Rx (packets, byte, etc..) will be below. I would order it as bellow. With the current order it is very difficult to see in a glance the…

Ostinato RX stream stats always zero

Ostinato user Leslie reached out to me to report that Ostinato per-stream stats are not working on the RX side (always 0) with VLAN-tagged packets on Ubuntu 22.04 LTS. Upon investigation, it turns out to be a libpcap issue. But first, a bit of background. To implement per-stream statistics, Ostinato tags these packets with the magic value of 0x1d10c0da as the last 4 bytes of the packet, just…

Ostinato in a container

For a long time now, I’ve been wanting to package Ostinato as a container. But never got around to it. Until now. As 2022 came to a close, I took the plunge, installed Docker , read a few tutorials and created my first container, packaging the Ostinato agent Drone . Packaging the agent ( Drone ) and the Ostinato GUI together took a few days as I needed to figure out how best to package a X windows…

Distinguish field names for combo protocols

A few days ago, Ostinato user João reached out on Twitter and requested for a way to distinguish between SVLAN and CVLAN fields for a VlanStack protocol when trying to configure the vlan field to vary across packets . So I made some code changes for “combo” protocols such as VlanStack (SVLAN+VLAN), IPv4over4, IPv4over6 etc. For cases such as IP 4over4, the prefix Outer / Inner is used instead.…

Ostinato 1.2.0 released

It’s been more than 2 years since the last Ostinato release - v1.1. I’m happy to announce the release of Ostinato 1.2.0 with many new features. Here are some of them - 🧱 Send IP/GRE packets 📈 New per-stream stats - duration, avg tx/rx pkt/bit rates 🔀 IMIX traffic made easy Details 🔎 Bulk edit packets using Find & Replace Details 💯 Port traffic rate configuration as load % Details 🕑 Export…

Using Ostinato with mininet

I’d heard about mininet off and on, but had never really tried it myself. Mininet is a Linux based network emulator which creates a network of virtual hosts, switches, controllers, and links all on a single Linux host. It does this using containers (namespaces essentially) and connects them using veth pairs. An Ostinato user was trying to use Ostinato with mininet and was not seeing flows on the…

Ostinato Themes

Amongst mostly positive Ostinato reviews on Capterra , Ostinato user Tamás mentions that the Ostinato UI looks “old school”. And I agree. Ostinato uses Qt as the GUI toolkit. It uses Qt widgets and was built for Desktops before QtQuick for mobile first GUIs became available. Being the one-man-band of Ostinato and having the wisdom gleaned from being a programmer for 30+ years, I know that redoing…

Import and export PCAP files with nanosecond timestamps

Ostinato has supported importing and exporting PCAP files since 2011. In 2020, I added support to import non-PCAP format (e.g. pcapng) capture files by converting them to PCAP files internally. Ostinato customer Orhan recently reached out to me to investigate why an imported PCAP file when exported back to PCAP after editing the packets in Ostinato had incorrect timestamps. After debugging, I…

Edit PCAP using Ostinato

A popular use case for Ostinato is to import and replay PCAP (packet capture) files - and that’s one reason why Ostinato is Wireshark in Reverse ! Sometimes you need to edit the packet contents before you replay e.g. changing IP or MAC addresses, TCP/UDP port numbers etc. You can do that with Ostinato after you import the PCAP file. However, you need to edit each imported packet individually (each…

Send IGMP packets

I have always written quick ‘n dirty scripts and small utilities for myself, all through my career and even earlier in college. As a matter of fact, Ostinato is one such tool that just kept growing bigger and bigger 😺! But before there was Ostinato, there was a IGMP packet generator that I wrote to verify IGMP Snooping on networking devices. I recently discovered the source code for this tool in…

Generate IMIX traffic with Ostinato

Ostinato can craft packets and generate network traffic for various protocols at various packet sizes. But first things first. What is IMIX traffic? IMIX or Internet Mix is a traffic profile representing typical Internet traffic. It’s a mix of specific packet sizes and number of packets of that size. Whether the traffic profile truly mirrors the Internet traffic is debatable, still having a…

Ostinato at FOSDEM 2021

Earlier this year I gave a talk at FOSDEM 2021 on how to add more protocols to the Ostinato traffic generator . FOSDEM is one of Europe’s largest volunteer-driven open source and free software conferences. The video and slides are posted on the Ostinato website .

How to generate Geneve encapsulated packets

A decade or so ago, virtualization took the world by storm and that introduced multiple L2 tunneling encapsulations such as VxLAN, NVGRE and STT. In 2020, IETF also standardized GENEVE ( Generic Network Virtualization Encapsulation ). See RFC 8926 for details. Before you dismiss this as yet another L2 tunnel encapsulation, know that AWS already uses Geneve! Similary to VxLAN, Geneve is carried as…

Ostinato at SharkFest 2020

It’s been almost a year, but I just realized that I hadn’t posted about my Ostinato talk at Sharkfest 2020 here on my blog. As a long time Ethereal/Wireshark user and Gerald Combs fan, I’ve always wanted to attend Sharkfest , but being based in India I never had the opportunity. But COVID-19 turned all conferences virtual including the 2020 edition of SharkFest - thus, I was able to not just…

How to open PCAP files in Ostinato on EVE-NG, GNS3 and CML

This post is written for EVE-NG. But the procedure is exactly same for GNS3 and CML as well. Ostinato (standard) for EVE-NG runs the Ostinato GUI controller and Drone agent within a VM accessed via VNC. This makes it very easy to use for almost all workflows. However, it introduces an extra step for the following Ostinato workflows - Open PCAP files for edit/replay Save Ostinato streams Save…

Test SDWAN using application traffic

Did you know that you could generate application traffic using Ostinato to test your SDWAN and application aware routing deployments? In this post, I’m going to show you how. Note that the application traffic generated by Ostinato will be stateless, synthetic traffic for the purpose of allowing your SDWAN edge nodes to detect the application and trigger the right policy — so you can verify your…

Staircase style traffic with Ostinato

A few weeks ago, Ostinato user Peter asked me - I basically want to send traffic at different traffic % load for a specific interval of time. 10 seconds 10% 1G, 10 seconds 20% 1G, through 10 seconds 90% 1G and then back down to 10% and repeat . Is there a way to do that through the [Ostinato] GUI? I sent him instructions to do so and figured it might be useful for others too, so posting here as…

A deeper understanding of the OSI 7-layer model

In the previous post, I talked to Graham Cassells - a Cisco Networking Academy teacher in Australia, who is using Ostinato in his classes. I also talked to his students at Lake Tuggeranong College about their course, the tools and the topics that interest them. This is a bright set of kids! They’re interested in IT, Networking, cyber-security, and they’re keen to understand how hacking and…

Ostinato improves networking students' understanding and skill level: Graham Cassells

Graham Cassells is a CCNA and teacher of networking and cyber security at high schools and TAFE (vocational training for adults) for the last 20 years. He currently teaches the Cisco Networking Academy program at Canberra’s Lake Tuggeranong College in Australia. He has been using Ostinato in his classes and was gracious enough to answer my questions via email. I asked him about the Cisco…

A bigger nudge to check the logs

In Ostinato version 1.0, I added a Logs window to the UI so that errors/warnings could be notified to the user. Since most often the logs window is hidden behind a tab, I added a blinking icon to the tab whenever there was an error or warning. But, there at the bottom there - that’s easy to miss. With the upcoming Ostinato 1.1, you won’t - It may seem like a small thing. But small things matter.…

Test NAT using Ostinato

Recently, Ostinato customer Javor reached out to me and wanted advice on how to configure traffic stream(s) to test 2 million NAT sessions. A NAT session is based on the 5-tuple (SrcIP, DstIP, Protocol, SrcPort, DstPort) . One NAT session is created per unique 5-tuple. His first attempt was to configure the Src/Dst IP as random but he ran into a known Ostinato bug that causes incorrect TCP/UDP…

Qt model view and cut copy paste

I’ve spent the last few weeks implementing cut-copy-paste in Ostinato . While Qt (the cross-platform library that Ostinato uses for the UI) has great documentation, how to implement cut-copy-paste was not so obvious. Especially with Qt Model-Views which is used extensively by Ostinato. I hope this post will help you, if you are looking to do something similar. The first thing to know is that the…

Cut Copy Paste with Ostinato - video

In the last few weeks, I added cut, copy, paste support in Ostinato . It’s available for streams, device groups, statistics and logs. Menu actions are available in the Application Edit Menu and in the context menu for some of the windows. Irrespective of whether the menu item is available or not, you can always hit shortcut keys for your platform (e.g. ctrl-c, ctrl-v for Windows and cmd-c, cmd-v…

Be More

Based off a conversation with a friend -

Ostinato Device Emulation - Video tutorial

There have been indications (and some direct feedback) that there isn’t enough documentation about Ostinato and it’s various features. While there is the Ostinato User Guide , I believe people are looking for a tutorial or HOW TO kind of documentation. So here goes … When a question about Ostinato device groups was posted recently on the forum, I decided that it was time to make a tutorial about…

Brown Boy (Blaft)

My friend P S Nissim self-published a Kindle short - Brown Boy back in 2017. Earlier this year it was picked up and republished by Blaft - an indie publishing house based in Chennai. Working with Nissim and the publisher, I redesigned the cover art ( click the image to enlarge ) Cover Design: Srivats P Here’s the old Brown Boy cover for comparison.

Crafting VxLAN packets using Ostinato

This post was originally published in Sep 2011 at the Inficone, but that site is now off the Internet; so reposting it here. The buzzwords these days are “virtualization” and “cloud”. At the recently concluded VMworld 2011, VMware and Cisco announced the VxLAN technology which was developed to address scalability problems in today’s data centers. Virtualized data centers today using traditional…

Analyzing VxLAN packets using Wireshark

This post was originally published in Nov 2011 at Love My Tool (rebranded as Network Data Pedia recently), but is no longer available there; so reposting it here. Since the original post, Wireshark has introduced a built-in VxLAN dissector - but this post is still instructive for how to create a Lua dissector As virtualization and cloud computing platforms are getting more and more deployed, the…

Ostinato throughput on a 40G NIC

Update (2021) : Ostinato now supports 10G, 25G and 40Gbps line-rate rate traffic using the Turbo Transmit add-on. A few weeks ago I attended the DPDK Summit in Bangalore, where M Jay from Intel loaned me a dual-port 40G interface to enable Ostinato to become a high-speed packet generator using DPDK. Thanks M Jay and Intel! If you’ve been following Ostinato for a long time, you might recall I had…

How to change the default boot option in Ostinato virtual appliance

The Ostinato virtual appliance has two boot options - Boot Ostinato (Agent + Controller) Boot Drone (Agent only) Boot Ostinato is the default and therefore is selected and if you don’t change it within 30s, the boot proceeds with the same. For some use cases you might want the default option to be Boot Drone e.g. for automation use cases using the Python API where your automation framework boots…

Hell's Kitchen

No, this is not about the cookery reality TV show. Back in 1996, for our graduate project I and Mudit wrote an arcade-style side-scroller game that we called Hell’s Kitchen I recently discovered the files in a backup archive and had the urge to play it once again. Although, I had the .exe file - this game was built to run on MS DOS. And as we know those old DOS games don’t work on recent Windows…

Ostinato API - Wait for stream transmission to finish

The Ostinato API tutorial configures a single stream to send 5 packets then sleeps for 7 seconds - assuming transmission would have finished by then - before fetching the tx/rx stats for verification. This is fine for a tutorial, but for production scenarios you will want to wait till the transmission is finished instead of waiting (sleeping) for a specified amount of time. Here’s how you can do…

How to run Ostinato in a ssh-only environment

Ostinato has a controller-agent architecture that uses a TCP connection (on port 7878 by default) for communication between them for command and control. One popular deployment of this architecture is where the agent runs on a headless server and connects to the DUT via direct ethernet links. Both the DUT and server are co-located in a lab. The GUI controller on the other hand runs on users’…

Mid Air (cover)

A cover of Paul Buchanan’s Mid Air Piano and vocals: Srivats P. Recorded on phone.