<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?> 
<?rfc toc="yes" ?>
<?rfc symrefs="yes" ?>
<?rfc iprnotified="no" ?>
<?rfc strict="no" ?>
<?rfc compact="yes" ?>
<?rfc subcompact="no"?>
<?rfc sortrefs="no" ?>
<rfc category="info" docName="draft-yan-rtcweb-desktop-cloud-00.txt" ipr="trust200902">
	<front>
		<title abbrev="WebRTC Realization in Desktop Cloud">WebRTC Realization in Desktop Cloud</title>
		<author fullname="Michael Yan" initials="M." surname="Yan">
			<organization>Huawei Technologies Co., Ltd.</organization>
			<address>
				<postal>
					<street/>
					<city>Hangzhou</city>
					<region/>
					<code/>
					<country>P.R.China</country>
				</postal>
				<email>michael.yan@huawei.com</email>
			</address>
		</author>
		<author fullname="Chen Xin" initials="X." surname="Chen">
			<organization>Huawei Technologies Co., Ltd.</organization>
			<address>
				<postal>
					<street/>
					<city>Hangzhou</city>
					<region/>
					<code/>
					<country>P.R.China</country>
				</postal>
				<email>hangzhou.chenxin@huawei.com</email>
			</address>
		</author>
		<date day="12" month="September" year="2012"/>
		<workgroup>RTCWeb WG</workgroup>
		<abstract>
			<t>The Web Real-time Communications (WebRTC) provides the communication capabilities for real-time and peer-to-peer web-based applications. This draft is meant to provide the structure for an idea of how WebRTC works on the desktop cloud solution and gives guidance on how to overcome the issues and challenges in implementing and deploying. Also as discussed in the mail archive before, the use case for desktop cloud or remote desktop sharing is suggested to be delayed after WebRTC version 1. So this draft is very early and far from done.</t>
		</abstract>
		<note title="Requirements Language">
			<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in 
                        <xref target="RFC2119">RFC 2119</xref>.</t>
		</note>
	</front>
	<middle>
		<section title="Introduction">
			<t>The Web Real-time Communications (WebRTC) provides the communication capabilities for real-time and peer-to-peer web-based applications. This document describes how WebRTC can be implemented in the desktop cloud solution, including support for WebRTC application separating, data channel between remote peer and local system and SDP negotiation for two remote peers.</t>
			<t>The desktop cloud enables users to access cross-platform applications and even the entire desktop through the remote peer which known as thin clients (TCs) or any other devices connected to the Internet. In many cases users use the browser in TCs to visit the local system which known as network computers (NCs) in the desktop cloud servers. WebRTC should be supported in this scene.</t>
			<t>For the "Web Real-Time Communication Use-cases and Requirements" 4.2.8 has illustrated the screen sharing for simple video communication service, this document focuses on the remote desktop sharing for audio and video in the cloud desktop solution. Section 2 of this document gives an overview of the characteristics of common desktop cloud device as background for further discussion. Section 3 introduces the specific issues that WebRTC protocols and applications should take into consideration in implementing the desktop cloud.</t>
			<t>The current version of the document misses all references and lot of details. It may have some errors. Its purpose is to get attention to the topics it raises and start discussion about them.</t>
		</section>
		<section title="Common desktop cloud device and their properties">
			<t>The most relevant desktop cloud device for WebRTC is the desktop cloud terminal and the applications running on it. Many characteristics of the desktop cloud device are covered in Section 3 in the context of the particular issues under discussion. The following is the very brief description of common desktop cloud device and the applications running on it.</t>
			<t>The desktop cloud terminal built on the basis of virtual networking technology can be divided into two parts: the network computers (NCs) which can be considered as local system and thin clients (TCs) which can be considered as the remote peer. The remote peer can control the local system through kind of remote desktop sharing protocol by one or more input types such as mouse and keyboard. Thus the browser or other system resources on local system can be accessed by the remote peer.</t>
			<t>When a native VoIP application installed on NCs, it offers the audio and video features to users by using the input/output device on the TCs. The virtualization tier of NCs can encode the RTP stream which is sent to TCs through the remote desktop sharing protocol. The virtualization tier of TCs then decodes the RTP stream to export to its output device. The SDP negotiation could be done between two NCs for their own TCs.</t>
		</section>
		<section title="Specific issues and how to deal with them">
			<section title="RTP lag">
				<t>In the desktop cloud solution, the media stream would have one extra codec operation from NCs to TCs as described in Section 2. NCs will decode the RTP stream received from the other NCs and encode it through its virtualization tier before sending to TCs. The one extra codec operation will cause the obvious lag between the data transfer and media transfer.</t>
             <t>
                 <figure align="center" anchor="Non-seperating_data_media_arch" title="Data and media Non-seperating Architecture">
                     <artwork>           
            +--------+                           +--------+
            |   TC1  |                           |   TC2  |
            +--+--+--+                           +--+--+--+ 
  media tracks |  ^  media tracks     media tracks  ^  | media tracks    
