链路层的网卡聚合-基于Linux bonding

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

linux总是可以用一种最简单的方式实现一个很复杂的功能,特别是网络方面的,哪怕这个功能被认为只是在高端设备上才有,linux也可以很容易的实现,以前的文章已经说了不少次了,比如vlan功能,比如高级路由和防火墙功能等等,本文着重说一下linux的bonding,也就是端口聚合的功能模块。不可否认,在网络设备这个层面上上,linux搞出了两个很成功的虚拟设备的概念,一个是tap网卡,另一个就是本文所讲述的bonding,关于tap网卡的内容,请参阅之前关于OpenVPN的文章。
     如果有一个问题摆在眼前,那就是关于linux bonding有什么比较好的资料,答案就是linux内核的文档,该文档在$KERNEL-ROOT/Documentation/networking/bonding.txt,我觉得没有任何资料比这个更权威了。
一、bonding简介
bonding是一个linux kernel的driver,加载了它以后,linux支持将多个物理网卡捆绑成一个虚拟的bond网卡,随着版本的升级,bond驱动可配置的参数越来越多,而且配置本身也越来越方便了。
     我们在很多地方会使用到物理网卡端口汇聚的功能,比如我们想提升网络速率,比如我们想提供热备份,比如我们想把我们的主机配置成一个网桥,并且使之支持802.3ad动态端口聚合协议等等,然而最重要的还是两点,第一点是负载均衡,第二点就是热备份啦。
二、驱动以及Changes介绍
linux的bonding驱动的最初版本仅仅提供了基本的机制,而且需要在加载模块的时候指定配置参数,如果想更改配置参数,那么必须重新加载bonding模块;然后modprobe支持一种rename的机制,也就是在modprobe的时候支持使用-o重新为此模块命名,这样就可以实现一个模块以不同的配置参数加载多次了,起初比如我有4个网口,想把两个配置成负载均衡,两个配置成热备,这只能手工重新将bonding编译成不同的名称来解决,modprobe有了-o选项之后,就可以两次加载相同的驱动了,比如可以使用:
modprobe bonding -o bond0 mode=0
modprobe bonding -o bond1 mode=1

加载两次bonding驱动,用lsmod看一下,结果是bond0和bond1,并没有bonding,这是由于modprobe加载时命名了,然而最终,这个命名机制不再被支持了,因为正如modprobe的man手册所叙述的一样,-o重命名机制主要适用于test。最后,bonding支持了sysfs的配置机制,对/sys/class/net/目录下的文件进行读或者写就可以完成对驱动的配置。
     不管怎样,在sysfs完全支持bonding配置之前,如果想往某一个bonding网卡添加设备或者删除设备的时候,还是要使用经典且传统的ioctl调用,因此必然需要一个用户态程序与之对应,该程序就是ifenslave。
     我想,如果linux的所有关于设备的配置都能统一于sysfs,所有的关于内核和进程配置统一于procfs(内核是所有进程共享的地址空间,也有自己的内核线程以及进程0,因此对内核的配置应该在procfs中)&#x

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值