Penguin
Diff: HowToVideoLANHOWTO
EditPageHistoryDiffInfoLikePages

Differences between current version and predecessor to the previous major change of HowToVideoLANHOWTO.

Other diffs: Previous Revision, Previous Author, or view the Annotated Edit History

Newer page: version 4 Last edited on Monday, October 25, 2004 4:44:41 am by AristotlePagaltzis
Older page: version 3 Last edited on Saturday, August 23, 2003 3:47:47 pm by JohnMcPherson Revert
@@ -1,591 +1 @@
-  
-  
-VideoLAN Howto  
-  
-  
-  
-----  
-  
-!!!VideoLAN Howto  
-  
-!!written and maintained by Marc Ariberti  
-<marcari@videolan.org>  
-and Alexis de Lattre  
-<alexis@videolan.org>version 1.5 2002/05/25  
-  
-  
-----  
-''This howto describes how to use the complete VideoLAN solution.''  
-----  
-!!1. Introduction  
-  
-*1.1 What is the VideoLAN project ?  
-*1.2 About this Howto  
-*1.3 Legal notice  
-*1.4 The documentation of the project  
-*1.5 Requirements  
-*1.6 The mailing-lists  
-  
-!!2. Overview of the existing streaming solutions  
-*2.1 Unicast  
-*2.2 Broadcast  
-*2.3 Multicast  
-*2.4 Unicast IPv6  
-  
-!!3. Using channel tools  
-*3.1 Multicast and miniVLCS  
-*3.2 Broadcasting and VLANserver + VLANbridge  
-  
-!!4. Video On Demand  
-*4.1 Overview  
-*4.2 VOD with VideoLAN  
-  
-!!5. Designing a complete VideoLAN solution  
-*5.1 The VideoLAN Servers  
-*5.2 The VideoLAN Channel Servers  
-  
-!!6. Conclusion  
-----  
-  
-!!1. Introduction  
-  
-!!1.1 What is the VideoLAN project ?  
-  
-VideoLAN is a complete software solution for video streaming, developed  
-by students at the Ecole Centrale Paris and contributors from all over the world, under the General Public License ( [GPL ]). It has been designed for streaming MPEG 1 and [MPEG] 2 videos on local area networks ([LAN]), but it can be extended to metropolitan or wide area networks ([MAN], [WAN]), thanks to the multicast technology.  
-  
-  
-The VideoLAN solution includes a server, which can stream video from various sources (file, DVD, satellite and MPEG 2 encoder), a client, which can receive, decode and display MPEG 1 and MPEG 2 streams and, if necessary, a channel server which tells automatically to the client the parameters needed to receive the stream.  
-  
-  
-Here is an illustration of the complete VideoLAN solution :  
-  
- DVD --->- Unicast/Broadcast/Multicast  
- \ ---  
- File --->-- -------- / \ --------  
- |->-| Server |=====>====| LAN |---->-----| Client |  
- Satellite ->-- | (VLS) | \ / | (VLC) |  
- / -------- --- --------  
- MPEG2 -->- ^  
- encoder |  
- v  
- ----------------  
- | Channel Server |  
- | (VLCS) |  
- ----------------  
-  
-More details about the project can be found on the VideoLAN Web site.  
-  
-!!1.2 About this Howto  
-  
-  
-This Howto is designed to explain how to use the complete VideoLAN solution. It presents the different possibilities of VideoLAN and which configuration you should adopt depending on the configuration of your network.  
-  
-!!1.3 Legal notice  
-  
-Copyright (©) 2002 by the VideoLAN project.  
-  
-  
-Permission is granted to copy, distribute and/or modify this document under the terms of the [GNU] Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation ; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. The text of the license can be found on http://www.gnu.org/copyleft/fdl.html.  
-  
-  
-!! 1.4 The documentation of the project  
-  
-There are four main documents :  
-*the VideoLAN Quickstart,  
-*this VideoLAN HOWTO,  
-*the VideoLAN Server user guide,  
-*the VideoLAN Client HOWTO.  
-  
-The up-to-date version of these documents can be found on the VideoLAN Web Site.  
-  
-!!1.5 Requirements  
-!The skills  
-Basic skills on Linux and Network should be enough.  
-  
-!The VideoLAN Client  
-  
-The VideoLAN Client (vlc) works on many platforms : Linux, Windows, Mac OS X, BeOS, *BSD, Solaris, iPaq, QNX. It can read MPEG 1, MPEG 2 and MPEG 4 / DivX files from a hard disk or a CD-ROM drive, read DVDs and VCDs. But the most important function is that it can read MPEG 1, MPEG 2 and DVDs streamed on a network. vlc requires at least a Pentium 400Mhz with 32MB of RAM.  
-  
-  
-!The VideoLAN Server and mini-Server  
-  
-The VideoLAN Server (vls) can read videos from :  
-*an MPEG 1 or MPEG 2 file stored on a hard drive or on a CD,  
-*a DVD located in a local DVD drive or copied on a hard drive,  
-*a satellite card,  
-*an MPEG encoding card ;  
-and stream it on the network.  
-  
-A Pentium 100 MHz with 32 MB of memory should be enough to send one stream on the network. When streaming a lot of videos stored on a hard drive, the actual limitation is not the processor but the hard drive and the network connection.  
-  
-  
-vls works under Linux, Solaris and Windows. Currently, the Windows vls version of is only able to stream a video from a file.  
-  
-  
-The VideoLAN mini-Server (vlms) is only capable of streaming an MPEG file. vlms works on Linux only. It is easier to install and configure than vls and should be used mainly for testing purposes.  
-  
-!Get a streamable MPEG file  
-  
-vls and vlms can stream MPEG 1 or MPEG 2 files that meet two critera :  
-  
-1. the file must be MPEG __PS__ (Program Stream) or MPEG __TS__ (Transport Stream), that contain video and audio multiplexed. vls and vlms can't stream MPEG ES (Elementary Stream), i.e. a file with only audio or video. In order to know if an MPEG file is MPEG __PS__, MPEG __TS__ or MPEG __ES__, read the file with vlc and look at the messages (with the interface : Click on "View" and "Messages", or use the command line "vlc -v") and look for a line :  
- module: locking demux module `mpeg_XX'  
-If XX = ps or XX = ts, then your file is MPEG __PS__ and MPEG  
-__TS__ respectively , and you may be able to stream it. If XX = es,  
-then your file is MPEG __ES__ and is not streamable.  
-  
-2. the sequence header of the video must repeat itself regularly, which is often the case with MPEG 2, but very rare with MPEG 1. There is no easy way to know if the sequence header is repeated regularly. Files with a .vob extension are normally MPEG 2 files and files with .mpg or .mpeg extension or usually MPEG 1 files.  
-  
-  
-You can download this streamable MPEG 2 PS file for your tests: ftp://ftp.videolan.org/pub/videolan/streams/presentation/presentation_short.vob.  
-  
-!The VideoLAN Channel Server  
-  
-The VideoLAN Channel Server (vlcs) is the central architecture that manages the network. There are different versions of vlcs for different kinds of networks. For example, if your network supports multicast, you will use mini-vlcs. If your network doesn't support multicast but supports VLANs, you should use mini VLAN Server. vlcs works on Linux only.  
-  
-! The Network  
-You will need a network, which can be as small as one ethernet 10 / 100 Mbit/s switch or hub, and as big as the whole Internet! See if your network supports "multicast". The bandwidth needed is:  
-  
-  
-*6 to 9 Mbit/s for a DVD,  
-*3 to 4 Mbit/s for an MPEG 1 stream, an MPEG 2 stream (from a satellite or an MPEG 2 encoding card).  
-  
-  
-!!1.6 The mailing-lists  
-If you have problems using VideoLAN, and if you don't find the answer to your problem in the documentation, please look at the online archive of the mailing-lists. There are 3 english-speaking mailing-lists for the users :  
-*vlc@videolan.org for the questions on vlc,  
-*vls@videolan.org for the questions on vls and vlms,  
-*vlcs@videolan.org for the questions on vlcs and the network.  
-  
-The mailing lists above also have their equivalent for the developers (they also receive the commit mails):  
-  
-*vlc-devel@videolan.org for the development of vlc,  
-*vls-devel@videolan.org for the development of vls and vlms,  
-*vlcs-devel@videolan.org for the development of vlcs and the network tools.  
-  
-  
-If you want to subscribe or unsubscribe to the mailing-lists, please go to the VideoLAN Web Site  
-  
-----  
-  
-!!2. Overview of the existing streaming solutions  
-  
-  
-In this section, we assume that :  
-*a VideoLAN Client (vlc) is installed on all the client machines. Please, refer to the VideoLAN Quickstart or the VideoLAN Client HOWTO for the installation instructions.  
-*a VideoLAN Server (vls) or a VideoLAN mini-Server (vlms) is installed on a machine. Please, refer to the VideoLAN Quickstart or the VideoLAN Server user guide.  
-*you have the knowledge and the passwords to configure your network hardware (such as switches and routers).  
-  
-  
-!!2.1 Unicast  
-!What is UniCast and why use it ?  
-  
-  
-  
-UniCast is a simple protocol: the packets are sent directly from one machine to another. With VideoLAN, this mean that the source IP address is the one for the server machine, and the destination IP address is the one for the client machine. With unicast, the stream can go through routers without any problem.  
-  
-Unicast should be used when you want to send the stream to one client machine only. It is also used for Video on Demand.  
-  
-!Network hardware required  
-  
-No special feature or configuration of your network hardware is required.  
-  
-The only problem is the bandwidth. As explained in the introduction , an MPEG 1 or 2 stream needs between 3 and 9 Mbit/s. So a 10 Mbit/s Ethernet network should be enough. 100 Mbit/s would be needed if you want to stream several videos at the same time or stream one big DVD stream (a DVD stream can go up to 11 Mbit/s if there are many languages, subtitles and multiple angles).  
-  
-  
-!Server configuration  
-You can either use vlms or vls to do unicast.  
-  
-!vlms  
-vlms can only stream valid MPEG PS files stored on a hard drive.  
-  
-You can download this streamable MPEG 2 PS file for your tests: ftp://ftp.videolan.org/pub/videolan/streams/presentation/presentation_short.vob.  
-  
-In the example below, the IP address of the client machine is 10...2. The name of the MPEG file is called MPEG_file_name.  
-  
-Run vlms:  
- % vlms -d 10...2 MPEG_file_name  
-  
-If you want the server to stream the file continuously, you can use the -l option:  
- % vlms -d 10...2 -l MPEG_file_name  
-  
-or if you want to send it 3 times use the option -n 3:  
- % vlms -d 10...2 -n 3 MPEG_file_name  
-  
-!vls  
-Modify the configuration file vls.cfg by adding the following :  
- BEGIN "Channels"  
- net1 = "network"  
- END  
- BEGIN "net1"  
- Domain = "Inet4"  
- Type = "unicast"  
- !DstHost = "10...2"  
- !DstPort = "1234"  
- END  
-  
-Then, restart vls and start to stream a video to "net1".  
-  
-!Client configuration  
-On the client, run vlc with this command line :  
- % vlc udp:  
-You can also use the interface :  
- % vlc  
-and then click on "Net" and select "UDP".  
-  
-!!2.2 BroadCast  
-!What is broadcast and why use it ?  
-BroadCast is a very dirty method to stream video: the stream is sent to all the machines of a subnet at the same time. With VideoLAN, this means that the source IP address is the IP address of the server, and the destination IP address is the broadcast IP address of the subnet. Broadcast is considered a dirty method because all the machines of the subnet receive the stream, even the machine that don't want to watch the stream. It creates a lot of pollution on the network and some devices don't like to receive too much broadcast.  
-  
-So broadcast should be used to stream video to multiple clients at the same time ''only'' if your network hardware doesn't support multicast (see next subsection).  
-  
-!Network hardware requirements  
-No special feature or configuration of your network hardware is required. It only needs to have the necessary bandwidth, as for unicast.  
-  
-!Server configuration  
-You can either use vlms or vls to do broadcast.  
-!vlms  
-In the example below, the broadcast IP address of the subnet is 10...255. The name of the MPEG file is called MPEG_file_name.  
-  
-Run vlms :  
- % vlms -d 10...255 MPEG_file_name  
-If you want the server to stream the file continuously, do :  
- % vlms -l -d 10...255 MPEG_file_name  
-  
-!vls  
-Modify the configuration file vls.cfg by adding the following :  
- BEGIN "Channels"  
- net1 = "network"  
- END  
- BEGIN "net1"  
- Domain = "Inet4"  
- Type = "broadcast"  
- !DstHost = "10...255"  
- !DstPort = "1234"  
- END  
-Then, restart vls and start to stream a video to "net1".  
-  
-!Client configuration  
-On the client, run vlc with this command line :  
- % vlc udp:  
-You can also use the interface :  
- % vlc  
-and then click on "Net" and select "UDP".  
-  
-!! 2.3 MultiCast  
-!What is MultiCast and why use it ?  
-When you use unicast or broadcast, you can encounter the following problems :  
-*with unicast, when a lot of clients want to receive the stream, the network interface of the server becomes saturated. So the number of clients is very limited, especially when the stream is big.  
-*with broadcast on a LAN, the number of clients are not limited because all the machines of the subnet receive the stream, with only one stream going out of the network interface of the server. But the machines that do not want to receive the stream are polluted and some devices do not like to receive huge broadcasts. If you want to send several streams at the same time, the network becomes oversaturated.  
-  
-The above problems are why the multicast protocol was invented. With multicast, the packets are sent on the network to a multicast IP group which is designated by its IP address. Multicast IP addresses belong to the Class D : 224...0 -> 239.255.255.255.  
-  
-The machines can join or leave a multicast group by sending a request to the network. The request is usually sent by the kernel of the operating system. Linux (if the option "IP multicast" in the category "Networking options" is activated in the configuration of the kernel), Windows (at least 98, 2000 and XP) and MacOS X support multicast. The vlc takes care of asking the kernel of the operating system to send the join request.  
-  
-The network devices do everything necessary to keep in memory which machine belongs to which group and forwards the stream to the client. It is possible for one client to belong to several groups.  
-  
-Below is a scenario given as an example:  
-#vls sends a stream to the multicast IP address 239.255.12.42. Client n°1 and n°2 already joined the multicast group and receive the stream.  
- Server (vls) Network Clients (vlc)  
- stream --------------> 239.255.12.42 ----------> client n°1  
- |  
- --------> client n°2  
-#Client n°3 sends a "join" request to the multicast group in order to receive the stream.  
- Server (vls) Network Clients (vlc)  
- <-------------- client n°3  
- join 239.255.12.42  
-#Client n°3 now receives the stream.  
- Server (vls) Network Clients (vlc)  
- --------> client n°1  
- |  
- stream --------------> 239.255.12.42-----------> client n°2  
- |  
- --------> client n°3  
-#Client n°1 sends a "leave" request to the multicast group.  
- Server (vls) Network Clients (vlc)  
- <-------------- client n°1  
- leave 239.255.12.42  
-#Client n°1 doesn't receive the stream any more.  
- Server (vls) Network Clients (vlc)  
- stream --------------> 239.255.12.42 ----------> client n°2  
- |  
- --------> client n°3  
-  
-!Network hardware required  
-''Be careful!'' Make sure that your network devices support multicast.  
-  
-If they do not, you will have the same effect as broadcast. For example, hubs do not support multicast: if a machine connected to a hub joins a multicast group, all the machines connected to the hub will receive the stream.  
-  
-Please refer to the management guide of your switches and routers to see if they support multicast. All the recent manageable switches and routers of the big network hardware manufacturers support multicast. This document does not explain how to configure your network because it is specific to each manufacturer.  
-  
-!Server configuration  
-You can either use vlms or vls to do multicast.  
-  
-!vlms  
-Put the multicast IP address as the destination address:  
- % vlms -d 239.255.12.42 MPEG_file_name  
-Increase the [TTL] (Time To Live) value if you want your multicasted stream to go through several routers. Every router decreases the TTL by 1, and a stream can't go through a router if its TTL is 1. For this, use the -t option:  
- % vlms -d 239.255.12.42 -t 12 MPEG_file_name  
-!vls  
-In the configuration file vls.cfg, put the multicast IP address in the !DstHost field and "multicast" in the Type field.  
-  
-Do not forget to increase the TTL (Time To Live) if you want your multicasted stream to go through several routers.  
-  
- BEGIN "Channels"  
- net1 = "network"  
- END  
- BEGIN "net1"  
- Domain = "Inet4"  
- Type = "multicast"  
- TTL = "1"  
- !DstHost = "239.255.12.42"  
- !DstPort = "1234"  
- END  
-  
-Then, restart vls and start to stream a video to "net1".  
-  
-!Client configuration  
-On the client, run vlc with this command line :  
- % vlc udp:@239.255.12.42  
-You can also use the interface:  
- % vlc  
-and then click on "Net" and select "UDP Multicast" and write the multicast IP address "239.255.12.42".  
-  
-!!2.4 Unicast IPv6  
-!Basics  
-You should already have [IPv6] configured on the client and server machines and on your network. For more information see the Linux IPv6 howto.  
-  
-Unicast IPv6 was only tested under Linux, so we cannot tell if it works on other platforms. If you use another operating system with IPv6, please send us your feedback.  
-  
-!Server configuration  
-IPv6 is ''NOT'' supported by vlms. You must use vls.  
-  
-In the configuration file vls.cfg, you have to change the destination IP address to an IPv6 address, and tell the system that you want to stream using IPv6. Here is sample partial vls.cfg:  
-  
- BEGIN "Channels"  
- net1 = "network"  
- END  
- BEGIN "net1"  
- Domain = "Inet6"  
- !DstPort = "1234"  
- !DstHost = "3ffe::12"  
- END  
-  
-In this example:  
-*3ffe::12 is the IPv6 address of the client,  
-*Inet6 tells vls to use IPv6.  
-  
-Then, restart vls and start to stream a video to "net1".  
-  
-!Client configuration  
-On the client, run vlc with this command line:  
- % vlc udp6:  
-or  
- % vlc --ipv6 udp:  
-  
-If you want to specify the port on the command line of vlc, for example port 4321:  
- % vlc udp6:@:4321  
-----  
-!!3. Using channel tools  
-Channel service tools are useful when you want to stream multiple videos at the same time and enable the clients to change channel (i.e. switching from one stream to another) easily without typing IP addresses, but just using the interface and selecting a channel number.  
-  
-The channel service tool that you will use depends on your network:  
-*if your network supports multicast, you will use mini VideoLAN Channel Server (miniVLCS) ;  
-*if your network doesn't support multicast but supports VLANs, you will use a VLAN server (either the VLAN Server or the mini VLAN Server), and if your router cannot filter between VLANs, you will use a VLAN bridge in order for the clients to be able to communicate with all the other machines when watching a stream.  
-*if your network doesn't support multicast nor VLANs, then you will not be able to stream multiple videos at the same time to the clients. You can broadcast all the streams on different ports and use miniVLCS, but this is so dirty that you shouldn't even think about it!  
-  
-''Warning'' : the network tools that will be presented in this section have been tested only under Linux. We cannot guarantee they will work with other operating systems.  
-  
-!!3.1 Multicast and miniVLCS  
-If your network supports multicast, you will use the mini VideoLAN Channel Server (miniVLCS) as your channel tool. This program sends the parameters the !VideoLan Clients need in order to receive the streams.  
-  
-! Building miniVLCS  
-Download the file miniVLCS-.1.2.tar.gz from the Network download page.  
-  
-Then uncompress the archive and build the program :  
- % tar xvzf miniVLCS-.1.2.tar.gz  
- % cd miniVLCS-.1.2  
- % make  
-It creates an executable program named vlcs.  
-  
-!miniVLCS configuration  
-Edit the configuration file vlcs.conf.  
-  
-The first line corresponds to channel , the second line corresponds to channel 1, the third line to channel 2, and so on.  
-  
-  
-In each line, put what you would type on the command line of vlc,  
-except for the first line I: nostream. It means that you don't  
-stream anything in channel .  
-  
-  
-For example, if you have two multicast stream :  
-*Channel 1 : 239.255.12.42  
-*Channel 2 : 239.255.12.43  
-your vlcs.conf file would be :  
- I: nostream  
- udp:@239.255.12.42  
- udp:@239.255.12.43  
-  
-!Run mini-vlcs  
-As normal user, do :  
- % ./vlcs  
-You must restart vlcs every time you change the configuration file vlcs.conf.  
-  
-!vlc configuration  
-The simplest solution is to use the interface of vlc : click on "Net", select "Channel server", write its IP address or DNS name.  
-  
-Then, you see a new section "Network Channel" on the interface. Select the desired channel and click on Go!.  
-  
-!!3.2 Broadcasting and VLANserver + VLANbridge  
-!Overview  
-If your network doesn't support multicast but supports VLANs, you will use a VLAN server. If your network supports multicast, you will certainly ''NOT'' want to use this solution, because it is far more complex to set up and far more dangerous for the stability of your network. The VLAN solution has been tested on "our" previous network (the network of the student residence of the Ecole Centrale Paris) and worked well. But we now have a new network which supports multicast, so the VLAN solution is not tested nor developed any longer.  
-  
-In order to explain the VLAN solution, I will take the example of our previous network. This network had :  
-*an ATM 155 Mbit/s backbone,  
-*on the periphery, 10 Mbit/s Ethernet switches with VLAN support.  
-As an MPEG stream needs a bandwith between 4 to 9 Mbit/s, we could send multiple streams on our 155 Mbit/s backbone, but each student had a 10 Mbit/s connection and therefore could only receive one stream at the same time. It was out of the question to send the stream to machines that didn't want to receive it.  
-  
-So the idea was to broadcast each stream in a VLAN, different from the regular VLAN. In order for a student to change channel, we needed to change his machine of VLAN. This was the job of the VLAN Server. The VLAN Server received the requests of the VideoLAN Clients and changed the machines of VLAN by sending SNMP requests to the switches.  
-  
-We had the following VLAN configuration :  
-*VLAN 1 : VLAN for the switches,  
-*VLAN 2 : regular VLAN with no stream broadcasted, called channel ,  
-*VLAN 3 : one stream broadcasted, called channel 1,  
-*VLAN 4 : one stream broadcasted, called channel 2,  
-*VLAN 5 : one stream broadcasted, called channel 3,  
-  
-The VLAN Server has a big database with the correspondence between the MAC addresses of the clients Ethernet network cards and the couple (switch, port) where the client machine is connected. The VLAN Server can fill up his database and update-it automatically by sending regularly SNMP requests to the switches.  
-  
-Let's take the following scenario as an example :  
-#The VLAN configuration is as described above. All the computers are in VLAN 2, which is the regular VLAN. Three streams are broadcasted repectively in VLAN 3, 4 and 5.  
-#A student wants to watch channel 1. He starts vlc on its machine and select channel 1. When he clicks on "Go!", his computer sends a request to the VLAN Server. This requests contains the MAC address of his Ethernet card and the number of the channel that he wants to watch.  
-#The VLAN Server receives this request. It looks into its database to see on which switch and which port of the switch the computer of the student is plugged. It also knows that channel 1 is broadcasted in VLAN 3. It sends an SNMP request to the switch telling it to put the port on which the student's computer is plugged in VLAN 3.  
-#The student's machine receives the stream and his vlc displays it.  
-#The student can select channel 2 or 3. His computer will send a new request to the VLAN Server. The VLAN Server will send another SNMP request to the switch telling it to put the port of which the student's computer is connected is VLAN 4 or 5.  
-#When the student quits vlc, his machine sends another request to the VLAN Server asking to be put back to the regular VLAN (i.e. VLAN 2). The VLAN Server receives the request and put the port back to VLAN 2.  
-  
-There is another problem : we want the machines in VLAN 3, 4 and 5 to be able to communicate with all the other machines. If you have a good router, you can configure it so as to let the different VLANs communicate but without letting the streams broadcasted by vls in a VLAN go to the other VLANs. But if you have a bad router like our old router, you need to develop another solution, called VLANbridge. The idea of the VLANbridge is to have a machine under Linux connected to all the VLANs. This machine is configured so as to let the different VLANs communicate, but it prevents the streams broadcasted by vls in a VLAN go to the other VLANs.  
-  
-!The two versions of the tools  
-First, the VideoLAN team developed a VLAN Server and a VLANbridge in C language. When a computer asked to go to channel 1, it sent a request to the VLANserver. The VLANserver received this request, put the port of the switch on which the computer was connecter in VLAN 3, and transmitted this information to the VLANbridge so that the computer was "bridged" with the other VLANs. The advantage of this solution was that the computer hosting the VLAN Server could be a pretty modest machine. But the VLAN Server was quite complex (all his database was written from scratch in C language !), it segfaulted too often, there was regularly MAC addresses missinig in its database, and there was sometimes some  
-problem of communicaction with the VLANbridge.  
-  
-  
-Then, in year 2001, the VideoLAN team started to develop a new set of tools for the VLAN solution.  
-  
-  
-Marc Ariberti and Boris Dorès developped a new VLANbridge, called vlb-linux. The idea was that the VLANbridge sould learn the changes by itself, and didn't need to communicate with the VLAN Server. They developed a patch for the bridge module of the Linux kernel, so as to serve the needs of VideoLAN. You just have to tell to the VLANbridge the MAC addresses of the vls, and it automatically learn which machine is in which VLAN, and enable the VLANs to communicate but it firewalls  
-the packets that have the source MAC address of a vls.  
-  
-Marc Ariberti and Christophe Massiot developed a new VLAN Server, called mini VLAN Server. The idea was to use a PostgreSQL database instead of the "hand-made" database of the VLAN Server. The mini VLAN Server is written in PHP (for the heart and all the requests to the SQL database) and C (for the reception of the requests from the VideoLAN Clients). It is more reliable, it never segfault, but it needs a decent machine (we used a 300Mhz Pentium with 128MB of [RAM] for a network of 1000 machines). The mini VLAN Server cannot be used with the old VLANbridge.  
-  
-Eventually, if your network doesn't support multicast, we advise you to use the mini VLAN Server. And if you router cannot make the VLANs communicate with filtering functions (in order to stop the streams broadcasted to go from a VLAN to another), we advise you to use vlb-linux.  
-  
-  
-!Installation and configuration of the VLAN solution  
-  
-!mini VLAN Server  
-The installation of the mini VLAN Server is not explained here because it is quite complex and we think that most of you have a network with multicast support. You can download it from the Network download page. The "tarball" contains an "INSTALL" file with instructions in French. If you want to use the mini VLAN Server and don't understand French, you can ask for help in the mailing-list vlcs@videolan.org.  
-  
-!vlb-linux  
-You can download this version of the VLANbridge from the Network download page. The "tarball" contains an file "vlanbridge-help" with detailled explainations in English of the idea behind the VLANbridge and, at the end, the instructions to install and configure this version of the VLANbridge.  
-  
-!vlc configuration  
-The simplest solution is to use the interface of vlc : click on "Net", select "Channel server", write its IP address or DNS name.  
-  
-Then, you see a new section "Network Channel" on the interface. Select the desired channel and click on Go!.  
-----  
-!! 4. Video On Demand  
-!!4.1 Overview  
-!What is Video On Demand?  
-With Video On Demand ([VOD]), the client can start the video when he wants, make pauses, go forward and go back in the video. It's of course the best of video streaming and the dream for every client.  
-  
-!Hardware required  
-But VOD is a very big consumer of resources for the server and the network. VOD is unicast, not multicast. This mean that if 50 clients are doing VOD with the same server, watching a 5 Mbit/s MPEG 2 video, the resources needed as a minimum are the following:  
-*for the VOD server : 5*50=250 Mbit/s disk access and a 250 Mbit/s connection to the backbone,  
-*for the Backbone : 250 Mbit/s bandwidth,  
-*for the client : 5 Mbit/s connection to the backbone.  
-You can see that VOD needs huge resources for the server in term of disk access and network connection, and for the backbone.  
-  
-!Design of the VOD solution  
-The design is very simple. The idea is to do HTTP streaming, i.e. stream an MPEG video encapsulated in HTTP. The regulation of the bitrate between the client and the server is done automatically by TCP. With HTTP version 1.1, there is the possibility to seek in a file downloaded, that we use to seek in the video.  
-  
-On the VOD server, you need to install a Web server. For example, we use a Linux server running [Apache] as [HTTP] daemon. But other O.S. and other Web server should work too, but we have never tested. Make your MPEG 1 or 2 files available to the clients on the Web server.  
-  
-On the client, you only need vlc installed.  
-  
-!!4.2 VOD with VideoLAN  
-!On the server  
-For example, we have a Web server whose DNS name is vod.videolan.org. On this server, there are two MPEG files video1.mpg and video2.mpg available to the clients at the adresses http://vod.videolan.org/test/video1.mpg and http://vod.videolan.org/test/video2.mpg.  
-  
-!On the client  
-On the client, run vlc with this command line to view the first video :  
- % vlc http://vod.videolan.org/test/video1.mpg  
-and this command line to view the second video :  
- % vlc http://vod.videolan.org/test/video2.mpg  
-You can also use the interface : click on "Net" and select HTTP and enter the URL "vod.videolan.org/test/video1.mpg" or "vod.videolan.org/test/video2.mpg".  
-  
-!Client launched by a Web browser  
-The idea is to have a Web page with the list of the videos available, and, when you clic on a video, vlc starts to display it.  
-  
-You have to write the Web page with regular hypertext links to the video files and configure you Web browser to launch vlc when a file with ".mpg" (and ".mpeg" and ".vob") extension is selected. Tell the client that vlc accepts the URL as a command line : with this configuration, the file will not be stored on the client's hard drive but will be directly read by vlc.  
-  
-!Using a channel tool for VOD  
-You can use miniVLCS and enable the clients to select channel 1 to view the first video, channel 2 to view the second video, and so on.  
-  
-Install miniVLCS on a Linux machine (it can be the same machine as the VOD server). Please, refer to the section describing the building of miniVLCS.  
-  
-In the following example, the configuration file vlcs.conf should look like that :  
-  
- I: nostream  
- http://vod.videolan.org/test/video1.mpg  
- http://vod.videolan.org/test/video2.mpg  
-  
-Then run miniVLCS as a normal user :  
- % ./vlcs  
-The simplest solution is to use the interface of vlc : click on "Net", select "Channel server", write its IP address or DNS name.  
-  
-Then, you see a new section "Network Channel" on the interface.  
-  
-Select "1" and click on "Go!" to view the first video. Select "2" and click on "Go!" to view the second video.  
-  
-This function is broken in release .4.0 of vlc.  
-  
-----  
-!!5. Designing a complete VideoLAN solution  
-This section talks about how to organise the servers needed for VideoLAN in order to stream on a Local Area Network (LAN), or a Wide Area Network (WAN). These are not precise technical procedures but suggestions taken from our own experience.  
-  
-!!5.1 The VideoLAN Servers  
-You can have as many VideoLAN Servers (vls) on your network as you want. vlms should only be used for testing purposes. You may want to specialise your VideoLAN Servers. For example, on our campus, we have three VideoLAN servers located in three different places:  
-*one for MPEG encoding with an MPEG encoding card located in the video studio of the campus in charge of streaming the live shows,  
-*one for Satellite streaming with a satellite card located in a technical room near the satellite parabola,  
-*one for video streaming with a lot of disk space located in another technical room where there is a fast network connection.  
-  
-If you want to stream multiple DVDs (we suppose that you have the legal right to do so) from the same machine, you may want to have big disk drives instead of multiple DVD drives. You can copy the DVDs on the hard drives and tell vls to read from the hard drive instead of the DVD drive.  
-  
-If you want to stream satellite channels (we again suppose that you have the legal right to do so), you need a satellite card for every transponder. On one transponder, you have up to around 10 channels. If you want to stream 5 channels that are on 3 different transponders, you will need 3 satellite cards inside the machine. We don't care if those 3 transponders are on 3 different satellites, that's your problem ! A satellite stream is around 4 Mbit/s. You will then stream 5 x 4 = 20 Mbit/s : a 100 Mbit/s Ethernet connection will be needed. If you have want to stream channels from more transponders that PCI slot available in the machine... you will need to find a second computer !  
-  
-If you want to do Video On Demand with a lot of potential clients, you may want to set up a server specialized for VOD. This server would have very fast disk access and be located in a technical room with a fast network connection available. For example, you could set up a SAN with disk drives connected in fibre channel and multiple 100 Mbit/s Ethernet connections or a Gigabit connection to the network.  
-  
-!!5.2 The VideoLAN Channel Servers  
-!Multicast solution  
-If your network supports multicast, you will have to install a miniVLCS in order to enable the clients to easily go from a channel to another. This program doesn't need much resources in term of computer power or network connection. Therefore, you can install it on a old machine running Linux, or on one of your VideoLAN Servers.  
-  
-Multicast allows you to stream a video to multiple machines on a Wide Area Network (WAN). The network hardware of the WAN will need to have a full multicast support. If it doesn't, you can link multicast islands from one to another through IP tunnels. This is how the MBone (a Multicast Backbone on the Internet) works.  
-  
-!VLANs solution  
-With the VLANs solution, you will only be able to stream on a LAN where all the switches support VLANs. You will not be able to stream on a WAN. With this solution, we advise you to have a Linux machine dedicated to hosting the mini VLAN server. This machine is critical in term of security because it will have in it's configuration files the MIBs of all the switches of you LAN.  
-  
-If your router is a bad router (i.e. you can't configure it so as to let the different VLANs communicate but without letting the streams broadcasted by vls in a VLAN go to the other VLANs), you may want to set up a VLANbridge or buy a new router. If you want to set up a VLANbridge and you have an Ethernet network, you need to have a Linux machine with as many network cards as VLANs used. This machine will be located in a place where you have a switch with as many ports available as VLANs used. You will plug each network card to a port in each VLAN used, and your VLANbridge will enable the different VLANs to communicate but without letting the video streams go from a VLAN to another. If you want to set up a VLANbridge and you have an [ATM] backbone (like on our old network), the VLANbridge machine only needs one ATM card connected to the ATM backbone : this card will enable the VLANbridge to have an interface in every VLAN.  
-  
-----  
-!!6. Conclusion  
-The VideoLAN solution works well now, but the VideoLAN team is always eager to add new features and adopt new standards. Here are the new features that we plan to develop and the new standards that we plan to adopt :  
-*MPEG 4. We have already started to develop the DivX (a variant of MPEG 4) support of vlc... and we would like to be able to stream MPEG 4 as we do with MPEG 1 and 2.  
-*IPv6. vlc and vls already support IPv6, but we have only tested unicast IPv6. We would like to test the multicast IPv6.  
-*SAP (Session Announcement Protocol). This protocol will allow the clients to have the program of what is streamed on the network. We have already started to study this standard.  
-*[RTP] and [RTSP]. Those protocol are certainly the futur of the network solution of VideoLAN.  
-*vlc as a plug-in for Web browsers. The development has already started .  
-----  
+Describe [HowToVideoLANHOWTO ] here.