Tag Archives for " network testing "

10

What happens when WebRTC shifts to TURN over TCP

You wouldn’t believe how TURN over TCP changes the behavior of WebRTC on the network.

I’ve written this on BlogGeek.me about the importance of using TURN and not relying on public IP addresses. What I didn’t cover in that article was how TURN over TCP changes the behavior we end up seeing on the network.

This is why I took the time to sit down with AppRTC (my usual go-to service for such examples), used a 1080p resolution camera input, configure my network around it using testRTC and check what happens in the final reports we get.

What I want to share here are 4 different network conditions:

Checking how TURN over TCP affects the network flow

#1 – A P2P Call with No Packet Loss

Let’s first figure out the baseline for this comparison. This is going to be AppRTC, 1:1 call, with no network impairments and no use of TURN whatsoever.

Oh – and I forced the use of VP8 on all calls while at it. We will focus on the video stats, because there’s a lot more data in them.

P2P; No packet loss; charts

Our outgoing bitrate is around 2.5Mbps while the incoming one is around 2.3Mbps – it has to do with the timing of how we calculate things in testRTC. With longer calls, it would average at 2.5Mbps in both directions.

Here’s how the video graphs look like:

P2P; No packet loss; graphs

They are here for reference. Once we will analyze the other scenarios, we will refer back to this one.

What we will be interested in will mainly be bitrate, packet loss and delay graphs.

#2 – TURN over TCP call with No Packet Loss

At first glance, I was rather put down by the results I’ve seen on this one – until I dug into it a bit deeper. I forced TCP relay by blocking all UDP traffic in our machines.

TURN over TCP; No packet loss; charts

This time, we have slightly lower bitrates – in the vicinity of 2.4Mbps outgoing and 2.2Mbps incoming.

This can be related to the additional TURN leg, its network and configuration – or to the overhead introduced by using TCP for the media instead of UDP.

The average Round trip and Jitter vaues are slightly higher than those we had without the need for TURN over UDP – a price we’re paying for relaying the media (and using TCP).

The graphs show something interesting, but nothing to “write home about”:

TURN over TCP; No packet loss; graphs

Lets look at the video bitrate first:

TURN over TCP; No packet loss; video bitrate

Look at the yellow part. Notice how the outgoing video bitrate ramps up a lot faster than the incoming video bitrate? Two reasons why this might be happening:

  1. WebRTC sends out data fast, but that same data gets clogged by the network driver – TCP waits before it sends it out, trying to be a good citizen. When UDP is used, WebRTC is a lot more agressive (and accurate) about estimating the available bitrate. So on the outgoing, WebRTC estimates that there’s enough bitrate to use, but then on the incoming, TCP slows everything down, ramping up to 2.4Mbps in 30 seconds instead of less than 5 that we’re used to by WebRTC
  2. The TURN server receives that data, but then somehow decides to send it out in a slower fashion for some unknown reason

I am leaning towards the first reason, but would love to understand the real reason if you know it.

The second interesting thing is the area in the green. That interesting “hump” we have for the video, where we have a jump of almost a full 1Mbps that goes back down later? That hump also coincides with packet loss reporting at the beginning of it – something that is weird as well – remember that TCP doesn’t lose packets – it re-transmits them.

This is most probably due to the fact that after bitstream got stabilized on the outgoing side, there’s the extra data we tried pushing into the channel that needs to pass through before we can continue. And if you have to ask – I tried a longer 5 minutes session. That hump didn’t appear again.

Last, but not least, we have the average delay graph. It peaks at 100ms and drops down to around 45ms.

To sum things up:

TURN over TCP causes WebRTC sessions to stabilize later on the available bitrate.

Until now, we’ve seen calls on clean traffic. What happens when we add some spice into the mix?

#3 – A P2P Call with 0.5% packet loss

What we’ll be doing in the next two sessions is simulate DSL connections, adding 0.5% packet loss. First, we go back to our P2P call – we’re not going to force TURN in any way.

P2P; 0.5% packet loss; charts

Our bitrate skyrocketed. We’re now at over 3Mbps for the same type of content because of 0.5% packet loss. WebRTC saw the opportunity to pump more bits to deal with the network and so it did. And since we didn’t really limit it in this test – it took the right approach.

I double checked the screenshots of our media – they seemed just fine:

P2P; 0.5% packet loss; screenshot

Lets dig a bit deeper into the video charts:

P2P; 0.5% packet loss; graphs

There’s packet loss alright, along with higher bitrates and slightly higher delay.

Remember these results for our final test scenario.

#4 – TURN over TCP Call with 0.5% packet loss

We now use the same configuration, but force TURN over TCP over the browsers.

Here’s what we got:

TURN over TCP; 0.5% packet loss; charts

Bitrates are lower than 2Mbps, whereas on without forcing TURN they were at around 3Mbps.

Ugliness ensues when we glance at the video charts…

TURN over TCP; 0.5% packet loss; graphsThings don’t really stabilize… at least not in a 90 seconds period of a session.

