netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC] network namespaces
@ 2006-08-15 14:20 Andrey Savochkin
  2006-08-15 14:48 ` [PATCH 1/9] network namespaces: core and device list Andrey Savochkin
                   ` (10 more replies)
  0 siblings, 11 replies; 72+ messages in thread
From: Andrey Savochkin @ 2006-08-15 14:20 UTC (permalink / raw)
  To: netdev
  Cc: dlezcano, serue, haveblue, clg, herbert, sam, ebiederm,
	Andrew Morton, dev, devel, alexey

Hi All,

I'd like to resurrect our discussion about network namespaces.
In our previous discussions it appeared that we have rather polar concepts
which seemed hard to reconcile.
Now I have an idea how to look at all discussed concepts to enable everyone's
usage scenario.

1. The most straightforward concept is complete separation of namespaces,
   covering device list, routing tables, netfilter tables, socket hashes, and
   everything else.

   On input path, each packet is tagged with namespace right from the
   place where it appears from a device, and is processed by each layer
   in the context of this namespace.
   Non-root namespaces communicate with the outside world in two ways: by
   owning hardware devices, or receiving packets forwarded them by their parent
   namespace via pass-through device.

   This complete separation of namespaces is very useful for at least two
   purposes:
    - allowing users to create and manage by their own various tunnels and
      VPNs, and
    - enabling easier and more straightforward live migration of groups of
      processes with their environment.

2. People expressed concerns that complete separation of namespaces
   may introduce an undesired overhead in certain usage scenarios.
   The overhead comes from packets traversing input path, then output path,
   then input path again in the destination namespace if root namespace
   acts as a router.

   So, we may introduce short-cuts, when input packet starts to be processes
   in one namespace, but changes it at some upper layer.
   The places where packet can change namespace are, for example:
   routing, post-routing netfilter hook, or even lookup in socket hash.

   The cleanest example among them is post-routing netfilter hook.
   Tagging of input packets there means that the packets is checked against
   root namespace's routing table, found to be local, and go directly to
   the socket hash lookup in the destination namespace.
   In this scheme the ability to change routing tables or netfilter rules on
   a per-namespace basis is traded for lower overhead.

   All other optimized schemes where input packets do not travel
   input-output-input paths in general case may be viewed as short-cuts in
   scheme (1).  The remaining question is which exactly short-cuts make most
   sense, and how to make them consistent from the interface point of view.

My current idea is to reach some agreement on the basic concept, review
patches, and then move on to implementing feasible short-cuts.

Opinions?

Next in this thread are patches introducing namespaces to device list,
IPv4 routing, and socket hashes, and a pass-through device.
Patches are against 2.6.18-rc4-mm1.

Best regards,

Andrey

^ permalink raw reply	[flat|nested] 72+ messages in thread

end of thread, other threads:[~2006-10-04  9:40 UTC | newest]

