Tom's Blog


  • 首页

  • 分类

  • 归档

  • 搜索

ipv6配置

发表于 2021-09-05 | 分类于 Linux

问题:ip -6 addr add 240c:4044:1204:1303:c282:a7ff:ad3c:6b06/64 dev eth0 RTNETLINK answers: Operation not supported

阅读全文 »

多网卡多ip在同一个网段

发表于 2021-09-05 | 分类于 Linux

问题:当某些特殊情况下,需要在同一个主机的多块网卡上配置同一个网段的地址,但linux系统默认系统配置是不支持这种配置的,会出现各种奇怪的问题,比如对于arp广播,多个网卡都会响应,对端交换机一般会记住返回最快的那个mac地址,但对于每次请求返回的快慢是不能保证一致的,所以会导致arp表不停变化;再比如对于icmp,默认返回只走第一条匹配的路由,即对于所有ip的请求都由一个网卡返回。

阅读全文 »

dpdk交叉编译

发表于 2021-07-04 | 分类于 DPDK
缩写 cpu型号
wsm Westmere
nhm Nehalem
snb Sandy Bridge
ivb Ivy Bridge
hsw HasWell
阅读全文 »

运维工具ansible安装与使用

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

ansible是一款IT自动运维工具,使用python实现,通过插件实现批量命令执行。要求:ssh + python(>=2.4),这个要求基本所有的系统都是默认满足的。

阅读全文 »

一个linux配置多个ssh公私钥

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

在公司的开发机上一般有好几个人公用,但每个人都有自己的公私钥,怎么配置才能不冲突呢?

阅读全文 »

git版本升级

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

linux系统本身自带的git版本都是非常低的,比如centos7-git-1.8.3,低版本的git会存在功能及性能的问题,所以最好升级。

阅读全文 »

windows常用软件

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

每个开发都有自己的一套心爱的软件环境配置,下面以我为例,看看我都在windows上装了啥。

阅读全文 »

dpdk发包工具架构比较

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

基于DPDK的发包工具,具有开源、软件实现、性能高等优点,可用于测试交换机、路由器、负载均衡器、防火墙、IPS、IDS等网络层设备及应用。常用工具有pktgen-dpdk,moongen,t-rex,warp17等,本文主要说明这四个软件的架构。

阅读全文 »

golang中的mysql driver是怎样接收多条结果的?

发表于 2021-05-14 | 分类于 Libs

当golang中使用sql查询数据库获取多条结果时,一般采用db.Query() + rows.Next() + rows.Scan()三个函数调用,那每个函数完成的具体功能到底是啥呢?

阅读全文 »

DNS Flag Day 2020

发表于 2021-05-11 | 分类于 DNS

由于线上运行的dns系统实现较多,且对标准的支持程度差别较大,导致各系统交互时,引入不必要的兼容性要求,使整个DNS系统代码变得复杂且效率降低。为了解决这个问题,由国外的一些大型的dns服务商牵头,包括ISC(bind), CZ.NIC(knot), Google, Powerdns, 思科,cloudflare等,发起了向标准协议对齐,对非标准的实现不再兼容的倡导,此倡导被称为DNS Flag Day.

阅读全文 »

DNS Flag Day 2019

发表于 2021-05-11 | 分类于 DNS

由于线上运行的dns系统实现较多,且对标准的支持程度差别较大,导致各系统交互时,引入不必要的兼容性要求,使整个DNS系统代码变得复杂且效率降低。为了解决这个问题,由国外的一些大型的dns服务商牵头,包括ISC(bind), CZ.NIC(knot), Google, Powerdns, 思科,cloudflare等,发起了向标准协议对齐,对非标准的实现不再兼容的倡导,此倡导被称为DNS Flag Day.

阅读全文 »

基于dpdk实现的dns-tcp解决方案

发表于 2021-05-08 | 分类于 DNS

由于DPDK没有提供网络协议栈,所以在具体应用中,如果需要tcp协议的支持,就需要自己实现或使用kni接口将请求转入内核处理。DNS服务99%的服务是基于UDP的,tcp流量主要用于大报文(大于512字节)或主辅同步,且较少,所以可以采用kni旁路的办法。本文主要讲解大体部署方案,以供参考。

阅读全文 »

dns软件之 - bind9架构

发表于 2021-05-07 | 分类于 DNS

BIND9 - 作为通用性最强的dns开源软件,其设计也有许多可以参考和借鉴的地方。其采用基于事件的处理框架(libuv),支持单线程和多线程方式。多线程中线程类型分为四种:主线程(负责初始化/信号/命令行等管理类任务)/timer/watcher/worker。bind代码可分为多个模块,每个模块包含自己的对象及对象的处理逻辑。按层次可分为:object —> task —> event(包含方法及数据)。object会产生event,并将event挂到指定object的task队列上,woreker线程会轮询task队列进行处理。

阅读全文 »

dns三大系统之 - 递归解析器

发表于 2021-05-07 | 分类于 DNS

Recursive Resolver - dns递归解析器,是处于存根解析器与授权服务器之间,集缓存与递归功能于一身的dns关键模块。常用软件有bind/unbond/powerdns等,本文以bind为例简述简述递归处理逻辑。

阅读全文 »

dns三大系统之 - 存根解析器

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

Stub Resolver - dns存根解析器,即dns client,是发起dns请求的起始点。用户有三种选择:1.可自己实现dns解析库;2.可以调用系统提供的库(如,gethostbyname/getaddrinfo-glibc同步dns库);3.也可以引入第三方实现的通用库(如,bind/adns-异步dns库)。
本文以chromium为例,说明存根解析器的解析流程。chromium功能比较全面,根据配置不同,支持3种client:1.可以使用自己实现的异步dns解析库;2.也支持调用系统实现的同步接口getaddrinfo;3.新版本另外增加了对doh(dns over https)的支持。

阅读全文 »

dns三大系统之 - 授权

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

Authority DNS(缩写ADNS) - dns授权服务器,是dns系统中三大系统(存根解析器、递归服务器、授权服务器)中最重要的一个,负责zone文件的管理及响应用户的请求。
授权服务器处理主要分四步:zone匹配、域名匹配、类型匹配、视图匹配;
返回结果分三类:
1.如果请求域名属于本授权服务器管理,则直接返回请求记录;
2.如果请求域名属于本授权的子授权服务器,则返回子授权的NS记录;
3.其他情况,返回refuse。

阅读全文 »

mx

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

Mail Exchanger(缩写MX)属于DNS的一种记录类型,用来指定邮件服务器(MTA)地址,MX记录格式说明参见 RFC 1035。

阅读全文 »

dns全流程

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

dns(domain name server)域名服务,整个解析流程涉及3种服务器,存根解析器/递归解析器/授权服务器。

阅读全文 »

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泄漏;
阅读全文 »
1 2 3
ZhaoTao

ZhaoTao

博客

63 日志
5 分类
RSS
GitHub
© 2021 - 2026 ZhaoTao
由 Jekyll 强力驱动
主题 - NexT.Muse