Archive

标签为 ‘Linux’的文章

Go初体验

背景

我不是程序员,只是偶尔用Python写一些对个人有些帮助的小程序。之前了解过Go,朋友也一直在推荐Go,但一直没有深入研究过,自从面对下面几个事后,就萌生了想尝试一下的想法:

  • 我想用Caddy搭一个简易HTTP Server,一般建议Docker部署,比较方便,但发现macOS如果需要支持Docker,需要装Docker虚拟机,光虚拟机就占了1.5g的内存。后来我去Caddy官网下载了支持ARM架构的Caddy,只有小40m左右,下载即可执行,不需要任何环境,此程序是用Go编译而成的,关于Caddy在macOS的使用,可以看这里
  • Java也是编译语言,可是要想执行,仍然需要Java虚拟机提供运行时环境;类比Python类似,是编译+解释语言,需要Python环境才能进行解释运行;
  • 我需要对多个地址发送ICMP探测报文,Terminal其实挺好用的,只是为了多个地址,需要打开多个窗口,不是很灵活,为了CPU不影响ICMP报文,想找一款支持多核的Ping工具,但发现macOS不像Linux,没有Affinity和Taskset来给进程分配内核,最后找到一个用Go做的开源Ping软件,并支持多线程,但这个运行有些问题,需要排障;

此篇文章简单用实例总结Go的初体验,以及Go程序的排错方法,方便以后复习查阅。

机器环境

System: macOS Monterey 12.1
Arch:   darwin/arm64
Go ver: 1.17.5
完整阅读

How To Send Internet Route By BIRD?

背景

BIRD是一个BGP守护进程,可以同真实的物理设备建立BGP邻居,并灵活控制路由的收发,尝尝可以看到IXP或云提供商(如Equinix)使用此开源软件。我将使用BIRD给Peer路由器发送Internet路由,以帮我完成演练,但看上去BIRD作为BGP Speaker或控制BGP路由比较好用,但生成路由并不是特别灵活,需要把路由批量灌到Kernel中,然后重分发到BGP并发给Peer路由器,此篇文章总结下如何使用BIRD。

相关链接

BIRD只是众多BGP开源软件中的一个,其他的还有如Quagga/FRR,ExaBGP等,我在查找BIRD时也看到了一些对比文章,一起列在下面,供以后方便查阅:

BIRD2 User Guide:

完整阅读

Refer to Telnet mode

背景

Telnet是常用的远程设备远程登录协议,通过如SecureCRT,Item2等终端软件,可以很容易的登录各种支持Telnet协议的设备,但有时候根据不同的终端设备,会需要一些特殊的设置,这就涉及Telnet协商,此篇文章就是整理下Telnet的几种模式及之间的区别,也包含如何更改这些模式的操作方法;

问题

我们可以通过一个问题来展开讨论,如下环境:

PC---(SSH)---CentOS---(Telnet)---KVM(vNE40E)

我们发现登录vNE40E后无法退格,连续回车会有断行,如下所示:

[root@beihe-terminal-server ~]# CR1
Trying 172.16.211.165...
Connected to 172.16.211.165.
Escape character is '^]'.


<HUAWEI>
<HUAWEI>

<HUAWEI>
<HUAWEI>dis ver^H^H^H^H  <<< 4个退格键

通过“Crtl + ]”退出当前session,然后通过“status”来查看当前Telnet连接的模式,可以看到是 “obsolete linemode”, 过时的Line mode??:

<HUAWEI>^]
telnet> status
Connected to 172.16.211.165.
Operating in obsolete linemode
Local character echo
Escape character is '^]'.

那么需要怎么做才能修复此问题呢?

完整阅读

Trex building packets by advance mode in GUI

背景

之前总结过一些Trex的内容,如下所示,这篇文章主要介绍如何在GUI中的高级模式中创建报文,并变更特定项目,如原/目IP地址,TCP/UDP 原/目端口等,以及如何修复可变TCP/UDP端口号带来的Checksum不正确的问题;另外最后还会使用另一种方法来调用流量模型;

Limited

  • 报文统计数据不能导出到Excel或CVS;
  • IPv6包头不能通过Field Engine改变,但API支持;
  • 如果想打IPv6的报文,需要在网络设备上绑定nd和mac的mapping关系;

Topology

拓扑同上一篇文章:

Trex-Server1 (100.0.0.1)------ (100.0.0.2)Router1 ---- network ----- Router2(100.1.1.2) ------ (100.1.1.1)Trex-Server2

Trex配置文件生成

Trex里有一个程序,可以自动生成配置文件,如下所示,Platform部分是设置内核分配的(如果不设置,默认只有一个core,性能有限),启动时指明需要几个内核,那么系统就会自动按照配置进行分配,如“./t-rex-64 -i -c 27

完整阅读

TRex Advance stateful mode Example

详细内容可以查阅:TRex Advance stateful support

在之前的文章中,介绍过Trex Stateless Mode的简单使用方法,在这里介绍下ASTF模式是如何工作的,并且如何统计信息的;另外在这个例子中,主要是通过变更PCAP报文中的原和目的地址,并以Server/Client方式发送流量并统计;

Topology

Trex-Server1 (100.0.0.1)------ (100.0.0.2)Router1 ---- network ----- Router2(100.1.1.2) ------ (100.1.1.1)Trex-Server2
完整阅读
blonde teen swallows load.xxx videos