toms初识
tmos一个特征和功能的集和,为了满足当今市场而出现的一个代理、高性能的一系列操作系统和固件,他们都在big-ip硬件设备上或BIG-IP虚拟版中运行
基于包设计和基于代理(全权代理)设计的区别
- 基于包:这些网络设备都是网络数据流中间的节点,并不是数据交互流的终点或起点,并且这些设备只需要满足部分协议而不是整个协议栈,比如一个位于第三层(IP)的设备,可能只需要会读写IP地址TCP地址即可,至于第二层第一层的协议将与其无关。现在这些设备越来越智能了,可以修改tcp数据流,甚至能修改tcp数据包的头部(seq ack)字段,而这些是通过一个状态跟踪引擎来实现的这些设备可以识别出哪些是单独的http请求(第一次的)这些基于包设计的设备是比后者快的,而且也没有那么复杂,最根本的原因就是它们只需要理解一部分协议
- 基于代理: 全权代理和基于包的设计刚好是相反的,它需要理解整个网络传输的协议栈,同时他们也是协议的发起者和接收者,而一个代理服务器和客户端之间的通信与一个代理服务器和后段服务器之间的通信是不同的(反向代理、正向代理)
二者之间的矛盾基于代理的设计比基于包的设计更加智能,但是目前来说基于代理的设计性能更强。当流量激增的时候,基于包管理的性能也会被限制,所以在企业进行选型的时候,二者都可以被考虑
什么是tmos
- 模块的集和 每个模块提供一部分功能 比如arp ip tcp各自有各自的模块,每个模块都是自称一体的,这样将可以减少系统的复杂性,类似于搭积木一样,当需要增加对某个协议的支持时,我再去构建这么一个单独的模块
- 自主&独立的 tmos具有自己的CPU 内存 和外围设备的接口,当一个基于tmos的设备受到数据包的时候,这些线路的子管理系统是完全在tmos中独立的,linux是不参与这个过程的,也就是说tmos并不与linux操作系统发生耦合,linux只用来管理程序
- 实施操作系统 (非抢占式的操作系统) 对于tmos这样高性能、大流量的操作系统来说,抢占式的os会浪费掉cpu的部分性能(高优先级插队),tmos的设计是每个组件执行必要的操作,然后把cpu让出去给下一个组件运行。这样将消除了中断、上下文切换等cpu开销,并且让程序有序运行
- 基于软件与硬件 它可以从软件和硬件两方面来解决问题,如果是难度比较高的,可能优先走的就是软件,如果是资源密集的,那么优先丢给硬件执行
- 事件驱动 因为tmos是模块化并且实时的,也就意味着它能够在任何时间内切换任务,也能够在短时间内改变性能来满足当前的需求
- 状态检测 tmos的内核是基于高速代理的,
- 动态数据包筛选 tmos能够筛选数据包,它有一个重要优势就是全权代理隐藏了后端服务的网络对战,f5的iRules允许动态控制应用程序流量,可以重定向,动态过滤,或者阻止流量等等
以上:tmos三一个功能强大、适应性强的解决反感,模块化与字包含、实时、事件驱动的操作系统相结合,为tmos提供了前所未有的功能
tmos体系中的特殊模块
tcp express 基于包管理的设计无法提供这个功能,tcp express包括了 延迟和选择性确认、显示拥塞统治、快重传,拥塞避免等等算法,tmos基本上把tcp能优化的地方全部进行了优化,这才能实现显著的加速
tmm(多线程进程):流量管理微内核处理big-ip系统上的所有负载均衡流量,在tmos中作为额u一个实时用户进程运行,cpu和内存资源在big-ip配置中明确配置
影响tmm使用cpu资源的因素
每个处理器的内核
每个核心的超线程数
big-ip版本
big-ip系统许可的模块
单cpu
单核的cpu使用率
在big-ip 11.5.0之前,每个cpu内核被分配一个单独的tmm实例,每个内核处理数据平面任务(tmm特定)和控制平面任务(非tmm特定) 。从big-ip11.5.0开始,数据平面任务和控制平面任务都采用英特尔超线程技术在CPU的系统上使用单独的逻辑内核,偶数编号给TMM,奇数编号给其他进程。