`
nil-zhang
  • 浏览: 51540 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Traffic Server Net子系统分析

阅读更多

Traffic Server设计的思想是将一个大系统划分为若干个小的子系统,每个子系统负责专门的任务或应用。比如,Event子系统负责提供任务调度服务,Net子系统负责提供网络服务。每个子系统抽象为一个Processor,如图1所示。这种高内聚低耦合的设计原则使系统具有更好的重用性,维护性和扩展性。例如,如果hostDBProcessor需要进行DNS解析,可以直接调用dnsProcessor的相关函数,而无需关注DNS解析的细节;dnsProcessor也只需封装DNS请求和解析DNS应答,和网络相关的功能可以调用netProcessor来完成。Event子系统已经在 “Traffic Server多线程异步事件处理模型”中说明过了,下面简单介绍一下Net子系统。

图1 Traffic Server子系统划分

Net子系统是一个封装网络API的模块,提供接收和新建TCP和UDP连接以及读写这些连接的接口。Net子系统可以高效地管理大量的连接。使用 Net子系统的另一个好处是SM(状态机)不用关心不同操作系统网络API的差异。SM使用Net子系统的全局对象netProcessor来创建新的连接或接收传入的连接。SM创建连接时会获得一个用来处理底层的连接的NetVConnection。使用NetConnection可以获得连接的属性,读写数据等。

netProcessor是Net子系统的核心,提供通用的网络API,如accept、connect等。它通过一个状态机来完成网络I/O。

netProcessor提供的函数:

  • start():启动netProcessor,在main函数中调用。它使用Event Processor的线程来执行函数。
  • accept():接收端口上的连接。回调函数NET_EVENT_ACCEPT和EVENT_ERROR,可重入的回调函数 NET_EVENT_ACCEPT_SUCCEED和NET_EVENT_ACCEPT_FAILED。返回一个Action,可以用来取消本次 accept。
  • main_accept():在端口上接收传入的连接。和accept的区别是参数列表是受限的。
  • connect_s():为面向连接的I/O打开一个NetVConnection。该函数只有在连接建立之后才返回,是同步调用机制。
  • connect_re():为面向连接的I/O打开一个NetVConnection。可重入的回调函数NET_EVENT_OPEN和NET_EVENT_OPEN_FAILED,是异步调用机制。

作为一个Proxy,Traffic Server的一个主要工作是accept来自用户的请求。NetProcessor::accept()和 NetProcessor::main_accept()都调用了UnixNetProcessor::accept_internal()函数,而后者的工作是new NetAccept。NetAccept是一个通用的处理正在被接收连接的类,它可以接收来自不同类型的连接,比如一个可阻塞的线程或通过自适应轮询。 NetAccept::init_accept()调用eventProcessor.assign_thread(etype)分配一个线程,并调用 schedule_every(NetAccept::acceptEvent)来轮询执行。

Traffic Server的另外一个工作是和OS(original server)的通信,NetProcessor::connect_re()调用了 UnixNetProcessor::connect_re_internal(),后者new一个UnixNetVConnection,分配一个 SocksEntry,调用eventProcessor.schedule_imm(vc, opt->etype)来执行一个VConnection。NetVConnection是一个网络socket的VConnection,是一个网络连接的抽象。而UnixNetVConnection是NetVConnection在类unix系统上的实现。

以上就是Net子系统主要的功能。Traffic Server还在SocketManager类以及ink_sock.cc中对网络API进行了函数封装,比如对EAGAIN、EINTR等情况的处理。

分享到:
评论

相关推荐

    我在京东写的traffic server笔记

    文档中还涉及了ATS目录下的trafficserver-4.2.2版本信息,这是一个特定版本的Traffic Server的源码和工具集合,具体包含build、cmd、contrib和doc四个子目录,其中每个子目录都有一些特定功能的组件,如traffic_cop...

    atsinternals:Apache Traffic Server源代码分析

    权利保留 对本项目内容的任何转发和引用,请注明本项目地址: : Apache Traffic Server源代码分析 本项目主要是我对Apache Traffic Server 6.0(以下简称...包含了多个子系统(子系统) 代理人 IOCORE 在IOCore内包

    traffic.rar

    解压后,我们可以看到一个名为“traffic”的文件夹,这通常包含ROS工作空间的结构,比如src、build、devel等子目录。在src目录下,可能有C++或Python的源码文件,用于实现分类器和与ROS系统的接口。 交通灯识别通常...

    JSP.rar_jsp 网站_traffic_流量统计_网站流量_网站流量统计

    通过JSP,我们可以定制化地设计流量统计系统,收集并分析这些关键指标。 首先,我们需要在JSP页面中嵌入JavaScript代码来捕捉用户的交互行为,如页面加载、点击事件等。JavaScript可以记录这些事件,并通过Ajax异步...

    道路交通安全(企业)安全管理信息系统的研制与应用.docx

    1. **数据库设计**:存储各类数据,如驾驶员、车辆信息和管理标准,通常会使用Access和SQL Server等数据库管理系统来满足不同用户需求。 2. **辅助管理模块**:包含出车调度、驾驶员、车辆和档案管理等子模块,其中...

    asp+sql旅游管理系统设计(源代码+LW+开题报告+答辩PPT).zip

    4. 用户界面设计:从文件名可以看出,系统包含了如“hotel.asp”(酒店管理)、“traffic.asp”(交通管理)和“travel.asp”(旅游线路)等多个页面,这些页面构成了系统的用户界面。设计良好的界面应直观易用,能...

    Citrix NetScaler负载均衡设备上电子邮件系统启用SSL证书加载方法

    2. 进入“Traffic Management”模块下的“SSL”子菜单,然后选择“Certificates”项。 3. 在“Install”选项下,按照提示输入必要的信息。例如,为新证书指定一个易于识别的名字,并选择对应的`.cer`文件和`.key`...

    Hillstone常用命令整理.docx

    * `logging traffic on`:在全局范围内打安全策略、NAT 的 log 记录。 * `logging event to buffer severity warnings size 102400`:记录 event 到内存缓冲里,log 等级为 warning 缓冲大小为 102400 Byte。 * `...

    新员工信号基础培训讲议资料PPT学习教案.pptx

    CTC(Centrolized Traffic Control,调度集中系统)则实现了对列车运行的自动控制和人工操作的结合;LEU(Linside Electronic Unit,地面电子单元)在列控限速指令执行时起到关键作用,将指令传送到有源应答器;ATP...

    CANopen轻松入门-ZLG.zip

    - SDO:用于配置和诊断参数的非实时传输,支持上行(Client to Server)和下行(Server to Client)通信。 6. **CANopen网络管理**: - NMT(Network Management Traffic)用于节点的启动、停止、心跳检测等。 -...

    LTE 通信系统技术知识要点 ver 1.0.pdf

    LTE中,基本时间单位Ts的计算与OFDM(Orthogonal Frequency-Division Multiplexing)子载波间隔有关。假设FFT尺度为2048,则Ts计算公式为:\[Ts = \frac{1}{fs} = \frac{1}{15000 \times 2048}\] 大约等于0.0326微秒。...

    xp下配置MRTG

    根据提供的文件信息,本文将详细介绍如何在Windows XP系统下配置并使用MRTG(Multi Router Traffic Grapher)网络流量监控工具。MRTG是一个广泛使用的网络监控工具,它能够通过SNMP协议收集网络设备的数据,并生成...

    Aruba无线控制器配置——理解Profile Tree

    3. **AAA Profile**:包括了AAA Authentication MAC、AAA Server Group等子配置简档,用于定义用户接入认证、授权及计费的相关策略。 4. **AAA Authentication MAC**:一种基于MAC地址的身份验证方式。 5. **AAA ...

    Windows 2003下MRTG的安装及配置手册.doc

    **Windows 2003下MRTG安装与配置指南** ...通过以上步骤,你可以在Windows 2003 Server上成功安装和配置MRTG,实现对网络设备的实时监控和历史数据分析。确保定期检查MRTG的输出,以便及时发现并解决网络性能问题。

    PLSQL工具连接ORALCE数据库的方法

    这通常通过修改`tnsnames.ora`文件实现,该文件位于Oracle客户端安装目录下的`network\admin`子目录中。例如,在Windows系统中,路径可能为`D:\oracle\产品目录\ora92\network\admin`。 在`tnsnames.ora`文件中,你...

    通信与网络中的分析如何巧用内建QoS工具管理网络流量

    标题和描述中提到的核心知识点是使用Windows系统内置的QoS(Quality of Service)工具来管理网络流量,特别是在带宽有限的环境下,优化网络资源的分配,确保关键应用的流畅运行。QoS是一种网络管理机制,它允许网络...

    TC8-WMShare OPEN Alliance and TC8

    引用的原始文档包括了ARP、TCP/IP、ICMPv4、UDP、DHCPv4、TCP、SOME/IP Server等协议的标准,这些都是车载以太网系统中至关重要的通信协议。在CANoe TC8 Demo中,还展示了如何使用工具进行测试演示,以检查和验证...

    IMS题库.pdf

    3GPP R5版本的目标是提供IP实时多媒体业务,在原有的分组交换(PS)基础上增加了IP多媒体子系统(IMS),专注于控制层面。 **2. OMA组织角色** - 错误。OMA (Open Mobile Alliance) 主要关注移动设备和服务方面的...

Global site tag (gtag.js) - Google Analytics