Interview with Maksim Khizhinskiy – C++ developer of DPI system

Vladimir Khazov | Published: 12 October, 2017

Interview with Maksim Khizhinskiy – C++ developer of DPI systemToday, we are going to introduce to you Maksim Khizhinskiy, leading C++ software engineer of VAS Experts company. Maksim is a member of the team developing deep traffic analysis platform VAS EXPERTS DPI, in particular, he is in charge for creating of such functions as CG-NAT and BRAS.

Maksim, tell us about yourself: What University did you graduate from, where did you work, when did you get into programming, and in which projects have you participated?

Maksim KhizhinskiyI graduated from St. Petersburg State Electrotechnical Institute named after Ulyanov-Lenin My first experience in programming was in 1983, when I was working on programmed hand-held computer MK. For its time, it was a cutting-edge gadget – over 10 registers, indirect addressing, memory for up to 100 commands. My father was so interested in this device that at the end squashed numerical calculation of polynomial of degree 9 in this would-be computer. I was inspired by this process, we were discussing how to free one more pair of memory cells, what must be optimized to increase degree of polynomial and other ideas. Then, there were summer courses for seniors in Leningrad University (currently), where I have tried PL/1 on Mini Computers and Single Network of Computers.

I started working as programmer since 3rd year in the University. In the beginning of 90s, I had to quit my very interesting, but nearly voluntary job as a programmer in the research institute and started working in a bank. My wife and I, we will never forget our feelings when I got my first banking salary that was 10 times bigger than “defensive” salary. So I went on working in different banks till 2006. I can’t say the job was very interesting, but it gave me an opportunity for self-development.

My next position was in Peter-Service company (developer of MegaFon billing system), where I got to know in practice what the software industrial development is, how to work in big team, and develop for different server platforms. It is in this place that I, having an access to various processor architectures, started studying zealously (for self-development) methods to increase software performance, which led me in the world of lock-free and other unconventional algorithms.

Then, I worked on many other projects, including speech processing for iOS and Android apps, software for STB (set-top box). Now I’ve joined a team developing deep traffic analysis system in VAS Experts.

Why did you choose C++ and not other programming languages?

C++ has enchanted me when I was in the Institute in 1990 passing course of object-oriented programming (OOP), and professor chose exactly C++ as language. It has to be said that at that time (I don’t know current situation) Department of Systems Programming taught intended mathematicians not languages, but approaches, Each approach has its particular language, which nuances we learnt ourselves. So, we learnt OOP on example of C++, and Java wasn’t even in the blueprint stage. Studying out C++, I just realized that it is mine, and up to now I have never been sorry about it. Even if I were to change the language, it would be difficult — now I even think in C++.

What do you think about Java, Python, Ruby?

I can say nothing about Java, Ruby, because I don’t know them. When I see Java stack trace, I want to cry and laugh at once.

I like Python, its ideology, development. I use it, when I need to do something fast and cheap – tests, housekeeping scripts.

Currently, you are interested in lock-free data structures. Tell us, what it is, what role in programming it has, and what perspectives and opportunities it gives?

In general, lock-free data structures, or competitive data structures, — are the structures, access to which hasn’t to be synchronized from different flows, its algorithms allow to distribute concurrent requests. Traditional synchronization methods of concurrent access – mutexes, critical sections, conditional variable – actually make our multi-threaded program single-threaded, reducing performance and sometimes a lot. The only right way of multi-threaded programming is without shareable data, then each thread operates with its local data. But often it is difficult to carry out, and there are data shareable between threads. Competitive structures can help in this situation.

But lock-free data structures are not the main thing in multi-threaded programming, they are only one of many tools, which are quite dangerous. The main thing is to choose right internal program’s architecture, methods of its components interaction. This affects directly the future of your creation, whether it can be developed. For example, I’ve noticed that mutex is like cockroach: if program has mutex, it is trying to globalize, occupy more and more parts of code, it wants to be noticed. To prevent such a globalization, mutex is divided in several mutexes, which results in some strategy of its application, about which everybody always forget, because big team is working on the project. As a result project is not being developed. The reason for it is only one mutex-cockroach appearing in the project two years ago because of lack of time to think up alternative solution.

What is necessary to become an excellent programmer and work on serious projects, which qualities or aspirations?

As in any other profession, you have to love your job. Programming is being changed very rapidly: new approaches and ideas, more advanced hardware, new languages, and the old ones obtain new capabilities — one has to monitor and apply all of this to stay up to date.

What project are you working on now? What is done already and what is being at work?

Team of VAS Experts has created a great kernel of deep traffic analysis system (DPI) VAS EXPERTS DPI, on the basis of which many interesting things can be made. Using it, we can control all traffic of the carrier and do it very fast on regular server hardware! To this kernel different functions can be added – from controlling the subscriber’s access to the network and “cutting” of the traffic to ensuring the security of both the subscriber and the provider – recognizing and reflecting network attacks outside / inside the operator’s network, and full support for LESS systems.

