<?xml version="1.0" encoding="UTF-8"?>

<!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' ?>
<!-- used by XSLT processors -->
<!-- For a complete list and description of processing instructions (PIs), 
     please see http://xml.resource.org/authoring/README.html. -->
<!-- Below are generally applicable Processing Instructions (PIs) that most I-Ds might want to use.
     (Here they are set differently than their defaults in xml2rfc v1.32) -->
<?rfc strict="yes" ?>
<!-- give errors regarding ID-nits and DTD validation -->
<!-- control the table of contents (ToC) -->
<?rfc toc="yes"?>
<!-- generate a ToC -->
<?rfc tocdepth="4"?>
<!-- the number of levels of subsections in ToC. default: 3 -->
<!-- control references -->
<?rfc symrefs="yes"?>
<!-- use symbolic references tags, i.e, [RFC2119] instead of [1] -->
<?rfc sortrefs="yes" ?>
<!-- sort the reference entries alphabetically -->
<!-- control vertical white space 
     (using these PIs as follows is recommended by the RFC Editor) -->
<?rfc compact="no" ?>
<!-- do not start each main section on a new page -->
<?rfc subcompact="no" ?>
<!-- keep one blank line between list items -->
<!-- end of list of popular I-D processing instructions -->

<rfc category="info" docName="draft-hong-mif-virtual-interface-02" ipr="trust200902">

  <!-- ***** FRONT MATTER ***** -->

  <front>
    <!-- The abbreviated title is used in the page header - it is only necessary if the 
         full title is longer than 39 characters -->

    <title abbrev="Virtual interface for mif">
	Virtual interface for multiple interfaces in a host
	</title>

    <!-- add 'role="editor"' below for the editors if appropriate -->

    <!-- Another author who claims to be an editor -->

    <author fullname="Yong-Geun Hong" initials="Y.G.Hong" role=""
            surname="Hong">
      <organization>ETRI</organization>

      <address>
        <postal>
          <street>161 Gajeong-Dong Yuseung-Gu</street>

          <!-- Reorder these if your country does things differently -->

          <city>Daejeon</city>

          <region></region>

          <code>305-700</code>

          <country>Korea</country>
        </postal>

        <phone>+82 42 860 6557</phone>

        <email>yonggeun.hong@gmail.com</email>

        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>

    <author fullname="Joo-Sang Youn" initials="J.S.Youn" role=""
            surname="Youn">
      <organization>DONG-EUI Univ.</organization>

      <address>
        <postal>
          <street></street>

          <!-- Reorder these if your country does things differently -->

          <city>Busan</city>

          <region></region>

          <code></code>

          <country>Korea</country>
        </postal>

        <phone>+82 51 890 1993</phone>

        <email>joosang.youn@gmail.com</email>

        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>

    <author fullname="Tran Minh Trung" initials="T.M.Tran" role=""
            surname="Tran">
      <organization>ETRI</organization>

      <address>
        <postal>
          <street>161 Gajeong-Dong Yuseung-Gu</street>

          <!-- Reorder these if your country does things differently -->

          <city>Daejeon</city>

          <region></region>

          <code>305-700</code>

          <country>Korea</country>
        </postal>

        <phone>+82 42 860 1132</phone>

        <email>trungtm2909@gmail.com</email>

        <!-- uri and facsimile elements may also be added -->
      </address>
 
        </author>
        
    <author fullname="Dapeng Liu" initials="D.Liu" role=""
            surname="Liu">
      <organization>China Mobile</organization>

      <address>
        <postal>
          <street>Unit2, 28 Xuanwumenxi Ave,Xuanwu District</street>

          <!-- Reorder these if your country does things differently -->

          <city>Beijing</city>

          <region></region>

          <code>100053</code>

          <country>China</country>
        </postal>

        <email>liudapeng@chinamobile.com</email>

        <!-- uri and facsimile elements may also be added -->
      </address>
 
        </author>        

    <date month="October" year="2010" />

    <!-- If the month and year are both specified and are the current ones, 
        xml2rfc will fill in the current day for you. If only the current year 
        is specified, xml2rfc will fill in the current day and month for you. If 
        the year is n to the network layer and is regarded as a general network 
        interface. Then ot the current one, it is necessary to specify at least 
        a month (xml2rfc assumes day="1" if not specified for the purpose of 
        calculating the expiry date).  With drafts it is normally sufficient to 
        specify just the year. -->

    <!-- Meta-data Declarations -->

    <area>General</area>

    <workgroup>Network Working Group</workgroup>

    <!-- WG name at the upperleft corner of the doc, IETF is fine for individual 
        submissions.  If this element is not present, the default is "Network 
        Working Group", which is used by the RFC Editor as a nod to the history 
        of the IETF. -->

    <keyword>Internet Draft</keyword>

    <!-- Keywords will be incorporated into HTML output files in a meta tag but 
        they have no effect on text or nroff output. If you submit your draft to 
        the RFC Editor, the keywords will be used for the search engine. -->

    <abstract>
    <t>
