【摘要】航空全双工交换式以太网络(AFDX)是在以太网的基础上建立起来的,由于linux操作系统强大的网络功能和稳定的系统,从而提出一种在linux操作系统下面实现AFDX端系统通信端口的方法,端口在端系统驱动中通过加载配置,创建端口、端口发送/接收3个步骤实现,经过应用程序测试验证了其正确性和可靠性。

【关键词】AFDX端系统通信端口端口配置端口配置表linux操作系统

数据通信技术是航空电子系统实现综合化、模块化的关健技术。其中,AFDX作为近年来最先进的用于航空电子系统的通用通信链路,首次将网络化技术成功地引入到了航空电子系统中。AFDX端系统是AFDX网络组成部分,作为航电子系统与AFDX分组交换机连接的接口,每个航电子系统的端系统保证了航电系统之间数据交换的安全和可靠性。[1]AFDX通信端口作为端系统的一部分,对于AFDX网络消息的传递有着重要的作用,因此本设计以AFDX协议标准为依据,针对AFDX端系统板卡的AFDX协议栈在板上实现的特点,详细讨论了通信端口的通信机制以及一种实现通信端口的方法。

一、AFDX端系统端口概述

AFDX端系统按照层次划分,可以分为4层,包括:媒体访问控制(MAC)层;网络层;传输层;应用层;这4层的功能及关系如图1所示。

其中MAC层、网络层和传输层均在AFDX端系统板卡实现,应用层则由端系统驱动来实现。本文只给出了AFDX通信端口的实现,以下提到的端口均指通信端口。端口在应用层实现,每个端口都有自己的属性。端口在一个端系统中由惟一的端口号标识,端口范围为l024~65635,端口的角色要么是发送端口,要么是接收端口,不能两者兼顾。端口是端系统提供给应用程序的接口,应用程序和端系统板卡通过端口来传递数据。这些特种端口是普通的TCP/IP[2]协议栈所没有的,它是端系统在UDP协议的上层实现的服务。

二、端口通信机制

2.1通信端口类型

根据ARINC 653规范《航空电子应用软件标准接口》[3],端系统提供两种类型的通信端口(communicationport):采样端口(sampling port)和队列端口(queuing port),每种通信端口都采用UDP(无连接)数据报服务。

如图2所示,本图中将在处理程序中读取接收到的UDP数据报,然后将收到的数据报存入一个消息队列,而应用程序从该队列中取出下一个数据报进行处理。

三、端口通信的实现

3.1端口实现的结构体

为了满足端口的特性和实现端口的创建和使用,驱动中定义了两个重要结构体:端口配置和端口配置表。端口配置用于描述每一个端口的属性,包括以下配置信息:端口号、端口模式、端口方向、最大消息长度、最大消息数目、端口刷新率、端口所在分区名称、源UDP端口、目的UDP端口、目的IP、VL号、子VL号、分段标志。端口配置表是根据端口配置生成的,用于存放所有端口的配置信息。它是端口通信实现的一个关键,有关端口的操作都要通过它来完成。在端口的创建和用端口发送/接收数据时用到。端口配置表按端口号升序排列。图4给出了端口配置表的具体组成部分。

3.2端口实现的步骤

端口的实现分为以下3个步骤:加载配置、创建端口、端口发送/接收。

(1)加载配置

由于AFDX网络是确定型网络,使用哪些端口和VL来通信以及发送和接收路径都是在通信之前配置好的,所以在应用程序通信之前,首先要加载端口和VL的配置信息,根据配置信息生成端口配置表和板卡配置表并将板卡配置表拷贝到端系统板卡。

(2)创建端口

在加载配置完成后,要使用端口通信前必须先创建端口。创建端口是根据端口配置表动态申请一块端口缓冲区和数据长度数组。端口缓冲区用于存放消息,大小为最大消息长度与最大消息数的积。数据长度数组用于存放每个消息的实际长度,数组大小为最大消息数。

(3)端口发送/接收

创建端口之后,应用程序就可以通过端口来发送和接收数据了。发送时驱动将用户数据拷贝到端口缓冲区,然后通过端系统板卡将数据发送出去。接收时板卡将数据放到端口缓冲区,驱动再将数据从端口缓冲区拷贝到用户端。

3.3端口实现过程

加载配置函数load_config()的参数为AFDX终端系统配置信息、VL配置信息、端口配置信息,根据这些信息生成端口配置表。端口配置表在逻辑上分为发送和接收,分别将发送端口和接收端口的配置信息填人发送和接收配置表。

四、结论

基于linux实现的AFDX采用动态分配,对于不同的配置任务动态生成不同的配置,使用灵活方便。该交换网络,经分析和测试,证明其可以为航空通信系统提供更大更稳定的带宽,提高系统的通信性能,还有利于航空子系统的升级和维护。这对航空电子通信系统网络的设计具有一定的参考意义。目前本方法只是针对基于linux实现的AFDX通信端口,下一步要进行SAP端口的扩展,并进一步优化端口通信过程,以便达到更高的实时性。

参考文献

