VLC RTP transmission evaluation over SDN

 

[Evaluation Environment]

In the mininet environment, there are two hosts, i.e. h1 and h2, and one switch. The link between h1 and switch is set to be lossless. The loss rate for the link between h2 and switch is set to 5%. With some settings, the hosts in the mininet can talk to the outside world. In this lab, h1 and h2 will run the VLC RTP sender program, and send the video packets to the windows environment. Later, we can see the video delivered quality is good when h1 is the sender, while the quality is poor when h2 is the sender.

 

 

[Steps]

1.      Script for mininet.

#!/usr/bin/env python

import os

from mininet.net import Mininet

from mininet.node import Controller, RemoteController

from mininet.cli import CLI

from mininet.link import TCLink

from mininet.link import Intf

from mininet.log import setLogLevel, info

 

def myNetwork():

  net = Mininet( topo=None, build=False)

 

  info( '*** Adding controller\n' )

  net.addController(name='c0')

 

  info( '*** Add switches\n')

  s1 = net.addSwitch('s1')

  # Intf( 'eth0', node=s1 ) #Some Problem

 

  info( '*** Add hosts\n')

  h1 = net.addHost('h1', ip='0.0.0.0')

  h2 = net.addHost('h2', ip='0.0.0.0')

 

  info( '*** Add links\n')

  net.addLink(h1, s1, cls=TCLink, bw=10, delay='1ms', loss=0)

  net.addLink(h2, s1, cls=TCLink, bw=10, delay='1ms', loss=5)

  info( '*** Starting network\n')

  net.start()

  os.popen('ovs-vsctl add-port s1 eth0')

  h1.cmdPrint('dhclient '+h1.defaultIntf().name)

  h2.cmdPrint('dhclient '+h2.defaultIntf().name)

  CLI(net)

  net.stop()

 

if __name__ == '__main__':

  setLogLevel( 'info' )

           myNetwork()

 

We can learn that the ip for h1 is 192.168.1.120 from the following figure. (In Guest OS)

 

2.      Open a terminal in Windows to check the Host IP address. (Host IP Address:192.168.1.106)

 

3.      Ping test to see whether h1 and h2 can talk to host system. (In Guest OS)

 

4.      Open VLC RTP receiver program in Host OS.

 

Click “Media”->”Open Network Stream”. Input “rtp://192.168.1.106:5004. Then click “Play”.

 

5.      In mininet, open two terminals for h1 and h2.

 

6.      In h1 terminal, open vlc program.

 

6.1  Click “Media”->”Stream”

 

6.2    Click Add to add one file for video streaming. (Here we add testM.f4v.) Then click “Stream”.

 

6.3   Then click “Next”

 

6.4   Choose “RTP/MPEG Transport Stream” and click “Add”.

 

 

6.5  Input the IP addess in the “Address” field. Then click “Next”. 

 

6.6   Uncheck “Activate Transcoding” and click “Next”.

 

6.7  Click “Stream to start streaming.

7.      In host OS, we can see the delivered video quality in VLC.

 

8.      With the same steps, h2 can sends the RTP video to the receiver. Then we can compare the delivered quality. From the following figure, we can see the delivered video quality is not good when the video packets are sent over the link that has loss rate is 5%.

 

 

Dr. Chih-Heng Ke

Department of Computer Science and Information Engineering, National Quemoy University, Kinmen, Taiwan

Email: smallko@gmail.com / smallko@nqu.edu.tw