这个周就要立夏了,在这个夏天我要战胜它,也战胜自己。

周末和老弟遛弯聊天,他跟我谈及一个严肃而单纯的问题:既然毒品能给人带来快感,那为什么不人人都去吸毒呢?

我假装成一副胸有成竹的模样,“好问题!不过先别讲这个,我要和你谈谈音乐。我还记得上次和你去国家大剧院听新年音乐会时候你的表现。”

为什么谈音乐呢?我无非是希望引导他去认识到音乐之美,而审美判断是“无利害而生愉悦”,从而认识到有比毒品更自由的获得快瑟之感的方式——艺术或者说是道德。

我几乎成功了。

“那么这种愉悦和那种愉悦有何区别?”这个话题绕不开道德。

“而且你刚刚在讲,美的理想和道德的理念是同一的。那么假设一个人没有(像我们世人一样的)道德,那么他是不是也无法感受到艺术之美,那么他只能从毒品之类的东西中获得物质的快感?而凭什么人人都有这样的道德呢?”

我再令他去想为什么国家和法律如此“暴力”:道德次序的维持需要暴力,暴力保证了次序,也保证了减少暴力。所以毒品和问题需要暴力解决。

阅读全文 »

INT

In-band Network Telemetry

Specification

http://p4.org/wp-content/uploads/fixed/INT/INT-current-spec.pdf

介绍

INT 是一种用来在数据平面上采集和报告网络状态的框架,它不需要控制平面的任何干预或支持。在 INT 的模型里,设备发出的数据包会包含“遥测”的报头字段。这些字段会告诉兼容 INT 的设备在需要转发包的时候需要收集哪些信息,并将其写入包中。

INT 流量源(比如应用程序,端主机网络栈,NIC,虚拟管理程序或者发送 ToR)等可以将指令嵌入在正常的数据包或者特殊的探测包中。类似地,INT 流量接收器可以取到(并有选择地报告)这些指令所收集到的结果。INT 流量收集器可以在转发的同时精确地利用从数据包里观察到的信息来监视数据平面的状态。

举例说明可以收集并处理的信息

  • OAM:可以只简单地将收集到的网络状态编码(可以使用元数据,或者进行简单的清洗或压缩),并且将其发送给额外的控制器。
  • 实时控制或者反馈环路:INT 流量接收器可以编码数据平面的信息并将控制信息反馈给流量源,流量源可以利用这些数据调整流量工程或者数据包的转发(比如进行显式的拥塞控制)。
  • 网络事件探测:如果收集到的路径信息表明需要立即注意或解决的状况(比如严重的拥塞或者数据平面被破坏,INT 流量接收器可以立刻报告一个网络事件,在集中式或者分布式的网络中形成一个控制回路)。
阅读全文 »

背景

现在SDN已经有了在数据平面的编程能力,这使得网络设备(包括硬件)可以被重新编程以解析自己定制的协议和执行定制的功能。

但是,数据平面的编程能力还没有发挥最大的潜能,它依旧不完善,而且在不断增长的软硬件中提供可编程能力是有很大形成碎片的风险。如果使用虚拟化方案可以解决以上两个问题。

OpenFlow已经为网络的控制平面提供了一个标准的可编程能力,并且在网络管理者寻找更加的自由和灵活的方案候起了重要的作用。

但是,它并没有使的数据平面有良好的可编程能力,数据平面依旧只能使用在OpenFlow的协议规范中被定义好的协议。如果OpenFlow需要支持较新的方案,那么OpenFlow的规范就要一直被扩展。

一个真正的数据平面按应该不被这些束缚,它应该允许管理员重新配置数据平面以完全适应自己定制的协议中的语法和语义。最近在可重配置的匹配表(reconfigurable match table,RMT)中的工作在体系结构上已经证明了可编程数据平面,即使在ASIC的硬件中也是可行的。

这个结果使得像P4这样的领域专用语言使得这些可编程数据平面可简单地以一个统一的方式在多种交换机上部署(比如基于RMT的ASIC、FPGA为基础的交换机、像PISCES一样的软件交换机、behavior model和在边缘服务器上的网络数据平面)。

