首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com ToB IT社区-企服评测·应用市场
»
论坛
›
软件与程序人生
›
DevOps与敏捷开发
›
Netlink在SONiC中的应用
返回列表
发新帖
Netlink在SONiC中的应用
[复制链接]
发表于 2025-9-17 23:34:21
|
显示全部楼层
|
阅读模式
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
Netlink在SONiC中的应用
Netlink先容
Netlink 是 Linux 内核态步伐与用户空间步伐之间举行通信的机制之一,本来是用于传递网络协议栈中的各种控制消息。它接纳和套接字(socket)编程接口雷同的情势,常用于设置内核网络子体系,如网络接口、路由、流表、策略路由等。由于Socket编程接口的广泛应用以及Socket编程接口比传统的 ioctl 更机动、更高效,因此Netlink也被大量应用于与网络应用无关的其它场所。如N
ETL
INK_GENERIC,N
ETL
INK_KOBJECT_UEVENT范例的Socket等等。
Netlink 消息格式包罗struct nlmsghdr Netlink 消息头(长度、范例、标记等);struct XXX 协议数据(如 ifinfomsg, rtmsg 等); 属性(TLV格式)可选字段,范例-长度-值格式。
Netlink在SONiC中的应用
SONiC的各类名字以syncd末端的服务大量利用Netlink来
监控
体系中网络装备的变革,将最新状态同步到Redis,并关照其他服务举行相应的更新。*syncd服务把硬件状态同步到
数据库
,内核态的步伐
监控
端口状态,发送Netlink Event给用户态portsyncd,portsyncd监听Netlink变乱,将互换机中所有端口状态同步到STATE_DB; natsyncd监听Netlink变乱,将互换机中所有NAT状态同步到APPL_DB.
Netlink在SONiC中的实现
sonic-swss-common中用NetLink类封装了netlink套接字
API
交互的接口用于通过NetLink套接字与Linux内核通信。
代码
包罗在netlink.cpp中,接纳Select框架用于变乱驱动编程。
NetLink类的套接字管理:这个类管理到Linux内核的netlink套接字毗连。netlink.cpp: 16 - 22
NetLink类接纳非壅闭操纵:将套接字设置为非壅闭模式,答应异步操纵。netlink.cpp: 37
NetLink类大缓冲区巨细:套接字缓冲区设置为16MB以处置处罚大量数据。netlink.cpp: 38-39
组注册:答应订阅特定的netlink组播组。netlink.cpp: 51 - 61
转储(DUMP)哀求:支持哀求内核信息的转储。netlink.cpp: 63 - 73
NetLink类实现了Selectable接口,它为变乱驱动编程提供了下列方法:
getFd():返回netlink套接字的文件形貌符。netlink.cpp: 75 - 78
readData():当netlink套接字可用时从套接字读取数据。netlink.cpp: 80 - 99
消息处置处罚
当接收到netlink消息时,它由onNetlinkMsg回调函数处置处罚,该函数将消息转发给NetDispatcher:netlink.cpp:102-106
NetLink类通常用于:
创建到内核的netlink套接字毗连
注册特定的netlink组以接收关照
从内核哀求信息转储
通过NetDispatcher处置处罚传入的netlink消息
这答应应用步伐直接从Linux内核接收有关网络相干变乱的关照(如接口更改、路由更新等)。
NetLink类是SONiC -swss-common库的一部门,通过netlink套接字接口在用户空间应用步伐和Linux内核之间举行通信,如许的设计使得SONiC SWSS的框架结构成为一种基于变乱驱动编程的异步网络监视结构范例。
回复
使用道具
举报
返回列表
天津储鑫盛钢材现货供应商
+ 我要发帖
登录后关闭弹窗
登录参与点评抽奖 加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表