The usage of multiple interfaces in a host causes other problems due to the multiplicity of available interfaces. If interface is changed during communication, the communication is disrupted. Multiple interfaces in a host do not support the simultaneous usage of multiple interfaces. In this document, we discuss how to solve the problems of interface change and simultaneous usage of multiple interfaces and propose a virtual interface which hides the multiple interfaces from the IP stack of host. And we describe the applicability of virtual interface into the problem of multiple interfaces in multiple interfaces PS document. This document provides the implementation guidelines of virtual interface for a multiple interface host.         
   </t> 
    </abstract>
    </front>

<!-- Section 1 -->
  <middle> <section title="Introduction">
    <t> 
In network environment of conventional TCP/IP stack suite, a communication entity usually has a wire connection with a single network interface and it is fixed.  As an introduction of wireless technologies and heterogeneous access technologies, a communication entity is able to move around between different access technologies networks and have multiple network interfaces <xref target="I-D.ietf-monami6-multihoming-motivation-scenario"/>. 
    </t>

	  <t> 
Because conventional network applications and TCP/IP stack suite are developed for a communication entity which has a single network interface, the adoption of multiple network interfaces into a general communication entity makes some problems. Because of the usage of multiple interfaces during communication, there may be many considerations to support multiple interfaces in a host  <xref target="I-D.ietf-mif-problem-statement"/>.
	  </t>

		<t>
If we use multiple interfaces, the change of interface may happen. In current OS/platforms, if an interface which is used to communicate is changed during communication, then the communication is disrupted. Interface change happens as various reasons; the host move to different networks, the using network interface is no longer available to use (e.g., H/W failure, unexpected wireless signal situation), by some policy, and by user experience. 		
		</t>
		
		<t>
Multiple interfaces in a host may not support the simultaneous usage of multiple interfaces. Even though a host can utilize multiple access technologies through multiple interfaces simultaneously, only one interface is chosen to communicate at a time in a conventional TCP/IP stack suite. The host wants to use multiple interfaces simultaneously to increase data bandwidth, reliability, and etc. 		
		</t>

	  <t> 
In order to solve the problems mentioned above, we propose a virtual interface for a host with multiple network interfaces.  We currently use a virtual interface to provide the duplication of    network connections through multiple network interface cards on an important network node such as a server. With a virtual interface scheme, the host with multiple interfaces can operate as it has a single interface irrespective to the number of network interfaces <xref target="I-D.ietf-netext-logical-interface-support-00"/>.
		</t> 
		</section>

<!-- Section 2 -->
    <section title="Requirements Language">
    <t>
In this document, the key words "MAY", "MUST, "MUST NOT", "OPTIONAL", "RECOMMENDED", "SHOULD", and "SHOULD NOT", are to be interpreted as described in <xref target="RFC2119"/>.
    </t>  
    </section>


<!-- Section 3 -->
    <section title="Virtual interface for multiple interfaces"> 
    <t> 
In some operating systems such as Linux (or Unix), most network interfaces, such as eth0, wlan, and ppp, are associated to a physical and/or logical devices that are in charge of transmitting and   receiving data packets. However, there are exceptions to this rule, and some logical network interfaces do not feature any physical packet transmission.
		</t>
		
		<t>
The virtual interface is not a real physical device and it is a logical network interface.  It has connections with physical network devices within a network entity and the path between the virtual interface and real physical network devices is determined dynamically according to some policy.
		</t>
		
		<t>
The virtual interface is registered to the network layer and it is regarded as a general network interface. Then real physical interfaces are connected to the virtual interface. The network layer    does not know the existence of these physical interfaces. 
		</t>
		
		<t>
