VHost.xml configuration reference

A virtual host (vhost) is a separate hosting environment within Wowza Streaming Engine™ (WSE). WSE can serve multiple users from separate virtual hosting environments, and each vhost has its own set of configuration files, application folders, and log files.

A vhost's settings are stored in the VHost.xml configuration file located in the [install-dir]/conf directory. A separate VHosts.xml file in the same directory lists every virtual hosting environment on the server; include a name, configuration path, and connection limit for each vhost you configure.

For recommended values based on your server resources, see Tune Wowza Streaming Engine for optimal performance.

The properties described below apply to the latest WSE version. Some properties may not apply to earlier versions.

Contents


VHost element


The <VHost> element contains the children listed in the table below.

Element Type Description
<Description> String A text description of the virtual host environment.
<HostPortList> Container IP addresses and TCP ports WSE binds to for incoming and outgoing streaming connections. WSE can be configured for any number of TCP ports. Contains individual <HostPort> elements. See the HostPort elements table for available child elements.
<HTTPStreamerAdapters> Container HTTP streamers enabled for <HostPort> entries. Every HTTP streamer listed here can be streamed using the <HostPort> IP address and port combination. Remove an entry to disable that HTTP streaming protocol. See the HTTPStreamerAdapters elements table for available child elements.
<HandlerThreadPool> Container Handler thread pool configuration. The handler thread pool processes incoming messages.
<HandlerThreadPool>/<PoolSize> Integer Maximum number of virtual host-level threads in the handler thread pool. Set to 0 to use the server-level handler thread pool for this virtual host.
<TransportThreadPool> Container Transport thread pool configuration. The transport thread pool reads and writes data from the transport sockets.
<TransportThreadPool>/<PoolSize> Integer Maximum number of virtual host-level threads in the transport thread pool. Set to 0 to use the server-level transport thread pool for this virtual host.
<IdleWorkers> Container Idle event configuration.
<IdleWorkers>/<WorkerCount> Integer Number of threads used to generate idle events.
<IdleWorkers>/<CheckFrequency> Integer Milliseconds between system checks that monitor whether a client has been idle for <Client>/<IdleFrequency>. This value should be one-fourth or less of the <Client>/<IdleFrequency> value.
<IdleWorkers>/<MinimumWaitTime> Integer Interval, in seconds, that the server waits.
<NetConnections> Container Tuning for connections made between WSE servers, for example when using the live stream repeater. See the NetConnections elements table for available child elements.
<MediaCasters> Container Source connections made with MediaCasters. See the MediaCasters elements table for available child elements.
<LiveStreamTranscoders> Container Concurrent transcoding of live source streams.
<LiveStreamTranscoders>/<MaximumConcurrentTranscodes> Integer Maximum number of live source streams transcoded at any one time. Useful if your license allows unlimited concurrent transcodes but you want to cap them because of CPU or hardware limits, or for billing purposes. Set to 0 to allow an unlimited number of concurrent transcodes.
<HTTPTunnel> Container Keep-alive timing for tunneled connections.
<HTTPTunnel>/<KeepAliveTimeout> Integer Keep-alive time, in milliseconds, for RTMPT, RTMPTE, and RTMPS connections.
<Client> Container Client connection timing.
<Client>/<ClientTimeout> Integer Milliseconds the server waits before shutting down an unresponsive client connection.
<Client>/<IdleFrequency> Integer

Milliseconds between client idle events.

For basic video on demand (VOD) streaming, 250 for both <ClientTimeout> and <IdleFrequency> gives the best reliability-to-performance ratio. For live streaming, a value between 125 and 250 is preferable. Lower values increase how often media data is sent to clients. If you change this value, also set <IdleWorkers>/<CheckFrequency> to one-fourth of it or less — for example, a <ClientTimeout> and <IdleFrequency> of 200 pairs with a <CheckFrequency> of 50 or less.