简介

一般来讲,每一个P4兼容设备提供的可编程数据平面表示一种网络环境。

每一个P4的程序定义了:

  • 在流量被解析时的协议头的集合和与之相符合状态机
  • 在流量被处理时的匹配-执行表

为了支持不同的客户的类型和为复杂的包处理而灵活地组成虚拟方法,在多数情况下,操作者希望给定的网络设备可以有不止一个环境,即使只有一个物理的数据平面。

阅读全文 »

BPF、eBPF 和 IO Visor

BPF(BerkeleyPacketFilter,伯克利数据包过滤器)允许在内核态下丢弃那些不需要的数据包,从而避免所有包都从内核态拷贝到用户态的网络监控工具而提升性能(也可采用 LIBPCAP 函数库实现过滤与捕捉)。

Linux 3.15 开始引入 eBPF。其扩充了 BPF 的功能,丰富了指令集。到了 eBPF 后,虚拟机的功能并都更加强大,使得我们对数据包的操作都可以在内核灵活地实现,完全不需要加载重新编译,而且可以在线替换等,灵活性大大增加。数据平面也就变得更加灵活(可以随时改变对每个数据包的处理行为)。且在内核中完成该功能使得性能大大提高(避免从内核到用户态的拷贝)。

IO Visor 的基本思路是使用一种灵活的方式在内核实现对网络数据包的处理,而不需要像传统的方法那样通过加载内核模块的方式来实现、或者通过繁重的系统调用在用户态计算。从而实现一个灵活的数据平面,加速 NFV。

具体说明可以参考:

所以,如果可以将 P4 代码转为 eBPF 的代码,那么它将可以直接在 Linux 中以原生的方式运行。可以认为 eBPF 能够作为类似 Behavior Model 的 P4 后端。

阅读全文 »

为什么要跨越

当需要允许其他人使用自己网站的一些 API 时,跨域就是一个必须要解决的问题了。

跨域解决方案

JsonP

因为 HTML 中的标签的 Src 属性可以跨域,所以该方案通过动态引入<script>标签并添加 Src 属性完成跨域请求 但是在这种情况下,服务器不能仅仅返回一段 JSON,而是要返回一段完整的 JavaScript 代码(比如一个函数),这样调用它的代码才能成功调用到返回的数据。并且这种情况下因为是插入了一个标签,所以在调用 API 的时候只能以 GET 方式调用(这是我的理解,或许还有其他方法可以调用 POST?)。

Ajax

通过设置 HTTP 头

1
Access-Control-Allow-Origin: *
阅读全文 »

相遇

最近被安利了多次“简史”类的书。很可能是因为厚本的史书已经成为了人文学院们书架上的“过时货”,而简史正成为一种更好的“快速消费”。毕竟入乡就需要随俗,那最近索性就来读一读简史类的书籍。而所读的第一本简史(如果不算《时间简史》的话)就选最近被盛誉无数的《人类简史》吧。

诶,我们是不是在哪见过

开始概览的时候,书中的观点并没有给我带来多少惊喜或者让我难以接受的地方,多数观点我都曾见识过。

比如——被进化论支配的人类其实就是一个和猩猩差不多的物种,甚至和我们最恨的老鼠都有八成相似,而且我们在进化的齿轮中也似乎只有因果而没有目的!这些观点在学习中学生物和初读《自私的基因》的时候大都已经遇见,由此我也相信作者本人是一个博览群书并博得众长的意见传播者。又如,文化寄生的说法,我也在之前的《失控》中有遇见过。而之前在哲学通识课中,了解到了语言之于社会的重要性,而“人们所谓的意义都只是存在于自己的故事中”可能是抄写某个名人名言的时候遇到的“意义之网”之类的只言片语。对于 150 人理论呢,貌似是复杂网络的一些书里有提到过。

阅读全文 »

编译安装 freeradius-server

freeRADIUS WIKI

先更新软件

1
2
$sudo apt update
$sudo apt upgrade

在 git 仓库里 clone freeradius-server

1
2
$ git clone https://github.com/FreeRADIUS/freeradius-server.git
$ cd freeradius-server

