On 01/28/2016 09:33 PM, Russell Bryant wrote:
> On 01/28/2016 10:53 AM, Numan Siddique wrote:
>> On 01/28/2016 01:40 PM, Numan Siddique wrote:
>>> From: Ben Pfaff <b...@nicira.com>
>>>
>>> Signed-off-by: Numan Siddique <nusid...@redhat.com>
>>> ---
>>>  ovn/ovn-nb.xml | 133 
>>> ++++++++++++++++++++++++++++++++++++++++++++++++++-------
>>>  1 file changed, 118 insertions(+), 15 deletions(-)
>>>
>>> diff --git a/ovn/ovn-nb.xml b/ovn/ovn-nb.xml
>>> index 4e414ce..e79a42d 100644
>>> --- a/ovn/ovn-nb.xml
>>> +++ b/ovn/ovn-nb.xml
>>> @@ -305,23 +305,126 @@
>>>        </column>
>>>  
>>>        <column name="port_security">
>>> -        <p>
>>> -          A set of L2 (Ethernet) addresses from which the logical port is
>>> -          allowed to send packets and to which it is allowed to receive
>>> -          packets.  If this column is empty, all addresses are permitted.
>>> -          Logical ports are always allowed to receive packets addressed to
>>> -          multicast and broadcast addresses.
>>> -        </p>
>>> +      <p>
>>> +        This column controls the addresses from which the host attached to 
>>> the
>>> +        logical port (``the host'') is allowed to send packets and to 
>>> which it
>>> +        is allowed to receive packets.  If this column is empty, all 
>>> addresses
>>> +        are permitted.
>>> +      </p>
>>>  
>>> -        <p>
>>> -          Each member of the set is an Ethernet address in the form
>>> -          
>>> <var>xx</var>:<var>xx</var>:<var>xx</var>:<var>xx</var>:<var>xx</var>:<var>xx</var>.
>>> -        </p>
>>> +      <p>
>>> +        Each element in the set must contain one or more Ethernet 
>>> addresses,
>>> +        optionally masked.  An element that contains only Ethernet 
>>> addresses
>>> +        restricts the host to sending packets from and receiving packets to
>>> +        those addresses.  It also restricts the inner source MAC addresses 
>>> that
>>> +        the host may send in ARP and IPv6 Neighbor Discovery packets.  It 
>>> does
>>> +        not restrict the logical port to any particular L3 addresses.  The 
>>> host
>>> +        is always allowed to receive packets to multicast and broadcast
>>> +        Ethernet addresses.
>>> +      </p>
>>>  
>>> -        <p>
>>> -          This specification will be extended to support L3 port security.
>>> -        </p>
>>> -      </column>
>>> +      <p>
>>> +        Each element in the set may additionally contain one or more IPv4 
>>> or
>>> +        IPv6 addresses (or both), with optional masks.  If a mask is 
>>> given, it
>>> +        must be a CIDR mask.  In addition to the restrictions described for
>>> +        Ethernet addresses above, such an element restricts the IPv4 or 
>>> IPv6
>>> +        addresses from the host may send and to which it may receive to 
>>> packets
>>> +        to the specified addresses.  A masked address, if the host part is
>>> +        zero, indicates that the host is allowed to use any addresses in 
>>> the
>>> +        subnet; if the host part is nonzero, the mask simply indicates the 
>>> size
>>> +        of the subnet.  In addition:
>>> +      </p>
>>> +
>>> +      <ul>
>>> +        <li>
>>> +          <p>
>>> +            If any IPv4 address is given, the host is also allowed to 
>>> receive
>>> +            packets to the IPv4 local broadcast address 255.255.255.255 
>>> and to
>>> +            IPv4 multicast addresses (224.0.0.0/4).  If an IPv4 address 
>>> with a
>>> +            mask is given, the host is also allowed to receive packets to 
>>> the
>>> +            broadcast address in that specified subnet.
>>> +          </p>
>>> +
>>> +          <p>
>>> +            If any IPv4 address is given, the host is additionally 
>>> restricted
>>> +            to sending ARP packets with the specified source IPv4 address.
>>> +            (RARP is not restricted.)
>>> +          </p>
>>> +        </li>
>>> +
>>> +        <li>
>>> +          <p>
>>> +            If any IPv6 address is given, the host is also allowed to 
>>> receive
>>> +            packets to IPv6 multicast addresses (ff00::/8).
>>> +          </p>
>>> +
>>> +          <p>
>>> +            If any IPv6 address is given, the host is additionally 
>>> restricted
>>> +            to sending IPv6 Neighbor Discovery Solicitation or 
>>> Advertisement
>>> +            packets with the specified source address or, for 
>>> solicitations,
>>> +            the unspecified address.
Sorry, I forgot to give a proper context. My question is for this case (where  
ipv6 address is given)

