<?xml version="1.0" encoding="US-ASCII"?>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<?rfc strict="yes" ?>
<?rfc toc="yes"?>
<?rfc tocdepth="4"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes" ?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>
<rfc category="std" docName="draft-bi-intarea-savi-wlan-05" ipr="trust200902">

<front>

    <title abbrev="savi-wlan">A SAVI Solution for WLAN</title>

    <author fullname="Mingwei Xu" initials="M." surname="Xu">
        <organization>Tsinghua University</organization>
        <address>
            <postal>
                <street></street>
                <city>Beijing</city>
                <region></region>
                <code>100084</code>
                <country>China</country>
            </postal>
            <email>xmw@cernet.edu.cn</email>
        </address>
    </author>

  <author fullname="Jianping Wu" initials="J." surname="Wu">
    <organization>Tsinghua University</organization>
    <address>
    	<postal>
      		<street></street>
      		<city>Beijing</city>
      		<region></region>
      		<code>100084</code>
      		<country>China</country>
    	</postal>
    	<email>jianping@cernet.edu.cn</email>
    </address>
  </author>

  <author fullname="Tao Lin" initials="T." surname="Lin">
    <organization>New H3C Technologies Co. Ltd</organization>
    <address>
    	<postal>
      		<street>466 Changhe Road, Binjiang District</street>
      		<city>Hangzhou</city>
      		<region>Zhejiang</region>
      		<code>310052</code>
      		<country>China</country>
    	</postal>
    	<email>lintao@h3c.com</email>
    </address>
  </author>

  <author fullname="Lin He" initials="L." surname="He">
  	<organization>Tsinghua University</organization>
  	<address>
    	<postal>
        	<street></street>
        	<city>Beijing</city>
        	<region></region>
        	<code>100084</code>
        	<country>China</country>
    	</postal>
    	<email>he-lin@tsinghua.edu.cn</email>
  	</address>
  </author>


  <author fullname="You Wang" initials="Y." surname="Wang">
    <organization>Tsinghua University</organization>
    <address>
      <postal>
          <street></street>
          <city>Beijing</city>
          <region></region>
          <code>100084</code>
          <country>China</country>
      </postal>
      <email>wangyou10@mails.tsinghua.edu.cn</email>
    </address>
  </author>

    <date/>


    <area>Internet</area>

    <workgroup>Internet Area Working Group (intarea)</workgroup>

    <keyword>SAVI</keyword>

    <keyword>WLAN</keyword>

    <keyword>solution</keyword>


    <abstract>
        <t>
            This document describes a source address validation solution for WLANs where 802.11i or other security mechanisms are enabled to secure MAC addresses. This mechanism snoops NDP and DHCP packets to bind IP addresses to MAC addresses, and relies on the security of MAC addresses guaranteed by 802.11i or other mechanisms to filter IP spoofing packets.  It can work in the special situations described in the charter of SAVI (Source Address Validation Improvements) workgroup, such as multiple MAC addresses on one interface.  This document describes three different deployment scenarios, with solutions for migration of binding entries when hosts move from one access point to another.
        </t>
    </abstract>
</front>





