网络处理中TLV形式的不固定格式匹配

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介:
假设如果已经实现了控制平面和数据转发平面的分离,即SDN,那么网络协议就被弱化了!为何如此放狂言?还得从历史说起!
如果上面的假设不成立,那么如何实现独立的控制平面和独立的数据平面,对于控制平面,简单,软件定义一切,对于数据平面呢?很难!这得从软件硬件的边界说起!
       首先要指出的一点是,近期思考的一些东西没有考虑兼容性与成本,很多都是推倒重来的想法,步子大了一点,也挺蛋疼,所以不要拿现在即有的理论来框这些想法。
      为何会有协议?想过吗?协议天生带有分布性与第三方可公证性,是彼此平等但陌生的你和我之间达成的共识。如果你和我非常熟悉就不需要协议,代之以惯例或曰不成文规定,如果你和我之间不平等,也不需要协议,代之以命令或服从。在考虑网络协议之前首先看下中国和欧洲的协议精神。
      中国人长期固定于一块土地,安土重迁,人口流动性比较若,同一区域的人之间彼此都很熟悉,同一家庭内实行父权家长制,不符合产生协议的两大要素。看看西欧,罗马帝国末期以来,民族迁徙,中世纪的教会,王权,贵族,城市四方角力导致人口流动频繁(实际上,古希腊海洋性的特征也遗传了下来起了一定作用),彼此之间平等又陌生,这正是促使协议精神发展的温床。于是你就看到了很多所谓的条约,实际上就是约定的双方必须遵守的共识,显然,条约都是平等的,条约没有不平等的,是的,可能你要支付赔款,但人家不是停战了么?打不过人家是自己的问题,和条约没关系!如果签约双方有一方违约了,好办,他会受到第三方而不是对方的惩罚,比如第三方授权对方拒绝支付工资,比如市场不准入,总之以后人家就不把违约方作为平等角色了,一句话,人家不跟你玩了,你就panic吧!有点扯远了...
      从以上我的胡拉乱扯中,你也许隐约知道了什么是协议,三要素,执行双方是陌生关系,执行双方是平等关系,存在一个第三方公证机构起制约监督作用。这就说明协议本身不管从任何方面讲,其执行,其监督都是分布式的,也就是说是 自控制 的,如果存在一个权威性的中心控制,那么将不再需要协议,一切都以赦令/服从的方式执行。
      在网络的设计之初,目的是互联彼此分离的计算机实现通信,自然而然的方案就是各个计算机自己控制如何通信,当然,在阿帕网设计的同时,也有人提到过一个集中控制的结构,但是由于当时联网的中心是计算机而不是网络本身,所以添加额外的控制器无疑增加了复杂性。这种集中控制的策略过于早熟,在整个产业还不发达的时候,无疑是不可能实现的,那个时候,计算机技术不发达,芯片技术不发达,App几乎没有,机器完全是属于大型组织的,个人PC想都别想,因此网络流量完全在自控制可以解决的范畴,正如在车流量非常少的地方,没有必要建立统一控制管理的高速公路一样。
      现在是云和移动的时代,SDN在这个时代启发了君主革命。如果控制器被完美实现,那么既有的分层协议还需要吗?这个提问有些凶,我的回答当然是 不再需要 !数据不再像以往那样通过IP路由逐跳发往目的地,甚至IP地址也可以退化成一个身份/位置编址系统而不再担任路由功能,如何发送数据全由SDN控制器掌控,因此就需要一系列的机制代替IP路由,策略路由,防火墙,负载均衡器之类的东西,确认“ 如何发送数据 ”,此时TLV便是一个比较好的格式,它天生地支持变长且不固定的格式,和TCP/IP分层协议头形成了鲜明的对比。TLV的通用解析逻辑是SDN数据平面的最佳选择。实际上,如果你熟悉Linux的iptables就会明白这一点,Linux系统中,所有的iptables规则在内核内存中的布局实际上就是类似TLV,虽然不是那么严格。我们知道一条iptables规则可用拥有理论上任意多的match,因此它的长度是不固定的,对于每一个match,由于match是自定义的匹配,其长度与格式也不固定,那么其存储就只能用类似TLV的链式存储,即你无法越过某N个规则直接去匹配第N+1之后的规则,同样对于match也一样,任何规则以及任何一个规则任何match的位置都由前一个相同的结构体给出,类似IPv6协议头的“下一个头”这个字段所表示的含义。实现了链式布局以后,如何解析以及如何匹配自定义的match是下一个重要的问题,iptables的方法是每一个match对应一个xt_match结构体去负责,这些结构体动态注册到内核中。通过以上的iptables例子可以看出,这种方式对于SDN如何定义一个流,如何针对一个流执行策略是多么好的一种方式,这正是软件的灵活性所能提供的,任何一个狂热的人不禁疾呼,SDN要成功了,然而却忽略了软件和硬件之间的边界,该边界就是机制和策略之间的边界!硬件实现机制,软件提供策略。可是当我们在高喊“TLV形式的完全通用的转发接口”的时候,我们突然发现,没有任何机制可以抽取出来,即,具体的策略之间没有交集或者很少有交集,然而SDN数据平面的高效率转发需求呼唤必须用硬件实现,这个胡同很难突破!
       现有的协议头,一般都是一个固定长度固定格式的头,加上一个可选的变长option,这在解析起来非常容易,解析逻辑的固定化十分容易用硬件直接实现,然而如果用硬件实现TLV解析难度就大了,因为TLV是无格式变长的,没有统一的逻辑。在工程意义上,接口越通用,实现越复杂,这是一个工程学上的真理,不仅仅局限于编程方面。对于成熟的硬件芯片而言,其生成周期要比软件久,一旦成型,修改成本也巨高昂,因此,你根本无法像修改,扩展xt_match那样去修改,扩展芯片,芯片里的代码可以成为firmware,其中的firm前缀说明了一切!
      我无意给SDN泼冷水,我只是觉得,不管什么事,最终都是理论派和务实派之间妥协的结果-有可能一个人扮演两个角色,读过历史就会知道,自盘古开天地,一直到我写下这个字的现在,政治,军事,文化,科学,哲学,工程,爱情,仇恨,理想,工作,学习,生活,没有一个不是妥协的结果。因此,最终的SDN没有狂热者说的那么灵活,也许还是在现有的经过改进的芯片上转发数据,当然,硬件ASIC也是要有所改进的,也许是突破,但是绝对突破不到SDN理论家所要求的那般田地;由于上述妥协,TCP/IP协议会弱化,但是决不会消失。你说呢?


 本文转自 dog250 51CTO博客,原文链 http://blog.51cto.com/dog250/1370163 接:

