Tom's Blog

DNS、数据面与 AI 网关


  • 首页

  • 分类

  • 关于

  • 归档

  • English

  • 搜索

nslookup

发表于 2021-04-19 | 分类于 DNS

nslookup(name server lookup)域名记录查询器,用来查询域名相关信息,包括linux版本及windows自带版本。

阅读全文 »

dig

发表于 2021-04-19 | 分类于 DNS

dig(Domain Information Groper)域名记录搜索器,用来查询域名相关信息,属于域名服务器软件套件BIND的组成部分。

阅读全文 »

redis

发表于 2021-04-16 | 分类于 Tools

redis (REmote DIctionary Server),是用c语言开发的,分布式,key-value内存数据库,并支持持久化。

阅读全文 »

mysql

发表于 2021-04-16 | 分类于 Tools

mysql用于操作mysql数据库的命令行工具。

阅读全文 »

etcd

发表于 2021-04-16 | 分类于 Tools

etcd 是一个高可用强一致性的键值对存储系统,用于共享配置和服务发现。

阅读全文 »

ns

发表于 2021-03-15 | 分类于 DNS

NameServer(缩写ns)属于DNS的一种记录类型,用来指定该域名由哪个DNS服务器来进行解析,ns记录格式说明参见 RFC 1035。

阅读全文 »

history

发表于 2021-03-14 | 分类于 Linux

history命令用于显示历史上执行过的shell命令,原理是:当执行完shell命令后,系统会将命令报存在内存中,当shell退出时会将内存中的命令存入文件中,比如~/.bash_history,存储的文件及存储的个数都可以用配置项配置。

阅读全文 »

es

发表于 2021-03-13 | 分类于 Tools

ElasticSearch是用java开发的基于Lucene的提供RestfulAPI的开源搜索引擎,本文主要讲解索引及其模板的相关操作,如果使用默认模板,可能会导致grafna显示问题(比如时间字段格式不兼容)。

阅读全文 »

dpdk适配mellanox网卡

发表于 2021-03-12 | 分类于 DPDK

以网卡Mellanox Technologies MT27710 Family [ConnectX-4 Lx]为例。

阅读全文 »

golang安装及vscode配置

发表于 2021-03-11 | 分类于 Tools

golang是google推出的一种新型编程语言,拥有语法简单(类c,上手快),静态强类型(不易引入bug),编译型(执行速度快),并发型(充分利用多核),垃圾回收(减少对内存维护的代价)等优秀特性。本文主要说明安装及vscode配置相关内容。

阅读全文 »

python scapy

发表于 2021-03-10 | 分类于 Libs

scapy主要优势在于丰富的协议数据包构造。原理为基于libpcap(windows上是winpcap/npcap)提供的一个python接口。本文主要以dns协议为例,说明scapy的使用。

阅读全文 »

DPDK分片与重组

发表于 2021-03-09 | 分类于 DPDK

DPDK版本:16.11.2,默认支持对大报文的分片和组装,但编码过程中仍需要关注几个地方,否则会陷入单步调试的泥沼不能自拔。

注意点:

  1. mbuf中的packet_type有可能并未被网卡填充,不能直接使用;
  2. reassemble接口中frag_tbl和death_row,不是线程安全的,不支持并发访问;
  3. mbuf库中只有read链表的操作,没有write链表的操作,所以需要自己实现;
  4. fragment接口参数中必须保证分片大小为8的整数倍;
  5. fragment前udp校验和的计算可参考dpdk checksum;
  6. fragment后ipv4校验和如果自己计算的话,需要重置掉offload标志;
  7. fragment后要free掉原始的mbuf,否则send后会出现mbuf泄漏;
阅读全文 »

protobuf for c

发表于 2021-03-08 | 分类于 Libs

protobuf是google提供的一种数据序列化、反序列化工具,支持变长编码(数据压缩)、向后兼容(方便升级)、平台无关(方便移植)、语言无关(前后台解耦)等优秀特性。可用于数据存储、网络数据交互等场景。本文主要介绍protobuf在c语言编程中的安装步骤。

protobuf安装包主要包括两部分:代码生成器(处理.proto) + 运行时库。
c: 由于官方主代码库不提供c库,需要安装第三方库(插件形式)。
c++/java/go/c#/python/js/object-c/ruby/php/dart: 均可使用官方库安装。