<middle>
	<section title="Introduction">
      <t>
        Source spoofing poses a significant threat to the Internet. Therefore, source address validation is of great importance for enhancing network security. The IETF has standardized source address validation solutions for different address assignment scenarios, such as SLAAC <xref target="RFC6620"/>, DHCP <xref target="RFC7513"/>, SEND <xref target="RFC7219"/>, and mixed scenarios <xref target="RFC8074"/>.
      </t>

      <t>
        However, the source address validation schemes standardized by the IETF primarily consider wired local area networks (LAN) scenarios and lack consideration for wireless LANs (WLANs) scenarios. In wired LANs, a host typically connect to a switch interface, and at this point, the switch interface corresponds to a binding anchor that can be used to verify the legitimacy of the host's IP address. As discussed in <xref target="RFC7039"/>, a "binding anchor" is an immutable or hard-to-change attribute that can be used to identify the system to which an IP address is assigned. In contrast, in wireless networks, all hosts connect to the wireless radio frequency of an access point (AP). Therefore, in wireless LANs, there is no binding anchor like a switch port that is naturally available. Moreover, hosts in wireless LANs can move frequently, and during movement, the host may maintain the same address, which means that the binding entries for the same host also need to be synchronized between different APs or even access controllers (ACs). This is a problem that existing solutions cannot solve.
      </t>

	    <t>
	    	This document describes a mechanism for performing per-packet IP source address validation in WLANs. This mechanism follows the source address validation improvement (SAVI) model proposed in <xref target="RFC7039"/> to implement source address validation. The mechanism first performs ND snooping or DHCP snooping to bind an assigned IP address to a verified MAC address (the binding anchor in this scenario). Therefore, the MAC address should be secured by 802.11i or other mechanisms. Static addresses are manually bound to the MAC address of the corresponding host. The mechanism can then check the validity of the source IP address in the local packet against the binding association.  This fine-grained source address validation mechanism applies to both IPv4 and IPv6 packets.
	    </t>

	    <t>
	    	This mechanism utilizes two important data structures, the IP-MAC mapping table on the control plane and the MAC-IP mapping table on the data plane, to implement source address validation, which is described in detail in this document.
	    </t>

	    <t>
	    	The case of an interface with multiple MAC addresses is a special case mentioned in the SAVI charter and is the only special case that challenges MAC-IP binding. The mechanism to handle this case is specified in the document.
	    </t>

	    <t>
	    	Three deployment scenarios for this mechanism are specified in this document, describing the devices and details of deployment in different scenarios.
	    </t>

	    <t>
	    	When a host moves from one access point to another, the migration of binding entries can be triggered depending on the specific mobility scenario. The mechanism for handling host mobility is specified in the documentation based on different deployment scenarios.
	    </t>

	    <section anchor="simple_list" title="Terminology">
		<t>
            Access Point: The logical entity that provides access to the distribution services.
        </t>

        <t>
            Lightweight Access Point: The access points used in centralized WLAN architecture.
        </t>

        <t>
            Autonomous Access Point: The access points used in autonomous WLAN architecture.
        </t>

        <t>
            Access Controller: The network entity in the centralized WLAN architecture that manages wireless network access points that allow wireless devices to connect to the network.
        </t>

        <t>
            Binding anchor: A "binding anchor" is defined to be a physical and/or link-layer property of an attached device, as defined in <xref target="RFC7039"/>. In this document, the binding anchor refers to th MAC address.
        </t>

        <t>
            Binding entry: A rule that associates an IP address with a binding anchor.
        </t>

        <t>
            It is assumed to be familiar with SAVI-FCFS and SAVI-DHCP and their terms as defined in <xref target="RFC6620"></xref> and <xref target="RFC7513"></xref>, respectively.
        </t>
        </section>
	</section>





	<section anchor="requirements_language" 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"></xref>.
		</t>
	</section>





 	<section title="IP-MAC Binding">
 		<t>
 			This section specifies the operations for creating and clearing bindings between IP addresses/prefixes and MAC addresses. The reason for considering the binding of IP prefixes to MAC addresses is that there exists a need to issue prefixes for nodes in a broadcast network <xref target="I-D.draft-ietf-v6ops-dhcp-pd-per-device"></xref>.
		</t>

		<section anchor="data_structure" title="Data Structures">
      <t>
        The bindings between IP addresses/prefixes and MAC address are stored using two data structures, i.e., the IP-MAC mapping table and MAC-IP mapping table.
      </t>

			<section anchor="ip_mac_table" title="IP-MAC Mapping Table">
				<t>
					This table maps IP addresses/prefixes to their corresponding MAC addresses. The IP address/prefix is the index of the table. An IP address/prefix can have only one corresponding MAC address. Different IP addresses/prefixes can be mapped to the same MAC address.
				</t>

				<t>
					This table is used in the control process. Before creating a new IP-MAC binding, this table must be queried to prevent conflicting binding entries.  Also, this table must be queried before any packet filtering is performed. This table must be synchronized with the MAC-IP mapping table specified in <xref target="mac_ip_table"></xref>.
				</t>

				<t>
					Each entry in the IP-MAC mapping table must also record the binding method of the IP address/prefix. Addresses snooped in the DHCP address assignment procedure must have their binding method recorded as "DHCP", and addresses snooped in the Duplicate Address Detection procedure <xref target="RFC4862"></xref> must have their binding method recorded as "SLAAC". IPv6 prefixes snooped in the DHCP prefix delegation procedure must have their binding method recorded as "DHCP-PD".
				</t>
			</section>

			<section anchor="mac_ip_table" title="MAC-IP Mapping Table">
				<t>
					This table maps MAC addresses to the corresponding IP addresses/prefixes. The MAC address is the index of the table. It is a one-to-many mapping table, which means a MAC address can be mapped to multiple IP addresses/prefixes. Although multiple MAC addresses may exist on one interface, these MAC addresses must be mapped to different IP addresses/prefixes.
				</t>

				<t>
					This table is used for filtering. Different from wired networks, the MAC-IP mapping table and the IP-MAC mapping table can be maintained separately on different devices. A synchronization mechanism must be used between these two tables to ensure the consistency of the bindings. We will explain the details in <xref target="deployment_scenarios"></xref> for different deployment scenarios.
				</t>
			</section>
        </section>


        <section title="Pre-conditions for Binding">
            <t>
                As specified in <xref target="RFC7039"></xref>, in a binding-based mechanism, the security of IP address is dependent on the security of the binding anchor. In WLANs, 802.11i or other link-layer security mechanisms make MAC address a strong enough binding anchor.
            </t>

            <t>
                If the MAC address is unprotected, an attacker can spoof the MAC address to pass validation successfully.
            </t>
        </section>

        <section anchor="binding_ip_to_mac" title="Binding IP addresses to MAC addresses">
            <t>
                All the static IP-MAC address pairs are configured into the IP-MAC mapping table with the mechanism enabled.
            </t>

            <t>
                A separate procedure handles the binding of addresses/prefixes assigned by DHCP to MAC addresses. This procedure snoops on the DHCP address assignment or prefix delegation process between the attached host and the DHCP server. DHCP snooping in WLANs is the same as that in wired networks specified in <xref target="RFC7513"></xref>. Note that if a client registers a self-generated address with a DHCPv6 server, the SAVI device also needs to establish a binding for that address by listening to the registration messages <xref target="I-D.draft-ietf-dhc-addr-notification"></xref>. A first come, first served model can be considered to establish a binding for the first registered address with its corresponding MAC.
            </t>

            <t>
                A separate procedure handles the binding of stateless addresses to MAC addresses. This procedure snoops Duplicate Address Detection (DAD) procedure as described in <xref target="RFC4862"></xref> or Address Resolution procedure between attached hosts and neighbors as described in <xref target="RFC4861"></xref>. Based on the principle of roaming experience first in WLAN, the new binding anchor is selected in preference and triggers the deletion of the secure connection of the old binding anchor.
            </t>

            <t>
                In some deployment scenarios, the functions of address snooping and IP-MAC mapping table maintenance may also be separated to different devices. Therefore, to prevent conflicting binding entries, the device for address snooping must interact with the device that maintains the IP-MAC mapping table. We will specify the details in <xref target="ap_filtering"></xref>.
            </t>

            <t>
                Note that there are various ways to generate interface identifiers for IPv6 addresses <xref target="RFC7217"></xref><xref target="RFC8981"></xref><xref target="RFC8064"></xref>, but there is no difference for creating binding tables and performing source address verification. As mentioned above, a SAVI device only cares about DHCP messages and ICMP messages associated with stateless addresses when establishing binding table entries.
                In addition, since an IPv6 interface may have multiple IPv6 addresses, it is necessary to bind each IP address of that IPv6 interface to the corresponding MAC address. However, this may also pose security issues, which we will discuss in <xref target="Security"></xref>.
            </t>
        </section>

        <section anchor="binding_migration" title="Binding Migration">
            <t>
                Different from wired networks, SAVI for WLAN must handle the migration of binding entries when a mobile host moves from one access point to another.  After the move, the host will not perform another address configuration procedure to obtain new IP addresses but continue to use the existing IP address(es)/prefixes. Thus, binding entries in the foreign device accessed by mobile hosts cannot be established by snooping. A new mechanism is needed to correctly migrate the binding entry associated with the mobile host's IP address/prefix from the home device to the foreign device. If the host is assigned multiple addresses, multiple binding entries will be generated, and these entries will be migrated. If the binding migration fails, it triggers the host to come back online, thus re-establishing the binding entries. We will specify the details in <xref target="deployment_scenarios"></xref> depending on different deployment scenarios.
            </t>
        </section>

        <section anchor="binding_clearing" title="Binding Clearing">
            <t>
                Three kinds of events will trigger binding clearing:
                <list style="hanging">
                    <t hangText="1.">A host leaves explicitly this access point. All entries in the MAC-IP mapping table associated with this MAC address MUST be cleared.</t>
                    <t hangText="2.">A DHCP RELEASE message <xref target="RFC2131"></xref><xref target="RFC8415"></xref> is received from the owner of the corresponding IP address/prefix. This entry in the IP-MAC mapping table and the corresponding entries in the MAC-IP mapping table MUST be cleared.</t>
                    <t hangText="3.">A timeout message of the AC's client idle-time is received. All entries in the MAC-IP mapping table related to the MAC address MUST be cleared.</t>
                </list>
            </t>
        </section>
    </section>





    <section anchor="source_address_validation" title="Source Address Validation">
        <t>
            This section describes source address validation procedure for packets. In this procedure, all the frames are considered to have passed the verification of 802.11i or other security mechanisms.
        </t>

        <t>
            This procedure has the following steps:
            <list style="hanging">
                <t hangText="1.">Extract the IP source address and MAC source address from the frame. Look up the MAC address in the MAC-IP mapping table and check if the MAC-IP pair exists. If exists, forward the packet. Otherwise, go to step 2.</t>

                <t hangText="2.">Look up the IP address in the IP-MAC mapping table and check if the IP address/prefix exists. If it does not exist, drop the packet. If it exists, check whether the MAC address in the entry is the same as that in the frame. If so, forward the packet. Otherwise, drop the packet.</t>
            </list>
        </t>

        <t>
            In step 2, after the packet is judged to be valid and forwarded, synchronization between the MAC-IP and IP-MAC mapping tables SHOULD be triggered.  The MAC-IP binding of the packet SHOULD be synchronized from the IP-MAC mapping table to the MAC-IP mapping table, and thus subsequent packets with the same MAC-IP pair will be forwarded without going to step 2.
        </t>
    </section>    




  <section anchor="deployment_scenarios" title="Deployment Scenarios">
    <t>
      This section specifies three deployment scenarios, including two under centralized WLAN and one under autonomous WLAN. The deployment details and solutions for host mobility between APs are described for each scenario, respectively.
    </t>

    <section title="Centralized WLAN">
      <t>
        Centralized WLAN is comprised of lightweight access points (AP) and access controllers (AC). In this scenario, this document proposes the following two deployment solutions.
      </t>

      <section anchor="ap_filtering" title="AP Filtering">
        <t>
          With this deployment scheme, validated data packets received by an AP do not pass through the AC; only control packets and the questionable data packets pass through the AC. In this case, the AC maintains the IP-MAC mapping table, while the AP maintains the MAC-IP mapping table and performs address snooping.
        </t>

        <section title="Candidate Binding">
          <t>
            An AP executes the procedure specified in <xref target="binding_ip_to_mac"></xref>. The candidate bindings are generated after the snooping procedure.  Candidate bindings MUST be confirmed by the AC to be valid.
          </t>

          <t>
            After a candidate binding is generated, the AC is notified and checks whether the binding is valid or not. If a candidate binding does not violate any existing binding in the IP-MAC mapping table, the validity of the binding is determined. Otherwise, if an address/prefix is not suitable for use by the host, the AC notifies the corresponding AP.  If the candidate binding is valid, the AC adds an entry to the IP-MAC mapping table and notifies the AP.  Afterwards, the AP also adds an entry to the local MAC-IP mapping table.
          </t>
        </section>

        <section title="Packet Filtering">
          <t>
            As specified in <xref target="source_address_validation"></xref>, for incoming data packets, an AP looks up the MAC address in the local MAC-IP mapping table and checks if the MAC-IP pair exists.  If exists, the AP forwards the packet.  Otherwise, the AP delivers the packet to the AC for further processing.
          </t>

          <t>
            When receiving a data packet from the AP, the AC looks up the IP address or its prefix in the local IP-MAC mapping table and checks if the IP address/prefix exists. If it does not exist, the AC drops the packet. If it exists, the AC checks whether the MAC address in the entry is the same as that in the frame. If so, the AC forwards the packet.  Otherwise, the AC drops the packet.
          </t>

          <t>
            After the AC forwards a valid packet, it synchronizes the associated MAC-IP binding to the MAC-IP mapping table on the AP from which the packet comes. Subsequent packets with the same MAC-IP pair will be forwarded directly by the AP without going through the AC.
          </t>
        </section>

        <section title="Negative Entries">
          <t>
            In the AP filtering scenario, APs MAY drop packets directly without sending them to the AC by enabling the establishment of negative entries on APs.  Specifically, APs may establish negative entries in the following circumstances.
            <list style="hanging">
              <t hangText="1.">When an AP receives a certain number of packets within a certain amount of time with the same MAC-IP pair that does not exist in the local MAC-IP mapping table, it establishes a negative entry for this MAC-IP pair.  Then the AP drops all following packets that have the same MAC-IP pair as indicated in this negative entry without sending them to the AC for further processing.</t>
              <t hangText="2.">When an AP receives a certain number of packets within a certain amount of time with the same MAC address but different MAC-IP pairs and none of these MAC-IP pairs exist in the local MAC-IP mapping table, it establishes a negative entry for this MAC address. Then the AP drops all the following packets that have the same MAC address as indicated in this negative entry without sending them to the AC for further processing.</t>
            </list>
          </t>

          <t>
            Each negative entry has a limited lifetime.  The number of packets and duration of time to trigger the establishment of the negative entry, and the lifetime of the negative entry are configurable.
          </t>
        </section>

        <section anchor="capwap_extension" title="CAPWAP Extension">
          <t>
            CAPWAP protocol is used for communication between the AP and the AC.  A new CAPWAP protocol message element is introduced, which extends <xref target="RFC5415"></xref>.  The host IP message element is used by both the AP and the AC to exchange the binding information of hosts.
          </t>

          <t>
            The host IP message element can be used in the process of confirming candidate bindings.  When the AP generates a candidate binding, it reports the MAC address and related IP addresses to the AC using this message, with suggestions of the status of each IP address/prefix (e.g., available, unavailable, candidate).  After the AC checks the validity of the candidate binding, it replies using a message of the same format, informing the AP of the validation of each IP address/prefix with a suggested status.
          </t>

          <t>
            The host IP message element can be used in the process of binding migration.  When migration occurs, the source device uses this message to report the MAC address and related IP addresses to the destination device, with suggestions for the status of each IP address/prefix.  After the destination device checks the validity of the candidate binding, it replies using a message of the same format to inform the source device of the validity of each IP address/prefix with a suggested status.
          </t>

          <t>
            The host IP message element can also be used in other scenarios when the synchronization between MAC-IP and IP-MAC mapping tables is required as specified in <xref target="binding_clearing"></xref> and <xref target="source_address_validation"></xref>.  When the synchronization from IP-MAC mapping table to MAC-IP mapping table is triggered, the source device which holds the IP-MAC mapping table reports the MAC address and the related IP addresses/prefixes to the destination device which holds the MAC-IP mapping table using this message, with suggestions of the status of each IP address/prefix. The destination device replies using a message of the same format to acknowledge the source device.
            <figure align="center" suppress-title="true">
              <artwork align="center"><![CDATA[
     0               1               2               3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |    Radio ID   |  Total Length                 |  Sender Type  +
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |    MAC Flag   |     Length    |        MAC Address...         +
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                        MAC Address                            +
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |    IPv4 Flag  |  IPv4 Length  |           Reserved            +
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                    IPv4 Address 1(32 bit)                     +
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |    Status     |                  Reserved                     +
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                    Lifetime                                   +
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                    ........                                   +
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                    IPv4 Address n(32 bit)                     +
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |    Status     |                  Reserved                     +
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                    Lifetime                                   +
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |    IPv6 Flag  |  IPv6 Length  |           Reserved            +
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                    IPv6 Address 1(128 bit)                    +
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |    Status     |                  Reserved                     +
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                    Lifetime                                   +
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                    ........                                   +
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                    IPv6 Address n(128 bit)                    +
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |    Status     |                  Reserved                     +
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                    Lifetime                                   +
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     | Prefix Flag   | Prefix Length |           Reserved            +
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                   IPv6 Prefix 1(128 bit)                      +
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |     Length    |    Status     |           Reserved            +
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                    Lifetime                                   +
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                    ........                                   +
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                   IPv6 Prefix n(128 bit)                      +
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |     Length    |    Status     |           Reserved            +
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                    Lifetime                                   +
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |   BSSID Flag  | BSSID Length  |        BSSID...               +
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                     BSSID                                     +
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      ]]></artwork>
              <!-- <postamble>Figure 1: DHCPv6 general model and its possible extensions.</postamble> -->
            </figure>
          </t>

          <t>Radio ID: An 8-bit value representing the radio, whose value is between 1 and 31.</t>

          <t>Total Length: Total length of the following fields.</t>

          <t>Sender Type: An 8-bit value representing the sender of the message.  AP is represented by value 1 and AC is represented by value 2.</t>

          <t>MAC flag: An 8-bit value representing that the sub-field's type is MAC address, whose value is 1.</t>

          <t>MAC Length: The length of the MAC Address field.  The formats and lengths specified in EUI-48 and EUI-64 <xref target="EUI"></xref> are supported.</t>

          <t>MAC Address: A MAC address of the host.  At least one MAC address block MUST appear in the message, otherwise the message is considered as invalid.</t>

          <t>IPv4 Flag: An 8-bit value representing that the sub-field's type is IPv4 address, whose value is 2.</t>

          <t>IPv4 Length: The length of the IPv4 Address field.</t>

          <t>IPv4 Address: An IPv4 address of the host.  There may exist many entries, and each entry is comprised of an IPv4 address, an 8-bit value for address status (value 1 means available, value 0 means unavailable, value 255 means candidate), and a 32-bit value for lifetime. Lifetime refers to the valid time of the IPv4 Address. It is required to list all IPv4 addresses before IPv6 address blocks.</t>

          <t>IPv6 Flag: An 8-bit value representing that the sub-field's type is IPv6 address. A DHCPv6-assigned IP address is represented by the value 3, and a SLAAC-assigned IP address is represented by the value 4.
          </t>

          <t>IPv6 Length: The length of the IPv6 Address field.</t>

          <t>IPv6 Address: An IPv6 address of the host.  There may exist many entries, and each entry is comprised of an IPv6 address, an 8-bit value of address status (value 1 means available, value 0 means unavailable, value 255 means candidate), and a 32-bit value lifetime. Lifetime is the lease time of the IPv6 address, or the valid time of the SLAAC-assigned IPv6 address. All IPv4 and IPv6 addresses bind to the MAC address that appears before them in the message.</t>

          <t>Prefix Flag: An 8-bit value representing that the sub-field's type is IPv6 prefix, whose value is 6.</t>

          <t>Prefix Length: The length of the Prefix field.</t>

          <t>IPv6 Prefix: An IPv6 address or a prefix of an IPv6 address. The Prefix Length field specifies the number of valid leading bits in the prefix. The bits in the prefix beyond the prefix length are reserved and MUST be ignored by the receiver. There may exist many entries, and each entry is comprised of an IPv6 prefix, an 8-bit value of prefix status (value 1 means available, value 0 means unavailable, and value 255 means candidate), and a 32-bit value lifetime. Lifetime is the valid time of the IPv6 prefix. All IPv4 and IPv6 addresses, as well as IPv6 prefixes, are bound to the MAC address that precedes them in the message.</t>

          <t>Length: An 8-bit value that represents the number of leftmost contiguous bits of the address that form the IPv6 prefix. The value ranges from 0 to 128.</t>

          <t>BSSID Flag: An 8-bit value representing that the sub-field's type is BSSID, whose value is 5.</t>

          <t>BSSID Length: The length of the BSSID field.  The formats and lengths specified in EUI-48 and EUI-64 <xref target="EUI"></xref> are supported.</t>

          <t>BSSID: A basic service set identifier representing the BSS.</t>

        </section>

        <section title="Mobility Solution">
          <t>
            When a host moves from one AP to another, Layer-2 association happens before IP packet forwarding begins. The home AP deletes the binding when the mobile host is disconnected, and the foreign AP immediately requests the bound addresses/prefixes with the associated MAC address from the AC. The AC returns the binding with a suggested status. Once the foreign AP gets the addresses/prefixes that should be bound, binding migration is completed.  The protocol used for communication between the foreign AP and the AC is the same as described in <xref target="capwap_extension"></xref>, where the AC acts as the source device and the foreign AP as the destination device.
          </t>

          <t>
            In WLAN deployments where a host moves between ACs while maintaining the same IP address, binding migration between ACs is also required. In this case, ACs must communicate using the same protocol as in <xref target="capwap_extension"></xref>. Here, the home AC functions as the source device, and the foreign AC as the destination device, enabling seamless IP continuity for the mobile host.
          </t>
        </section>
      </section>

      <section title="AC Filtering">
        <t>
          In this scenario, an AC maintains both the MAC-IP and IP-MAC mapping tables and performs both address snooping and packet filtering. Therefore, all the packets must be forwarded to the AC first.
        </t>

        <t>
          The AC executes the procedure specified in <xref target="binding_ip_to_mac"></xref> and checks the validity of IP-MAC pairs by consulting the local IP-MAC mapping table.  No extra procedure is needed to establish the IP-MAC bindings.
        </t>

        <t>
          The AC executes the procedure specified in <xref target="source_address_validation"></xref> for packet filtering, and no extra procedure is involved.
        </t>

        <t>
          Host movement within an AC does not trigger any binding migration. Host movement between different ACs triggers binding migration. ACs must communicate to perform binding migration. The protocol used for communication between ACs is the same as described in <xref target="capwap_extension"></xref>, while in this scenario the home AC serves the role of the source device and the foreign AC serves the role of the destination device.
        </t>
      </section>
    </section>

    <section title="Autonomous WLAN">
      <t>
        Autonomous WLAN is comprised of autonomous access points.  In this scenario, an autonomous AP maintains both the MAC-IP and IP-MAC mapping tables and performs both address snooping and packet filtering.
      </t>

      <t>
        The autonomous AP executes the procedure specified in <xref target="binding_ip_to_mac"></xref> and checks the validity of IP-MAC pairs by consulting the local IP-MAC mapping table.  No extra procedure is needed to establish the IP-MAC bindings.
      </t>

      <t>
        The autonomous AP executes the procedure specified in <xref target="source_address_validation"></xref> for packet filtering, and no extra procedure is involved.
      </t>

      <t>
        Mobility between different autonomous APs will trigger binding migration. Autonomous APs must communicate to perform the binding migration. Considering that the communication protocol implementations among autonomous APs from different vendors may vary, this document does not specify the exact implementation method. Vendors only need to migrate the IP address/prefix and MAC address binding entries described in <xref target="data_structure"></xref> between autonomous APs.
      </t>
    </section>
  </section>


  <section title="IANA Considerations">
    <t>
      There is no IANA consideration currently.
    </t>
  </section>





  <section anchor="Security" title="Security Considerations">
    <t>
      The security of address allocation methods matters the security of this mechanism.  Thus, it is necessary to improve the security of stateless auto-configuration and DHCP first.
    </t>

    <t>
      <xref target="binding_ip_to_mac"></xref> mentions the possibility of an IPv6 interface having multiple addresses, which may in fact pose a risk. For example, if no restrictions are applied, an attacker could use the same MAC address for as many IP-MAC bindings as possible. In this case, other hosts may not be able to trigger the creation of any binding entries and therefore cannot get their packets through the SAVI device. To counteract potential security risks, additional mechanisms must be used, for example, to limit the maximum number of IPs that can be bound to a MAC address. However, considering that it is a reasonable requirement for a host to have many addresses in future use cases <xref target="RFC7934"></xref>, it is RECOMMENDED that the maximum number of binding entries for the same MAC address not be set too small, and that the value SHOULD also be adjustable.
    </t>

      <t>
        Moreover, a SAVI device MUST delete binding anchor information as soon as possible, except where there is an identified reason why that information is likely to be involved in the detection, prevention, or tracing of actual source-address spoofing.  Information about hosts that never spoof (probably the majority of hosts) SHOULD NOT be logged.
      </t>
  </section>


  <section anchor="random" title="Randomized MAC Address Considerations">
    <t>
      The use of randomized MAC addresses is a common measure to protect user privacy <xref target="I-D.draft-ietf-madinas-mac-address-randomization"></xref>. It has become a common practice for mainstream operating systems such as Windows, iOS, and Android to use randomized MAC addresses to join networks. Hosts primarily utilize the PNGM, PPGM, and PSGM methods <xref target="I-D.draft-ietf-madinas-mac-address-randomization"></xref> to generate random MAC addresses. These methods ensure that the MAC address remains unchanged once the client is connected to the network. In <xref target="IEEE802.11-2020"></xref>, to ensure continuous communication, hosts are not allowed to change their MAC addresses during transactional exchanges. Therefore, randomized MAC addresses do not affect the functionality of SAVI.
    </t>
  </section>


  <section anchor="Acknowledgements" title="Acknowledgements">
    <t>
      The authors would like to thank Jun Bi, Guang Yao, Yang Shi, and Hao Wang for their contributions to this document.
    </t>
  </section>