The virtual interface can be used for the duplication of network connections (the duplication of network interface cards) for fault tolerance or load sharing. If an important server has multiple physical interface cards, it can survive even though one interface card is down. It can keep a communication session with other living interface cards. In this case, the presence of multiple interfaces can be hidden to network layer and network layer regards the virtual interface as a general network interface. The conventional network applications and network modules such as TCP/IP stack suite do not need to be modified to support multiple interfaces in a host if a virtual interface is used.
		</t>
    </section>


<!-- Section 4 -->
    <section title="The usage to use a virtual interface in a host">
<!-- Section 4.1 -->
    <section title="Configuration of a virtual interface in a host">
    <t>
In the following figure, network interfaces if_1, if_2 are real physical interfaces. The network interface VI is a virtual interface. The virtual interface is connected to the physical interfaces and it is shown to the network layer. In this figure, the network layer uses the virtual interface VI instead of physical interfaces if_1, if_2. The host needs a specific module (e.g., connection manager) to manage the virtual interface and select the path between the virtual interface and physical interfaces.
    </t>

			<figure anchor='fig1' title="Architecture of a virtual interface in a 
        host with two physical interfaces"> <artwork>

                     +-------------------------------+
                     |         Applications          |
                     |-------------------------------|
                     |        Transport area         |
                     |-------------------------------|
                     |         network area          |
                     |-------------------------------|
                     |      +------------------+   +------------+
                     |      | Virtual Interface|   | Connection |
                     |      |       (VI)       |   | Manager    |
                     |      +------------------+   +------------+
                     |           /        \          |
                     |          /          \         |
                     | +------------+ +------------+ |
                     | | Interface 1| | Interface 2| |
                     | |   (if_1)   | |   (if_2)   | |
                     | +------------+ +------------+ |
                     +-------------------------------+
        </artwork> 
        </figure>

      </section>

<!-- Section 4.2 -->
      <section title="Operations of a host with a virtual interface"> 
      <t> 
When a network module in a host starts, the virtual interface is configured to send and receive packets. In Figure 1, if the host uses a physical interface if_1, the path between the virtual interface VI and the physical interface if_1 is configured. 
			</t>
			
			<t>
When sending packets to another node, packets are delivered to the virtual interface and these packets are also forwarded into physical interface if_1 according to the path configuration. When receiving packets from another node, packets are delivered to if_1 and these packets are also forwarded into VI according to the path configuration.
			</t>
			
			<t>
If the host changes another interface due to movement of a host or the failure of network interface, the host chooses a physical interface if_2 and then makes the path between the virtual interface VI and the physical interface if_2. At this time, the connection manager updates the relation between a destination address and a interface.  When the host is sending packets to another node, packets are delivered to VI and these packets are forwarded into if_2 according to the path configuration. When the host is receiving packets from another node, packets are delivered to if_2 and these packets are also forwarded into VI according to the path configuration.
			</t>
    </section>
    </section>


<!-- Section 5 -->
    <section title="Functions and properties of virtual interface">
		<t>
In this section, we will describe the function of MIF virtual interface such as interface selection function and policy routing function, etc. 
		</t>
    </section>
    
		
<!-- Section 6 -->
    <section title="Use cases of virtual interface">
		<t>
In this section, we will describe how to use MIF virtual interface to address the issues that list in MIF PS draft such as source address selection and routing issues, etc. 
		</t>
    </section>
    
<!-- Section 7 -->
    <section title="Considerations for implementing virtual interface">    
<!-- Section 7.1 -->
    <section title="All physical interfaces and virtual interface share the same link-layer identifier">    
  	<t>
The simplest way to implement virtual interface is to set the same link-layer identifier such as MAC address for both virtual interface and physical interfaces. To do that the devices should allow source address spoofing or allow changing link-layer identifier and the link-layer identifier format of access type should be similar. 
		</t>
		
		<t>