<RTP> Container RTP connection configuration. See the RTP elements table for available child elements.
<SRTListener> Container Properties used with SRT listener mode to ingest and publish SRT streams. See the SRTListener properties table for available properties.
<HTTPProvider> Container HTTP provider timing.
<HTTPProvider>/<KeepAliveTimeout> Integer Milliseconds the TCP session is maintained after a response is sent.
<HTTPProvider>/<EndConnectionTimeout> Integer Milliseconds the TCP session validation code waits before terminating a session for inactivity.
<HTTPProvider>/<SlowConnectionBitrate> Integer Bits per second used to estimate how long flushing data from the TCP send buffer takes when determining the <KeepAliveTimeout> time.
<HTTPProvider>/<IdleFrequency> Integer Milliseconds between TCP idle events.
<WebSocket> Container WebSocket connection configuration.
<WebSocket>/<MaximumMessageSize> Integer Maximum size, in bytes, of a single WebSocket message. A larger message terminates the TCP session, which guards against memory run-up. Set to 0 to turn off the check.
<WebSocket>/<PacketFragmentationSize> Integer Reserved for future use.
<WebSocket>/<MaskOutgoingMessages> Boolean Whether outgoing messages are masked. Most modern web browsers don't accept masked messages.
<WebSocket>/<IdleFrequency> Integer Milliseconds between TCP idle events.
<WebSocket>/<ValidationFrequency> Integer Milliseconds between messages sent from the server to the browser to validate that the TCP session is still active.
<WebSocket>/<MaximumPendingWriteBytes> Integer Maximum bytes queued to be written. Exceeding this terminates the TCP session, which guards against memory run-up. Set to 0 to turn off the check.
<WebSocket>/<PingTimeout> Integer Milliseconds the WebSocket waits for a response to a ping request.
<Application> Container Client connections to applications in this virtual hosting environment. See the Application elements table for available child elements.
<StartStartupStreams> Boolean Whether streams defined in StartupStreams.xml are instantiated at server startup. Set to false to leave them unstarted.
<Manager> Container Properties used by WSE Manager. See the Manager elements table for available child elements.
<Properties> Container A container element for custom virtual host <Property> elements.

HostPort element

The <HostPortList> element contains one or more <HostPort> children. The <HostPort> element represents a host port used to stream RTMP, RTSP, and HTTP. Host ports can be configured to use SSL or TLS encryption. HTTP provider configuration is done per host port. The <HostPort> element may contain the elements listed in the table below.

Element Type Description
<Name> String A unique name for the host port.
<Type> String How the host port is used: Streaming or Administration.
<ProcessorCount> Integer Number of threads allocated to servicing connections.
<IpAddress> String IP address or domain name WSE listens on for incoming requests. Use the wildcard (*) to listen for incoming connections on all available network interfaces.
<Port> String Comma-separated list of ports.
<HTTPIdent2Response> String Utility class for parsing and converting host-port information from commands. Represents a list of host-port pairs.
<SSLConfig> Container SSL and TLS configuration for this host port. See the SSLConfig elements table for available child elements.
<SocketConfiguration> Container Detailed configuration for the socket connections this host port definition creates at runtime. Use these settings to tune the performance of the sockets that send data into and out of WSE. See the SocketConfiguration elements table for available child elements.
<HTTPStreamerAdapterIDs> String Comma-separated list of HTTP streamers this host port includes when processing HTTP requests. Can contain zero or more of the following values:
  • cupertinostreaming
  • dvrchunkstreaming
  • mpegdashstreaming
<HTTPProviders> Container HTTP providers this host port includes when processing HTTP requests. See the HTTPProviders elements table for available child elements, and Use HTTP providers with the Wowza Streaming Engine Java API for more information.

SSLConfig element

The <SSLConfig> element contains the children listed in the table below.

Element Type Description
<KeyStorePath> String Full path to the keystore file.
<KeyStorePassword> String The keystore password.
<KeyStoreType> String The keystore type. Defaults to JKS for Sun Java JRE.
<DomainToKeyStoreMapPath> String A map of domain names to SSL/TLS certificates.
<SSLProtocol> String The cryptographic protocol. Defaults to TLS (Transport Layer Security).
<Algorithm> String The encryption algorithm. Defaults to SunX509 for Sun Java JRE.
<CipherSuites> String Comma-separated list of cipher suites.
<Protocols> String Comma-separated list of SSL/TLS protocol names.
<AllowHttp2> Boolean Whether HTTP/2 is allowed.