Thread overview: 72+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-08-15 14:20 [RFC] network namespaces Andrey Savochkin
2006-08-15 14:48 ` [PATCH 1/9] network namespaces: core and device list Andrey Savochkin
2006-08-16 14:46   ` Dave Hansen
2006-08-16 16:45     ` Stephen Hemminger
2006-08-15 14:48 ` [PATCH 2/9] network namespaces: IPv4 routing Andrey Savochkin
2006-08-15 14:48 ` [PATCH 3/9] network namespaces: playing and debugging Andrey Savochkin
2006-08-16 16:46   ` Stephen Hemminger
2006-08-16 17:22     ` Eric W. Biederman
2006-08-17  6:28       ` Andrey Savochkin
2006-08-17  8:30     ` Kirill Korotaev
2006-08-15 14:48 ` [PATCH 4/9] network namespaces: socket hashes Andrey Savochkin
2006-09-18 15:12   ` Daniel Lezcano
2006-09-20 16:32     ` Andrey Savochkin
2006-09-21 12:34       ` Daniel Lezcano
2006-08-15 14:48 ` [PATCH 5/9] network namespaces: async socket operations Andrey Savochkin
2006-09-22 15:33   ` Daniel Lezcano
2006-09-23 13:16     ` Andrey Savochkin
2006-08-15 14:48 ` [PATCH 6/9] allow proc_dir_entries to have destructor Andrey Savochkin
2006-08-15 14:48 ` [PATCH 7/9] net_device seq_file Andrey Savochkin
2006-08-15 14:48 ` [PATCH 8/9] network namespaces: device to pass packets between namespaces Andrey Savochkin
2006-08-15 14:48 ` [PATCH 9/9] network namespaces: playing with pass-through device Andrey Savochkin
2006-08-16 11:53 ` [RFC] network namespaces Serge E. Hallyn
2006-08-16 15:12   ` Alexey Kuznetsov
2006-08-16 17:35     ` Eric W. Biederman
2006-08-17  8:29       ` Kirill Korotaev
2006-09-05 13:34   ` Daniel Lezcano
2006-09-05 14:45     ` Eric W. Biederman
2006-09-05 15:32       ` Daniel Lezcano
2006-09-05 16:53       ` Herbert Poetzl
2006-09-05 18:27         ` Eric W. Biederman
2006-09-06 14:52           ` Kirill Korotaev
2006-09-06 15:09             ` [Devel] " Kir Kolyshkin
2006-09-06  9:10         ` Daniel Lezcano
2006-09-06 16:56           ` Herbert Poetzl
2006-09-06 17:37             ` [Devel] " Kir Kolyshkin
2006-09-06 18:34               ` Eric W. Biederman
2006-09-06 18:58                 ` Kir Kolyshkin
2006-09-06 20:53                   ` Cedric Le Goater
2006-09-06 23:06                 ` Caitlin Bestler
2006-09-06 23:25                   ` Eric W. Biederman
2006-09-07  0:53                     ` Stephen Hemminger
2006-09-07  5:11                       ` Eric W. Biederman
2006-09-07  8:25                   ` Daniel Lezcano
2006-09-07 18:29                     ` Eric W. Biederman
2006-09-08  6:02                       ` Herbert Poetzl
2006-09-07 16:23                 ` [Devel] " Kirill Korotaev
2006-09-07 17:27                   ` Herbert Poetzl
2006-09-07 19:50                     ` Eric W. Biederman
2006-09-08 13:10                     ` Dmitry Mishin
2006-09-08 18:11                       ` Herbert Poetzl
2006-09-09  7:57                         ` Dmitry Mishin
2006-09-10  2:47                           ` Herbert Poetzl
2006-09-10  3:41                             ` Eric W. Biederman
2006-09-10  8:11                               ` Dmitry Mishin
2006-09-10 11:48                                 ` Eric W. Biederman
2006-09-10 19:19                               ` [Devel] " Herbert Poetzl
2006-09-10  7:45                             ` Dmitry Mishin
2006-09-10 19:22                               ` Herbert Poetzl
2006-09-12  3:26                               ` Eric W. Biederman
2006-09-11 14:40                           ` [Devel] " Daniel Lezcano
2006-09-11 14:57                             ` Herbert Poetzl
2006-09-11 15:04                               ` Daniel Lezcano
2006-09-11 15:10                               ` Dmitry Mishin
2006-09-12  3:28                                 ` Eric W. Biederman
2006-09-12  7:38                                   ` Dmitry Mishin
2006-09-06 21:44               ` [Devel] " Daniel Lezcano
2006-09-06 17:58             ` Eric W. Biederman
2006-09-05 15:47     ` Kirill Korotaev
2006-09-05 17:09     ` Eric W. Biederman
2006-09-06 20:25       ` Cedric Le Goater
2006-09-06 20:40         ` Eric W. Biederman
2006-10-04  9:40 ` Daniel Lezcano

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).