All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/6] netns: add linux-vrf features via network namespaces
@ 2008-10-30 13:05 Vivien Chappelier
       [not found] ` <4909B10A.8090403-L+G57L1VLRbR7s880joybQ@public.gmane.org>
  0 siblings, 1 reply; 14+ messages in thread
From: Vivien Chappelier @ 2008-10-30 13:05 UTC (permalink / raw)
  To: containers-qjLDD68F18O7TbgM5vRIOg

[-- Attachment #1: Type: text/plain, Size: 2488 bytes --]

Hi,

    The recently introduced network namespaces allow separate standalone 
network stacks to coexist on the same machine. This is a very useful 
functionality that we have been needing and using in our products for 
some time, through the VRF ptchset (http://linux-vrf.sourceforge.net/). 
The goal of the VRF patchset and network namespaces are very similar, 
yet some features of the VRF are missing that these patches intend to 
provide.

    The network namespaces are currently tied to a process, and 
referenced by its pid. However, a networking stack has no particular 
reason to be associated with any process and it should be possible to 
use and setup additional networking stacks without the need to clone() 
or unshare(). The initial version of the "Coexist with the sysfs 
limitations" patches by Benjamin Thery introduced the notion of a unique 
network namespace identifier (nsid)  that is perfectly fit for the 
purpose of referencing networking stacks independently of any process. 
The first two patches of his set are therefore reused here to identify 
networking stacks.

    These patches additionally introduce the following features that 
were initially provided by the VRF patchset:
- the ability to move a socket to a different network namespace, through 
the new SO_NSID setsockopt(), given the nsid
- the ability to move a process to an existing network namespace, 
through the new SO_NETNS setsockopt(), given the nsid
- the ability to move an interface to a different namespace by nsid 
instead of pid
- the ability to create additional network namespaces on startup 
(dynamic addition/deletion is not supported but should be easy to add)

   To test those features, the chvrf tools attached in this mail have 
been ported to the new setsockopt() API. Example usage:

$ chnetns 1 /bin/sh   # This will attach a shell to existing network 
namespace 1

$ port -n 1 -p 3434   # This will open a listening socket on port 3434 
of network namespace 1

   Also attached is a patch to iproute2 to add the ability to move an 
interface to a different namespace by nsid, used this way:

$ ip link set eth0 nsid 1    # This will move eth0 to network namespace 1

   The patches should apply cleanly to net-next-2.6, version 2.6.28-rc2, 
commit 3891845e1ef6e6807075d4241966b26f6ecb0a5c.

   I would be glad to have your impressions and comments on these 
patches, and to have them merged upstream once everybody is satisfied 
with them.

regards,
Vivien Chappelier.


[-- Attachment #2: iproute2.patch --]
[-- Type: text/x-diff, Size: 2479 bytes --]

From 698eb7aeb60baca7fc7f0fda9080174c96f92e02 Mon Sep 17 00:00:00 2001
From: Vivien Chappelier <vivien.chappelier-L+G57L1VLRbR7s880joybQ@public.gmane.org>
Date: Tue, 28 Oct 2008 18:06:13 +0100
Subject: [PATCH] Add support for testing IFLA_NET_NS

---
 include/linux/if_link.h |    2 ++
 ip/iplink.c             |    9 +++++++++
 misc/Makefile           |    2 +-
 3 files changed, 12 insertions(+), 1 deletions(-)

diff --git a/include/linux/if_link.h b/include/linux/if_link.h
index c948395..fab393d 100644
--- a/include/linux/if_link.h
+++ b/include/linux/if_link.h
@@ -79,6 +79,8 @@ enum
 	IFLA_LINKINFO,
 #define IFLA_LINKINFO IFLA_LINKINFO
 	IFLA_NET_NS_PID,
+	IFLA_IFALIAS,
+	IFLA_NET_NS,
 	__IFLA_MAX
 };
 
diff --git a/ip/iplink.c b/ip/iplink.c
index fd23db1..ffb0d39 100644
--- a/ip/iplink.c
+++ b/ip/iplink.c
@@ -67,6 +67,7 @@ void iplink_usage(void)
 	fprintf(stderr, "	                  [ broadcast LLADDR ]\n");
 	fprintf(stderr, "	                  [ mtu MTU ]\n");
 	fprintf(stderr, "	                  [ netns PID ]\n");
+	fprintf(stderr, "	                  [ nsid NSID ]\n");
 	fprintf(stderr, "       ip link show [ DEVICE ]\n");
 
 	if (iplink_have_newlink()) {
@@ -179,6 +180,7 @@ int iplink_parse(int argc, char **argv, struct iplink_req *req,
 	char abuf[32];
 	int qlen = -1;
 	int mtu = -1;
+	int net = -1;
 	int netns = -1;
 
 	ret = argc;
@@ -228,6 +230,13 @@ int iplink_parse(int argc, char **argv, struct iplink_req *req,
                         if (get_integer(&netns, *argv, 0))
                                 invarg("Invalid \"netns\" value\n", *argv);
                         addattr_l(&req->n, sizeof(*req), IFLA_NET_NS_PID, &netns, 4);
+		} else if (strcmp(*argv, "nsid") == 0) {
+                        NEXT_ARG();
+                        if (net != -1)
+                                duparg("nsid", *argv);
+                        if (get_integer(&net, *argv, 0))
+                                invarg("Invalid \"nsid\" value\n", *argv);
+                        addattr_l(&req->n, sizeof(*req), IFLA_NET_NS, &net, 4);
 		} else if (strcmp(*argv, "multicast") == 0) {
 			NEXT_ARG();
 			req->i.ifi_change |= IFF_MULTICAST;
diff --git a/misc/Makefile b/misc/Makefile
index 8c25381..a4c9591 100644
--- a/misc/Makefile
+++ b/misc/Makefile
@@ -1,7 +1,7 @@
 SSOBJ=ss.o ssfilter.o
 LNSTATOBJ=lnstat.o lnstat_util.o
 
-TARGETS=ss nstat ifstat rtacct arpd lnstat
+TARGETS=ss nstat ifstat rtacct lnstat
 
 include ../Config
 
-- 
1.5.4.4


[-- Attachment #3: chnetns.tar.gz --]
[-- Type: application/x-gzip, Size: 1553 bytes --]

[-- Attachment #4: Type: text/plain, Size: 206 bytes --]

_______________________________________________
Containers mailing list
Containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org
https://lists.linux-foundation.org/mailman/listinfo/containers

^ permalink raw reply related	[flat|nested] 14+ messages in thread
* [PATCH 0/6] netns: add linux-vrf features via network namespaces
@ 2009-04-15  3:14 Krishna Vamsi-B22174
  0 siblings, 0 replies; 14+ messages in thread
From: Krishna Vamsi-B22174 @ 2009-04-15  3:14 UTC (permalink / raw)
  To: containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA

 
 
Hi Vivien Chappelier,
 
 
In my use case, a security appliance provides security to 100 networks
and 
a user space process which receives control traffic from these 100
networks.
Earlier we were using VRF ID patch , so my objective of having separate
routing table 
for each network was achieved. 
 
Now I have to customize  2.6.27 kernel to achieve the above requirement.

 
I have compiled the 2.6.27 kernel with 
CONFIG_NAMESPACES=y
# CONFIG_UTS_NS is not set
# CONFIG_IPC_NS is not set
# CONFIG_USER_NS is not set
# CONFIG_PID_NS is not set
CONFIG_NET_NS=y
CONFIG_SYSFS=y
CONFIG_MACVLAN=y
CONFIG_VETH=y
 
 
Please clarify me
 
1)Will these 6 patches satisfy my requirement ?
  Do I need any additional patches other than the 6 patches?
  
2)Please let me know the recommended iproute2 version  .
 
3)Network Namespace object ID starts from 1 ... 4095. Is my
understanding correct ?
 
4)Are there any test programs to verify ?If so what is the recommended
glibc version to compile these
  test programs?
 
  I will post my comments after testing this patch.
 
Regards
    Vamsi

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

end of thread, other threads:[~2009-04-15  3:14 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-10-30 13:05 [PATCH 0/6] netns: add linux-vrf features via network namespaces Vivien Chappelier
     [not found] ` <4909B10A.8090403-L+G57L1VLRbR7s880joybQ@public.gmane.org>