SocketConfiguration element

The <HostPort>/<SocketConfiguration> element contains the children listed in the table below.

Element Type Description
<ReuseAddress> Boolean Whether the address of the outgoing data can be reused.
<ReceiveBufferSize> Integer Size of the memory buffers used when receiving data over the socket connection. Set to 0 to use the operating system defaults. On operating systems that support it, kernel-level TCP auto-tuning may set buffer sizes dynamically for individual connections.
<ReadBufferSize> Integer Size of the memory buffers used when reading data over the socket connection. On operating systems that support it, kernel-level TCP auto-tuning may set buffer sizes dynamically for individual connections.
<SendBufferSize> Integer Size of the memory buffers used when sending data over the socket connection. Set to 0 to use the operating system defaults. On operating systems that support it, kernel-level TCP auto-tuning may set buffer sizes dynamically for individual connections.
<KeepAlive> Boolean Whether a connection remains open when no data is being transferred. (Default: true)
<TrafficClass> Integer Classification for differentiated service based on the priority of traffic on the network.
<OobInline> Boolean Whether urgent data received on the socket is received through the socket input stream. Urgent data is discarded when this is disabled.
<SoLingerTime> Integer Milliseconds a socket waits to finish sending pending data after the close function is called on the socket connection.
<TcpNoDelay> Boolean Whether nagling is enabled. Nagling combines several small packets into a single, larger packet for more efficient transmission.
<AcceptorBackLog> Integer

Maximum number of TCP connection requests that can be pending before new requests are refused. WSE responds to TCP connection requests as quickly as possible. Don't set this below 50. Set to -1 to let the operating system control the maximum number of pending requests.

Note: The default setting of -1 isn't always the best choice. Some platforms interpret -1 as a very small maximum, which can greatly increase connection times.

HTTPProviders element

The <HTTPProviders>/<HTTPProvider> element contains the children listed in the table below.

Element Type Description
<BaseClass> String Base class of the HTTPProvider class, such as com.wowza.wms.http.HTTPServerInfoXML.
<RequestFilters> String HTTP request type limiter. To restrict the types of HTTP request your web server processes, configure the server to analyze specific criteria for each incoming request, as specified by files such as clientaccesspolicy.xml and crossdomain.xml.
<AuthenticationMethod> String Authentication method used to access this HTTP provider: none, basic, digest, block, admin-basic, admin-digest, admin-file-digest, or admin-block.

HTTPStreamerAdapters element

The <HTTPStreamerAdapters>/<HTTPStreamerAdapter> element contains the children listed in the table below.

Element Type Description
<ID> String Identity of the HTTP streamer. These values represent the HTTP streaming protocols, as well as DVR streaming from origin to edge in a live stream repeater configuration. Accepts one of the following values:
  • cupertinostreaming
  • mpegdashstreaming
  • tsstreaming
  • webmstreaming
  • dvrchunkstreaming
<Name> String Name of the HTTP streamer. Accepts the same values as <ID>.
<Properties> Container A container element for custom HTTP streamer <Property> elements.

NetConnections element

The <NetConnections> element contains the children listed in the table below.

