《趣谈网络协议》笔记 -- 第24讲
食用说明在找《趣谈网络协议》的学习笔记时候感觉大家可能都是在看刘超老师的pdf文稿 按照新人小白喜欢记录的特性来记录一下自己的学习笔记会记录一些大佬的评论从24讲 开始前面的会慢慢更新尽量保持一天一讲的更新频率本人非科班生对于网络协议有理解 不到位的和错误的希望大佬多多指点拜谢大佬们第24讲云中网络自己拿地成本高购买公寓更灵活一、 从物理机到虚拟机为什么要从物理机到虚拟机传统数据中心直接维持物理机存在问题 采购不灵活需要自己采购、上架、插网线、安装操作系统周期长而且一旦采购了不能退货运维不灵活需要扩容CPU、内存、硬盘都需要要去机房手动去配置麻烦规格不灵活采购的机器往往规格和需要的配置不匹配而且很多应用混合部署在上面端口容易冲突容易互相影响复用不灵活当机器转接客户的时候需要重装操作系统为了解决这些问题云计算利用虚拟化技术在强大的物理机内部“切出”多台虚拟机就像买卖/租赁公寓。虚拟机按需分配CPU、内存和网络即开即用随用随删。qemu-kvmemu是Emulator模拟器的意思Linux环境下主流的开源硬件虚拟化技术。它就像一个“高级模拟器骗子”通过软件层面向虚拟机汇报“你有独立的CPU、内存、网卡”但实际上所有资源都是按比例向底层的物理机申请的。二、 虚拟网卡的原理虚拟网卡原理首先虚拟机需要有一张网卡对于qemu-kvm来说是通过Linux上的TUN/TAP技术实现的虚拟机是在物理机跑着的软件 虚拟机打开称为TUN/TAP的Char Dev字符设备文件之后就能在物理机上看到一张虚拟网卡网络包就往虚拟机里面发网络包 — 虚拟机— 网络包转换成文件流 — 写入字符设备 — TUN/TAP字符设备驱动接收写入的文件流 — 交给TUN/TAP的虚拟网卡驱动 — 驱动将文件流转换成网络包 — TCP/IP协议栈 — 最终从虚拟TAP网卡中发出来成为标准网络包TUN/TAP 设备Linux内核实现的一种纯软件的网络设备。其中TAP工作在二层数据链路层有MAC地址相当于模拟了一张普通的网卡。字符设备文件 (Char Dev)Linux哲学是“一切皆文件”。虚拟网卡在操作系统里被具象化为一个字符设备文件。虚拟机发数据本质上就是在向这个文件写入字节流。三、 虚拟网卡连接到云中为了让虚拟机能正常工作云网络必须解决四大需求共享共用物理网卡、互通互相能通信、隔离租户间互不干扰、灵活随意增删改。1. 共享与互通问题多个虚拟机怎么互通并上网需要引入“虚拟交换机”来连接它们。主要有三种连通方式Host-only仅主机所有虚拟机连在同一个虚拟交换机上彼此互通但完全与外界物理网络断开类似大学宿舍的纯内网打局域网游戏。桥接模式 (Bridge)将虚拟机的网卡和物理机的真实网卡一起“插”在虚拟交换机上。物理机和虚拟机被拉平到了同一个物理网段。缺点如果虚拟机太多会引发全网的广播风暴。NAT 模式 (网络地址转换)虚拟机连在虚拟交换机上形成一个独立的内网有自己的DHCP分配IP。物理机充当“家用路由器”把虚拟机的内网IP转换成物理机的公网IP去访问外网。局域网连接可以通过 Linux 命令 brctl 创建虚拟的网桥brctl addbr br0, 创建出来以后将两个虚拟机的虚拟网卡都连接到虚拟网桥brctl addif br0 tap0上这样将两个虚拟机配置相同的子网网段两台虚拟机就能够相互通信了。外网连接桥接(Bridge)桥接模式下虚拟机和笔记本电脑的都在同一IP网段下在数据中心中采取类似的技术都是Linux系统每台机器都创建网桥和br0虚拟机的网卡都连接到br0上物理网卡也连接到br0上所有的br0都通过物理网卡来连接到物理交换机上网络打平 虚拟机和物理网络会有同样的IP网段广播问题需要通过VLAN数据链路层进行划分另外一种方式为NAT网络层在这种情况下登录到虚拟机里面查看IP地址会发现虚拟机的网络是虚拟机的物理机的网络是物理机的两个不相同。虚拟机要想访问物理机的时候需要将地址NAT成为物理机的地址。还会在你的笔记本电脑里内置一个DHCP服务器为笔记本电脑上的虚拟机动态分配IP地址。因为虚拟机的网络自成体系需要进行IP管理。为什么桥接方式不需要呢因为桥接将网络打平了虚拟机的IP地址应该由物理网络的DHCP服务器分配。数据中心中也是类似的方式虚拟机是你的电脑路由器和DHCP Server相当于家用路由器或者寝室长的电脑物理网卡相当于你们宿舍的外网网口用于访问互联网。所有电脑都通过内网网口连接到一个网桥br0上虚拟机要想访问互联网需要通过br0连到路由器上然后通过路由器将请求NAT成为物理网络的地址转发到物理网络如果是你自己登录到物理机上做个简单配置你可以简化一下。例如将虚拟机所在网络的网关的地址直接配置到br0上不用DHCP Server手动配置每台虚拟机的IP地址通过命令iptables -t nat -A POSTROUTING -o ethX -j MASQUERADE直接在物理网卡ethX上进行NAT所有从这个网卡出去的包都NAT成这个网卡的地址。通过设置net.ipv4.ip_forward 1开启物理机的转发功能直接做路由器而不用单独的路由器这样虚拟机就能直接上网了。虚拟网桥 (br0)通过Linux命令如 brctl创建出来的虚拟交换机。把虚拟机的TAP网卡挂载到 br0 上它们就在物理上连通了。2. 隔离问题如果一台机器上的两个虚拟机不属于同一个用户怎么办呢brctl创建的网桥也是支持VLAN功能的可以设置两个虚拟机的tag这样在这个虚拟网桥上两个虚拟机是不互通的。如何跨物理机互通并且实现VLAN的隔离呢brctl创建的网桥上面的tag是没办法在网桥之外的范围内起作用的因此我们需要寻找其他的方式。有一个命令vconfig可以基于物理网卡eth0创建带VLAN的虚拟网卡所有从这个虚拟网卡出去的包都带这个VLAN如果这样跨物理机的互通和隔离就可以通过这个网卡来实现。首先为每个用户分配不同的VLAN例如有一个用户VLAN 10一个用户VLAN 20。在一台物理机上基于物理网卡为每个用户用vconfig创建一个带VLAN的网卡。不同的用户使用不同的虚拟网桥带VLAN的虚拟网卡也连接到虚拟网桥上。不同的用户由于网桥不通不能相互通信一旦出了网桥由于VLAN不同也不会将包转发到另一个网桥上。出了物理机也是带着VLAN ID的。只要物理交换机也是支持VLAN的到达另一台物理机的时候VLAN ID依然在它只会将包转发给相同VLAN的网卡和网桥所以跨物理机不同的VLAN也不会相互通信。使用brctl创建出来的网桥功能是简单的基于VLAN的虚拟网卡也能实现简单的隔离。但是这都不是大规模云平台能够满足的一个是VLAN的隔离数目太少。VLAN ID只有4096个, 另外一点是这个配置不够灵活。vconfig 命令Linux中用来配置 VLAN 的命令可以基于物理网卡虚拟出带有特定 VLAN Tag 的子网卡。四、 小结本节课核心脉络梳理云计算网络的核心基石是虚拟化其网卡通信原理是借助TUN/TAP 字符设备实现虚拟机内外数据的中转。云网络必须关注共享、隔离、互通、灵活四大痛点。互通主要有桥接和NAT两种流派安全隔离最基础的实现方案是打VLAN 标签。五、 思考题深度解析思考题 1在数据中心里面有一款著名的开源软件 OpenStack这一节讲的网络连通方式对应 OpenStack 中的哪些模型呢【深度解析】OpenStack 是搭建私有云的霸主它的网络模型Nova-network / Neutron与我们课上讲的底层原理高度对应Flat 模式对应课上讲的桥接模式 (Bridge)。虚拟机直接和物理机处于同一网段由物理网络的真实 DHCP 服务器分配 IP。Flat DHCP 模式依然是桥接的思想但是由 OpenStack 自己在虚拟网桥br0上起一个 dnsmasq 进程充当 DHCP 服务器来给虚拟机分配 IP。VLAN 模式对应课上讲的桥接模式 VLAN 隔离。利用 vconfig 划分不同的 VLAN 来实现多租户隔离。(扩展)VPC (虚拟私有云)对应课上讲的NAT 模式组合。每个租户可以在自己独立的网络里折腾最后通过 OpenStack 上的虚拟路由器vRouter本质是用 iptables 做的 NAT 转发连通外部网络Floating IP 机制。思考题 2本节提到的网络配置方式比较不灵活你知道什么更加灵活的方式吗【深度解析】课文末尾提到传统的 VLAN 只有 4096 个 ID 限制远远不够大型云平台用并且使用 brctl 和物理交换机绑定太死板。更灵活的方式是SDN (软件定义网络) 与 Open vSwitch (OVS)淘汰掉简单的 br0 网桥改用 OVS一款强大的企业级虚拟交换机。OVS 支持复杂的流表Flow Table可以通过控制器写代码来“编程”决定网络包该怎么走指哪打哪极其灵活。大二层网络技术 (如 VXLAN / GRE)为了突破 4096 的限制云厂商演进出了 VXLAN 技术。它把虚拟机的二层网络包伪装封装成物理机的 UDP三层数据包发送出去到了目标机器再解包。这使得云平台支持多达 1600 万个租户的网络隔离且虚拟机可以在整个数据中心自由迁移IP地址不变。这也就是专栏后续章节即将拉开的帷幕。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2553443.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!