0%

背景

现在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

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

阅读全文 »

先放本中文版封面镇楼

值得一读

在市面上各种 PHP 21 天从入门到精通的书已经漫天飞舞的情况下,《Modern PHP》一定是一本值得一读的从国内各大论坛/网站/课堂经历过以后的 PHP 进阶书籍。

《Modern PHP》是由 O’Reilly 推出,作者是大名鼎鼎的 Slim 框架的开发者。这本书推出的时间很有意思——2015 年 12 月,这也是 PHP7.0 正式发布的时间,同时——也就是从那时间开始,越来越多“PHP 药丸”的言论开始大行其道。所以,我一直在使用 PHP 的时候心情非常复杂。

不过,我想这本书是可以为 PHP 正名的,而且不仅仅是正名——这本书介绍了一个崭新的 PHP 和一个全新的 PHP 时代。 所以本文的题目差点被我起成卫庄体——“给我两个小时,还你一个崭新的 PHP”。

阅读全文 »