VXLAN

VXLAN(Virtual eXtential LAN)意为虚拟可拓展局域网。随着大数据、云计算技术的兴起以及虚拟化技术的普及,VLAN技术的弊端逐渐显现出来,具体表现为如下3个方面:

  1. 虚拟化技术的发展促使大数据、云计算技术公司采用单个物理设备虚拟多台虚拟机的方式来进行组网,随着应用模块的增加,对于支持VLAN数目的要求也在提升,802.1Q标准中的最多支持4094个VLAN的能力已经无法满足当下需求。
  2. 公有云提供商的业务要求将实体网络租借给多个不同的用户,这些用户对于网络的要求有所不同,而不同用户租借的网络有很大的可能会出现IP地址、MAC地址的重叠,传统的VLAN仅仅解决了同一链路层网络广播域隔离的问题,而并没有涉及到网络地址重叠的问题,因此需要一种新的技术来保证在多个租户网络中存在地址重叠的情况下依旧能有效通信的技术。
  3. 虚拟化技术的出现增加了交换机的负担,对于大型的数据中心而言,单台交换机必须支持数十台以上主机的通信连接才足以满足应用需求,而虚拟化技术使得单台主机可以虚拟化出多台虚拟机同时运行,而每台虚拟机都会有其唯一的MAC地址。这样,为了保证集群中所有虚机可以正常通信,交换机必须保存每台虚机的MAC地址,这样就导致了交换机中的MAC表异常庞大,从而影响交换机的转发性能。

基于以上需求,VXLAN技术被提出。

VXLAN技术是网络Overlay技术的一种实现,对于Overlay技术,笔者的理解是:在基于物理网络拓扑的基础上通过一定的技术来构建虚拟的、不同于物理网络拓扑的逻辑网络,而物理网络的拓扑结构对于Overlay终端而言是透明的,终端不会感知到物理网络的存在,而仅仅能感知到逻辑网络结构。对于终端的视角,网络的情况和直接通过物理设备实现逻辑拓扑的效果是相同的。VXLAN技术可以基于三层网络结构来构建二层虚拟网络,通过VLAN技术可以将处于不同网段网络设备整合在同一个逻辑链路层网络中,对于终端用户而言,这些网络设备似乎“真实地”部署在了同一个链路层网络中。

Read More

Open vSwitch

Open vSwitch 是一个基于Apache 2 license的多层软件交换机。 我们的目标是实现一个支持标准管理接口的,开放转发功能以支持编程扩展和控制的交换机平台。

Open vSwitch 非常适合在VM环境中用作虚拟交换机。 除了将标准控制和可视化接口暴露给虚拟网络层外,它还旨在支持跨越多个物理服务器的分布式系统。 Open vSwitch 支持多种基于Linux的虚拟化技术,包括 Xen/XenServer, KVM, 及 VirtualBox。

大部分代码是平台无关的C编码,可以轻松地移植到其他环境中。 当前版本的 Open vSwitch 支持以下功能:

  • 具有trunk和access口的标准 802.1Q VLAN 功能
  • 上游交换机上连接或不链接LACP的NIC
  • NetFlow, sFlow(R), 及镜像,以提高可视化
  • QoS 配置,加上策列
  • Geneve, GRE, VXLAN, STT, 及 LISP 隧道
  • 802.1ag 连接故障管理
  • OpenFlow 1.0 加大量扩展
  • 具有C和Python绑定的事物配置数据库
  • 使用Linux内核模块的高性能转发
  • Linux 内核模块支持 Linux 3.10及以上版本。

Open vSwitch 也可以完全在用户空间运行,无需内核模块协助。 这个用户空间实现应该比基于内核的交换机更容易进行移植。 用户空间中的OVS可以访问Linux或DPDK设备。

使用用户空间实现,且没有用DPDK做加速处理的OVS被认为是测试性的,具有性能成本。

Read More

云计算与边缘计算

云计算(cloudcomputing)是基于互联网的相关服务的增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。

云计算

云计算系统由云平台、云存储、云终端、云安全四个基本部分组成。

云平台从用户的角度可分为公有云、私有云、混合云等。

通过从提供服务的层次可分为基础设施即服务(Iaas)、平台即服务(Paas)和软件即服务(Saas)。

将应用部署到云端后,可以不必再关注那些令人头疼的硬件和软件问题,它们会由云服务提供商的专业团队去解决。使用的是共享的硬件,这意味着像使用一个工具一样去利用云服务(就像插上插座,你就能使用电一样简单)。只需要按照你的需要来支付相应的费用,而关于软件的更新,资源的按需扩展都能自动完成。

Read More

Emacs generate autoloads

