B 部分 – C 中的网络协议开发(从头开始)
Part B – Network Protocol Development in C ( from Scratch )
面向网络核心开发人员的网络编码项目、Linux、系统编程、操作系统、C/C++ 项目
你会学到什么
-
了解网络协议是如何在网络设备上实现的
-
数据包处理,通过数据包处理更新协议数据结构
-
调试和排除代码以解决问题
-
逐步实施新功能
-
实施复杂的协议状态机和网络算法
-
该项目的目的是让您体验典型网络协议的端到端实现
要求
-
必须完成课程的 A 部分
描述
首先 祝贺您完成了本课程的 A 部分,我们在其中开发了协议的邻接管理功能。我希望你喜欢并且学得很好。您现在一定对开发基于定时器的状态机有信心了吗?
当我们进入项目的第 2 阶段 – 链接状态数据库管理时,这里开始了新的挑战。每个路由器都将使用其位于接口上的邻接对象来构建其本地链路状态数据库。但挑战在于 – 每个路由器都必须与拓扑中运行 ISIS 协议的每个其他路由器共享自己的链路状态数据库 ( LSDB ) 本地副本,以便每个路由器都具有一致且通用的 IGP 拓扑视图。这就是项目这一阶段的最终目标。
这个完整的课程系列分为 3 个部分——A部分、B 部分和 C 部分,其中 A 部分和 B 部分是实时的,C 部分正在开发中,截至 2021 年 12 月 21 日。
在敲击键盘进行实施之前,我们将再次涵盖所有必需的理论和概念。我们将在这部分课程中实施的三个主要概念是:
1. Packet Flooding的概念
2. 链接状态数据库的构建
3.链路状态数据库同步
我们将继续使用计时器,因为第 2 阶段也严重依赖计时器来实现其目标。除了定时器之外,我们还将通过这个项目介绍异步编程的世界。
继续通过做更多这样的项目来挑战自己,你甚至不会意识到你已经把自己变成了一个 10 倍的开发者。
项目目标
该项目的目的是让您循环体验典型网络协议的端到端实施。在本案例研究中,我们选择了一个路由协议作为示例,但实现典型网络协议所涉及的高级物流或多或少是相同的。例如,典型的网络协议必须:
- 可通过 CLI 配置
- 通过 show CLIs 显示内部状态和结果
- 响应一般配置更改(例如链接关闭、接口更改的 IP 地址等)
- 计算结果并将结果安装在表中(路由信息库、MAC 表、硬件表等)
- 响应拓扑变化(链路故障、设备故障等)
- 超时过时的数据结构(如果有)。
- 定期生成或处理协议数据包
- 如何向现有的工作协议代码库添加新功能。(这就是你作为软件工程师一生都应该做的事情!!)
由于该项目相当大(我预计大约有10k LOC),您还将有机会学习如何:
- 在头文件和src文件中组织代码
- 模块化代码库:如何将不同功能的代码保存在不同的 src 文件中
- 测试新功能,并交叉检查它不会破坏现有功能
- 通过版本控制系统(在本例中为 Github)维护代码提交
- 错误修复,并练习各种调试技术(gdb、Valgrind 等)
不用说,除非你做一个相当规模的项目,否则你无法锻炼以上几点。
本课程适合谁:
- 旨在在网络/分布式系统/系统编程方面工作的核心开发人员
- 不适合那些寻求非开发角色的人(这是纯粹的面向开发的课程)
- 不适合那些仍在苦苦挣扎于基本数据结构、基本 C 编程概念的人
- 职业人士、求职者、网络开发领域的改变者、学习者、渴望知识的人
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论(0)