前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在Pod中开启Loopback网卡的组播功能

在Pod中开启Loopback网卡的组播功能

作者头像
云原生小白
发布2023-08-28 18:15:11
3570
发布2023-08-28 18:15:11
举报
文章被收录于专栏:LokiLoki

本篇文章大部分由ChatGPT4生成

最近有业务的容器需要在Kubernetes上运行ROS2,由于ROS2的DDS(Data Distribution Service,数据分发服务)的通讯框架采用了组播的方式将消息分发给订阅者节点以提高效率。所以如果在一个 kubernetes 集群中部署多套ROS2,就会导致在ROS2之间的数据出现串流的情况。解决这个问题,我们需要将组播数据路由到本地的loop回环网卡上。研究了下在Kubernetes CNI中默认插件中的loopback是没有这个支持的。要解决这个需求,需要简单小改下cni 的 loopback 插件,让其在为pod创建loop网卡时,将组播地址224.0.0.0转到的loop网卡。在开始前,我们还是有必要回顾学习下相关的知识。

什么是Loop网卡

Loopback网卡是一种特殊的网络接口,用于在本地主机之间建立虚拟的网络连接。它的主要特点是,数据包从一个网络接口发送出去,然后立即返回到同一个接口,而不需要经过任何物理网络设备。在Linux系统中,loopback网卡通常使用“lo”作为设备名,并分配了一个固定的IP地址,即127.0.0.1。

loopback网卡的作用

  1. 本地通信和测试 Loopback网卡允许主机在本地进行网络通信和测试,而不需要依赖外部网络。这意味着,当开发人员需要测试新的网络应用程序时,可以在本地环境中使用loopback接口进行测试,而无需连接到实际的网络环境。
  2. 网络应用程序的开发和调试 在开发网络应用程序时,loopback网卡为程序员提供了一个便捷的测试平台。通过使用127.0.0.1这个特殊的IP地址,开发人员可以在没有实际网络连接的情况下,测试和调试他们的应用程序。这样可以节省时间,提高开发效率。
  3. 网络安全 Loopback接口还可以用于加强网络安全。例如,可以将某些敏感的网络服务(如数据库服务器)绑定到loopback接口上,这样只有通过本地主机才能访问这些服务。这可以有效地防止外部攻击者对这些服务进行攻击。
  4. 网络诊断和性能评估 Loopback网卡还可以用于网络诊断和性能评估。例如,通过ping命令测试loopback接口的连通性,可以迅速判断出网络配置是否正确。此外,通过在loopback接口上进行网络性能测试(如带宽、延迟等),可以评估主机的网络性能,为优化网络配置提供依据。

什么是组播

网络组播是一种特殊的网络通信方式,允许一个数据包同时发送给一组目标地址。组播地址是一个特殊的IP地址范围(IPv4的224.0.0.0至239.255.255.255,IPv6的FF00::/8),用于标识组播组。组播技术在许多场景中都有广泛应用,如在线视频会议、网络电视直播等。

修改CNI / loopback

克隆CNI源码到本地 https://github.com/containernetworking/plugins,修改plugins/main/loopback/loopback.go,在为pod添加loopback网卡的同时将组播 224.0.0.0/4 路由到本地

代码语言:javascript
复制
func cmdAdd(args *skel.CmdArgs) error {
...
  err = netlink.LinkSetMulticastOn(link)
  if err != nil {
   return err // not tested
  }

  err = netlink.RouteAdd(&netlink.Route{
   LinkIndex: link.Attrs().Index,
   Scope:     netlink.SCOPE_HOST,
   Dst: &net.IPNet{
    IP:   net.IPv4(224, 0, 0, 0),
    Mask: net.IPv4Mask(240, 0, 0, 0),
   },
  })
  if err != nil {
   return err // not tested
  }
...
}

然后使用命令build_linux.sh编译新的loopback文件,然后将kubernetes节点自带/opt/cni/bin/loopback文件替换即可。最终当新的Pod运行成功后,我们就可以看到如下效果

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-05-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云原生小白 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是Loop网卡
  • 什么是组播
  • 修改CNI / loopback
相关产品与服务
腾讯云服务器利旧
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档