相关文章
|
网络协议 定位技术
网络七层协议地图,报文格式一览无遗。绝对是干货,值得收藏
网络七层协议地图,报文格式一览无遗。绝对是干货,值得收藏
304 0
网络七层协议地图,报文格式一览无遗。绝对是干货,值得收藏
|
2月前
|
缓存 网络协议 网络架构
网络抓包分析【IP,ICMP,ARP】以及 IP数据报,MAC帧,ICMP报和ARP报的数据报格式
本文详细介绍了如何使用网络抓包工具Wireshark进行网络抓包分析,包括以太网v2 MAC帧、IP数据报、ICMP报文和ARP报文的格式,以及不同网络通信的过程。文章通过抓包分析展示了IP数据报、ICMP数据报和ARP数据报的具体信息,包括MAC地址、IP地址、ICMP类型和代码、以及ARP的硬件类型、协议类型、操作类型等。通过这些分析,可以更好地理解网络协议的工作机制和数据传输过程。
网络抓包分析【IP,ICMP,ARP】以及 IP数据报,MAC帧,ICMP报和ARP报的数据报格式
|
3月前
|
Windows
【Azure 环境】在Windows环境中抓取网络包(netsh trace)后,如何转换为Wireshark格式以便进行分析
【Azure 环境】在Windows环境中抓取网络包(netsh trace)后,如何转换为Wireshark格式以便进行分析
|
5月前
|
网络协议 C语言 网络架构
计算机网络——数据链路层-点对点协议(组成部分、PPP帧格式、透明传输、差错检测、工作状态)
计算机网络——数据链路层-点对点协议(组成部分、PPP帧格式、透明传输、差错检测、工作状态)
270 7
|
6月前
|
XML JSON Java
Android App网络通信中通过okhttp调用HTTP接口讲解及实战(包括GET、表单格式POST、JSON格式POST 附源码)
Android App网络通信中通过okhttp调用HTTP接口讲解及实战(包括GET、表单格式POST、JSON格式POST 附源码)
785 0
|
6月前
|
SQL 存储 分布式计算
Hive【基础 01】核心概念+体系架构+数据类型+内容格式+存储格式+内外部表(部分图片来源于网络)
【4月更文挑战第6天】Hive【基础 01】核心概念+体系架构+数据类型+内容格式+存储格式+内外部表(部分图片来源于网络)
124 1
|
6月前
|
算法 网络协议 网络架构
【网络层】动态路由算法、自治系统AS、IP数据报格式
【网络层】动态路由算法、自治系统AS、IP数据报格式
62 0
|
11月前
|
数据采集 JSON JavaScript
C# 解析“JSON“格式数据和网络实战案例 入门
C# 解析“JSON“格式数据和网络实战案例 入门
|
缓存 网络协议 Shell
网络协议格式 | 以太网帧、ARP数据报、IP数据报、UDP数据报、TCP数据报
网络协议格式 | 以太网帧、ARP数据报、IP数据报、UDP数据报、TCP数据报
140 0
|
缓存 网络协议 Linux
网络协议与攻击模拟-17-DNS协议-报文格式
网络协议与攻击模拟-17-DNS协议-报文格式
120 0
网络协议与攻击模拟-17-DNS协议-报文格式