检查版本,如果需要的话要用 git checkout 切换版本

1
2
3
$ git status
On branch v4.0.x
Your branch is up-to-date with 'origin/v4.0.x'.

查看依赖并安装

1
$ vim doc/developer/dependencies.rst
阅读全文 »

开头先讲故事

从开始正式接触 PHP 到现在已经走过了接近两年的时间了。

记得最开始接触 PHP 的时候是大一暑假为期两周的北邮人论坛技术组的培训上。学长学姐们花了五个晚上的时间给我们讲了 HTML、CSS、JavaScript、PHP、MySQL 和 Linux 以及 VIM 等等的基础知识。记得当时 H 仅仅两个晚上就用 PHP 手撸出来了一套 Blog。当时觉得这简直是不可能的事情。五天很快过去,我却连 VIM 怎么进入输入模式都没看懂,更别说去写各种前后端代码了。我还记得当时的绝望。

之后的暑假就是在各种 PHP 和前端视频教程中度过。记得当时是看的我的好友志鹏同学给我推荐的李炎恢的 PHP 教学视频。我看视频的方式就是两倍速度快进,视频看完以后困了就睡觉(只是看视频而不去手写代码),睡醒了就继续起来看,所以当时看学习视频的时候连白天黑夜都已经分不清楚了。看完视频也总是有一些进步,已经可以用自己的(或者是模糊印象中李炎恢的)套路写出一些简单的网站了。但是网站的前端还是很丑陋(因为不怎么会 JS,也不会套模版),而且很多东西也是不成体系。

第一次实践就是在写 VLiner(微联,已经关闭,并不是现在的 VLine)网站的时候。网站很简单,就是像问卷星那样可以提供社团招新报名注册、名单汇总或者订阅报纸等等简单的功能。当时不怎么懂数据库,也不懂得怎么优化并发,所以访问的人一多网站就会崩溃(当时使用 CNZZ 统计应该是高峰期一个小时也就只有 3、4K 的访问量),更要命的是不懂得怎么复用和自动化,所以针对于每个组织的页面都是我手工一个一个填上去的。大概团队撑了半年左右,做不下去就散伙了。

接下来是北邮人论坛以及一个自己拍脑门想的云印项目,这时候我第一次接触到了 MVC 架构和 Yaf 框架,不过也都半途而废。

再次的 PHP 实践机会就是一年之后的弹幕派了。在一次 Hackahton 中,我用二十行 PHP 代码和Cyprestar同学就完成了弹幕派的最初原型。之后在不断重构的过成功逐渐形成了自己的一些套路。这个套路也用在了VLine和北邮人论坛每日十大查询上,主要就是通过 MVC 架构和工厂模式实现了一个很简陋的 API 框架(到底算不算框架呢?)。

阅读全文 »

因为要安装一些老版本软件,所以我在阿里云刚装好的 Ubuntu16.04 上面添加了一些 PPA 源,但是发现在

1
sudo apt update

时,所有的 PPA 源使用都会出现类似

1
2
Err:4 http://ppa.launchpad.net/ondrej/php/ubuntu xenial Release
403 Forbidden \[IP: 112.124.140.210 80\]
阅读全文 »

二分心智

二分心智的理论本来是由一个直到现在大家都认为比较扯淡的心理学家朱利安·杰恩斯花了毕生心血,查阅寻找了许多线索和资料,在 70 年代的著作《二分心智的崩塌:人类意识的起源》里提出(虽说扯淡,但结合中外历史想想,可能也确有其事。但苦于很多证据无法证伪,也就没法从科学上承认或者否认这个理论的存在)。整套理论用在《西部世界》的机器人意识形成中却也颇为令人信服。(具体可以参考知乎提问:https://www.zhihu.com/question/51767382

简单说,二分心智中一个是来自神明的声音,另一个是来自自己的声音。在我看来,这不仅仅和左右脑的分工有某种相通指出,更和我们人类的最高的思维形式有很大的关系——宗教代表的上帝同哲学代表的智慧。所以,二分心智逐渐坍缩融合的过程,其实也是宗教和哲学的一次又一次的对话与碰撞。

阅读全文 »