阅读全文 »

交换机bgp配置

发表于 2021-03-07 | 分类于 Tools

BGP(Border Gateway Protocol),即边际网关协议,主要用于AS(autonomous system)之间的路由信息交换(EBGP),也可用于大型的AS内部(IBGP)。提供BGP服务的实体叫做BGP router,而与BGP router连接的对端叫做BGP peer。推荐阅读BGP漫谈。本文主要讲解基于华为三层交换机[H3C S5830V2]的配置方法。

阅读全文 »

交换机端口聚合配置

发表于 2021-03-06 | 分类于 Tools

端口聚合,又称为链路聚合,就是将物理上的多个端口配置到一起,形成逻辑上的一个端口,使之具有:增大带宽、负载均衡、冗余链路的优点。下面以华为三层交换机[H3C S5830V2]为例,说明端口聚合的配置过程。

阅读全文 »

dpdk checksum

发表于 2021-03-05 | 分类于 DPDK

版本:16.11.2,当解析或组装ip/icmp/icmpv6/igmp/udp/tcp/sctp报文时,会发现都存在两个字节(16位)的checksum字段,其生成及校验算法相同。实现方式有两种:1,软件方式计算;2,offload到网卡计算。本文主要介绍软件计算方法及dpdk中的实现。
注意:当代码中设置了offload标志后,就不能使用软件方法计算,否则校验和重复计算会导致错误,因为硬件计算时校验和字段不为0。

阅读全文 »

kvm

发表于 2021-03-04 | 分类于 Linux

kvm是linux内核提供的基于硬件辅助的虚拟化实现方案,主要组件包括:内核态(kvm.ko/kvm_inter.ko/kvm_amd.ko)及用户态(qemu)。关于kvm原理,推荐阅读KVM 虚拟化详解。本文主要提供kvm+centos7.2的安装过程。

阅读全文 »

Docker

发表于 2021-03-03 | 分类于 Linux

docker是一种轻量级的虚拟化技术,用go语言实现,充分利用了linux的cgroups/namespaces/UnionFS三大技术,解决了开发环境和生产环境环境不一致和资源共享的问题。

阅读全文 »

Windows VirtualBox

发表于 2021-03-02 | 分类于 Tools

VirtualBox是一款开源的虚拟机软件,支持windows/linux/mac等多个系统。

阅读全文 »

ip

发表于 2021-03-01 | 分类于 Linux

ip命令是用于显示和配置网络设备、路由、策略路由及隧道。
语法:ip [ OPTIONS ] OBJECT { COMMAND | help }

与ifconfig区别:
1.安装方式不同
  ifconfig:yum install net-tools
  ip:yum install iproute
2.实现原理不同
  ifconfig:通过procfs(/proc)和ioctl系统调用去访问和改变内核网络配置;
  ip:通过netlink套接字接口与内核通讯,完成增删改查;
3.使用方式不同
  net-tools:通过ifconfig/arp/route/netstat等多个命令操作地址、路由等信息;
  iproute2:通过单个ip命令及统一的格式即可完成ip、路由等的操作;

阅读全文 »

tshark

发表于 2021-02-28 | 分类于 Linux

tshark是wireshark的命令行工具,同tcpdump一样,可通过libpcap抓取/过滤/保存网卡报文,处理速度低于tcpdump,但支持的协议更加丰富。

重点参数:
-f : 抓包过滤(capture filter) https://tshark.dev/capture/capture_filters/
-Y/-R : 显示过滤(display filter) https://tshark.dev/analyze/packet_hunting/packet_hunting/

阅读全文 »

journalctl

发表于 2021-02-27 | 分类于 Linux

journalctl用于读取systemd-journalctld.service服务抓取的系统及应用的日志,默认日志只存储于内存中/run/log/journal中,服务器重启后丢失;如果需要持久化到硬盘,需要手工创建/var/log/journal文件夹。
journald及syslogd都是用于收集系统日志的后台进程,linux系统都会默认安装,syslogd起源于init.d,而journald是随systemd的流行开始的。