Element Type Description
<ProcessorCount> Integer Number of threads allocated to connections.
<IdleFrequency> Integer Milliseconds between server-to-server idle events. A larger value decreases load on the server but increases the delay between the server publishing a stream and the client playing it. Raising it above the default of 250 gives the CPU more room. If you change this value, also set <IdleWorkers>/<CheckFrequency> to a value at least four times smaller.
<SocketConfiguration> Container Socket connections between servers.
<SocketConfiguration>/<ReuseAddress> Boolean Whether the address of the incoming RTP datagram can be reused.
<SocketConfiguration>/<ReceiveBufferSize> Integer Size, in bytes, of the buffer that receives incoming data. Set to 0 to use the operating system defaults.
<SocketConfiguration>/<ReadBufferSize> Integer Size of the memory buffer that contains read data.
<SocketConfiguration>/<SendBufferSize> Integer Size of the memory buffer that contains data to be sent. Set to 0 to use the operating system defaults.
<SocketConfiguration>/<KeepAlive> Integer Milliseconds a connection remains open when no data is being transferred.
<SocketConfiguration>/<TrafficClass> Integer Classification for differentiated service based on the priority of traffic on the network.
<SocketConfiguration>/<OobInline> Boolean Whether urgent data received on the socket is received through the socket input stream. Urgent data is discarded when this is disabled.
<SocketConfiguration>/<SoLingerTime> Integer Milliseconds a socket waits to finish sending pending data after the close function is called on the socket connection.
<SocketConfiguration>/<TcpNoDelay> Boolean Whether nagling is enabled. Nagling is a TCP feature that combines several small packets into a single, larger packet for more efficient transmission.
<SocketConfiguration>/<AcceptorBackLog> Integer Number of connections allowed in the backup queue.

MediaCasters element

The <MediaCasters> element contains the children listed in the table below.

Element Type Description
<ProcessorCount> Integer Number of threads allocated to MediaCasters, such as ${com.wowza.wms.TuningAuto}.
<SocketConfiguration> Container Socket connections for MediaCasters.
<SocketConfiguration>/<ReuseAddress> Boolean Whether the address of the incoming RTP datagram can be reused.
<SocketConfiguration>/<ReceiveBufferSize> Integer Size, in bytes, of the buffer that receives incoming data. Set to 0 to use the operating system defaults.
<SocketConfiguration>/<ReadBufferSize> Integer Size of the memory buffer that contains read data.
<SocketConfiguration>/<SendBufferSize> Integer Size of the memory buffer that contains data to be sent. Set to 0 to use the operating system defaults.
<SocketConfiguration>/<KeepAlive> Integer Milliseconds a connection remains open when no data is being transferred.
<SocketConfiguration>/<TrafficClass> Integer Classification for differentiated service based on the priority of traffic on the network.
<SocketConfiguration>/<OobInline> Boolean Whether urgent data received on the socket is received through the socket input stream. Urgent data is discarded when this is disabled.
<SocketConfiguration>/<SoLingerTime> Integer Milliseconds a socket waits to finish sending pending data after the close function is called on the socket connection.
<SocketConfiguration>/<TcpNoDelay> Boolean Whether nagling is enabled. Nagling is a TCP feature that combines several small packets into a single, larger packet for more efficient transmission.
<SocketConfiguration>/<ConnectionTimeout> Integer Milliseconds this MediaCaster waits when connecting to a remote service.

RTP element

The <RTP> element contains the children listed in the table below.

Element Type Description
<IdleFrequency> Integer Milliseconds between RTP idle events, which send new media data and events to an RTP or MPEG-TS session.
<DatagramConfiguration> Container Datagram socket configuration for incoming and outgoing RTP connections. See the DatagramConfiguration elements table for available child elements.
<UnicastIncoming> Container Incoming unicast UDP streams.
<UnicastIncoming>/<ProcessorCount> Integer Number of threads allocated to incoming unicast UDP streams.
<UnicastOutgoing> Container Outgoing unicast UDP streams.
<UnicastOutgoing>/<ProcessorCount> Integer Number of threads allocated to outgoing unicast UDP streams.
<MulticastIncoming> Container Incoming multicast UDP streams.
<MulticastIncoming>/<ProcessorCount> Integer Number of threads allocated to incoming multicast UDP streams.
<MulticastOutgoing> Container Outgoing multicast UDP streams.
<MulticastOutgoing>/<ProcessorCount> Integer Number of threads allocated to outgoing multicast UDP streams.

DatagramConfiguration element

The <DatagramConfiguration> element contains an <Incoming> container for incoming RTP connections and an <Outgoing> container for outgoing RTP connections. Both the <Incoming> and <Outgoing> containers accept the children listed in the table below.

