Skip to main content

网络需要的是可靠,而不是可编程

 

SRv6

SRv6依旧没有大规模的商业部署,分片和SLA保障的场景传统的SR-MPLS已经做的很好了,而且由于整个标签栈在报文头部每个SID又短效率非常高,而其它的可编程场景似乎没有找到可以落地的应用.

SDWAN

今年的魔力象限依旧是六家乱战,依旧还是一个Leader和Niche Players象限挤满了的行业,而做广域网优化的Citrix和Riverbed在SASE的影响下逐渐掉队,而Silver Peak则顺利上岸HPE(Aruba)

Image

正如去年所说的,这个市场最大的问题在哪?是技术对了而市场没有成熟?如果是这样,应该看到大量的visionaries,最终今年只剩祝你怕~ 即便是疫情的影响也没给这些巨头带来爆发性的增长,那就是市场对了,而技术本身错了?第一象限里的每一家我都可以给你吐槽一整天它们的各种技术缺陷。其实最本质的问题就是原来的惯性思维,而忘记了通信的本质。

或者更简单的一句话,为什么一个数据需要TLS应用加密一次,然后再IPSec加密一次?应用要是能自己选路还需要什么SDWAN优化呢?

P4

樱桃今年终于把Tofino的架构信息开源出来了,然后Github上把各种研究性质无法落地的一些应用作为Example code放着,但是Compiler还是需要非常严格的NDA,那么P4的问题在哪让樱桃如此讳莫如深?P4看上去结构很美,可以解析各种报文玩各种场景,但问题在大家都忽视的Deparser上,很多可编程的功能叠加在一起,Deparser的问题就显现出来了。其实P4很像当年的安腾处理器,本质上前端Decoder都很强大,后端执行就一坨屎了, P4的问题和VLIW的灵活性问题本质是一致的。所以你会看到Cisco也开始搞RTC的P4,Pensando也在网卡里加入Program Counter和通用寄存器.

Image

Image

Nick教授带的小伙伴们也开始搞NanoPU,但很遗憾的告诉你们,其实一个报文的处理,Parser占用的指令只有5%不到,后面的处理需要大量的内存访问又会遇到冯诺依曼架构的内存墙.

权威和真理我们相信什么?

无论是两弹一星的年代部分人盲目相信苏联专家,或者是改革开放前期提出"实践是检验真理的唯一标准". 或者是现代我们看着某个基金经理历史业绩好就买入,最后实实在在的损失才是真理。前华夏“公募一哥”似乎已经没啥消息了,而后华夏一哥最近也因业绩问题遗憾离世.过去的成就和权威并不代表以后的成功。

但是真当我们深陷其中时,身体是最诚实的,毕竟跟着大佬有肉吃:) Nick大佬的成功奠定在90年代末期,第一代GSR路由器上的iSLIP调度算法,以及后来为CRS-1等分布式集群路由器的贡献。但是CRS-1在部署集群规模加大后,各种内部分布式系统不一致的情况就出现了,这些问题非常难排查。紧接着Openflow带起了SDN的风潮,当然很多vSwitch解决了不少问题,但是Openflow自身的缺陷最终没有大规模商用的案例,倒是MPLS通过ACI构建的微分段非常巧妙的解决了业务的痛点。而对于P4的问题,前面已经讲清楚了。CF的成功来自于最早期IP-FRR-LFA的研究,的确非常干净非常漂亮的解决了很多问题,而紧接着通过SR-MPLS把RSVP-TE的一堆垃圾事情清理干净了,TI-LFA和SRTE讲真是一个非常不错的技术。而后来的问题就是在IPv6的实现上,简单的照搬SR把SID弄到IPv6上,而最终发现SID太长又来压缩,压缩标准又带来了行业争议和算法复杂度。然后还有一些厂家要求12个SID,趴地上想想8个SID就可以构建IPv9了,12个SID是要玩IPv10么?

可编程网络的真理是什么?

网络的本质是更快更安全的共享信息,至于网络需要可编程,那么有何种应用真的能用到呢?有大佬说一块芯片可以做Pizzabox,也可以组成多机框集群,所有的软件功能都相同。但是似乎忘记了一点:分布式系统的一致性如何解决。而网络编程的难点就在这里,CAP理论的P就是由自己失效而产生的,同时又想极致的去追求C,并且服务上又想极致的追求A,最终结果就只有一个,贵.

如果更进一步的可编程,例如CF提出的在SID里面放<Function,Args>想法非常好,结合Serverless和算力网络可以干出很多事情来,但是似乎忘记了一点计算的Context并不是以数据包为单位的,简单的来说,一个JSON请求很有可能就需要多个TCP报文组合起来。计算的需求打断了整个Service-Chain。

可编程网络的真理在哪?或许只在一句很简单的话

网络的本质是承载数据流,而内存是数据流在某个时刻的快照,而计算是基于快照信息而产生新的数据流。

理解分布式系统一致性和达到一致性的各种算法,为计算的Context更快的构建快照,这才是可编程网络需要做的事情,而不是一天到晚想着去替代GPU替代CPU搞编程。

怕什么真理无穷,进一寸有一寸的欢喜

Comments

Popular posts from this blog

CKA Simulator Kubernetes 1.22

  https://killer.sh Pre Setup Once you've gained access to your terminal it might be wise to spend ~1 minute to setup your environment. You could set these: alias k = kubectl                         # will already be pre-configured export do = "--dry-run=client -o yaml"     # k get pod x $do export now = "--force --grace-period 0"   # k delete pod x $now Vim To make vim use 2 spaces for a tab edit ~/.vimrc to contain: set tabstop=2 set expandtab set shiftwidth=2 More setup suggestions are in the tips section .     Question 1 | Contexts Task weight: 1%   You have access to multiple clusters from your main terminal through kubectl contexts. Write all those context names into /opt/course/1/contexts . Next write a command to display the current context into /opt/course/1/context_default_kubectl.sh , the command should use kubectl . Finally write a second command doing the same thing into ...

OWASP Top 10 Threats and Mitigations Exam - Single Select

Last updated 4 Aug 11 Course Title: OWASP Top 10 Threats and Mitigation Exam Questions - Single Select 1) Which of the following consequences is most likely to occur due to an injection attack? Spoofing Cross-site request forgery Denial of service   Correct Insecure direct object references 2) Your application is created using a language that does not support a clear distinction between code and data. Which vulnerability is most likely to occur in your application? Injection   Correct Insecure direct object references Failure to restrict URL access Insufficient transport layer protection 3) Which of the following scenarios is most likely to cause an injection attack? Unvalidated input is embedded in an instruction stream.   Correct Unvalidated input can be distinguished from valid instructions. A Web application does not validate a client’s access to a resource. A Web action performs an operation on behalf of the user without checkin...