Thanks for the thorough review, My comments in line as [Hu Jun]

-----Original Message-----
From: Idr <[email protected]> On Behalf Of Paul Wouters
Sent: Wednesday, July 24, 2019 8:39 AM
To: [email protected]
Cc: [email protected] WG <[email protected]>
Subject: [Idr] Review of draft-hujun-idr-bgp-ipsec-00


Hi,

Note that I am an IPsec person and not a routing expert.

The document's idea looks fine to me. It is using BGP messages to provision 
IKEv2 so that IPsec tunnels can be setup to protect packets as best as 
possible. That's great :)

And unlike most proposals the IPsec WG sees, this document does not try to 
replace IKEv2 with its own smarter Key Exchange protocol, so that's a double 
plus :)

[Hu Jun] indeed, IKEv2 is a field proven mature/secure protocol, there is 
really no need to re-invent a new way for key exchanging 

Thanks for reaching out to the ipsec WG, we really appreciate the chance to 
read drafts that use IPsec to give advise.


Below are some of my comments and questions I have:



- Configuring large number of tunnels is error prone and not scalable
   * Only true to some extend
   * See AutoVPN, DMVPM, NHRP+IKE
   * Still, this provisioning system seems to fit your eco system. It's as 
simple as it can be and
     does not seem to introduce any new complexity or risks.
[Hu Jun] All kinds of tunnel mechanism are used in large IP network where BGP 
is heavily used, that's why ietf-idr-tunnel-encaps introduce a unified 
mechanism for BGP to signal different type of tunnel config; my draft is just 
extension of it to support IPsec tunnel; and I intentionally keep the changes 
to BGP small and no change to IPsec, for easier adaption;


- What is "color"?

[Hu Jun] "color" is a general term used in routing to represent a set of rules 
or match criteria; for example color "red" means set-1 of rules, "yellow" means 
a set-2 of rules; in my draft, color sub-TLV is used to signal a set of IPsec 
config that are not explicitly signaled by other BGP sub-TLVs (like 
local/remote traffic selector prefix, public routing instance) ; 

Following is an example:
Color "red" maps to following IPsec config:
- certificate auth
- trust anchor CA-1
- ike-transform: sha256/aes-gcm-256/DH-Grp 15
- IKE_SA lifetime: 1 day
- esp-transform: sha256/aes-gcm-256/Pfs-Grp 15
- CHILD_SA lifetime: 2 hours
- ESN: yes
- ... etc

Color "yellow" maps to following IPsec config:
- certificate auth
- trust anchor CA-2
- ike-transform: sha128/aes-gcm-128/DH-Grp 15
- IKE_SA lifetime: 1 day
- esp-transform: sha128/aes-gcm-128/Pfs-Grp 15
- CHILD_SA lifetime: 2 hours
- ESN: No
- ... etc

 
- Section 3, step 4:

        When a router need to forward a packet along a path is determined
        by a BGP UPDATE which has a tunnel encapsulation attribute that
        contains one or more IPsec TLV, and router decides use IPsec
        based on local policy,

Required vs Optional IPsec issue. If only one end has "required" and the other 
end has "optional" then unencrypted packets will be dropped. Seeing IPsec 
tunnel TLV should probably mean it is mandatory to setup a tunnel?
[Hu Jun] A router could include multiple different tunnel type TLV in a BGP 
update, which means there could be multiple tunnel type options for a given 
route; and a receiver of such route might chose one of them based on local 
policy; this behavior is specified in section 5 of draft-ietf-idr-tunnel-encaps

It can be done as "optional" but then the IPsec/kernel mechanisms cannot 
trigger an IKE/IPsec negotiation and this protocol needs to be responsible for 
not just configuring IKEv2/IPsec but also for bringing up the tunnels when 
needed.
[Hu Jun] yes, if the system decides to use IPsec tunnel to reach a route (based 
on local policy), it needs to first to check if there is already an existing 
CHILD_SA it could use, if not, system needs to use IKEv2 to create one


- Section 3, step 6:

   - signaling IPsec configuration

Call it IPsec provisioning ?
[Hu Jun] I don't have strong opinion on this, provision is also fine to me; 

- Examples are using less prefered and slower algorithms
   * Change AES-CBC-256 with SHA-384. to AES-GCM-256 or CHACHA20_POLY1305
   * Change NULL-SHA256 to NULL-AES-GMAC
[Hu Jun] ok, I will make the change 

- 1/128 and 2/128 ?

       For 1/128 (VPN-IPv4 Labeled Unicast), 2/128 (VPN-IPv6 Labeled
       Unicast), these NLRI has embedded label, which cause the payload
       packet can't be encapsulated in ESP packet,

I don't understand why 1/128 or 2/128 are special ?

[Hu Jun] because these routes include a MPLS label, so by default, a router are 
supposed to add a MPLS label to the payload packet; but IPsec (ESP) only 
supports IP packet as payload, so label can't be included during ESP 
encryption/encapsulation; that's why a value 2 of Embedded Label Handling 
Sub-TLV is used to signal ignoring the MPLS label during ESP processing


Open questions:

- If the IKEv2 protocol fails, what happens with packets? Release in clear or 
drop?
   Is this something the BGP should configure/provision ? If not, it should 
state
   which of the two is expected
[Hu Jun] This depends if there is any other tunnels (signaled via other tunnel 
encap TLV in BGP update) could be used; if there is, then use another one based 
on local policy; if not, then drop the packet as no route available 

- If a router R1 and R2 have an ipsec tunnel for some traffic, and R1 
crashes/reboots,
   how do things recover? R2 will send packets and might not know something is 
wrong, unless
   it is configured for liveness. What happens when R1 comes back up? If all 
BGP routes
   are taken away via another mechanism, then I guess R2 would simply delete 
its tunnel.

[Hu Jun] there need to some keepalive mechanism to detect if tunnel is up or 
not; this is not specific to IPsec, all stateful tunnel need such mechanism; 
for IPsec, DPD is one option; another faster option would be running BFD over 
IPsec tunnel; after R2 detects tunnel is down, it has following options:
1. if there is another type of tunnel could use (as described as above), then 
use that tunnel
2. try re-create the tunnel for a few times, if still can't create the tunnel, 
use other tunnel if available 
Such case is also described in section 5 of draft-ietf-idr-tunnel-encaps

- Performance: if routes are large (eg 0/128) then very few tunnels would cover 
lots of
   routes. In general, having more parallel smaller CHILD SA's outperforms a 
single or two
   CHILD SA's by far. This could introduce performance issues.
[Hu Jun] agree, and user could freely choose between a few CHILD_SA or many 
CHILD_SA based on traffic selector sub-TLV BGP signals 

- Some IPsec options not mentioned could prevent a tunnel from being setup, 
such as
   whether to use Extended Sequence Numbers (ESN), or Perfect Forward Secrecry 
(PFS).
   Some of these could be locked down in the document (PFS=yes) but things like 
ESN
   really depend on the bandwidth of the tunnel.
[Hu Jun] as mentioned above, all IPsec config that is not explicit signaled by 
a sub-TLV, is indirectly signal by color

- Maybe some advise on replay-window size would be good. Larger is better but 
takes more
   memory. Matters mostly for highspeed links.

[Hu Jun] this sound more like a general IPsec optimization suggestion; kind 
orthogonal to the draft

Paul

_______________________________________________
Idr mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/idr

_______________________________________________
IPsec mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/ipsec

Reply via email to