Element Type Description
<ReuseAddress> Boolean Whether the address of the RTP datagram can be reused.
<ReceiveBufferSize> Integer Size, in bytes, of the incoming UDP buffer.
<SendBufferSize> Integer Size, in bytes, of the outgoing UDP buffer.
<MulticastBindToAddress> Boolean Whether WSE binds to the address specified by <MulticastInterfaceAddress> when joining a multicast stream. Unused by default, in which case the server binds to the local network interface.
<MulticastInterfaceAddress> String Local address of the network interface WSE uses when joining a multicast stream. Set this to force WSE to bind to a particular network interface.
<TrafficClass> Integer Classification for differentiated service based on the priority of traffic on the network. Applies to inbound traffic under <Incoming> and outbound traffic under <Outgoing>.
<MulticastTimeout> Integer Timeout, in milliseconds, for multicast polling.
<DatagramMaximumPacketSize> Integer Maximum size, in bytes, for a single incoming UDP packet.

SRTListener element

The <SRTListener> element accepts the properties listed in the table below.

Many of these properties are similar to those used to specify per-stream SRT settings in .stream files. They're configured separately from the .stream file settings and apply only to the SRT listener mode workflow.

Property Type Description
srtListenerLocalPort Integer Local port to listen on when publishing an SRT stream to WSE. Can be any port not already in use on the server. Required when using SRT listener mode.
srtListenerLocalIPAddress String Local IP address to use when publishing an SRT stream to WSE. Required when using SRT listener mode.
srtListenerBacklog Integer Maximum number of inbound connection requests or SRT connection handshakes a listening SRT socket can queue before they're accepted or dropped. (Default: 100)
srtPassPhrase   String Global passphrase used for encryption. Must be 10 to 79 characters long, and can contain only alphanumeric characters, periods (.), underscores (_), and hyphens (-). The value is case-sensitive and must match on the source and destination devices.
srtReceiveBufferSize Integer Receive buffer size, in bytes. Calculated as 8192 * (srtMaximumSegmentSize - 28), where 28 bytes is the IP and UDP header size. The default for srtMaximumSegmentSize is 1500. (Default: 12058624)
srtReceiveBufferSizeUDP Integer Receive buffer size, in bytes, for UDP connections. Calculated as 8192 * srtMaximumSegmentSize. The default for srtMaximumSegmentSize is 1500. (Default: 12288000)
srtLatency   Integer Latency, in milliseconds: the time taken to send and deliver a UDP packet, including the time needed to retransmit lost packets. Set this to 2.5 times the round-trip time (RTT). When peers set different values, the higher one applies to both. Minimum supported value is 120. (Default: 400)
srtMaximumSegmentSize   Integer Maximum size, in bytes, for a unit of transfer data (MTU). For MPEG-TS streams, keep the default. (Default: 1500)
srtFlightFlagSize Integer Maximum bytes that can be sent without being acknowledged. (Default: 25600)
srtMaximumBandwidth   Integer Maximum bandwidth, in bytes per second, the connection can use. Set to -1 for infinite, 0 to calculate it from srtInputBandwidth and srtOverheadBandwidth, or a value greater than 0 for an absolute limit. (Default: -1)
srtInputBandwidth   Integer When srtMaximumBandwidth is 0, sets maximum bandwidth together with srtOverheadBandwidth using the formula max bandwidth = input bandwidth * (100 + overhead bandwidth) / 100. Set to 0 to estimate input bandwidth from the rate of input during transmission. We recommend setting this to the anticipated bitrate of your live stream and keeping the default 25% srtOverheadBandwidth. (Default: 0)
srtOverheadBandwidth   Integer When srtMaximumBandwidth is 0, sets maximum bandwidth together with srtInputBandwidth using the formula max bandwidth = input bandwidth * (100 + overhead bandwidth) / 100. (Default: 25, or 25 percent)
srtTooLatePacketDrop   Boolean Whether packets that arrive late are dropped. (Default: true)
srtSendNakReports   Boolean Whether the receiver sends periodic negative acknowledgment (NAK) packet reports. (Default: true)
srtPacketLossTolerance   Integer Maximum packet reorder tolerance: the number of packets to receive after a loss before sending a loss report. Set to 0 to send the loss report as soon as a gap occurs in a sequence. (Default: 0)
srtTimestampBasedDeliveryMode   Boolean Whether SRT uses timestamp-based packet delivery mode, which preserves the time intervals between consecutive packets. (Default: true)
srtTimesToPrintStats Integer How many times stream statistics are written to the log after the stream starts. Statistics are logged once per second. Set to -1 to log indefinitely. (Default: 0)
srtDebug Boolean Whether additional detail is written to the log files for SRT workflow debugging. (Default: false)