Currently, I’m working on BRAS function. BRAS tasks depend very much on configuration of the carrier’s networks. Stage by stage we add support for all best practices, it is very good that FastDPI can do many things from the box, we just have to pack it correctly and nicely.

How does working on a telecom project, such as VAS EXPERTS DPI, differ from applied programming of software?

Truth be told, I don’t know. Any project is mostly not a programming itself, but debugging of finished program, which takes 80% of time and efforts. Development in telecom is not so specific, problems and solutions are the same during development of any server software.

If we compare development of software for server and PC, then there are differences here. Mainly, they are in volume and delays. But this differences are blended gradually, in my opinion. For example, for an Android smartphone I used the same programming techniques, the same internal program architecture and the same C ++ language as for the server, and everything has worked out perfectly, only the scale was different.

But VAS EXPERTS DPI is a network device. You are good at networks and working with them, or is it more important to understand the principles and be able to program?

I have never considered myself as a network pro, I’ve always been easy about network as a data propagation medium: got it, processed it, sent it For me, the main thing is “processed”.

In my opinion, network household differs from all the rest with utmost mismanagement and lavishness. The abundance of de facto standards and de jure standards, which often differ in important details. Also, it should be noted that there are major players in the market of hardware, which often distort standards or make their additions to them, making them mandatory for all; long life cycle of decisions; the high price of errors and omissions in the protocols – all this has to be taken into account and we have to adjust to it somehow. Perhaps, this is the main difference of “network programming”.

What development of VAS EXPERTS DPI do you see from the developer’s point of view? What else can be implemented in the new versions of the software?

SCAT gives full control over traffic and, in principle, can satisfy any reasonable fantasies of both the subscriber or provider, and the state in the person of Roskomnadzor (RKN). The key word is reasonable here. Unfortunately, if the provider’s fantasies, as a rule, are completely pragmatic and feasible, the ideas of the RKN often violate the fundamental principles of network neutrality. I mean, for example, viewing the contents of https through a mitm-attack.

On the market, VAS EXPERTS DPI competes with solutions of such producers as Cisco. Are you proud that Russian development has become so popular and easily finds its users? What is the reason for its popularity, in your opinion?

When I see prices for the devices of these producers, I’m proud! There are many reasons for it. The main is price, of course. But there are another too: we are a young, compact and ambitious company, we are more responsive to changes in the Russian market, because this is our market. Major companies, by virtue of their size and bylaws, are not as agile as we are. Although, they have some advantages: if, for example, Cisco says “do it in this way”, everyone will cry, complain, but do exactly so, and if we say that – very few people will listen. But from this one more advantage follows – we hear our customers.

What do you think about import substitution? Are Russian developers ready to substitute completely import solutions?

Depending on what and why to import. In Russia, it is turning into some end in itself. The modern globalized world has blurred a long time ago the concept of imports for high technologies.

As for readiness, if we pay attention to who works at Google, Oracle, Microsoft and other major companies, we will see a lot of our programmers. It turns out that instead of replacing “their” solutions, the reverse process occurs – the moving of “our” brains “there”. A person is always looking for a better place, and a talented programmer also looking for “where it is more interesting”.

So, we have been ready for a long time and we can substitute, the main thing is not to interfere and create a normal climate in the country.

Working “climate” is affected by non-working hours. What are you keen on? Does it help in the work?

A very simple question – for 10 years already in my free time I’ve been doing my project https://github.com/khizmax/libcds about competitive data structures. I call it a weekend and long evenings project. Sometimes I act as a popularizer telling what lies at the base of lock-free structures, how to apply them, what interesting algorithms are there.

Of course, it helps in the work – my brains are already trained on “mutex evil” and on the recognition of the data race.

If you decided to change your profession, who would you be?

In my opinion, I am in my own place – I like what I do. If it becomes boring – I will change the company, but not the profession.

Just for fun: all the tests for professional suitability, which I passed, always put my “military” skills on the first place. I don’t understand this: two years of compulsory military service in the Soviet Armed Forces they tried to make a sergeant of me – it did not work out. So they let me go as a private . Perhaps, these tests implied a different Army with different military men.

What does “being a programmer” mean to you?

As for any other profession – to burn with enthusiasm, enjoy the job, watch for professional news and new trends. A good programmer should be a fountain of ideas and crazy proposals. If to his next crazy idea you answer “try to implement it at your off-duty time” and he will do it – this is a real programmer!

Maksim, thank you very much for the interview! I think that thanks to the people like you, who are developing just for pleasure, looking for the new ways to realize their ideas and aren’t complacent, the Linux operating system and the Postgres database were created. I wish you success in developing for VAS Experts to press Cisco, Allot, Procera, Sandvine not only in our market, but in the Western as well!

To get more detailed information on advantages of VAS EXPERTS DPI and how to use it effectively on carriers networks, as well as on migration from other platforms, please, contact experts of VAS Experts – developer and providers of VAS EXPERTS DPI analysis system.