I guess it is mainly due to the nature of TCP and how it handles packet losses. Which brings me to the other thing – the packet loss chart seems especially “clean”. There are almost no packet losses. That’s because TCP hides that and re-transmit everything so as not to lose packets. It also means that we have utilization of bitrate that is way higher than the 1.9Mbps – it is just not available for WebRTC – and in most cases, these re-tramsnissions don’t really help WebRTC at all as they come too late to play them back anyway.

What did we see?

I’ll try to sum it in two sentences:

  1. TCP for WebRTC is a necessary evil
  2. You want to use it as little as possible

And if you are interested about the most likely ICE candidate to connect, then checkout Fippo’s latest data nerding post.

WebRTC Test Automation and where it fits in your roadmap

I see mixed signals about the popularity and acceptance of test automation. It is doubly so when testing WebRTC.

Time to consider some serious WebRTC test automation.

In favor of automation

A tester automated his job for 6 years – most probably a hoax, but one that rings partially true. The moral of the story is simple – if you invest time in automating rudimentary tasks – you get your ROI back tenfold in the future.

Pin Up Casino Brasil: Onde os Sonhos se Tornam Realidade

Se você é um amante de jogos de cassino e está em busca de uma experiência única e emocionante, então você veio ao lugar certo. Apresentamos a você o Pin Up Casino Brasil, onde os sonhos se tornam realidade. Neste artigo, vamos explorar todas as razões pelas quais o Pin Up Casino é o destino perfeito para jogadores de todos os níveis de experiência.

Prepare-se para imergir em um mundo de entretenimento sem limites, onde a emoção e a diversão estão garantidas. Discutiremos a ampla variedade de jogos disponíveis no Pin Up Casino, desde as clássicas máquinas caça-níqueis até os jogos de mesa mais sofisticados. Além disso, vamos destacar as promoções e bônus exclusivos que tornam o Pin Up Casino ainda mais atrativo. Então, prepare-se para descobrir por que este cassino online está se tornando rapidamente o favorito dos jogadores brasileiros. Você está pronto para embarcar nesta jornada inesquecível? Vamos lá!

A origem e evolução do conceito de Pin Up Casino no Brasil

Pin Up Casino Brasil é o lugar onde os sonhos se tornam realidade para os amantes de jogos de cassino. Com uma ampla seleção de jogos emocionantes, bônus generosos e uma experiência de jogo de alta qualidade, o Pin Up Casino Brasil oferece tudo o que os jogadores precisam para se divertir e ganhar. Desde caça-níqueis clássicos até jogos de mesa populares, como roleta e blackjack, o cassino online tem algo para todos. Além disso, o Pin Up Casino Brasil oferece um processo de registro simples e seguro, permitindo que os jogadores comecem a jogar rapidamente e aproveitem todos os benefícios que o cassino tem a oferecer.

Com sua interface atraente e fácil de usar, o Pin Up Casino Brasil garante uma experiência de jogo suave e agradável para todos os jogadores. Além disso, o cassino online oferece suporte ao cliente 24 horas por dia, 7 dias por semana, para garantir que todas as dúvidas e preocupações sejam prontamente atendidas. Com uma variedade de métodos de pagamento seguros e rápidos, os jogadores podem depositar e sacar seus ganhos com facilidade. Não perca a oportunidade de se juntar à diversão no Pin Up Casino Brasil e começar a desfrutar de jogos emocionantes e recompensas incríveis. Faça seu registro hoje e mergulhe na experiência de cassino online definitiva!

A experiência única de jogar no Pin Up Casino Brasil

Pin Up Casino Brasil é o lugar onde os sonhos se tornam realidade para os amantes de cassino online. Com uma ampla seleção de jogos emocionantes, desde caça-níqueis até jogos de mesa clássicos, este cassino oferece uma experiência de jogo única e envolvente. Com gráficos de alta qualidade e efeitos sonoros imersivos, você será transportado para um mundo de entretenimento de primeira classe.

Além disso, no Pin Up Casino Brasil, você encontrará uma variedade de promoções e bônus generosos para aumentar suas chances de ganhar. Com um suporte ao cliente eficiente e seguro, você pode ter certeza de que sua experiência de jogo será suave e sem problemas. Não importa se você é um jogador iniciante ou experiente, o Pin Up Casino Brasil é o destino perfeito para quem busca diversão, emoção e a chance de realizar seus sonhos de vitória.

Os jogos emocionantes e variados oferecidos pelo Pin Up Casino Brasil

Pin Up Casino Brasil é o lugar onde os sonhos se tornam realidade para os amantes de jogos de cassino online. Com uma ampla seleção de jogos emocionantes, bônus generosos e uma experiência de jogo segura e confiável, o Pin Up Casino Brasil oferece aos jogadores a oportunidade de se divertir e ganhar grandes prêmios. Desde clássicos como roleta e blackjack até máquinas caça-níqueis modernas e emocionantes, há algo para todos os gostos e preferências.