<<snip>>

I would like to know if it is really required to restrict Neighbor discovery 
traffic for IPv6.
A vm might send ipv6 ND packets with its
  - configured ipv6 address(es) or
  - its link local address or
  - with zero source address and ff02 multicast destination address,
This would result in lot of openflow flows just to restrict ND traffic.


<</snip>>
>>> +          </p>
>>> +        </li>
>>> +      </ul>
>>> +
>>> +      <p>
>>> +        If an element includes an IPv4 address, but no IPv6 addresses, then
>>> +        IPv6 traffic is not allowed.  If an element includes an IPv6 
>>> address,
>>> +        but no IPv4 address, then IPv4 and ARP traffic is not allowed.
>>> +      </p>
>>> +
>>> +      <p>
>>> +        Multiple elements act as a disjunction.  That is, when multiple
>>> +        elements exist, any packet that would be permitted by any 
>>> individual
>>> +        element, as described above, is permitted by the overall policy.
>>> +      </p>
>>> +
>>> +      <p>
>>> +        This column uses the same lexical syntax as the <ref column="match"
>>> +        table="Pipeline" db="OVN_Southbound"/> column in the OVN Southbound
>>> +        database's <ref table="Pipeline" db="OVN_Southbound"/> table.  
>>> Multiple
>>> +        addresses within an element may be space or comma separated.
>>> +      </p>
>>> +
>>> +      <p>
>>> +        This column is provided as a convenience to cloud management 
>>> systems,
>>> +        but all of the features that it implements can be implemented as 
>>> ACLs
>>> +        using the <ref table="ACL"/> table.
>>> +      </p>
>>> +
>>> +      <p>
>>> +        Examples:
>>> +      </p>
>>> +
>>> +      <dl>
>>> +        <dt><code>80:fa:5b:06:72:b7</code></dt>
>>> +        <dd>
>>> +          The host may send traffic from and receive traffic to the 
>>> specified
>>> +          MAC address, and to receive traffic to Ethernet multicast and
>>> +          broadcast addresses, but not otherwise.  The host may not send 
>>> ARP or
>>> +          IPv6 Neighbor Discovery packets with inner source Ethernet 
>>> addresses
>>> +          other than the one specified.
>>> +        </dd>
>>> +
>>> +        <dt><code>00:23:20:00:00:00/ff:ff:ff:00:00:00</code></dt>
>>> +        <dd>
>>> +          Similar to the first example, except that any Ethernet address 
>>> in the
>>> +          Nicira OUI is allowed.
>>> +        </dd>
>>> +
>>> +        <dt><code>80:fa:5b:06:72:b7 192.168.1.10/24</code></dt>
>>> +        <dd>
>>> +          This adds further restrictions to the first example.  The host 
>>> may
>>> +          send IPv4 packets from or receive IPv4 packets to only 
>>> 192.168.1.10,
>>> +          except that it may also receive IPv4 packets to 192.168.1.255 
>>> (based
>>> +          on the subnet mask), 255.255.255.255, and any address n 
>>> 224.0.0.0/4.
>>> +          The host may not send ARPs with a source Ethernet address other 
>>> than
>>> +          80:fa:5b:06:72:b7 or source IPv4 address other than 192.168.1.10.
>>> +          The host may not send or receive any IPv6 (including IPv6 
>>> Neighbor
>>> +          Discovery) traffic.
>> I would like to know if it is really required to restrict Neighbor discovery 
>> traffic for IPv6.
>> A vm might send ipv6 ND packets with its
>>   - configured ipv6 address(es) or
>>   - its link local address or
>>   - with zero source address and ff02 multicast destination address,
>> This would result in lot of openflow flows just to restrict ND traffic.
>>
>> I am an amateur in IPv6, so please correct me if I am wrong.
> You don't need any IPv6 specific flows here, right?  It's just that port
> security is now more specific and is only matching IPv4 packets in this
> example, so IPv6 is not allowed as a side effect.

You are right. My bad. Please see above.


> More work would indeed be required to support restricting IPv6 beyond
> just "MAC", which would allow any traffic with a given source MAC address.
>
> (I also CC'd Justin, who has been working on IPv6 support)
>

 
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to