[1]赵国斌.航空电子全双工交换式以太网分析.中国制造业信息化,2011,40(21): 61-63

[2] IEEE Standard 802.3. 2000 Edition. 2000

[3]祝永卫,刘俊千. AFDX总线实验平台的设计与实现.中国现代教育装备,2009(17):54-56

linux 端口通信,AFDX端系统通信端口在linux下的实现相关推荐

  1. java socket 端口_Java Socket通信如何摆平自身端口问题

    Java Socket通信在使用的时候有不少的问题,在端口编程上来说是一个十分重要的.下面我们就看看Java Socket通信如何才能更好的使用相关的代码.希望大家有所帮助. 事实上网络编程简单的理解 ...

  2. java 8009_tomcat大神求教:8080,8009,8443,8005都是什么端口,apache与tomcat通信是靠8009端口...

    展开全部 远程停服务抄端口32313133353236313431303231363533e59b9ee7ad9431333433633436百 其中度8080为知HTTP端口,8443为HTTPS端 ...

  3. linux 查看开放的端口_如何在 Linux 中查看正在使用的端口

    在对网络连接或特定于应用程序的问题进行故障排除时,首先要检查的是应该在系统上实际使用哪些端口以及哪个应用程序正在侦听特定端口.本文会介绍如何使用 netstat , ss 和 lsof 命令找出哪些服 ...

  4. linux 打开端口1935,CentOS服务器开放端口

    拿到服务器之后接着之前的通信步骤进行,却发现怎么也连接不上.最后发现是因为服务器端的端口5000没有开放.下面记录一下开放端口的过程. 使用命令 netstat -anp 查看端口开放情况.如果显示命 ...

  5. Linux常用端口查询命令及常见端口和端口分类

    常见端口 应用或协议 默认端口号 备注 http 80 https 443 SOCKS代理协议服务器 1080 Telnet(远程登录)协议 23 TFTP(Trivial File Transfer ...

  6. linux端口命令是什么意思,cmd和linux的查看端口命令是什么?

    Linux系统的端口命令 Linux系统和Windows系统有很大的不同,不仅仅是它本身的操作界面和操作方式,系统的运行机制也不一样.因此我们在使用Linux系统的时候可以使用netstat命令来进行 ...

  7. Linux测试主机之间连通性和端口是否开放的方法

    文章目录 测试主机之间的连通性 测试端口是否开放(curl) 测试端口是否开放(wget) 测试端口是否开放(ssh) 下面每一种测试方式都给出了成功通信的截图,如果与截图不相符可以根据你控制台的报错 ...

  8. linux关闭cups服务 关闭631端口 关闭avahi-daemon服务

    linux系统中打印机使用631端口,进行通信,对于没有打印机的小伙伴关闭这个端口是很有必要的,减少攻击的可能性.这个服务依赖其他服务,所以要一起关闭,防止这个服务被其他服务唤醒. avahi-dae ...

  9. 【Linux】网络编程三:TCP通信和UDP通信介绍及代码编写

    参考连接:https://www.nowcoder.com/study/live/504/2/16. [Linux]网络编程一:网络结构模式.MAC/IP/端口.网络模型.协议及网络通信过程简单介绍 ...

最新文章

  1. 利用do文件方式进行modelsim仿真
  2. 【SpringBoot】 启动时,修改默认配置文件名称
  3. mysql hibernate id generator_Hibernate映射文件id的generator配置方法
  4. BZOJ 3362 Navigation Nightmare 带权并查集
  5. One-Error多标签分类_深度学习:如何在多标签分类问题中考虑标签间的相关性?
  6. Nginx+Mongodb 文件存储方案
  7. BOM——window对象
  8. GARFIELD@03-23-2005
  9. win10电脑磁盘占用百分百,电脑优化
  10. 【安卓】2.修改app名、图标、主题风格(保姆级图文+附示例+api例程)
  11. 安卓眼球追踪_研究者开发AI眼球追踪系统 智能手机都能用
  12. 股票学习-量柱和k线-第四天
  13. android 方向传感器应用
  14. C# 串口接收的优化处理
  15. 双路cpu比单路强多少_别傻了!双核和双路服务器根本不一样
  16. 服务器端与客户端之间进行数据传输与交换的格式(xml与JSON)
  17. ​​如何搭建自己的魔兽世界服务器
  18. java同时访问多个接口
  19. 小陈java学习笔记0817
  20. 设置QTextEdit行间距

热门文章

  1. mac配置anaconda环境
  2. Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
  3. java毕业设计消防应急管理系统源码+lw文档+mybatis+系统+mysql数据库+调试
  4. 4月13面试网络工程师实习岗位的感想
  5. 前端线上问题如何调试
  6. 哪个牌子蓝牙耳机通话质量好?通话质量比较好的蓝牙耳机推荐
  7. vue鼠标滚轮滚动上下页,点击下页,并开始轮播
  8. VUE CSS流动边框特效(一)
  9. http,socks5,socks4代理的区别
  10. Operating System lab1(操作系统课程设计实验1)