Ethane 2007 — 把企业网安全策略集中到一台中央电脑上
是什么
Ethane 是一套让企业网的安全策略由中央电脑统一决定的网络架构。日常类比:原本一栋写字楼里每层楼自己装门禁、各发各的卡,互不通气;Ethane 做的事是——整栋楼只设一个保安总台,所有门都改成『刷卡前先打电话问总台』,总台一查名册(你是谁、要去哪、规则允不允许),同意才放行。
技术上一句话:
一台控制器保管全网拓扑、用户名册和策略;交换机只剩一张流表,遇到新流量先上报控制器,控制器查策略后再下发『放行/拒绝』规则。
这套架构是 OpenFlow / SDN 的精神前身——晚一年的 OpenFlow 论文几乎是把 Ethane 的交换机部分单独拎出来标准化。
为什么重要
不理解 Ethane,下面这些事都没法解释:
- 为什么 2008 年 OpenFlow 一出现就被业界接受——因为 Ethane 已经在 Stanford 跑过 4 个月、300 台主机的生产部署
- 为什么 SDN 一开始的卖点是『安全策略』而不是『流量调度』——Ethane 解决的就是企业网准入控制
- 为什么 VMware 的 NSX 网络虚拟化产品长这个样——作者 Casado 后来创立 Nicira,被 VMware 收购
- 为什么传统企业网防火墙厂商(Cisco / Check Point)2010 年后突然紧张
一句话:Ethane 是『把网络当成一台可编程计算机』这个想法的工业首次验证。
核心要点
Ethane 把企业网拆成 三层:
-
注册表(Registration):每个用户、主机、交换机上线前必须先在控制器登记,绑定身份和密钥。类比:进园区先办工卡。
-
认证(Authentication):用户登录第一台交换机时跑一次握手,控制器把『这个 MAC 现在是 Bob』记到全局表里。之后 Bob 发的每个包都能反查到他这个人,而不只是一串 IP。
-
流级策略执行(Flow-Level Policy Enforcement):每个新流量的第一个包送到控制器;控制器查 Pol-Eth 策略 → 决定 allow / deny / waypoint(绕路经过 IDS)→ 把规则装到沿路所有交换机的流表。后续包就在交换机本地按表转发,不再上报。
类比一张图:
┌────────────────────────┐│ Controller (PC) │ ← 名册 + 策略 + 全局拓扑└──────────┬─────────────┘ │ 安全通道 ┌───────┴────────┐ │ Ethane Switch │ │ ┌────────────┐ │ ← 只有一张流表 │ │ Flow Table │ │ │ └────────────┘ │ └────────────────┘关键洞察:作者发现企业网真正难的不是路由(IP 已经会算最短路),而是**『谁能跟谁说话』。这个问题跟流量本身无关,跟人和服务有关。所以策略应该绑在用户/主机/服务**上,不该绑在 IP 上(IP 会变、会伪造、会 NAT)。
Pol-Eth 策略示例:
allow(usrc="bob", hdst="websrv", protocol="http").deny(hsrc in "student_hosts", hdst="fileserver").waypoint("ids")(usrc="guest").第一行:Bob 可以访问 websrv 的 http;第二行:学生机不许碰 fileserver;第三行:访客流量必须先经过 IDS。语言是 Datalog 风格,声明式,写完编译成可在控制器上跑的判定函数。
实践案例
案例 1:Bob 登录后第一次访问内网网页
- Bob 笔记本接交换机端口 → 交换机看不懂这个 MAC,把首包扔给控制器
- 控制器要求 Bob 用证书登录 → 登录成功后记下『端口 12 = Bob』
- Bob 浏览器请求
webserver.corp/index.html→ DNS 也走控制器,控制器把名字解析成 IP,顺带把策略检查做了 - 控制器发现 Pol-Eth 允许 → 算最短路径 → 沿途 4 台交换机都装上一条流表项
- 之后这条流的包都在交换机本地转发,控制器不再介入
整个过程第一个包慢一点(毫秒级往返控制器),后续包按线速跑。
案例 2:Pol-Eth 怎么处理冲突
策略多了会冲突。Ethane 的解法:默认拒绝 + 显式优先级。
deny(). # 默认全拒allow(usrc in "employees"). # 员工默认放行deny(hdst="finance_db"). # 但财务库谁都不许碰allow(usrc="cfo", hdst="finance_db") # CFO 例外最具体的规则赢——这套语义在 SQL ACL、iptables、AWS IAM 里都能看到影子。
案例 3:Stanford 4 个月部署的真实数据
作者把 Ethane 装到 Stanford CS 系,约 300 台主机、有线无线混合,跑了 4 个月:
- 控制器单机能扛全网(首包 RTT 不到几毫秒)
- 交换机用 NetFPGA 改的硬件 + Linksys 改的无线 AP 跑 OpenWRT
- 真发现并阻止了几起未授权扫描和恶意流量
- 暴露的最大问题:首包延迟 + 控制器单点——这两个坑后来 OpenFlow 时代继续踩了 5 年
踩过的坑
-
以为『集中』等于『慢』:实际上首包延迟在毫秒级,对 TCP 三次握手影响很小;而且只有新流要问控制器,长连接和重复连接都不用。
-
以为策略可以在交换机上判:作者一开始也试过,发现策略涉及全局视图(谁是谁、IDS 现在在哪台机器上),交换机本地永远拼不出来——这是集中的根本理由。
-
以为部署能一夜切换:Stanford 部署时大量遗留设备不能改,Ethane 必须支持和传统以太网共存,靠 VLAN 隔出实验区。这个『增量部署』思路后来 OpenFlow 直接继承。
-
以为 Pol-Eth 表达力够用:4 个月跑下来,运维要写的策略远比预期复杂(时间窗、限速、QoS、计费),Pol-Eth 都没覆盖——后续工业 SDN 控制器都把策略层做得更丰富。
适用 vs 不适用场景
适用:
- 单一管理域的企业网 / 校园网(人和机器都能登记)
- 需要『谁能跟谁说话』细粒度准入的场景(金融、医疗、政务)
- 想做实验性新协议的研究网络
- 网络虚拟化的早期形态(多租户隔离)
不适用:
- 跨 AS 的互联网骨干(没法要求陌生人来登记)
- 超低延迟交易网络(首包毫秒级开销不可接受)
- 完全无中央信任的开放网络(家庭 WiFi、公共热点)
- 主机不可控的物联网底层(很多设备改不了认证流程)
历史小故事(可跳过)
- 2006 年:Casado 在 Stanford 读博,被 NSA 派去研究『怎么让网络管得住』。他发现传统方案(VLAN + ACL + 防火墙)配置量随主机数指数增长,运维人均维护几千条规则,错误率极高。
- 2007 年 8 月:SIGCOMM 发表 Ethane,主张所有决策上交中央——当时被审稿人怀疑『这能扩展吗』。
- 2008 年 4 月:同实验室的 McKeown 把 Ethane 的交换机部分抽出来标准化,叫 OpenFlow——一篇 6 页的 CCR 文章,引爆 SDN。
- 2007 年:Casado / McKeown / Shenker 创立 Nicira,把 Ethane 的思想做成商用网络虚拟化平台。
- 2012 年:VMware 用 12.6 亿美元收购 Nicira,产品改名 NSX,至今是企业网络虚拟化的标杆。
- 2014 年起:Pol-Eth 的精神继承者 P4、Frenetic、Pyretic 等高级网络编程语言陆续出现。
学到什么
- 策略应该绑在『主体』上而不是『地址』上——IP 会变、会伪造,但用户和服务的身份相对稳定,这是认证 + 命名的根本理由
- 集中不是性能问题,是信息问题——决策需要全局视图时,分布式拼不出来,集中反而是最简方案
- 范式迁移先从『单一管理域』开刀——企业网先吃掉,再慢慢往骨干网扩散;OpenFlow / SDN / 服务网格都遵循这条路径
- 学术原型 → 标准 API → 商业产品:Ethane 2007 → OpenFlow 2008 → Nicira 2012 收购,每一步隔 1~4 年
- **『首包问中央,后续走本地』**这个分层思路,后来在 DNS、TLS session resumption、CDN、API gateway 里反复出现
延伸阅读
- 论文 PDF(12 页):Ethane SIGCOMM 2007
- 思想后裔:openflow-2008 —— 把 Ethane 的交换机部分抽成标准协议
- 同代学术兄弟:SANE — USENIX Security 2006(Ethane 的前身,更早的版本)
- 商业落地:VMware NSX 设计文档(Nicira 被收购后的产物)
- 策略语言血脉:differential-datalog —— Pol-Eth 是 Datalog 在网络策略上的应用
关联
- openflow-2008 —— 直接继承者,把 Ethane 的『交换机 + 流表』标准化成跨厂商协议
- p4 —— 后续把可编程性从 action 推到 parser,是 OpenFlow 的精神延续
- differential-datalog —— Pol-Eth 是 Datalog 用于网络策略的典型案例
- souffle-datalog —— 同源的 Datalog 工程化方向,给企业策略类问题提供工具
- lamport-tla-1994 —— 控制器集群一致性的理论基础(Ethane 单机版还没遇到,OpenFlow 时代必修)
反向链接
- differential-datalog —— DDlog (Differential Datalog) — 输入只改一条,引擎只算受影响的那一小块
- lamport-tla-1994 —— TLA — 把状态机和时序逻辑捏成一个公式
- openflow-2008 —— OpenFlow 2008 — 把交换机的『分拣规则』搬到一台中央电脑上
- p4-2014 —— P4 — 让交换机的转发逻辑像写代码一样改
- souffle-datalog —— Soufflé — 把 Datalog 编译成 C++ 让程序分析跑得动