主要区别如下:
1.journald的日志文件格式为二进制,不能直接读取(使用journalctl),而syslogd是纯文本的,方便阅读;
2.journald的日志文件存在索引、结构化、访问控制等特点,访问速度更快;
3.journald默认日志路径/run/log/journal(内存),而syslogd默认/var/log/(硬盘);
相同点如下:
1.都能用于收集系统及应用日志;
2.都能将日志传输到远端的独立日志服务器方便处理;
两者的关系如下:
1.journald提供了一个syslog api可以将日志发送给syslogd;
2.syslogd同样也提供了插件可以读取和写入journald;
推荐阅读:Tutorial: Logging with journald

阅读全文 »

vscode gdb

发表于 2021-02-26 | 分类于 Tools

当使用gdb调试应用时,如果需要执行vscode不支持的一些gdb命令,需要用到-exec命令,如查看内存。先决条件:代码编译时增加-g或-ggdb选项,如果要包含宏定义,需要-g3/-ggdb3级别。

-g: 该选项可以利用操作系统的“原生格式(native format)”生成调试信息。GDB 可以直接利用这个信息,其它调试器也可以使用这个调试信息。
-ggdb: 使 GCC为GDB 生成专用的更为丰富的调试信息,但是,此时就不能用其他的调试器来进行调试了 (如 ddx)。

阅读全文 »

vscode远程调试

发表于 2021-02-25 | 分类于 Tools

当开发linux应用时,一般的开发环境配置为:windows上完成编码,linux上完成编译加调试。但此种配置时,需要频繁的windows<=====>linux之间切换,对工作效率影响极大。vscode的debug特性完美的解决了这个问题,同时支持launch(启动调试)和attach(挂载调试)。

阅读全文 »

dpdk大页内存

发表于 2021-02-24 | 分类于 DPDK

DPDK使用大页内存技术来提高系统性能,因为大页内存有以下两个特点:

  1. hugepage 这种页面不受虚拟内存管理影响,不会被替换出内存。
  2. 同样的内存大小,hugepage产生的页表项数目远少于4kpage,这样就有效的增加了TLB的命中率。
阅读全文 »

awk

发表于 2021-02-23 | 分类于 Linux

awk是一个基于行的解释型的编程语言,主要用于文本分析及格式化输出。建议阅读文档AWK工作原理,AWK官方手册。
基本语法如下:

1
awk 'BEGIN{ commands } pattern{ commands } END{ commands }' files

其中:
单引号(‘’):避免shell对命令行转义,建议阅读shell引号问题;
BEGIN{commands} : 读输入文件之前执行的代码段,可选;
END{ commands }:读输入文件之后的代码段,可选;
pattern{ commands }:针对每一行的匹配pattern(支持正则),成功则执行commands;可以配置多组pattern{commands};

阅读全文 »

Joplin

发表于 2021-02-22 | 分类于 Tools

Joplin是一款开源的笔记类软件,支持Windows, macOS, Linux, Android and iOS等多种客户端。本文提供一套自有且完全开源的笔记系统的搭建过程,基于wsgidav作为服务端,提供同步功能;joplin作为客户端,提供编辑及浏览功能。

阅读全文 »

git 基础命令

发表于 2021-02-21 | 分类于 Tools

git是2005年linus花了2周时间,用c语言开发的一款分布式版本控制系统,推荐参考https://www.liaoxuefeng.com/wiki/896043488029600。

阅读全文 »

git lfs

发表于 2021-02-20 | 分类于 Tools

git-lfs(Large File Storage),简化了git对于大文件的管理。

阅读全文 »

git rebase

发表于 2021-02-19 | 分类于 Tools

当一个功能分支开发完毕后,一般会有若干次的编译问题,优化问题及代码调整问题的提交,而这些提交没有必要体现在主干分支的log里面,为了保持主干分支log的简洁性,有必要提前合并一下,然后再merge到主干。

阅读全文 »
1 2 3 4
ZhaoTao

ZhaoTao

赵涛(ZhaoTao)的技术博客。DNS 10 年、四层网关与 DPDK 数据面,以及 AI 网关与推理网关的观察。

105 日志
8 分类
98 标签
RSS
GitHub
© 2021 - 2026 ZhaoTao
由 Jekyll 强力驱动
主题 - NexT.Muse