• 因特网协议分层与虚拟网络


    2018-03-30

    分层模型及实现方式

    1. 第五层(或者OSI第七层)- 应用层 Http/SSH/TCP:软件实现
    2. 第四层 - 传输层TCP/UDP:软件实现。
      • “端口”这个概念也在这一层被实现,网络层只负责主机->主机的数据传递,传输层则通过一个虚拟的“端口”实现程序->程序的数据传递。
    3. 第三层 - 网络层:软件与硬件混合实现,算是五层协议里最复杂的一部分。
      1. data plane: forwarding 转发,由硬件实现。
        • 功能:在单个路由器中,将 packet 从输入端口转发到合适的输出端口。(这里的端口,指的是路由器的物理端口,和 tcp/udp 的端口不是一个概念)
        • 数据平面需要非常快的工作效率,尤其是在高速线路上,工作在 ns 尺度上,因此需要用硬件实现来保证正常工作。
      2. control plane: routing 路径选择,由软件实现。
        • 涉及算法,通常由软件实现。计算合适的路由路径,并据此完成对路由器 forwarding table 的更新。(还有部分网络管理功能)
        • 控制平面的路径选择算法、网络管理功能,相对数据平面而言对时间的要求不是那么高。工作在ms/s尺度上,更适合用软件实现。(由于其计算量大,而且路由器分布式布置,该算法通常实现为分布式)
    4. 第二层 - 数据链路层:负责特定链路的通信,常实现在硬件内。
      • 交换机通过 MAC 地址在链路层进行数据转发。(ARP 协议)
    5. 第一层 - 物理层:负责处理物理信号和第二层数据包之间的转换(调制解调器,猫),硬件实现。

    OSI七层模型,在应用层与运输层之间,多了一个表示层和会话层,而在因特网中这两层不一定需要,若有需要也通常由软件自身实现。

    P.S. 软件实现的好处是成本低,也容易更改。 而硬件实现的好处是效率高,响应快,但是更改难,成本也高。

    VLAN(虚拟局域网)

    随着互联网的不断发展,“套娃”技术也被 应用地越发深入。尤其是 云计算/微服务/Kubernetes 火了之后,单纯的虚拟机层面的网络已经满足不了大家的需求了。

    最浅显的例子是云计算,云平台上的每个企业,都希望自己能有一套自己的私有网络,增强自己微服务体系的安全性,这显然只能通过虚拟网络的方式实现。

    另外就是 Kubernetes 容器管理平台,一台主机上可能运行着上百个 Pod(容器组),K8s 需要为每个 Pod 分配一个在整个集群中都可用的 IP,某些情况下还希望能够隔离各个命名空间的网络。这显然也需要在已有的节点间网络上再虚拟出一个 Kubernetes 自己的网络,并且由 kubernetes 自己完全地控制这个网络。

    网络虚拟化技术有多种方式,k8s 的 flannel 插件使用的是 vxlan 技术,这种技术将虚拟网络的数据封装成 udp 包在主机网络上传送。

    通过 vxlan 类似的技术实现的网络,被称为 overlay 网络,即在现有的物理网络之上构建一个虚拟网络,上层应用只与该虚拟网络相关。前述的五层网络模型中,overlay 网络可以虚拟化第一层(物理层)之上的所有网络层。

    overlay 网络非常灵活,唯一的缺点就是性能——它在第四层进行封装。

    k8s 主流的网络插件中,还有一个 calico,它使用 iptables 在第三层实现了一套虚拟网络,好处是性能比 overlay 网络更好。

    SDN(软件定义网络)

    待续

  • 相关阅读:
    java_29打印流
    java_26 缓冲流
    java-27 Properties类的使用
    java_24.1文件流的应用--复制文件
    java_25 FileReader类和FileWriter类
    java_25.1字节转为字符OutputStreamWriter
    java_23 File类
    java_24 FileOutputStream类和FileInputStream类
    java_21 Set接口、HashSet类、LinkedSet类
    随机数Random和静态函数Math
  • 原文地址:https://www.cnblogs.com/kirito-c/p/10306527.html
Copyright © 2020-2023  润新知