This page give brief introduction to BIC client program.
- Download
- Server Locations
There are several servers running in the Internet, which are available to the public. Such as:
- 128.95.28.200:3333 (Windows)
- 210.61.227.165:3333 (Windows)
- 128.95.28.18:2345 (Linux)
- Comment
Send your comment and suggestion to liuq@u.washington.edu.
- Usage (Windows)
- Main Window.
When starting the client program, you will see:
From the File menu:
You can choose "BIC Multicast", "BIC Unicast Emulation", "BIC General Unicast", and "TCP".
"BIC Multicast" starts a layered multicast session. Make sure you can receive the multicast packets from the server
"BIC Unicast Emulation" starts a unicast-emulated multicast session. The server sends packet through unicast while the client use unicast UDP packet to emulate the join/leave actions.
"BIC General Unicast" starts a general unicast session, which does not use fixed layer rate assignement.
"TCP" starts a competing TCP session.
- Server's Address and Protocol Parameters.
In dialog box:

Input the server's IP address and port, and decide the protocol parameters.
Note, for a "TCP" session, only the IP and port are used.
For a "BIC Multicast" session, packet size and probe size is ignored, which are assigned by the server.
- Command-dependent Actions
- Pick a video file. (only for "BIC Unicast Emulation" and "BIC General Unicast" commands)
In dialog box:

Pick a video file to play.
If the "Recording" is checked, a recording file will be generated,
which can be playbacked by the client program later.
If the "Network simulation" is checked, dummy packets are sent from the server without video codec.
- Pick a multicast session. (only for "BIC Multicast" command)
In dialog box:

Pick a multicast session to join.
If the "Recording" is checked, a recording file will be generated,
which can be playbacked by the client program later.
- Decide layer setting. (only for "BIC Unicast Emulation" command)
In dialog box:

decide how many layers you want to use and the cumulative bandwidth for each layer.
Note, the base layer bitrate is fixed for a video session. You cannot change the base layer bitrate
because the video file's base layer is prerecorded while all higher layers are dynamically
generated adapting to the network bandwidth throughout the transmission.
Click the "Reset" button to restore to the system-default layer rate setting.
- Video transmission.
Finally, the video is transmitted and displayed:

There are four scrolling windows showing the statistics.
top-left window shows the layer and target sendind rate.
bottom-left window shows the real receiving rate.
top-right window shows the loss rate.
bottom-right window shows the frame rate.
You can manually disable this adapation and lock the client to receive a specific layer by unchecking the "Auto Adaptation" check box.
After "Auto Adaptation" is unchecked, you can set the client to receive at your target layer by drag the scrollbar under the "Auto Adaptation" check box.
Note, for novideo sessions, no video is displayed and the frame rate statistics window becomes empty.
Note, for "BIC General Unicast" sessions, the layer and target sending rate statistics window becomes empty.
Note, for "TCP" sessions, only the receving rate statistics window is active.
- Usage (Linux)
There is no GUI part for the Linux implementation. Part of the activities are shown through stderr, while all activities are recorded in the log files
The configuration file configc.ini controls the behavior of the client.
Here is the comments for file 'configc.ini'
[config]
# BIC server's IP address
ip=128.95.28.200
# BIC server's port
portm=3333
# set the BIC client's work mode
# if set to 1, the client works in TCP transmission mode
# if set to 2, the client works in BIC congestion control (layered multicast) mode
# if set to 3, the client works in BIC congestion control (unicast emulation) mode
# if set to 4, the client works in BIC congestion control (general unicast) mode
# default work mode is 3, i.e., unicast emulation mode.
workmode=3
# log level, from 0 to 9. The higher the level, the detailed the log
loglevel = 0
# layer rate assignment
# three formats (unit in Kbps) are accepted:
# N,B1,B2,...,BN
# E,N,B1,B2/B1
# L,N,B1,B2-B1
# For example, both 3,100,200,300 and L,3,100,100 represent 3 layers with
# rates 100, 200, and 300 Kbps respectively
# while E,3,100,2 represents 3 layers with rates 100, 200, and 400 Kbps respectively
# this setting only applies to work mode 3 (unicast emulation)
layer_rate=E,8,100,2
# packet size, default 512 bytes
# this setting only applies to work mode 3 and 4 (unicast emulation and general unicast)
pktsize=512
# probe size (how many packets in the probe), default 50 packets
# this setting only applies to work mode 3 and 4 (unicast emulation and general unicast)
probe_size=50
# trend threshold. valid setting is within range [0.55,0.8]. default 0.65.
trend_threshold=0.65
# loss sample count. loss rate is calculated whenever this number of loss event occurs.
# default 6 packets
loss_sample_count=6
# loss sample window. loss rate is calculated whenever this time period has passed.
# default 1.0 second (unit second)
loss_sample_window=1.0
# loss rate threshold. drop a layer (or decrease rate) when loss rate exceed this threshold
# default 0.05 (i.e., 5%)
loss_rate_threshold=0.05
# loss bitrate threshold. drop a layer (or decrease rate when the loss bitrate exceed this threshold)
# note, loss bitrate is the bitrate of lost packets
# default 1000000bps (unit bps)
loss_bitrate_threshold=1000000
# configure which multicast session to join
# default is 0 (zero-based index).
# this setting only applies to work mode 2 (layered multicast)
multicast_session_index=0
Some of the settings are work mode dependent, such as layer_rate, pktsize, probe_size, and multicast_session_index.
Setting "workmode" decides the active work mode for the client.
For "TCP" sessions (workmode is set to 1), only the ip and portm settins are used.
For "BIC Multicast" sessions (workmode is set to 2), setting multicast_session_index decide which multicast session to join.
For "BIC Unicast Emulation" sessions (workmode is set to 3), setting layer_rate, pktsize and probe_size are used.
For "BIC General Unicast" sessions (workmode is set to 4), setting pktsize and probe_size are used.
After the configc.ini is appropriately configured, go to the folder where the executable ccc is located and run
./ccc --app
the ccc will starts to run as a normal application.
If instead,
./ccc
is used to launch the client program, it will run in daemon mode. You need to use
./ccc --stop
to stop it.