Subject: [IPsec] My view of the requirements from AD-VPN

From: Yoav Nir <[email-masked]>
Date: Sun, 16 Mar 2014 08:25:51 +0200

As promised, here's my view of what a short list of requirements for AD-VPN should be like.

First, a few terms:
An AD-VPN is a subset of the hosts on the Internet, such that all traffic between two nodes within the AD-VPN must be protected by IPsec when it traverses nodes outside of the AD-VPN. An IPsec gateway is a node within the AD-VPN that protects the traffic for passage across nodes outside of the AD-VPN. An IPsec host is a node that protects only its own traffic (common for remote access VPNs). The set of hosts whose traffic is protected by an IPsec gateway is called its "protected domain". The AD-VPN can be said to be partitioned into protected domains.

All this can be accomplished with IPsec and IKEv2 as defined in RFCs 4301, 4303, and 5996. What's missing is dynamic updates to SPD and PAD, and a way to deal with the complexity of the configuration of large scale VPNs. 

So any IPsec gateway or host joining an AD-VPN has to know several things:
 - the total AD-VPN. Specifically, whether an IP address (could the the destination of an outgoing packet or the source of an incoming packet) is or is not in the AD-VPN. Packets that are destined to outside the AD-VPN can be sent in the clear over the Internet.
 - For each host in the AD-VPN, a next-hop gateway. 
 - Credentials for connecting to such a next-hop gateway.
 - If more protected domains, gateways or hosts are added to the AD-VPN, we want the node to learn of this. This doesn't have to happen immediately, but we would like to be able to set an upper bound on how long it takes.
 
For a simple configuration, there can be one such next-hop gateway for all addresses (that's a hub). Using a single hub for all the VPN is not efficient, so even if we accept this as an initial configuration, we need this to expand. 

Another requirement of this protocol is to limit the impact of rogue or compromised nodes. Specifically, such nodes should not be able to alter the AD-VPN by dynamically removing parts of the protected domains of other gateways, and checks and limits should be imposed on their ability to claim parts of the Internet as part of their own protected domains. This requirement may have a negative impact on usability, for example if additions to the AD-VPN would require matching configuration on both the protecting gateway and on some other node (could be a part of the AD-VPN, like a hub node, or an external server, or maybe an RPKI CA), but we believe it is essential for security in the face of the possibility of compromised nodes.

So to get all this, we need the following from the solution protocol (and it could be one protocol, or a whole suite of protocols at different levels:

 1. A protocol for discovery of the AD-VPN, and at least one next-hop gateway with the credentials to access it. The latter part may be assumed to be manually configured, but the discovery has to be automatic, as the total AD-VPN is assumed to change. Note that the other side of this protocol is not required to be part of the AD-VPN. A server giving out this information over HTTPS is an acceptable solution, as is encoding this information in the DNS.
 
 2. A protocol for propagating changes to the AD-VPN throughout the network. This does not have to be a single protocol. For example, We could have hub spokes that communicate this information through routing protocols, and spoke nodes that get the information from the hub nodes. Or trusted nodes that update an HTTPS server, while the other nodes periodically download said information. The requirement is that eventually, and after a bounded time period, all nodes will know of the change.
 
 3. A protocol for discovery of more efficient paths through the AD-VPN. Specifically, such a protocol would allow an IPsec gateway (or an IPsec host) to create a new tunnel such that the traffic would require fewer hops on its way to the destination host. This protocol would also need to handle providing credentials to the nodes. It's not enough to tell a gateway to set up a tunnel with another gateway at address 192.0.2.5, You also need to tell what credential that gateway is going to present (by DN or alternate name, and maybe by public key as in DANE) and also what IDi/IDr are going to be used in IKE. 

These are the requirements as I see them. The opinions posted here are my own, they do not reflect those of my employer, and do not necessarily reflect those of my co-authors on the AD-VPN draft.

Yoav

---

From: Yaron Sheffer <[email-masked]>
Date: Fri, 21 Mar 2014 19:20:22 +0200

Hi Yoav,

I like your attempt at reducing the requirement set to the minimum.

Parts of the text I think do not distinguish well between IPsec hosts 
(such as remote access clients) and (simple) hosts, that are non-IPsec 
hosts protected behind a gateway. Presumably simple hosts will be 
unaffected by this protocol.

And in the spirit of minimizing the set of requirements: isn't your #3 
solution components just an optimization? I think in many cases a 
protocol that includes #1 and #2 but not #3 could be sufficient for 
scale. And then #3 could be added as an extension. Or we can decide that 
we do not need a fully general #3, and we're good enough with simple 
shortcuts between two spokes of the same hub.

Thanks,
	Yaron

On 03/16/2014 08:25 AM, Yoav Nir wrote:
> _______________________________________________
> IPsec mailing list
> [email-masked]
> https://www.ietf.org/mailman/listinfo/ipsec
>

---

From: Yoav Nir <[email-masked]>
Date: Sat, 22 Mar 2014 01:25:08 +0200

On Mar 21, 2014, at 7:20 PM, Yaron Sheffer <[email-masked]> wrote:

> Parts of the text I think do not distinguish well between IPsec hosts (such as remote access clients) and (simple) hosts, that are non-IPsec hosts protected behind a gateway. Presumably simple hosts will be unaffected by this protocol.
> 
> And in the spirit of minimizing the set of requirements: isn't your #3 solution components just an optimization? I think in many cases a protocol that includes #1 and #2 but not #3 could be sufficient for scale. And then #3 could be added as an extension. Or we can decide that we do not need a fully general #3, and we're good enough with simple shortcuts between two spokes of the same hub.
> 

Without #3 we are left with the easy configuration - a few hubs meshed together, and all other nodes know about 1 hub each. This has some issues:
 - The hubs have very large peak loads.
 - A failure of a hub is catastrophic - the VPN goes away.
 - Increased latency because traffic goes through multiple hops.

Both of these points together make the hubs insanely expensive. They need to have hardware (both in the gateways themselves and in the network links) that will carry the peak load without introducing even more latency, and they need to have enough redundancy to practically never go down. Both of these are solved problems, but they’re problems you need to throw a lot of money at to solve. 

So without #3, I am not sure the effort is worthwhile. As for a lightweight #3, that only shortcuts the spokes of a single hub, it’s better than nothing, but I can use the example of my company (medium sized by any measure) that still manages to have two hubs. I’d rather that VoIP calls between two remote access clients connected to the different hubs (think me and Bob) not have to go through both hubs.

Yoav

---

From: Praveen Sathyanarayan <[email-masked]>
Date: Mon, 24 Mar 2014 16:30:52 +0000

On 3/21/14, 4:25 PM, "Yoav Nir" <[email-masked]> wrote:

> So without #3, I am not sure the effort is worthwhile.

+1 for this.

We started this effort to solve #3. To me, #1 and #2 are important
requirements as well. But #3 is a must.

‹ Praveen