SONIC架构简要分析-数据库

随着SONIC的日趋成熟,在互联网行业应用会越来越多,SONIC+白盒交换机的方式或许会成为将来数据中心的主流接入交换机。

为此,对SONIC的架构进行简要分析,看看与传统的网络操作系统的区别。

                               SONIC                                                                                                                            传统网络架构

LAG App,BGP App等都属于控制层,生成控制面的表项,SAI,ASIC Control Software相当于软转发层面,用来将控制面的数据转化为ASIC的数据,然后下发驱动。硬件转发层包含SDK和硬件,从上面的逻辑架构来看,两者并没有本质区别

但在实现上,有较大的差别,本次就讲讲引入数据库后的改变。在传统的交换机开发中,更注重流程,过程,引入数据库,实际带来思维的转变,将面向过程的开发转化为面向对象的开发。

引入数据库来非常多的好处

数据的处理清晰,避免了以前的在流程中多个地方对数据进行变更带来隐患。
模块间解耦。
实现方式与结果解耦。比如ACL,以前必须通过CLI或者MIB来实现,使用数据库后,不再关心实现方式,只要数据库中写入数据即可实现,那么ACL也可以是一个脚本,甚至可以远程写入。
借助数据库,可方便的实现同步,集群,备份等功能,简化了功能实现
有待大家发现
通常一个模块的处理通常如下:

在SONIC中则成为

在开发时,从关注流程,转变为关注数据,根据数据来进行相应的操作。数据库成为了整个系统的灵魂和核心。

我们来看如何通过数据库将数据从上到下串联起来

注意,此框图中的SONIC的Orcheestration Agent+SAI只相当于传统网络操作系统中的软转发层面的表项。在传统的网络操作系统中,软转发层面主要有两个作用,1)实现表项下发驱动的转换,将控制面的数据转化为ASIC SDK需要的数据。2)进行软转发操作。在SONIC中,软转发操作实际由内核完成。上图的操作流程为下发ASIC的流程。比如BGP协议产生的路由,会下发两份,1份路由下发到内核中,用于协议报文的收发。另一份则通过数据库通道下发到ASIC中。
 

<think> 根据用户的问题,他遇到了在构建sonic-buildimage项目时Git报错'detected dubious ownership in repository'的问题。这个错误通常是因为Git仓库的所有权与当前用户不匹配,可能是由于仓库在管理员权限下创建而当前未使用管理员权限操作导致。 根据引用[1]的提示,解决办法有两种: 1. 使用Git配置命令将当前仓库目录添加为安全目录:`git config --global --add safe.directory <仓库路径>` 2. 重新用管理员权限打开终端或重新以管理员身份操作。 因此,针对用户的具体情况,我们可以给出以下步骤: **解决步骤:** 1. **确认当前仓库路径**:首先,需要确定sonic-buildimage项目的完整路径。用户可以通过`pwd`(Linux/macOS)或`cd`命令(Windows)进入项目目录后,查看完整路径。 2. **使用Git命令添加安全目录**:在终端中执行以下命令(将`<仓库路径>`替换为实际的sonic-buildimage项目路径): ```bash git config --global --add safe.directory <仓库路径> ``` 例如,如果项目路径是`/home/user/sonic-buildimage`,则命令为: ```bash git config --global --add safe.directory /home/user/sonic-buildimage ``` 3. **重新以管理员权限运行**:如果上述方法无效,可以尝试以管理员身份运行终端(Windows)或使用`sudo`(Linux/macOS)重新执行构建命令。 4. **验证解决方案**:完成上述步骤后,重新运行构建命令,检查错误是否消失。 **注意事项**: - 如果用户使用的是Windows系统,请注意路径使用正斜杠(/)或双反斜杠(\\),例如:`C:/Projects/sonic-buildimage` 或 `C:\\Projects\\sonic-buildimage`。 - 如果项目路径中包含空格,需要用引号括起来,例如:`"C:/My Projects/sonic-buildimage"`。 如果问题仍然存在,可能需要检查文件夹的权限设置,确保当前用户有足够的权限访问和修改该目录。 §§相关问题§§ 1. 如何查看Git的全局配置? 2. 如何修改Git仓库的目录权限? 3. 为什么Git会检测仓库所有权? </think>### 解决 Git "detected dubious ownership in repository" 错误的方法 该错误通常发生在 Git 检测到仓库所有者和当前用户不匹配时,常见于跨权限操作(如管理员创建仓库后普通用户访问)。以下是详细解决方案: #### 方法 1:添加安全目录(推荐) ```bash # 替换为你的实际仓库路径 git config --global --add safe.directory /path/to/sonic-buildimage ``` **操作步骤**: 1. 获取仓库完整路径 ```bash pwd # Linux/macOS # 或 cd %project_path% && echo %cd% # Windows ``` 2. 执行安全目录配置(示例): ```bash # 假设路径为 /opt/sonic/sonic-buildimage git config --global --add safe.directory /opt/sonic/sonic-buildimage ``` #### 方法 2:以管理员身份操作 1. **Windows**: - 右键点击终端/IDE → "以管理员身份运行" - 重新执行构建命令 2. **Linux/macOS**: ```bash sudo make all # 在sonic-buildimage目录执行 ``` #### 方法 3:修改仓库所有权 ```bash # Linux/macOS sudo chown -R $(whoami) /path/to/sonic-buildimage # Windows(管理员权限运行): icacls /path/to/repo /reset /T ``` #### 验证修复 ```bash git status # 错误应消失 ``` > **原理说明**:Git 默认禁止非所有者访问仓库以防止权限问题,通过`safe.directory`可添加信任目录[^1]。建议优先使用方法1,因其不会改变系统权限结构。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值