Last updated on

解惑 -- 为什么我学不好网络?


前言

很多朋友(网友)问我,以下几个问题/困扰:

如果你有以上的困扰,我这里确实有一些解决的小指南。

但并不是什么灵丹妙药,该踩的坑还是得踩。

解惑

问题 一 、二

如果出现前一二点的问题,我认为是网络基础太差了,或者是基础的网络知识没有成体系。

导致这个的原因:

我推荐先补完基础知识以及基础实验,先打打基础。网络基础

在网络方案上,我推荐去看华为高端核心交换机的文档。

看一下华为在不同的网络场景需求下,提供了什么样的方案以及相应的配置。

在别的平台上,一样会有相应的实现的。原理都一样的。

image

链路聚合 https://support.huawei.com/enterprise/zh/doc/EDOC1100213153/c1b2412c

问题 三

现在一键脚本那么多,工具层层封装,变得十分易用。但是一出现网络问题,我却两眼一摸黑。解决不了问题,无法有效地跟踪问题,有理有据地解决问题。

这个问题,体现了下面几个问题:

  • 对于脚本不熟悉。

  • 对于脚本所封装的核心不熟悉。譬如:calico的安装命令就两条。但是你对calico不了解,calico出了问题,这就很难进行问题的排查。

  • 我他喵的,要是会,还用脚本?

那么我还是建议你参考问题一、二的建议,先补补基础以及实验。网络基础

然后熟读对应的技术文档。

但是,如果你已经对华为、思科那一套很熟了,但是解决不了Linux网络问题,那么请参考下面的问题解惑。

问题 四

我思科、华为挺6的,但是Linux的网络就是不太会,不知道怎么入手。

对iptables、ipvs、netfilter、ebpf 、SDN、OVS等技术名词,真就只知道这个名词。

这个问题经常出现在运维两年以上或者是现场实施的工作人员。

特别是现场实施的人员会有这个困惑。

以前在客户的机房交付ZTE的云桌面的时候,现场实施的人对交换机、核心路由的配置老熟悉了。

但是他们对Linux、Linux 网络这块就贼模糊。

只会配下IP地址,记录下hba卡的地址去做FC - SAN等等。

剩下的Linux配置工作全靠跑脚本。

他们曾经也跟我交流过这个问题,有什么痛点以及要怎么去突破这个困境。

困境

  • 无法在Linux上面做对应CPT(思科网络模拟器)的网络实验。

  • 不清楚Linux对网络理论的具体实现。

  • 一步到内核实现,过于困难。对于一个初来乍到的初学者,简直就是劝退。

  • Linux实验的时候,感觉抽象化。越陌生,越感觉到抽象。

  • 对于Linux相关的技术点都是两眼一抹黑,也不知道该从哪里打灯。

  • 不知道如何将已有的网络知识融入到Linux的网络体系中

  • 在搜索引擎上搜索 Linux network ,出来的都是在教你什么是网卡,怎么给网卡配IP,重启网络服务等等。你实际上不需要这些基础的网络教程,但又不知道搜什么关键词好。

首先, 笔者必须明确的一个点:网络的规则已经是定下来了,具体的实现就看每个厂商的神通。

因为规则已经定好了,你才可以使用 Go / Java / Node 写一个Web服务,在手机用Chrome,电脑用 Safari ,无差别地访问同一个Web服务。

快速地从 华为、思科的网络体系切换到Linux网络体系的实现,最好的方法应该是对比实验。

image

因为各种的情况,如 工具链、现有架构等,导致不同的厂商在实现中必定有各种的差异。

观察同一个理论,在不同的体系里面是如何实现的。

通过对比实验,相互去验证以及学习。

譬如,思科的VXLAN实验,在Linux网络体系上面是如何实现。

进而了解Linux网络体系为了实现这个理论,结合自身的实际情况 进而 制造了什么样的工具以及如何使用这些工具。

实际上,你已经从一个封闭的网络体系过度到一个开放的网络体系。

因为厂商的封闭性,在华为、思科体系用到的工具都比较单一。

华为和思科会提供很详细的网络场景文档以及各种培训。

而Linux网络体系的文档还真的没有他们两个厂商全。🤣

所以入门网络推荐从华为、思科的文档以及培训入手。

在Linux网络体系中,由于开放性,各个厂商都可以加进来做自己擅长的事情,工具、标准以及理念繁多。

这也是导致SDN难学的原因之一。

笔者在写本文的时候,依旧在纠结选择什么样的技术点以及工具进行渐进式地学习,才可以让初学者尽量无痛地过渡到Linux Network。