</middle>



  <!--  *****BACK MATTER ***** -->

<back>

    <references title="Normative References">
      	<!--?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml"?-->

        <?rfc include='reference.RFC.2119'?>

    </references>

    <references title="Informative References">

        <?rfc include='reference.RFC.2131'?>

        <?rfc include='reference.RFC.4861'?>

        <?rfc include='reference.RFC.4862'?>

        <?rfc include='reference.RFC.5415'?>

        <?rfc include='reference.RFC.6620'?>

        <?rfc include='reference.RFC.7039'?>

        <?rfc include='reference.RFC.7217'?>

        <?rfc include='reference.RFC.7219'?>

        <?rfc include='reference.RFC.7513'?>

        <?rfc include='reference.RFC.7934'?>

        <?rfc include='reference.RFC.8064'?>

        <?rfc include='reference.RFC.8074'?>

        <?rfc include='reference.RFC.8415'?>

        <?rfc include='reference.RFC.8981'?>

        <reference anchor="I-D.draft-ietf-madinas-mac-address-randomization">
          <front>
              <title>Randomized and Changing MAC Address</title>
              <author initials="JC." surname="Zuniga">
                <organization>CISCO</organization>
              </author>
              <author initials="CJ." surname="Bernardos">
                <organization>UC3M</organization>
              </author>
              <author initials="A." surname="Andersdotter">
                <organization>Sky UK</organization>
              </author>
              <date month="March" year="2023" />
          </front>
        </reference>

        <reference anchor="I-D.draft-ietf-v6ops-dhcp-pd-per-device">
          <front>
              <title>Using DHCPv6-PD to Allocate Unique IPv6 Prefix per Client in Large Broadcast Networks</title>
              <author initials="L." surname="Colitti">
                <organization>Google, LLC</organization>
              </author>
              <author initials="J." surname="Linkova">
                <organization>Google</organization>
              </author>
              <author initials="X." surname="Ma">
                <organization>Google</organization>
              </author>
              <date month="February" year="2024" />
          </front>
        </reference>

        <reference anchor="I-D.draft-ietf-dhc-addr-notification">
          <front>
              <title>Registering Self-generated IPv6 Addresses using DHCPv6</title>
              <author initials="W." surname="Kumari">
                <organization>Google, LLC</organization>
              </author>
              <author initials="S." surname="Krishnan">
                <organization>Cisco Systems, Inc.</organization>
              </author>
              <author initials="R." surname="Asati">
                <organization>Independent</organization>
              </author>
              <author initials="L." surname="Colitti">
                <organization>Google, LLC</organization>
              </author>
              <author initials="J." surname="Linkova">
                <organization>Google, LLC</organization>
              </author>
              <author initials="S." surname="Jiang">
                <organization>Beijing University of Posts and Telecommunications</organization>
              </author>
              <date month="March" year="2024" />
          </front>
        </reference>

        <reference anchor="IEEE802.11-2020">
            <front>
                <title>IEEE Standard for Information Technology--Telecommunications and Information Exchange between Systems - Local and Metropolitan Area Networks--Specific Requirements - Part 11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications</title>
                <author>
                    <organization>IEEE Std 802.11-2020</organization>
                </author>
                <date year="2021" />
            </front>
        </reference>

        <reference anchor="EUI" target="https://standards.ieee.org/content/dam/ieee-standards/standards/web/documents/tutorials/eui.pdf">
            <front>
                <title>Guidelines for Use of Extended Unique Identifier (EUI), Organizationally Unique Identifier (OUI), and Company ID (CID)</title>
                <author>
                    <organization>IEEE Standards Association</organization>
                </author>
                <date year="2017" />
            </front>
        </reference>

      <!-- <?rfc include='reference.RFC.8928'?> -->

    </references>


</back>
</rfc>
