当前位置: 首页 > news >正文

互联网随想(三) 光纤与电路交换

光纤的 “纤”,读 xian(先),第一声,而不是 qian(千)。

光纤之于通信,就像半导体之于计算机。光纤突破了通信的电子瓶颈,就像半导体集成电路突破了计算机的电子管瓶颈一样。

但本文不是赞美光纤的,本文为反复唏嘘。

分组交换最终取代电路交换的一大原因是电路交换浪费了宝贵的电子时隙,带宽利用率极低。分组交换依托排队论对时隙进行高效率统计复用,最终形成了互联网存储转发的现实。路由器,交换机等转发设备都是存储转发设备。

但交换节点和终端节点同质,同为集成电路驱动,同受摩尔定律制约。良好的胖端瘦网架构使互联网极具扩展性,快速成长的互联网使交换节点的负载指数上升。换句话说,随着接入终端的增加,带宽却没有同步增加,互联网越发不堪重负。

通过 Metcalfe 定律很好理解这一点。

网络价值与节点数量的平方成正比,Metcalfe 定律如是说。证明该定律非常简单,设节点数量为 N,将连接视为价值,其值为 N(N-1),N 越大,越接近 N^2。但连接以流量体现,即网络的总流量也与节点数量的平方成正比。将流量视作成本,这意味着,成本随价值同步增加。网络流量被集成电路驱动,受摩尔定律制约,摩尔定律曲线远没有 Metcalfe 定律曲线更陡峭。

为保持网络可扩展性,TCP/IP 胖端瘦网已使 “网络核心接入无关” 且无状态 IP 足够傻瓜,当接入成本近乎为零时,必须降低带宽成本。而带宽成本通过逻辑门驱动电脉冲体现,非常昂贵,不能和接入节点数量耦合。于是光纤来解题,全光通信没有一个逻辑门,于是网络核心将彻底摆脱摩尔定律。

光纤的发明解放了通信瓶颈,就像半导体解放了计算瓶颈一样。计算需要逻辑门,通信只需要光。

全光网络被认为是革命性的。以海量但数量固定的波长交换替换分组交换,一定是高尚的。交换节点不需要任何电子器件就能完成 Tbps 级交换,这种转变非常类似 “固定数量的进程中调度任意数量连接” 替换 “调度任意数量的每连接进程”,又一个 case 印证了倒换思想的正确性。

我非常清楚光学已热度不再,但我依然觉得光纤就像半导体一样具有革命性,之所以没像半导体促进计算机产业那样促进通信,是因为目前电子通信还不算太糟糕,分组交换网也没有预期的那样拥塞,远未触及摩尔定律约束的电子瓶颈。反观半导体之于计算机,要不是半导体,计算机要几间房子,跟锅炉房一样,肯定发展不起来。那时没有选择。

在光纤中可复用海量波长,而在电缆上只能时分复用任意数量分组,这是光纤和电缆的区别。波长数量是固定的,而分组数量不固定,按照波长选择路由,就具有了可扩展性。

摆两个视频:全光交换,OXC 光交换原理

光通信一下子就将负责计算的端和负责通信的网所依托的技术完全分开,消除了传输技术的电子瓶颈,摆脱了摩尔定律。

但事出必反复。人们非但没沿全光通信的大道一路走到黑,反而想将分组交换引入光通信,实现光分组交换。

全光网络波长交换实际上是电路交换,而提到电路交换,人们只会鄙视其早已过时。很少有人进一步思考分组交换的来由。如前文所述,电路交换浪费了电子时隙,发送一个电子载波脉冲成本非常高,高效利用每一个载波脉冲意义重大,分组交换来救场,统计复用成就了互联网。

但如果电子时隙取之不尽,用之不竭呢?

波长就相当于取之不尽,用之不竭的资源,在光通信时代,有必要用分组交换提高资源利用率吗?提高资源利用率必降低效率,如果每路通信都能零成本创建一条电路,谁还会用分组交换?

驱动分组交换的逻辑门电子过程才是低效和不可扩展的根源。分组交换是低效和不可扩展的原因,而非解决方案。

更有趣(其实一点都没趣,反而悲哀)的是,由于要在光域处理分组头,人们努力寻找或实现光域逻辑门,过程非常困难。比方说,为实现光分组存储转发,光分组要可被缓存,而光脉冲无法像电脉冲那样用锁存器,触发器这种元器件缓存起来,光域没有这种逻辑门组合,于是人们想出 “让光多走一段路” 这种 t = S/v 牛顿风格来实现延迟。

光信号本可直接通过,却偏要模仿电信号停一下,如果不能被缓存一下,就好像是光域相对于电域的缺陷,光域没有逻辑门,却偏要等效一个逻辑门。为解决电域的低效和不可扩展问题,却引入了电域的问题本身,绕了一大圈。

这让人想起 19 世纪英美的 红旗法案,明明汽车是个高效的交通工具,偏偏故意让它停下来,好让一切看起来和旧世界更和谐。

