自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 XDP学习笔记

XDP的使用与eBPF程序分不开,因此要了解学历XDP,须知道什么是eBPF、什么是XDP。

2024-03-16 19:36:48 1246 1

原创 VPP-如何使用C-API

1)所有API函数都被在C 头文件中描述2)所有VPP API间的交互通过直接的C函数调用。

2024-03-16 15:14:46 887

原创 VXLAN学习笔记

VXLAN(Virtual Extensible LAN)即虚拟扩展局域网,是大二层网络中广泛使用的网络虚拟化技术。在源网络设备与目的网络设备之间建立一条逻辑VXLAN隧道,采用MAC in UDP的封装方式,即,将虚拟机发出的原始以太报文完整的封装在UDP报文中,然后在外层使用物理网络的IP报文头和以太报文头封装,这样,封装后的报文就像普通IP报文一样,可以通过路由网络转发,这就像给二层网络的虚拟机插上了路由的翅膀,使虚拟机彻底摆脱了二、三层网络的结构限制。

2024-03-12 16:11:05 954

原创 #pragma-学习笔记

因此,在使用 #pragma clang loop unroll(full) 指令时,应该根据具体情况仔细评估其对性能的影响,并确保不会导致不必要的代码膨胀和性能下降。循环展开是一种优化技术,它通过将循环体中的多次迭代展开成单独的语句,以减少循环的迭代次数和减少循环控制开销。完全展开循环意味着将循环中的所有迭代都展开成单独的语句,从而完全消除了循环的迭代次数和循环控制开销。这可以在一定程度上提高代码的性能,特别是对于迭代次数较少且迭代次数在编译时已知的循环来说,完全展开循环可能会更有效地利用计算资源。

2024-03-04 19:20:50 386

原创 VPP-API概念

Reply/Request方法: Request:nameReply:name+_replyDump/Detail方法: Request:namename+_detailsnamename+_reply。

2024-02-23 15:42:36 491

原创 C 编译生成静态库、动态库的方式

此前编程涉及到自定义编译生成静态库或动态库,为了方便以后查阅,在此记录一下,同时分享给大家。将C文件编译成静态库或动态库可以使用不同的工具和编译选项,取决于你的需求和平台;以下是使用GCC编译器的简单示例。

2024-02-20 19:20:20 912

原创 C __attribute__编译属性整理

最近在看VPP源码,很多变量、函数都设置了编译属性,编译属性的作用却不是很明确,为了增加记忆以及方便日后查阅,在此整理并分享给大家。

2024-02-05 18:15:26 590 2

原创 VPP学习-VPP初始化流程

VPP作为一个开源的、高性能的用户态网络协议栈,以进程的形式运行于Linux或(类unix)系统下,即VPP实际是一个用户进程,VPP启动后可通过"ps -ef | grep vpp"命令查看。

2024-02-05 17:36:45 1216 1

原创 VPP学习-startup.conf配置文件

VPP(Vector Packet Processing,矢量报文处理),作为一个开源的高性能数据包处理框架,旨在提供可扩展、灵活且高效的网络数据包处理能力;由于传统Linux 内核协议栈整体网络吞吐性能的局限性,目前VPP已被广泛运用于路由器、防火墙等网络设备上,因此,作为网络开发工程师,在熟悉Linux内核协议栈的同时,有必要对VPP用户态协议栈有所了解,了解其实现原理、编码特点,报文处理方式以及通过何种方式实现性能提升,从今天开始希望和大家一起研究学习。

2024-02-01 16:36:09 1440 1

原创 Linux 路由配置与使用

路由信息用于指导数据包从源地址查找到目的地址传输路径的信息;

2024-01-31 17:56:05 2292

原创 Linux VLAN相关概念、转发原理及处理流程

二、三层转发是网络工程师经常接触到的一个问题,VLAN配置是二、三层转中一个很重要的概念,在配置VLAN的情况下,内核对报文是如何处理的呢?

2024-01-29 15:47:39 1493

原创 Linux Netfilter框架实现及函数调用处理过程

本身从事网络安全工作,具体为防火墙产品的开发,对Linux 内核而言,Linux 防火墙功能由Netfilter框架实现,因此有了对Linux内核Netfilter实现逻辑的学习研究的兴趣,也想借此平台和大家一起交流学习。

2024-01-26 15:03:14 1290 1

原创 GO-浅谈GO语言中的抽象及设计模式

最近用GO在写一个解析程序,将已知的安全规则、NAT规则解析为对应的xlb规则,安全规则、NAT规则本身有很多相似的字段,若每种规则解析按照面向过程的方法编程,有很多重复的地方,此外,若增加新的规则解析需要大段调整主程序,单纯的像C语言(本人起初一直是C开发)那样面向过程编程,不能很好的体现代码的架构性,且可扩展性差,因此借鉴了C++面向对象编程的思想;

2024-01-23 20:07:36 450 1

原创 Linux 内核下Bridge配置以及报文处理流程实现

作为网络工程师,对于报文二三层转发过程应该比较熟悉,那么对于常见的bridge接口转发、vlan报文转发在Linux内核中是如何实现的,却不是很清楚,希望就此问题能和大家一起了解学习,这里从概念、配置、报文处理几个方面先对Bridge进行了解学习。