2008-10-30 14:38   ` Andreas B Aaen
     [not found]     ` <200810301538.08032.andreas.aaen-546VmZ+UeKYX2WXlbB3fKg@public.gmane.org>
2008-10-30 15:03       ` Serge E. Hallyn
2008-10-30 16:20       ` Vivien Chappelier
     [not found]         ` <4909DEC8.9090102-L+G57L1VLRbR7s880joybQ@public.gmane.org>
2008-10-30 23:07           ` Eric W. Biederman
     [not found]             ` <m14p2tznoz.fsf-B27657KtZYmhTnVgQlOflh2eb7JE58TQ@public.gmane.org>
2008-10-31  9:46               ` Andreas B Aaen
     [not found]                 ` <200810311046.17506.andreas.aaen-546VmZ+UeKYX2WXlbB3fKg@public.gmane.org>
2008-10-31 14:17                   ` Daniel Lezcano
     [not found]                     ` <490B1384.7030001-NmTC/0ZBporQT0dZR+AlfA@public.gmane.org>
2008-10-31 18:59                       ` Eric W. Biederman
     [not found]                         ` <m1zlkksi91.fsf-B27657KtZYmhTnVgQlOflh2eb7JE58TQ@public.gmane.org>
2008-10-31 19:32                           ` Eric W. Biederman
     [not found]                             ` <m13aicsgr2.fsf-B27657KtZYmhTnVgQlOflh2eb7JE58TQ@public.gmane.org>
2008-10-31 20:48                               ` Daniel Lezcano
     [not found]                                 ` <490B6F19.4060206-NmTC/0ZBporQT0dZR+AlfA@public.gmane.org>
2008-10-31 23:10                                   ` Eric W. Biederman
2008-10-31 18:43                   ` Eric W. Biederman
2009-03-25 18:21   ` Bruce Jones
  -- strict thread matches above, loose matches on Subject: below --
2009-04-15  3:14 Krishna Vamsi-B22174

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.