如本周上一篇文字,AIMD 本是为限制 Capacity-Seeking 贪婪性而引入,人们的思维定势引导人们即使 Capacity-Seeking 全转变成了 Application-Limited,却依然还要 AIMD 主导拥塞控制,不然就像少了什么一样。

人们天然认为分组交换相对于电路交换是进步,却忽略了背后因果。分组交换只是一个解决特定问题的方案,当问题消失后,方案自然就不再需要,所谓的进步也终成子虚乌有。

在全光通信中,这下好了,分组交换也没了。可能,也许,分组交换也好,AIMD 也要,只是过渡,甚至过客。
以上形而上迷思非工程实践,不涉及 “现实中铜线不会被光纤淘汰” 以及 “全光网络无法实现” 这种争论,如果有,谁说什么都对。

人们修建第一条高速公路的时候,肯定会有人想在一些特定的地方装上红绿灯,因为没有红绿灯的路太奇怪了。但红绿灯在普速路上是方法,但在高速公路上就成了问题。程序员看不起一体机,因为没有独立主机和显示器太奇怪了,而且总有各种理由,比如随时换显示器,散热好。AIMD 被视作理所当然,然后用 BBR 来优化它,却没人想等到带宽充盈到一定程度后取消它。分组交换深入身心,以至于全光通信时代依然还要做光分组交换…

浙江温州皮鞋湿,下雨进水不会胖。

相关文章:

互联网随想(三) 光纤与电路交换

光纤的 “纤”,读 xian(先),第一声,而不是 qian(千)。 光纤之于通信,就像半导体之于计算机。光纤突破了通信的电子瓶颈,就像半导体集成电路突破了计算机的电子管瓶颈一样。 但本文不是赞美光纤的,本文为反…...

electron之旅(二)react使用

首先使用react模板 我们这里使用的是vite和yarn yarn create vite #创建vite的react-js模板初始化依赖 yarn添加依赖 state(状态管理) yarn add redux react-reduxroutes(react路由) yarn add react-router-domelectron依赖 yarn add electron vite-plugin-electron cross-env…...

ChatGPT基础知识系列之Prompt

ChatGPT基础知识系列之Prompt 在 ChatGPT 中,用户可以输入任何问题或者话题,如天气、体育、新闻等等。系统将这个输入作为一个“提示”(prompt)输入到 GPT 模型中进行处理。GPT 模型会基于其学习到的语言规律和上下文知识,生成一个自然语言回答,并返回给用户。 例如,当…...

SpringBoot3 - Spring Security 6.0 Migration

Spring Security 6.0 Migration https://docs.spring.io/spring-security/reference/5.8/migration/servlet/config.html 最近在做SpringBoot2.x到3.0的升级。其中最主要的一部分是javax -> jakartapackageName的变更,另外一部分是对一些废弃/删除的类进行替换。…...

【新2023Q2模拟题JAVA】华为OD机试 - 最少停车数

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧本篇题解:最少停车数 题目 特定大小的…...

《代码实例前端Vue》Security查询用户列表,用户新增

login.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>系统登录-超市订单管理系统</title><link rel"stylesheet" href"../css/style.css"><script type&qu…...

CANopenNode学习笔记(一)--- README翻译

CANopenNode学习笔记 文章目录CANopenNode学习笔记特性CANopen其他CANopenNode 流程图文件结构对象字典编辑器CANopenNode 是免费开源的CANopen协议栈。 CANopen是建立在CAN基础上的用于嵌入式控制系统的国际标准化(EN 50325-4) (CiA301)高层协议。有关CANopen的更多信息&#…...

关于Android 11、12和13服务保活问题

物联网环境&#xff0c;为了解决不同厂商、不同设备、不同网络情况下使用顺畅&#xff0c;同时也考虑到节约成本&#xff0c;缩小应用体积的好处&#xff0c;我们需要一个服务应用一直存在系统中&#xff0c;保活它以提供服务给其他客户端调用。 开机自启动&#xff0c;通过广播…...

Java 泛型 使用案例

参考资料 Java 基础 - 泛型机制详解路人甲-Java泛型专题 目录一. 通用Mapper1.1 实体类1.2 Mapper基类1.3 自定义接口1.4 抽象基类Service1.5 调用二. session和bean的获取一. 通用Mapper 1.1 实体类 ⏹ Accessors(chain true): 允许链式调用 import lombok.Data; import …...

进程与线程

文章目录什么是线程线程与进程的关系线程与进程的区别什么是线程 上一篇文章中我们介绍了什么进程&#xff0c;我们把进程比作一个工厂&#xff0c;那么线程就是工厂中的流水线。引入进程的目的就是为了实现多个任务并发执行&#xff0c;但是如果频繁的创建销毁进程&#xff0…...

骑友,怎么挑选适合自己的赛事

骑友&#xff0c;怎么挑选适合自己的赛事一、从场地、路况、天气&#xff0c;各个方面了解赛事的要求。二、看完赛事&#xff0c;要知道自己适合参加什么样的比赛。三、通过比赛成绩&#xff0c;对比自己的实力。四、综合考虑自己的经济能力&#xff0c;根据自己的经济能力选择…...

