RealServer provides support for UDP-based splitting. Splitting allows servers to transmit live data sent from other RealServers. The servers receiving data from another server are referred to as splitters. Splitting can increase flexibility and efficiency in delivering content to users.
With RealServer, the server providing live content to be split (sent to other servers) can establish a connection port for splitters to request the live streams. Splitters contact the server on this port and establish a UDP data stream.
In addition to offering recorded media files or live broadcasts sent directly from RealAudio and RealVideo Encoders, RealServer can now offer live media sent from another RealServer. This gives you greater efficiency and flexibility in delivering live broadcasts to users.
For example, a concert from Milan can be broadcast over the Internet to RealServers in New York City and Tokyo. Users in those cities connect to the RealServer closest to them, thereby getting better media quality and performance.
The ability to split media streams is an optional feature controlled by the license you purchase from RealNetworks. If you would like to add this capability to your network, contact your RealNetworks reseller or RealNetworks.
To split a media stream, you need:
All streams from the live server are broadcast to the splitter. If two servers are sending to the same server and they have a stream with the same name, the first one will be the only one split.
The following configuration file settings are required for splitting:
Setting the SplitterBufferDelay configuration parameter on the splitter is important for preventing dropouts in the media stream. The recommended value is 20 seconds; a minimum of at least 10 seconds should usually be used.
Required Splitter Setting
Setting |
Description |
SplitterSourceList | The Live Servers that this splitter should contact and split all live streams from. |
Required Source Server Settings
Setting |
Description |
SplitterAnnouncePort | Defines the server port that a splitter will contact to request the splitting of its live streams. |
SplitterControlList | Defines the valid servers that can connect and obtain split streams from this server. Any servers that contact on the SplitterAnnouncePort and are not in this list are ignored. |
The following settings should not be changed unless you need to tune or optimize the splitting system.
Splitter Tuning Settings
Setting |
Description |
[number of seconds] |
Amount of data the Splitter will buffer before releasing the stream to players. |
[number of seconds] |
The number of seconds for the splitter to wait after a stream has been stopped or interrupted. Alter only to shut down streams more quickly or streams are stopping when they shouldn't. |
SplitterSourceProbeInterval | How often the splitter requests details about live streams from a source server. This may need to be adjusted if Timeout values are changed. |
Source Server Tuning Settings
Setting |
Description |
SplitterResendBuffer | Depth of the buffer used for UDP resends in the Splitter protocol. Increase if you are getting consistent loss on all players from a split stream. |
SplitterSourceTimeout | Time before source Server stops sending data to a splitter when the splitter is not responding. |
SplitterMaxResendPPS | Maximum packets per second that a splitter source will output in response to a negative acknowledgement from a splitter. |
You can specify the splitters that are allowed to access a RealServer. If you do not limit the splitters, any splitter can access your server.
The SplitterControlList configuration setting lists the addresses of splitters that are allowed to access your Server.
If you specify a SplitterControlList configuration setting, only splitters from the specified addresses can access your Server. If you do not specify a SplitterControlList value, any splitter is accepted.
Specifies the Live Servers that this splitter should contact and split all live streams from.
To use this setting, you must purchase splitting as part of your RealServer.
Default value | none |
Range of values | Any number of pairs of any valid IP address or valid domain name and any valid port |
SplitterSourceList [{host, port}]
SplitterSourceList [{172.16.2.54,5780} {norton.prognet.com, 5781}]
Defines the server port that a splitter will contact to request the splitting of it's live streams.
To use this setting, you must purchase splitting as part of your RealServer.
Default value | 0 |
Range of values | Valid UDP port |
SplitterAnnouncePort <port#>
SplitterAnnouncePort 8090
List of splitter domain names that are allowed to access RealServer. To use this setting, you must purchase splitting as part of your RealServer license.
Default value | (none) |
Range of values | Valid IP addresses or domain addresses of the splitter computers allowed to access RealServer. <netmask> specifies wildcards |
SplitterControlList [{<address>, <net mask>},...]
where:
The bits in the IP address that correspond with the zeros in the net mask are treated as wildcards.
SplitterControlList [{121.23.101.0, 255.255.255.0}]
This example accepts all IP addresses from 121.23.101.0 to 121.23.101.255. If the net mask is 255.255.255.128, all IP addresses from 121.23.101.0 to 121.23.101.127 are accepted.
The net mask 255.255.255.255 accepts only the single IP address specified.
To allow any player to connect, do not include a SplitterControlList setting in your configuration file. To prevent any player from connecting, specify:
SplitterControlList [{0.0.0.0, 255.255.255.255}]
Amount of media, in seconds, to store in the TCP buffer for splitting. Buffering helps reduce packets loses (dropouts) over a splitter connection.
The recommended value is 20 seconds; a minimum of at least 10 seconds should usually be used. This parameter is set on the RealServer acting as a splitter for another Server.
To use this setting, you must purchase splitting as part of your RealServer license.
Default value | 0 |
Range of values | positive integers |
SplitterBufferDelay <seconds>
SplitterBufferDelay 20
Defines the number of seconds the splitter will wait after a stream has been stopped or interrupted before shutting down. Alter only to shut down streams quicker or if streams are stopping when they shouldn't.
To use this setting, you must have purchased splitting as part of your RealServer license.
Default value | 20 |
Range of values | 0-32767 |
SplitterTimeout <seconds>
SplitterTimeout 40
Determines how often the splitter requests details about live streams from a server. This may require altering if the Timeout values are changed.
To use this setting, you must purchase splitting as part of your RealServer.
Default value | 10 |
Range of values | 0-32767 seconds |
SplitterSourceProbeInterval <seconds>
SplitterSourceProbeInterval 20
Defines the depth of the buffer used for UDP resends in the Splitter protocol. Increase if you are getting consistent loss on all players from a split stream.
To use this setting, you must have purchased splitting as part of your RealServer license.
Default value | 20 |
Range of values | 0-32767 seconds |
SplitterResendBuffer <seconds>
SplitterResendBuffer 30
Defines length of time, in seconds, for the source Server to stop sending data to a splitter when the splitter is not responding.
To use this setting, you must have purchased splitting as part of your RealServer license.
Default value | 40 |
Range of values | 0-32767 |
SplitterSourceTimeout <seconds>
SplitterSourceTimeout 60
Maximum packets per second (PPS) that a splitter source will output in response to a negative acknowledgement from a splitter.
Default value | 500 |
Range of values | 250 - 5000 |
SplitterMaxResendPPS <pps>
SplitterMaxResendPPS 500
You can divide the stream capacity of your server among multiple accounts. For example, an Internet Service Provider (ISP) can buy a RealServer and allocate media streams to individuals, companies, or organizations who use their service to host Web sites on the Internet.
Allocation is an optional feature controlled by the license you purchase from RealNetworks.
You can create individual accounts and specify the number of streams allocated to each, or you can use a naming convention to allocate the same number of streams to a large number of accounts.
UserList entries cannot be added to or deleted from the Java Performance Monitor or System Manager; the UserList entry only supports changes to existing entries. For example, you can change the maximum or minimum number of connections a particular account is authorized.
To divide your media stream capacity between specified individual accounts, you need to specify the users, the location of the users' files, and the minimum and maximum number of streams each user is guaranteed.
Default value | none |
Range of values | 0-32767 |
UserList [ {<user>, <path>, <min>, <max>}, ...]
where:
<user> |
The name of the user. The key that the URL passes to RealServer to allow selection of a particular account entry. Name does not have to be a user directory and can be a string up to 1024 characters. In the URL, name is preceded by a tilde (~). For example: pnm://audio.real.com/~fred/test.ra Selects the account entry defined for the user fred and then plays the
media file |
<path> |
Relative path for the directory of user files. Creates a separate path for media files in each account, allowing the owner of the account to alter the files in his or her directory without having access to any other users' files. |
<min> |
The minimum number of streams allocated to the account. These streams are
no longer available to any general RealServer requests. If min
is 0, no streams are reserved for that account. |
<max> |
Maximum number of streams allocated to the account. This number can be from 0 to the total number of streams available on RealServer. |
UserList [{ElectroMotors, /usr/electro/ra, 2, 5}, {CityWeld, /usr/cityweld/ra, 1, 3}]
This example allocates eight streams between two businesses posting Web sites on your service.
If more than the available streams are allocated to individual account entries, RealServer logs an error and provides access to the minimum streams for those entries in UserList before the limit is exceeded. All account entries after the limit is exceeded are not allocated streams.
Warning: If you are using Authentication to control access to secured content, note that when using account hosting, the absolute paths specified in the UserList configuration setting must not reside in the directory specified by the BasePath setting; if any directory specified in UserList does reside in the BasePath directory, media files in that UserList directory will not be secure.
If you need to create a large number of accounts, and allocate the same number of streams to each, you can use a naming convention instead of listing each account individually. This function is typically used by Internet Service Providers who make RealServer available to a large number of customers.
The ability to create accounts using a naming convention is an optional feature controlled by the license you purchase from RealNetworks. If you would like to add this capability to your Server, contact your RealNetworks reseller or RealNetworks.
You can define a naming convention for most accounts, and still create individual accounts with different numbers of streams.
You can use one or both of the following naming conventions to allocate large numbers of accounts.
All accounts using this naming convention have a URL with the following format:
pnm://server.com/~account/directory/file.ra
All URL requests that begin with the same value for account
are counted against that account's stream allocation.
The files for this account must be located in the /directory/
directory relative to the path
specified in the following UserList
entry.
The following special UserList entry specifies the number of streams allocated to each account that uses this naming convention:
{ ~*, <path>, <min>, <max> }
In either of these cases, on UNIX you can use the special tilde character
(~) as the <path>
entry and the server will use the account
to look up the password entry for this user and use their home directory
to locate the content.
All accounts using this naming convention have a URL with the following format:
pnm://server.com/dir1/dir2/dir3/dir4/file.ra
All URL requests that begin with the same value for the specified number
of directory levels are counted against that account's stream allocation.
If the directory level is set to 3, then /dir1/dir2/dir3/
becomes
the unique account identifier.
The files for this account must be located in the /dir1/dir2/dir3
directory relative to the path
specified in the following UserList
entry.
The following special UserList entry specifies the number of streams allocated to each account that uses this naming convention:
{ *n, <path>, <min>, <max> }
where n
is the number of directory levels that make up the
unique account.
If you use the *n naming convention, you must use it for all files on that RealServer. URLs relative to the BasePath directory do not work.
Setting |
Description |
UserDir | Path to be appended to the path defined for the account entries defined in the UserList setting. |
UserList | List of accounts that are allocated media streams for private use. |
Path to be appended to the path defined for the account entries defined in the UserList setting. To use this setting, you must have hosting as part of your RealServer license.
Default value | (none) |
Range of values | Absolute path name |
UserDir <string>
If no UserDir is specified then RealServer looks for media files in the path specified in the UserList entry.
UserDir content
In this example, RealServer looks for media files in the subdirectory content of the directory specified in the UserList entry.
List of accounts that are allocated media streams for private use. To use this setting, you must have hosting as part of your RealServer license. This setting is used to create RealServer Hosting.
Default value | (none) |
Range of values | see example |
UserList [ {<Accnt>, <privateRApath>, <minStreams>, <maxStreams>}, ...]
There can be as many entries in this list as required. For more information on hosting, see Creating Individual Accounts.
Two special values (~* and *n) for <Accnt>
enable you to define accounts using naming conventions. You can have a large
number of accounts without having to list them individually. For more information,
see Creating Accounts Using a Naming Convention.
UserList [{~*, /usr/persacct/, 1, 2}, {ElectroMotors, /usr/electro/ra, 2, 5}, {CityWeld, /usr/cityweld/ra, 0, 3}]