Além disso, o Pin Up Casino Brasil oferece um ambiente de jogo totalmente seguro e justo, garantindo que os jogadores possam desfrutar de sua experiência sem preocupações. Com um atendimento ao cliente de primeira classe e métodos de pagamento convenientes, o Pin Up Casino Brasil torna o processo de jogar e ganhar fácil e sem complicações. Junte-se à comunidade do Pin Up Casino Brasil hoje e descubra por que é o destino preferido dos jogadores brasileiros em busca de diversão, emoção e grandes vitórias.

As vantagens exclusivas para os jogadores no Pin Up Casino Brasil

O Pin Up Casino Brasil é o lugar onde os sonhos se tornam realidade para os amantes de jogos de cassino. Com uma ampla seleção de jogos emocionantes e uma interface amigável, este cassino online oferece uma experiência de jogo excepcional. Os jogadores podem desfrutar de uma variedade de opções, desde caça-níqueis clássicos até jogos de mesa populares, como blackjack e roleta.

Além disso, o Pin Up Casino Brasil oferece promoções e bônus exclusivos, que aumentam as chances de ganhar e tornam a experiência ainda mais emocionante. Com métodos de pagamento seguros e suporte ao cliente 24 horas por dia, 7 dias por semana, os jogadores podem desfrutar de uma experiência de jogo sem preocupações. Não perca mais tempo, junte-se ao Pin Up Casino Brasil hoje mesmo e comece a transformar seus sonhos em realidade!

Em conclusão, o Pin Up Casino Brasil é o lugar onde os sonhos se tornam realidade. Com uma ampla gama de jogos de cassino emocionantes, bônus generosos e um ambiente seguro, os jogadores podem desfrutar de uma experiência de jogo excepcional. Além disso, o site oferece um suporte ao cliente dedicado e métodos de pagamento convenientes. Não perca a chance de se juntar à diversão e começar a ganhar hoje mesmo no Pin Up Casino Brasil!

That’s… about it.

We have customers who use us to automate areas of their testing, but not many. At least not as many as I’d expect there to be – WebRTC being new and all – and us looking at best practices and changing our bad ways and habits of the past when stating with green field projects.

Against automation

Why is Manual QA Still So Prevalent? – it seems like SauceLabs, who delve into general purpose browser automation, is also experiencing the same thing. Having companies focus on manual testing instead of moving to automation.

Best explanation I heard from someone? They can get a cheap tester to do the work for them by outsourcing it to a developing country and then it costs them less to do the same – just with humans.

For me, that’s taking Amazon’s Mechanical Turk a step too much. For a repetitive task that you’re going to do in each and every release (yours and of browser vendors), to have different nameless faces (or even named ones) do the same tasks over and over again?

Dog-fooding at testRTC

We’ve been around for almost 2 years now. So it is high time we start automating our own testing as well.

The first place where we will be automating our own testing is in making sure our test related feature set works:

  • Our special script commands and variables
  • Running common test scenarios that our customers use in WebRTC

Now, we have test scripts that run these tests, so we can automate them individually. Next step would be to run them sequentially with a “click of a button”. Or more accurately, an execution of a shell script. Which is where we’re taking this in our next release.

The rest will stay manual for now. Mostly because in each version we change our UI based on the feedback we receive. One of our top priorities is to make our product stupidly simple – so that our customers can focus on their own product and need to learn as little as possible (or nothing at all) to use testRTC.

Why our customers end up automating?

There are several huge benefits in automating at least parts of your testing. Here are the ones we see every day from the way our customers make use of WebRTC:

  • Doing the most basic sanity tests – answering the question “is it broken?” and getting an answer fast with no human intervention. This is usually coupled with continuous integration, where every night the latest build is tested against it
  • Scale tests – when a service needs to grow, be it to 10 users in the same session, 40 people across 20 1:1 sessions or 100 viewers of a webinar – it becomes hard to manually test. So they end up writing a simple script in our platform and running it on demand when the time comes to stress test their product
  • Network configurations – taking a script and running it in various network conditions – with and without forcing TURN, packet losses, etc. Some also add different data center locations for the browsers and play with the browser versions used. The idea is to get testing to the edge cases where a user’s configuration is what comes back to bite you
  • Debugging performance – similar to scale tests, but slightly different. Some require the ability to check the capacity of a given machine in their product. Usually the media server. There’s much to be said about that, but being able to run a large scale test, analyze the performance report testRTC produces, and then rinse and repeat means it is easier to find the bottlenecks in the system and fix them prior to deployment

Starting out with WebRTC, we’ve seen other things getting higher priority by customers. They all talk about scenarios and coverage of their test plans. Most don’t go there due to that initial high investment.

What we do see, and what effectively improves our customer’s product, is taking one scenario. Usually a simple one. Writing it in a way that allows for scaling it up. Once a customer runs it for a few days, he sees areas he needs to improve in his product, and how that simple script can expand to encompass more of his testing needs.

This is also why we try to be there with our customers every step of the way. From assisting in defining that test, to writing it and following through with analysis if need be.

Are you serious about your WebRTC product? Don’t waste your time and try us out.