The autoload facility lets you register the existence of a function or macro, but put off loading the file that defines it. The first call to the function automatically loads the proper library, in order to install the real definition and other associated code, then runs the real definition as if it had been loaded all along. Autoloading can also be triggered by looking up the documentation of the function or macro.

A magic autoload comment (often called an autoload cookie) consists of ;;;###autoload, on a line by itself, just before the real definition of the function in its autoloadable source file. The command M-x update-file-autoloads writes a corresponding autoload call into loaddefs.el. (The string that serves as the autoload cookie and the name of the file generated by update-file-autoloads can be changed from the above defaults, see below.) Building Emacs loads loaddefs.el and thus calls autoload. M-x update-directory-autoloads is even more powerful; it updates autoloads for all files in the current directory.

Read More

Cmder | Console Emulator

Cmder is a software package created out of pure frustration over the absence of nice console emulators on Windows. It is based on amazing software, and spiced up with the Monokai color scheme and a custom prompt layout, looking sexy from the start.

增加 Cmder Here

  1. 添加环境变量 CMDER_HOME设定为Cmder安装目录D:\Software\cmder\
  2. %CMDER_HOME%添加到PATH环境变量中;
  3. 在cmd中执行Cmder.exe /REGISTER ALL注册右键菜单;
  4. 修改Cmder初始任务,设定为*cmd /k ""%ConEmuDir%\..\init.bat" " -new_console:d:%CD%

Read More

EditorConfig

EditorConfig可以帮助开发者在不同的编辑器和IDE之间定义和维护一致的代码风格。EditorConfig包含一个用于定义代码格式的文件和一批编辑器插件,这些插件可以让编辑器读取配置文件并依此格式化代码。EditorConfig的配置文件十分易读,并且可以很好的在VCS(Version Control System)下工作。

EditorConfig配置文件是什么样子的?

以下是一个用于Python和Java的行尾和缩进风格.editorconfig配置文件。

# EditorConfig is awesome: https://EditorConfig.org

# top-most EditorConfig file
root = true

# Unix-style newlines with a newline ending every file
[*]
end_of_line = lf
insert_final_newline = true

# Matches multiple files with brace expansion notation
# Set default charset
[*.{js,py}]
charset = utf-8

# 4 space indentation
[*.py]
indent_style = space
indent_size = 4

# Tab indentation (no size specified)
[Makefile]
indent_style = tab

# Indentation override for all JS under lib directory
[lib/**.js]
indent_style = space
indent_size = 2

# Matches the exact files either package.json or .travis.yml
[{package.json,.travis.yml}]
indent_style = space
indent_size = 2

查看更多使用EditorConfig的项目

Read More

AMD发布第二代Threadripper

就在昨天AMD第二代线程撕裂者旗舰Threadripper 2990WX外观正式解禁,AMD官网也揭露了其部分性能,得益于其拥有高达32个核心64个线程,Threadripper 2990WX轻松拿下了消费级市场CPU之王的头衔,此前坐在王座上的i9-7980XE被轻松秒杀,可谓一时之间风光无限。但俗话说的好,现在有多风光,以前就有多折堕(落魄的意思),AMD也不例外。就在2年以前,AMD还是一个被Intel无视的对手,产品性能与Intel有巨大的鸿沟,股价最低时仅为2美元出头,濒临破产。AMD会这么落魄,其中一个很主要的原因是因为当年推出的Bulldozer,推土机处理器微架构。

就在前两天,国外媒体ExtremeTech就总结了至今为止最糟糕的10款CPU,其中推土机(Bulldozer)进入了前三甲的位置,由此可见推土机的失败,是一个比较公认的事实。

Read More

rsync elpa mirror

rsync is an open source utility that provides fast incremental file transfer. rsync is freely available under the GNU General Public License and is currently being maintained by Wayne Davison.

rsync is a file transfer program for Unix systems. rsync uses the “rsync algorithm” which provides a very fast method for bringing remote files into sync. It does this by sending just the differences in the files across the link, without requiring that both sets of files are present at one of the ends of the link beforehand. Some features of rsync include

  • can update whole directory trees and filesystems
  • optionally preserves symbolic links, hard links, file ownership, permissions, devices and times
  • requires no special privileges to install
  • internal pipelining reduces latency for multiple files
  • can use rsh, ssh or direct sockets as the transport
  • supports anonymous rsync which is ideal for mirroring

Read More

Byte Compile Elisp Files

Emacs lisp files can be byte compiled.

Byte compiled elisp file has “.elc” suffix (aka extension). Normal elisp file has “.el” suffix.

Advantage of Byte Compiled Elisp File

Byte compiled elisp files will load faster, and also run faster. (by a simple test of a loop, it seems to run about 4 times faster.)

Another advantage is that byte compiling will often tell you errors or warning in your elisp code that you normally wouldn't know.

Read More