【Java 数据结构与算法】-遍历Map和Set的方式

作者&#xff1a;学Java的冬瓜 博客主页&#xff1a;☀冬瓜的主页&#x1f319; 专栏&#xff1a;【Java 数据结构与算法】 文章目录一、遍历Map法一 先获取Map集合的全部key的set集合&#xff0c;遍历map的key的Set集合法二 把map的key和value打包成Set的key后的这个Set集合法…...

组件、套件、 中间件、插件

组件、套件、 中间件、插件 组件 位于框架最底层&#xff0c;是由重复的代码提取出来合并而成。组件的本质&#xff0c;是一件产品&#xff0c;独立性很强&#xff0c;组件的核心&#xff0c;是复用&#xff0c;与其它功能又有强依赖关系。 模块 在中台产品和非中台产品中&…...

自动化工具 pytest 内核测试平台落地初体验

测试平台&#xff0c;有人说它鸡肋&#xff0c;有人说它有用&#xff0c;有人说它轮子&#xff0c;众说纷纭&#xff0c;不如从自身出发&#xff0c;考虑是否要做测试平台&#xff1a; 第 1 阶段&#xff0c;用 Pythonrequests 写接口自动化。 第 2 阶段&#xff0c;选择 unit…...

Python 自动化指南(繁琐工作自动化)第二版:四、列表

原文&#xff1a;https://automatetheboringstuff.com/2e/chapter4/ 在开始认真编写程序之前&#xff0c;您需要理解的另一个主题是列表数据类型及其表亲元组。列表和元组可以包含多个值&#xff0c;这使得编写处理大量数据的程序更加容易。由于列表本身可以包含其他列表&#…...

大数据领域的发展及其对现实世界的价值

大数据已经成为全球各行业领域不可或缺的一部分&#xff0c;并且其应用不断涌现。尽管很多人最初对“大数据”这一术语表示怀疑和不信任&#xff0c;但大数据技术已经确立了稳定的发展方向。根据调研机构的预测&#xff0c;到2027年&#xff0c;全球大数据市场规模将达到1090亿…...

几种常见的架构模式

本文已经收录到Github仓库&#xff0c;该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点&#xff0c;欢迎star~ Github地址 如果访问不了Github&#xff0c…...

flutter安装各种问题汇总

C:\Users\Administrator>flutter doctor -v Flutter assets will be downloaded from https://storage.flutter-io.cn. Make sure you trust this source! [√] Flutter (Channel stable, 3.7.0, on Microsoft Windows [版本 10.0.19044.1826], locale zh-CN) • Flutte…...

网络传输层

目录传输层再谈端口号端口号范围划分认识知名端口号netstatpidofUDP协议UDP协议端格式UDP的特点面向数据报UDP的缓冲区UDP使用注意事项使用udp协议 的应用层协议其它TCP协议TCP协议段格式如何理解链接如何理解三次握手如何理解四次挥手概念TIME_WAIT/CLOSE_WAITTCP策略确认应答…...

linux内核启动分析(二)

文章目录1. set_task_stack_end_magic2.smp_setup_processor_id3. debug_objects_early_init4. cgroup_init_early4.1 init_cgroup_root4.1.1 init_cgroup_housekeeping4.2 cgroup_init_subsys5. local_irq_disable5.1 raw_irqs_disabled5.2 raw_local_irq_disable5.3 trace_ha…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

React Native 导航系统实战(React Navigation)

导航系统实战&#xff08;React Navigation&#xff09; React Navigation 是 React Native 应用中最常用的导航库之一&#xff0c;它提供了多种导航模式&#xff0c;如堆栈导航&#xff08;Stack Navigator&#xff09;、标签导航&#xff08;Tab Navigator&#xff09;和抽屉…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

日常一水C

多态 言简意赅&#xff1a;就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过&#xff0c;当子类和父类的函数名相同时&#xff0c;会隐藏父类的同名函数转而调用子类的同名函数&#xff0c;如果要调用父类的同名函数&#xff0c;那么就需要对父类进行引用&#…...

CppCon 2015 学习:Time Programming Fundamentals

Civil Time 公历时间 特点&#xff1a; 共 6 个字段&#xff1a; Year&#xff08;年&#xff09;Month&#xff08;月&#xff09;Day&#xff08;日&#xff09;Hour&#xff08;小时&#xff09;Minute&#xff08;分钟&#xff09;Second&#xff08;秒&#xff09; 表示…...

数据库正常,但后端收不到数据原因及解决

从代码和日志来看&#xff0c;后端SQL查询确实返回了数据&#xff0c;但最终user对象却为null。这表明查询结果没有正确映射到User对象上。 在前后端分离&#xff0c;并且ai辅助开发的时候&#xff0c;很容易出现前后端变量名不一致情况&#xff0c;还不报错&#xff0c;只是单…...