2024-01-23 10:55:57 1318 1

原创 GO-创建TUN/TAP接口并实现报文的收发

最近在学习Linux 内核二三层转发的知识,同时也在学习GO编程,于是有了如何通过Go实现创建TUN/TAP接口,并实现收发包的想法,通过查阅相关资料及不断调试终于实现,在此分享给大家,希望能共同学习交流。

2024-01-17 15:40:32 1712 1

原创 GO - 数据库连接

在Web应用开发过程中,多数情况下涉及到连接、操作数据库的过程,最近在编程过程中打开数据库一直失败,后查阅资料解决,在此记录一下。

2024-01-10 10:40:59 402

原创 Go语言学习-类型断言、netlink

由于工作原因,开始接触GO语言,随着Go语言用的越来越多,因此开始了GO语言的学习之路,结合近期GO的使用,这里想讲解两个主题:GO 类型断言 和 GO 程序如何实现获取内核路由信息。

2024-01-09 17:33:11 457

原创 iptables规则下发的过程

最近在学习研究Linux内核NAT处理逻辑(),发现要想理解NAT的处理必须弄清iptables规则在Linux 内核中是如何维护的,进而想要知道iptables规则配置从用户态到内核态,一步步是如何将iptables规则下发到内核的。

2024-01-04 22:25:00 880 1

原创 Linux 内核报文发送处理过程

最近在学习Linux协议栈相关内容,当被问到Linux 内核网卡收报的过程,我们能很快的简述一个大概的过程,但是对于报文外出,对外发送时的处理过程却有些模糊,故借此机会,对Linux内核报文发送过程进一步学习。以ipv4为例,Linux内核报文发送分两种情况:1.本机外出报文发送 2.转发报文发送;依据这两种情况,我们分别了解学习。

2023-12-28 15:48:31 1108 1

原创 Linux 依据连接跟踪处理报文的具体过程

连接跟踪是Linux内核中一个重要的模块,当涉及报文过滤、安全服务处理时更是绕不开连接跟踪,在此前的博客中记录了连接建立、连接确认等处理过程,但依据连接信息对报文处理的过程并未详细描述,故此进一步学习。

2023-12-27 14:23:36 433 1

原创 Linux 报文从网卡到协议栈之间处理的过程

作为一个Linux内核开发的程序员,时常会被问到内核收报的处理过程,很多时候可以快速讲出一个大概,但关注的重点多在内核协议栈的报文处理过程,对于报文从到达网卡再到上送协议栈之间的处理过程总是很模糊,因此想就此过程进行学习研究,故有了本篇博客。

2023-12-27 13:45:38 989 1

原创 Linux内核中的NAT处理

NAT(Network Address Translation,网络地址转换),是一种网络通信协议,用于将私有网络中的IP地址转换成公网IP地址,以访问公网资源,实现内网与外网之间的通信;NAT同时也是一种网络安全处理策略。

2023-12-17 17:37:37 1214 1

原创 对编程的一点认知

作为一个程序员,软件开发工程师,编程是一个程序员最基础的工作,也是安身立命之本,基础却不简单,也可以说尤其重要,它可以不断巩固提升你的技术壁垒,在不断实现需求、解决问题中积累经验,让你明白程序的设计实现是如何影响实际应用的,让你对软件功能从编码实现到投入运行整个过程有更底层的、更清晰的认知。

2023-12-12 22:43:22 36

原创 Linux nf_conntrack(三)-本地外出报文

之前基于接收报文简单介绍了连接建立(ipv4_conntrack_in)与连接确认(nf_confirm)的处理过程,关于本机外出报文连接相关处理还不清楚,这里进一步学习完善。

2023-12-10 17:26:52 375 1

原创 Linux nf_conntrack(二)-连接确认

最近走读学习Linux内核关于连接跟踪相关处理,上一篇中记录了连接建立的过程,感兴趣的同学可以参考:;一个连接的完整性需要经过确认才能建立,因此这里学习连接确认相关处理;从上述nf_hook_ops的定义来看,涉及连接确认的HOOK点有两个:NF_INET_LOCAL_IN和NF_INET_POST_ROUTING;分别对应对到本机报文建立连接的确认处理和转发报文建立的连接的确认处理,后面分别简称为本地会话和转发会话,但对应的处理函数均为nf_confirm,我们稍后讨论。

2023-12-08 10:43:50 744

原创 Linux nf_conntrack(一)-连接建立

网络安全业务正是基于连接展开的,关注的是针对一个连接正反向报文的处理,比如nat,当首包到来时基于报文信息创建连接,并记录针对该连接安全业务处理的相关信息,如nat 原始ip,转换后ip等等,后续同一连接的报文直接查会话进行相关处理,根据连接记录查询针对报文进行的安全业务处理,缩短了后续报文安全业务处理的步骤,提高服务处理的性能,此外连接跟踪也是一种查询定位报文经过哪些安全业务模块处理的手段。本着学习的态度,写下了这篇博客,可能存在误解或不清楚的地方,欢迎大家多提意见,共同学习讨论。

2023-12-07 16:38:34 970 1

Linux TIPC协议

Linux TIPC协议

2024-01-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除