(before coding)|  |(after decoding) (after decoding)|  |(before coding)
               V  |                                 |  V
            +--+--+--+         media steam       +--+--+--+
            |   NC1  |       (after coding)      |   NC2  |
            |(WebRTC)|< ----------------------- >|(WebRTC)| 
            +--------+                           +--------+  
                     </artwork>
                  </figure>   
             </t>
				<t>Thus, to make the WebRTC application used on cloud desktop terminal appropriately, we need to separate the WebRTC application into two parts: part1 on the TCs is the presentation tier and the interface tier, and part2 on the NCs is the business logic tier. Here TCs do the media stream transferring through their browsers, while NCs do the other stream transferring through their browsers, like data, files or session negotiation control signals.</t>
		    <t>
             <figure align="center" anchor="sperating_data_media_arch" title="Data and media Seperating Architecture">
			      <artwork>
 +----------------+      Media Stream       +----------------+
 |       TC1      |      (after coding)     |       TC2      |
 | (WebRTC part1) |< -------------------- > | (WebRTC part1) |
 +----------------+                         +----------------+
         ^                                          ^
         |      Message                             |    Message
         | exchange between                         | exchange between
         |     two part of                          |   two part of 
         |        WebRTC                            |     WebRTC
         V                                          V
 +----------------+                         +----------------+
 |       NC1      |      Other Stream       |       NC2      |
 | (WebRTC part2) |< -------------------- > | (WebRTC part2) |
 +----------------+                         +----------------+
         	     </artwork>
		      </figure>
		   </t>
			</section>
			<section title="Data channel">
				<t>Some interactive messages are needed between NCs and TCs. These messages could be divided into two types. One is control message, which is used by NCs to control the multi-media communication process in TCs and get feedback from WebRTC application in TCs. The other is negotiation message, which is used for negotiating the media and transporting information between two TCs. In WebRTC, these messages are encapsulated in SDP. TCs should exchange SDP through NCs, because WebRTC application in TCs is acted as a part of WebRTC application in NCs. It is not suggested for TCs to communicate with each other by themselves.</t>
				<t>So the data channel between TCs and NCs is necessary. Now the data channel in the desktop cloud between TC and NC are the remote desktop sharing protocols such as VNC/ICA/PCoIP/RDP etc. These remote desktop sharing protocols are open-sourced or private protocols which are not suggested to be used for messages transferring between WebRTC applications.</t>
				<t>So here is the second issue for two WebRTC applications on cloud desktop: the data channel establishment between the two part of WebRTC applications in TCs and NCs. The SCTP based data channel in WebRTC could be used for this requirement. There are some optional methods to use the data channel. One is establishing a new data channel between NCs and TCs. That means a new WebRTC application is needed in both NCs and TCs. This new WebRTC application is just responsible for the message exchange between NCs and TCs. Another one is integrating the data channel between TCs and NCs into the WebRTC ability. Although the WebRTC application in NCs and TCs are two different entities, the WebRTC application in TCs is under the control of the WebRTC application in NCs. They should be considered as a whole application, but have been divided to two parts and run in two browsers. If the WebRTC can support to establish an additional data channel between these two applications, it will be a better way to solve the message exchange issue between NCs and TCs.</t>
			</section>
			<section title="SDP negotiation">
				<t>The deployment of separated WebRTC applications on cloud desktop device provides two methods for SDP negotiation between TCs. One is to keep TCs and NCs as entire entity that TC1/TC2's SDP information should be transferred to NC1/NC2 through the data channel mentioned in 3.2. NCs do the negotiation under the proxy of WebRTC Web server. Another is TCs do the SDP negotiation by themselves which is not suggested because TCs only allowed for media stream transferring.</t>
		    <t>
             <figure align="center" anchor="TCs_SDP_Negotiation" title="SDP Negotiation Between TCs">
			      <artwork>
 +----------------+                         +----------------+
 |       TC1      |                         |       TC2      |
 | (WebRTC part1) |                         | (WebRTC part1) |
 +----------------+                         +----------------+
         ^                                          ^
         |      Session                             |    Session
         | Negotitaion message                      | Negotitaion message
         |      between                             |   between 
         |    TC1 and TC2                           |  TC1 and TC2
         V                                          V
 +----------------+                         +----------------+
 |       NC1      |                         |       NC2      |
 | (WebRTC part2) |                         | (WebRTC part2) |
 +----------------+                         +----------------+
          \                                         /
             \                                   /
                \         Relay Session       /
                   \       Negotitaion     /
                      \      message    /
                      +-----------------+  
                      |    Web Server   | 
                      +-----------------+  
         	     </artwork>
		      </figure>
		   </t>
			</section>
		</section>
		<section anchor="IANA" title="IANA Considerations">
			<t>This document contains no IANA considerations.</t>
		</section>
		<section anchor="Security" title="Security Considerations">
			<t>Not explicitly covered in this version.</t>
		</section>
	</middle>
	<back>
		<references title="References">	
				<?rfc include="reference.RFC.2119"?>  

		</references>
	</back>
</rfc>
