第二十二节 VPN
- VPN通过隧道技术在公众网络上仿真一条点到点的专线,是使用一种协议传输另一种协议的技术。涉及三种协议:乘客协议、隧道协议、承载协议。
- IPsec VPN: 基于IP协议的安全隧道协议
- 私密性:IKE(因特网密钥交换协议),对称加密,但要交换一个密钥。
- 完整性:hash校验
-
真实性:身份认证
- MPLS VPN:多协议标签交换VPN。能够根据标签转发的路由器称为LSR(标签交换路由器)。主要解决的问题是:每次ip包都要重新寻路导致速度较慢
第二十三节 手机网络
- 2G:不是ip网络,而是电话网络,走模拟信号。收发无线信号,与基站通信。
- 2.5G:加入分组交换业务,支持packet的转发,从而支持ip网络。
- 3G:W-CDMA
- 4G:eNodeB, MME, SGW, PGW
第二十四节 虚拟机技术
-
虚拟网卡:网络包 -> 文件流 -> 网络包
- 虚拟网卡连接到云
-
互通:brctl命令,创建虚拟交换机br0
- 共享
-
桥接:将网络打平
-
NAT
-
- 隔离: 虚拟网桥支持vlan功能
- 灵活
-
第二十五节 软件定义网络SDN
控制面和数据面分离。一种开源的虚拟交换机实现:OpenvSwitch。可以解耦物理网络和虚拟网络
第二十六节 云中网络安全
-
PREROUTING,INPUT,FORWARD,OUTPUT, POSTROUTING
-
内核模块ip_tables(用户态即为iptables),在五个节点上埋下hook函数,按功能分四大类
- 连接跟踪conntrack
- 数据包过滤filter
- 网络地址转换nat
- 数据包修改mangle
-
安全组
第二十七节 流量控制技术QoS(Quality of Service)
- 无类别排队规则
- 基于类别的队列规则
第二十八节 云中网络隔离GRE、VXLAN
- Underlay网络:底层的物理网络设备
- Overlay:虚拟机和云中的这些技术组成的网络
- GRE:generic routing encapsulation,是一种ip-over-ip(点对点)的隧道技术
- 缺点:
- 不支持组播
- tunnel数量会随节点数爆炸增长
- 一些防火墙和三层网络设备无法解析gre,进而无法做过滤和负载均衡
-
VXLAN
第二十九节 容器网络
- 看起来隔离的技术:namespace。每个namespace中的应用看到的是不同的IP地址,用户空间,进程号
- 用起来隔离的技术:cgroup。一个应用只能使用整台机器的部分cpu、内存
-
容器网络如何融入物理网络
- docker端口映射实现方式:docker-proxy,DNAT
第三十节 容器网络之Flannel:每人一亩三分地
- Flannel是跨节点网络容器之一,两种方式:
-
使用UDP在用户态封装
- VXLAN,内核态封装,性能更好
-
第三十一节 容器网络之Calico
- Calico思路:不走Overlay网络(会引入性能损耗),将转发全部用三层网络的路由转发来实现。
-
路由配置组件Felix: 容器加入或删除后,发出相关通知。使用BGP协议广播
- IPIP模式:隧道模式,点对点通信,用于物理机跨网段的情况
第三十二节 RPC协议
基于socket编程
一篇论文:Implementing Remote Procedure Calls by Bruce Jay Nelson
-
协议约定问题
- 问题一:如何规定远程调用的语法
- 问题二:如何传递参数
- 问题三:如何表示数据
传输问题:出错、重传、丢包、性能等。使用队列、拥塞窗口等,异步机制。状态机。
服务发现问题:注册中心
第三十二、三十三节 SAOP协议,RESTful规范
- SOAP:simple object access protocol,基于xml。主要解决原先二进制RPC格式过于严格、不面向对象的问题(服务端增删该任何一个字段,客户端都必须更新),是一种基于文本的调用方式
- RESTful:基于json。是一种架构模式,面向资源,无状态,利于横向扩展
第三十四节 二进制rpc协议
-
典型的大规模电商应用
- 缓存和持久化层:db,es,redis
- 基础服务层:缓存和持久化层之上,一些原子化的接口
- 组合层:组合调用基础服务,实现复杂的逻辑
- controller层:对外restful接口
- dubbo框架
- 序列化协议:默认hessian2,自描述
-
传输:netty
- 二进制框架缺点:可能循环依赖,必须共享jar,关系复杂时jar依赖难以维护
- 解决方案:
- 一:严格的项目管理流程:
- 不允许循环调用、跨层调用
- 接口兼容性
- 升级时先升服务端,然后客户端
- 二:使用spring cloud这种restful的rpc,大不了加机器
- 一:严格的项目管理流程:
第三十五节 跨语言rpc
-
对RPC的要求越来越多
- 性能
- 跨语言
- 灵活
- 服务治理,像dubbo和spring cloud那样
-
GRPC
- 序列化协议是protocol buffers
- 跨语言:通过工具生成各语言的stub程序
- 网络传输:netty channel作为数据通道,每个请求都被封装成http2.0的stream
- Envoy:负载均衡器,高性能的Proxy转发器
-
service mesh:服务治理抽象到平台层解决,应用本身无感