免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4778 | 回复: 4
打印 上一主题 下一主题

net_namespace.c倒底有什么用啊? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-07-07 18:41 |只看该作者 |倒序浏览
不明白这个文件有什么用?

论坛徽章:
0
2 [报告]
发表于 2011-07-08 09:55 |只看该作者
网络命名空间。
虚拟化技术要用到的。

不明白这个文件有什么用?
zhangsuozhu 发表于 2011-07-07 18:41

论坛徽章:
0
3 [报告]
发表于 2011-07-08 12:03 |只看该作者
回复 2# asweisun_shan


    谢谢仁兄,能说的更细点吗? 这方面的资料不太好找

论坛徽章:
0
4 [报告]
发表于 2011-07-08 14:26 |只看该作者
我现在也只是一知半解。
下面是我的理解:
对于network namespace而言,就是把网络资源(包括,网卡设备,路由,协议层)分成不同的容器内,
容器间互不干涉,容器内就是我们现在使用的网络功能。

你可以参考:
http://lxc.sourceforge.net/index ... namespaces/network/
http://lxc.sourceforge.net/index ... ces/network/status/

回复  asweisun_shan
    谢谢仁兄,能说的更细点吗? 这方面的资料不太好找
zhangsuozhu 发表于 2011-07-08 12:03

评分

参与人数 1可用积分 +6 收起 理由
Godbach + 6 感谢分享

查看全部评分

论坛徽章:
0
5 [报告]
发表于 2011-07-08 16:35 |只看该作者
Linux kernel 2.6.20 new feature: net namespace
在Linux协议栈中引入网络命名空间, 是为了支持网络协议栈的多个实例, 而这些协议栈的隔离就是由命名空间来实现的(有点像进程的线性地址空间, 协议栈不能访问其他协议栈的私有数据).

需要纳入命名空间的元素包括进程, 套接字, 网络设备. 进程创建的套接字必须属于某个命名空间, 套接字的操作也必须在命名空间内进行, 网络设备也必须属于某个命名空间, 但可能会改变, 因为网络设备属于公共资源.

为了实现网络命名空间, 整个协议栈的代码都需要更新, 工作量非常大.

试想有两个并行的协议栈, 那么所有协议栈相关的全局变量都必须修改为协议栈私有. 最好的办法就是让这些全局变量成为一个per net namespace变量的成员, 然后为协议栈的函数调用都加入一个namespace参数.

但是内核开发者面临几个问题:
1. 最好让现有的内核代码隐式的使用命名空间内的变量, 而不要更新所有的内核代码, 否则工作量太大;
2. 性能损耗应该非常小, 使得使用命名空间与否对用户没有影响;

Ref:
[1] http://lwn.net/Articles/219597/
[2] http://lwn.net/Articles/218595/
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP