Bandwidth separation for VoIP

Hi everyone!

My question would be: Is there a stable way to reserve a given amount bandwidth for VoIP connections (Viber, Skype, WhatsApp, etc.) through winbox?

I got to the point where I can flag packets that are connected to VoIP sessions, but I cannot find the way to separate them from other packets. I cannot fixate IP or MAC addresses, as VoIP sessions would be used by more users, through wifi connection.

Hello,

The hard part is to categorize your traffic. That is to says that you need to know as many “traits” as possible.

As an example, I have VoIP phones on three dedicated subnets (three sites) and my PBXs on another. That becomes easy to do QoS between all subnets.

My PBXs connect to my SIP trunk supplier; so those (static) IP addresses become “traits” also, along with protocol (UDP and ports (SIP and RTP).

Once those traits are identified, you can do mangling (packet marking based on those traits) and queue trees using the packet marks..


Look at this (https://alaincasault.com/ca/posts/, “Intermediate QoS”) for more details. The document is french/english :wink:

Cheers,

Thank You for the reply,

I am sorry for any misleading information. The problem is with voice or video calls through Skype or Viber. I need to have reserved bandwidth for these services even when the network is under heavy load.
Correct me if I am wrong, I meant VoIP sessions in the above mentioned apps. These packets have no other traits, than being flagged as VoIP packets through a mangle rule.

Subnetting is not possible, as the devices are mainly notebooks or mobile phones. And no wired VoIP phones are included in the network.

It is a possibility that I do not need to mark these packets, this only seemed a way to start reserving bandwidth.

Hello,

What I wrote was meant as a general guideline, so it’s possible it may not apply to your setup. But the caracteristics part still applies.

Unless you know how an application behaves (protocol, port, DST IP address, anything that can help to identify it), it’s going to be hard to do bandwidth reservation as it’ll get mixed up with other traffic from the client device. Harder still, a lot of these apps will use ports like TCP/443 since the developper doesn’t want it’s app blocked by firewalls. Sneaky devils!!! :smiley:

I would suggest that you create two firewall filters
#1: Chain=forward, SRC-address=<YOUR_TEST_DEVICE> Action=log, Log-prefix=“TEST_APP_UPLOAD”
#2: Chain=forward, DST-address=<YOUR_TEST_DEVICE> Action=log, Log-prefix=“TEST_APP_DOWNLOAD”

and place then at the top. It’ll generate a lot of traffic, so you could log into the router using an app like putty and copy the screen display to a text file on your computer for later analysis.

These filters will simply dump generic info about the traffic to and from that SINGLE client using a SINGLE app (the one to give reserved bandwidth to) and see if you can isolate one or more recuring traits.

That’ll be the hard part. Test often as the servers may be used in a roundrobin or load balancing fashion (like Netflix for example) and then, addresses will change. If you can list all the IP addresses used by your app, then you can build an address list and use it later on. Google it as server IPs might be made public.

The best would be a specific protocol (in your case, most likely UDP) and a specific port (not used by other common apps).

Hope this helps!!

Ciao,

Okay, thank you very much, I think I start to see your point.

Let’s pretend I can say for sure what UDP ports and addresses are active during e.g. a viber call(based on this logging method, I got some data, but still need to test on more apps and clients). How can I make them prioritized over other traffic? Does marking the packets have to do anything with this, or is that a dead end?

Hello

Packet marking is the first step. You’ll move on to queue trees where you’ll use the packet marks.

Check the url I gave you for a real step by step.

Cheers

Sent from my cell phone. Sorry for the errors.