The figure 2 shows an example scenario in which the virtual interface and physical interfaces use the same link-layer identifier ZZZ. When the physical interface 1 (if_1) and physical interface 2 (if_2) associated with Access Point 1 (AP1) and Access Point 2 (AP2) respectively, both AP1 and AP2 recognize the same link-layer identifier ZZZ from the MN’s attachments. The AP1 and AP2 can forward any packet sending from CN to the virtual interface or vice versa without any problem.
  	</t>  				
		
			<figure anchor='fig2' title="Virtual interface uses the same link-layer identifier with physical interfaces"> <artwork>
                                      
                             +----+   
                             | CN |   
                             +----+   
                              //\\    
                   +---------//--\\-----------+
                  (         //    \\ IPv4/IPv6)
                  (        //      \\ Network )
                   +------//--------\\--------+
                         //          \\
                        //            \\ 
                     +----+          +----+
             (WiMAX) |AP1 |          |AP2 | (WLAN)
                     +----+          +----+
                        \               /
                         \             /
                       +-------+ +-------+
                       | if_1  | | if_2  |
          (LL-ID: ZZZ) |(WiMAX)| |(WLAN) | (LL-ID: ZZZ)
                       +-------+-+-------+
                       |     Virtual     |
          (LL-ID: ZZZ) |    Interface    | 
                       +-----------------| 
                       |       MN        |
                       +-----------------+
        </artwork> 
        </figure>

		<t>
In this scenario, to find a nearby router the MN send Router Solicitation (RS) message via both if_1 and if_2. The MN can receive Router Acknowledgement (RA) message from both of these two interfaces. In case that the MN wants to send a unicast packet but does not know the neighbor's link-layer addresses, it will perform address resolution by sending Neighbor Solicitation (NS) message through both if_1 and if_2. On receiving NS message, the CN will send back Neighbor Acknowledgement (NA) message back to the MN through the path that it receives NS from. Thus the virtual interface at the MN may receive NA message through both if_1 and if_2. The same for the inverse direction, the CN node may sends NS message to the MN through both direction. On receiving the NS message the virtual interface at the MN will send NA reply message through the interface that it receives NS from. Some time the virtual interface may also send unsolicited Neighbor Advertisement message via all enabled physical interfaces in order to propagate new information quickly. 
		</t>
		</section>
		
<!-- Section 7.2 -->
    <section title="Virtual interface uses different link-layer identifier with physical interfaces">    
  	<t>
Many wireless devices do not allow source address spoofing or do not allow changing link-layer identifier. In addition some time different access devices use different link-layer identifier format. In these cases the physical interface and virtual interface cannot use the same link-layer identifier. In this case, the virtual interface can use totally different link-layer identifier from those of physical interfaces or it can only use the same link-layer identifier with one of the physical interfaces. 
		</t>
		  	
			<figure anchor='fig3' title="Virtual interface uses the same link-layer identifier with some physical interfaces"> <artwork>

                             +----+   
                             | CN |   
                             +----+   
                              //\\    
                   +---------//--\\-----------+
                  (         //    \\ IPv4/IPv6)
                  (        //      \\ Network )
                   +------//--------\\--------+
                         //          \\
                        //            \\ 
                     +----+          +----+
             (WiMAX) |AP1 |          |AP2 | (WLAN)
                     +----+          +----+
                        \               /
                         \             /
                       +-------+ +-------+
                       | if_1  | | if_2  |
          (LL-ID: ZZZ) |(WiMAX)| |(WLAN) | (LL-ID: YYY)
                       +-------+-+-------+
                       |     Virtual     |
          (LL-ID: ZZZ) |    Interface    | 
                       +-----------------| 
                       |       MN        |
                       +-----------------+

        </artwork> 
        </figure>							

		<t>
The figure 3 shows an example that the virtual interface uses the same link-layer identifier ZZZ with physical interface if_1. Physical interface if_2 uses a different link-layer identifier YYY. This implementation scenario can cause several problems:
		</t>
		
		<t>
The virtual interface cannot send packet to CN node via AP2 since AP2 can recognize the associated link-layer identifier YYY of if_2 only. It can send packet to the CN node only if the AP2 is placed in promiscuous mode. For example, if AP2 is WLAN Access Point, AP2 only recognizes the link-layer identifier YYY of if_2. If layer 2 frames come from the virtual interface uses link-layer identifier ZZZ, the WLAN AP2 cannot process these frame and discard them because only link-layer identifier YYY of if_2 is associated with WLAN AP2. 
 		</t>
 		
 		<t>
The CN node cannot send the packet to the MN via AP2 because the global IP address is assigned to virtual interface only. When the CN node sends NS message, the NA message will be sent by virtual interface with link-layer identifier ZZZ thus the NA message cannot be delivered through AP2, which understands only link-layer identifier of if_2. However there is no problem if the virtual interface receives/sends NS/NA message via the AP1. 
		</t>
		
		<t>
In this scenario, to find a nearby router the MN also send RS message via both if_1 and if_2. The MN can receive RA messages from both of these two interfaces. In case that the MN wants to send a unicast packet but does not know the neighbor's link-layer addresses, it will perform address resolution by sending NS messages through both if_1 and if_2. On receiving NS message, the CN will send back NA message back to the MN through the path that it receives NS from. However, it is different with the first implementation method that the CN node cannot send NA message to MN through AP2 since the AP2 may understand and accept only the NA message that carries the link-layer identifier of the if_2. Thus the virtual interface at the MN may receive NA message only through if_1. In case of the inverse direction, the CN node may send NS message to the MN through both direction. On receiving the NS message the virtual interface at the MN will send NA reply message through the interface that it receives NS from. However the NA reply message sent via AP2 may not be forwarded to the CN node. 
		</t>
		
		<t>
If we want to implement the virtual interface which is transparent from some specific access technologies (e.g., WLAN Access Point processes only layer 2 frame that the link-layer identifier is associated with itself), one of the possible approach is swapping the link-layer identifier of layer 2 frame between virtual interface and physical interfaces. Some specific access technologies may need the real(original) link-layer identifier of physical interfaces and it is difficult to modify layer 2 Access Point to process the layer 2 frame that the link-layer identifier is not associated with itself.
 		</t>

    </section>
    </section>

		

    <!--section anchor="Acknowledgements" title="Acknowledgements"> <t>This 
        template was derived from an initial version written by Pekka Savola and 
        contributed by him to the xml2rfc project.</t>

      <t>This document is part of a plan to make xml2rfc indispensable <xref 
        target="DOMINATION"></xref>.</t> </section-->

    <!-- Possibly a 'Contributors' section ... -->

    <section anchor="Security" title="Security Considerations"> <t> TBD </t> 
        </section>

    <section anchor="IANA" title="IANA Considerations"> <t>This document has no 
        actions for IANA.</t> </section>

  </middle>

  <!--  *****BACK MATTER ***** -->

  <back> <!-- References split into informative and normative -->

    <!-- There are 2 ways to insert reference entries from the citation 
        libraries: 1. define an ENTITY at the top, and use "ampersand 
        character"RFC2629; here (as shown) 2. simply use a PI "less than 
        character"?rfc include="reference.RFC.2119.xml"?> here (for I-Ds: 
        include="reference.I-D.narten-iana-considerations-rfc2434bis.xml")

     Both are cited textually in the same manner: by using xref elements.
     If you use the PI option, xml2rfc will, by default, try to find included files in the same
     directory as the including file. You can also define the XML_LIBRARY environment variable
     with a value containing a set of directories to search.  These can be either in the local
     filing system or remote ones accessed by http (http://domain/dir/... ).-->
    <references title="Normative References">
		&RFC2119;
	  </references>

    <references title="Informative References">

      <!-- A reference written by by an organization not a person. -->
		<reference anchor="I-D.ietf-monami6-multihoming-motivation-scenario">
		   <front>
			   <title>Motivations and Scenarios for Using Multiple Interfaces and Global Addresses,
			   draft-ietf-monami6-multihoming-motivation-scenario-03 </title>
			   <author initials="T." surname="Ernst" fullname=""><organization/></author>
			   <author initials="N." surname="Montavont" fullname=""><organization/></author>
			   <author initials="R." surname="Wakikawa" fullname=""><organization/></author>
   			   <author initials="C." surname="Ng" fullname=""><organization/></author>
   			   <author initials="K." surname="Kuladinithi" fullname=""><organization/></author>
			   <date month="May" year="2008"/>
		   </front>
		</reference>

		<reference anchor="I-D.ietf-mif-problem-statement">
		   <front>
			   <title>Multiple Interfaces Problem Statement, draft-ietf-mif-problem-statement-07 (work in progress)</title>
			   <author initials="M." surname="Blanchet" fullname="">
			   <organization/>
			   </author>
			   <author initials="P." surname="Seite" fullname="">
			   <organization/>
			   </author>			   
			   <date month="August" year="2010"/>
		   </front>
		</reference>
	
		<reference anchor="I-D.ietf-netext-logical-interface-support-00">
		   <front>
			   <title>Logical Interface Support for multi-mode IP Hosts, draft-ietf-netext-logical-interface-support-00 (work in progress)</title>
			   <author initials="T." surname="Melia" fullname="">
			   <organization/>
			   </author>
			   <author initials="S." surname="Gundavelli" fullname="">
			   <organization/>
   			   </author>
			   <date month="September" year="2010"/>
		   </front>
		</reference>	

    </references>


  </back>
</rfc>
