linux4.12内核team是什么?team的四种模式和实例介绍

阅读: 评论:0

linux4.12内核team是什么?team的四种模式和实例介绍
  team是个啥玩意?
  team实现的功能跟bond相似,team本质上也是⼀个虚拟的⽹卡驱动(networkdevicedriver),只不过并没有真实的物理⽹卡与之对应,⽽是由这个虚拟⽹卡去“管辖”⼀系列的真实的物理⽹卡,它的代码结构和⼀般⽹卡驱动的代码结构⾮常类似。财经杂志
  team的四种模式
  主备模式:activebackup 只有⼀个⽹卡处于活跃状态,当⼀个宕掉另⼀个备份⽹卡马上切换到活跃状态。
  此算法的优点是可以提供⾼⽹络连接的可⽤性,但是它的资源利⽤率较低,只有⼀个⽹卡处于⼯作状态,在有 N 个⽹络接⼝的情况下,资源利⽤率为1/N。
  发包处理:从team⼝转发的包修改skb->dev字段为活跃dev,然后调⽤dev_queue_xmit进⾏发包
  收包处理:当netif_receive_skb收到包时,经过⼀系列处理之后,会调⽤skb->dev->rx_handler函数指针,team设备创建时注册为
team_handle_frame。从主⽹卡收到的包修改skb->dev字段为team⼝dev,然后返回netif_receive后续流程处理,此时返回值为
RX_HANDLER_ANOTHER。从备⽹卡收到的包修改skb->dev字段为team⼝dev,然后返回netif_receive后续流程处理,此时返回值为
RX_HANDLER_EXACT。
  备注:当skb->dev->rx_handler返回值为RX_HANDLER_ANOTHER时,netif_recive_skb会goto⾄函数⼊⼝进⾏处理。当返回值为
RX_HANDLER_EXACT时,netif_recive_skb不会将skb交给上层协议处理。
  ⼴播模式:broadcast 所有⽹卡设备均处于活跃状态,即在每个接⼝上传输每个数据包,此模式提供了容错能⼒,此模式增加了系统开销。
  发包处理:从team⼝转发包时,遍历当前team关联的接⼝列表,依次修改skb->dev字段为slave dev,并调⽤dev_queue_xmit发包。
  收包处理:在netif_receive_skb调⽤skb->dev->rx_handler时,会修改skb->dev字段为team⼝dev,并返回RX_HANDLER_ANOTHER。
  loadbalance负载均衡模式:loadbalance 所有⽹卡设备均处于活跃状态,根据port负载情况分配外出流量,同时如果其中某个port异常,另外的port会接管。此模式主要提升吞吐量,以及容错能⼒。
  发包处理:通过bfp提供的负载均衡算法获取⼀个hash索引,调⽤当前指定的hash算法传⼊hash索引获取相应的port 修改skb->dev字段为port dev,并调⽤dev_queue_xmit发包。
  收包处理:在netif_receive_skb调⽤skb->dev->rx_handler时,会修改skb->dev字段为team⼝dev,然后对skb进⾏判断如果是LACPDU,则返回RX_HANDLER_EXACT,否则返回RX_HANDLER_ANOTHER。
  随机平衡策略:random 所有⽹卡均处于活跃状态,发包时以⽣成随机索引的⽅式选择⽹卡,同时如果某个port异常,则会停⽤,此模式⼀定程度提升了吞吐量,以及容错能⼒。
  发包处理:随机⼀个索引值,根据索引值检查对应port当前是否能发包,如果不能则遍历port_list,如果到可⽤port,则选取当前port为发包接⼝。然后修改skb->dev字段为查到到的port dev,并调⽤dev_queue_xmit发包。
  收包处理:在netif_receive_skb调⽤skb->dev->rx_handler时,会修改skb->dev字段为team⼝dev,并返回RX_HANDLER_ANOTHER。
  轮询平衡策略:roundrobin 所有⽹卡均处于活跃状态,发包时以依次累加的计数器为索引选择⽹卡,通过如果某个⽹卡异常,则会停⽤,此模式⼀定程度提升了吞吐量,以及容错能⼒。
  发包处理:以team->sent_packets为索引,查slave设备并执⾏sent_packets++操作,检查获取到的port是否能发包,如果不能,则遍历
port_list,到可⽤的port之后,修改skb->dev字段为查到到的port dev,并调⽤dev_queue_xmit发包。
  收包处理:在netif_receive_skb调⽤skb->dev->rx_handler时,会修改skb->dev字段为team⼝dev,并返回RX_HANDLER_ANOTHER。
  team模块初始化
  1.注册⽹络事件处理函数team_notifier_block
  2.注册netlink⽤于与⽤户态通信
  team设备创建
  1.⽤户态通过netlink通知内核创建team。
  2.调⽤rtnl_newlink函数,此函数会进⾏net_device及team相关私有数据的申请。
  3.在上⼀步中申请net_device时,会调⽤team_setup对dev->netdev_ops进⾏赋值。
  4.然后在dev->netdev_ops->ndo_init(在上⼀步中初始化为team_init)函数中对team相关进⾏初始化。
  添加port过程
  1.态通过netlink通知内核添加port,通过team_port_add函数实现主要功能。
  2.⼀系列参数检查,分配⼀个⽤于存放port信息的team_port结构体。
  3.对申请的team_port结构指针进⾏赋值,并修改open⽹卡设备。灰铸铁牌号
  4.维护vlan、组播等相关数据结构。
  5.注册收包处理函数team_handle_frame。
利率对经济的影响  6.port添加⾄team->port_list。
  实例⽰范
  1.创建⼀个team接⼝,其中接⼝名为team0,模式为activebackup
  nmcli connection add type team con-name team0 ifname team0 config '{"runner":{"name":"loadbalance"}}'  2.给team0设置ip地址
  nmcli connection modify hod manual ipv4.addresses 172.16.254.79/24
  3.添加port
  nmcli connection add con-name team0-ens224 type team-slave ifname ens224 master team0
  nmcli connection add con-name team0-ens256 type team-slave ifname ens256 master team0
  4.启⽤⽹络
  启⽤team: nmcli connection up team0
  启⽤port: nmcli connection up ens224; nmcli connection up ens256
  5.显⽰team状态
  setup:
  runner: activebackup
  ports:
  ens224
  link watches:
  link summary: up
  instance[link_watch_0]:
  name: ethtool
  link: up司履生
东北菱  down count: 0
  ens256
  link watches:
  link summary: up
  instance[link_watch_0]:
  name: ethtool
  link: up
  down count: 0
  runner:
  active port: ens224
  6.测试
1.在局域⽹内的另⼀台机器ping17
2.16.254.79 测试结果:能ping通
  2.执⾏ifconfig ens224 down 测试ping结果:能ping通
汉译英
  3.此时查看team0状态 teamdctl team0 stat; 发现active port变成了ens256
  4.执⾏ifconfig ens256 down 测试ping结果:ping不通
  5.此时查看team0状态teamdctl team0 stat; 发现active port为空
  6.执⾏ifconfig ens224 up 测试ping结果:⼜能ping通了,且active port为ens224
  7.删除⽹络组
  断开连接:nmcli connection down team0
  删除team port:nmcli connection delete team0-ens224;nmcli connection delete team0-ens256  删除team:nmcli connection delete team0

本文发布于:2023-06-27 15:02:04,感谢您对本站的认可!

本文链接:https://patent.en369.cn/xueshu/137278.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:处理   模式   状态   发包
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图