Application element

The <Application> element contains the children listed in the table below.

Element Type Description
<ApplicationTimeout> Integer Milliseconds the server waits before shutting down an app with no client connections. Set to 0 to run until the virtual host shuts down. If unset, the Application.xml value applies.
<PingTimeout> Integer Milliseconds the server waits for a ping response from the client. This is an RTMP internal ping, not ICMP. Set to 0 to wait indefinitely. If unset, the Application.xml value applies.
<UnidentifiedSessionTimeout> Integer Milliseconds the server waits for an unidentified client session before disconnecting the application.
<ValidationFrequency> Integer Milliseconds the server waits during server-to-client validation, which sends a ping request to the client. Validation runs only if the client stops sending data. Set to 0 to disable validation. If unset, the Application.xml value applies.
<MaximumPendingWriteBytes> Integer Maximum bytes allowed to queue while waiting to be sent. A client connection that exceeds this is terminated. Set to 0 for no maximum.
<MaximumSetBufferTime> Integer Maximum client-side buffer time, in milliseconds. The check guards against stream rippers that request a very large client-side buffer to steal content, since unlimited buffer time can lead to server-side memory run-up. Set to 0 to turn off the check.

Manager element

The <Manager> element contains the children listed in the table below.

Element Type Description
<TestPlayer> Container How a URL is built for test players connecting to WSE. You can define multiple <TestPlayer> containers to manage the Server options and Secure URL interactions for the Test Playback modal in WSE Manager. See the comments in VHost.xml for details on this setup.
<TestPlayer>/<IpAddress> String

IP address or server name the test player uses to connect to the server. Defaults to ${com.wowza.wms.HostPort.IpAddress}. When Wowza StreamLock™ is configured, set this to the StreamLock certificate name, for example <IpAddress>52f51948efc92.streamlock.net</IpAddress>.

Note: Amazon EC2 instances use private and public DNS values as IP addresses. For EC2 AMIs with StreamLock configurations to work, use the private DNS value or the wildcard (*) as the IP address; bind failures occur if the EC2 public DNS value is used. Restart the server to apply StreamLock changes, as restarting the VHost doesn't apply them.

<TestPlayer>/<Port> Integer Port the test player uses to connect to the server. Defaults to ${com.wowza.wms.HostPort.FirstStreamingPort}. Nonstandard SSL/TLS ports must be set explicitly, for example <Port>9443</Port>. If StreamLock is enabled for the default streaming port (1935), keep the default. The default can be overridden when multiple streaming ports are defined for a vhost.
<TestPlayer>/<SSLEnable> Boolean Whether the test player uses a vhost port with SSL/TLS enabled, which sets the stream URL protocol to https, rtmps, or rtsps rather than http, rtmp, or rtsp. Defaults to ${com.wowza.wms.HostPort.SSLEnable}, which queries the host port in VHost.xml and resolves to true or false based on its value.
<Properties> Container A container element for custom WSE Manager <Property> elements.

Property element

The <Property> element contains the children listed in the table below. Virtual host properties are copied to virtual hosts at creation, and are available in the Java API through IVHost.getProperties().

Element Type Description
<Property> Container The container element for a single custom property.
<Property>/<Name> String Name of the property.
<Property>/<Value> Value of the property as defined by the type.
<Property>/<Type> String Type of property (Integer, Boolean, or String).