报文ADSL接入及共享技术的实现(二)

adsl共享  时间:2021-04-21  阅读:()

ADSL接入及共享技术的实现二

目录

1 SAR模块收到报文产生中断进入接收中断处理例程

2

3 MUX层询问该报文的协议类型

4 SAR驱动层将reserved中的类型返回给MUX层

5 MUX层根据协议类型将报文提交给相应的Service

6 Service解封装后

1协议栈通过MUX层发送报文

2 MUX层将报文传给预先绑定的Service

3 Service对数据进行封装后

4 MUX层将数据发送到SAR模块相应的PVC接口

5 SAR模块相应的PVC接口发送该报文

6. 3 RFC1483协议报文处理

7增加NAT支持

7. 1 NAT模块主处理流程

7. 2 NAT模块初始化

1) nat_session结构记录每一连接的连接信息

2 nat_interface接口结构

7. 3 NAT模块主要算法

1 session结构数组的初始化

2 新建session

3 查找session

4 删除session

8 设计总结

正文

EncapLength、 EncapData针对RFC1483bridged、

RFC1483Routed、 ATMARP等协议的规定进行相应初始化及数据填充供底层驱动在封装、解封装时直接作为依据。

PCookie是muxBi nd底层设备驱动后返回的设备索引号 以便系统卸载网络服务子层时可解除该绑定。

Ifp是网络服务子层Attach至协议栈时返回的子网接口索引号以便系统卸载该Service时可解除绑定。

Service协议数据收发流程

Service正确绑定至协议栈后就可以接收SAR END驱动层传入的该协议类型数据报文并对其处理根据处理的结果选择转发或丢弃对于协议栈下发的报文也可以方便地进行相应协议封装再交给E ND驱动发送。其收发流程框图如图61所示。

图6-1 Service收发流程示意图

接收流程(虚线箭头所示)

1 S AR模块收到报文产生中断进入接收中断处理例程

2调用END_RCV_RTN_CALL将报文返回给协议栈(re s erved中存放协议类型)

3 MUX层询问该报文的协议类型

4 SAR驱动层将reserved中的类型返回给MUX层

5 MUX层根据协议类型将报文提交给相应的Serv ice。

6 Service解封装后调用do_protocol_with_type将报文提交给协议栈

发送流程实线箭头所示

1协议栈通过MU X层发送报文

2 MUX层将报文传给预先绑定的Service

3 Service对数据进行封装后 return False将数据返回MUX层

4 MUX层将数据发送到SAR模块相应的PVC接口

5 SAR模块相应的PVC接口发送该报文。

6.3 RFC1483协议报文处理

由于RF C 1483数据报文的封装格式比较简单我们将该类型报文的封装、解封装例程放在EN D驱动中实现 以提高系统对该类型报文的处理效率。

RFC1483报文封装格式

RFC 1483标准描述了ATM网络上承载无连接网络互连业务即路由和桥接的协议数据单元的两种不同方法。第一种方法允许在一条ATM虚电路上复用多个协议这是需要在所传送的PDU前加上I EEE802.2逻辑链路控制信头 以此来表示所传递的PDU的协议这种方法称为LLC封装;第二种方法是一个高层协议由一条ATM虚电路来承载这种方法成为基于VC的复用。

. 1 LLC封装

在LLC封装中路由协议通过在PDU前加一个IEEE802.2 LLC信头来进行标识 IEEE802. 2 LLC信头后接IEEE802. 1a子网络附属点(SNAP)信头。在LLC类型1的操作中 LLC信头包括3个字节如下

在用于路由协议的LLC封装中 LLC信头编码有两种格式:一种为0 xFE-FE-03 用于说明后接的是I SO路由协议的PDU另一种为0 xAA-AA-03用于说明后接的是非I S O路由协议。控制字段编码为0 x03用于说明后接的是无编号信息的命令PDU。

对于ISO路由协议PDU其AAL5 CPCS-PDU净荷字段的格式为

对于非ISO路由PDU 如IP协议 其封装格式为

(其中如果是IP报文的话 Ethernet Type值为0x0800)

对于桥接协议报文在LLC封装的SNAP信头中应标识出桥接媒体的类型。与非ISO路由协议的封装一样 LLC信头编码值0xAA-AA-

03表示存在S NAP信头 S NAP信头中的OU I值是802. 1组织编码0x00-80-C2桥接媒体的实际类型由2字节的PID来标识。此外P ID还标识是否在封装的桥接PDU中保留源帧校验序列FCS 。 以最常见的以太网/802.3为例用于封装802. 3 PDU的AAL5 CPCS-PDU净荷帧格式如下

. 1基于VC的复用

在基于VC的复用中不同的协议报文可以通过不同的VC通道传递 因此在AAL5的CPCP-PDU净荷上就不再包含明确标识所承载协议的信息了使得处理开销最小。

路由协议的PDU在AAL5 CPCS-PDU的净荷中直接承载。

桥接协议的PDU和LLC封装格式描述相同但仅包含PID字段后的内容。其AAL5 CPCS-PDU净荷字段格式如下所示

RFC1483报文的封装处理

上层协议在调用muxSend之前会先调用endAddressForm函数进行二层数据封装我们在这个函数里实现IP报文到Ethernet类型报文的数据封装。 Sar End S end函数里会调用ATMS RV_Enc ap进行Ethernet报文到AAL5相应协议类型的封装。

RFC1483报文解封装处理

在中断接收处理函数里会调用ATMSRV_De c ap解除ATM协议封装 同时将二层协议类型存于mBlkPktHdr.reserved中 由endPacketDataGet通知MUX。

7增加NAT支持

目前已经有很多for vxworks的第三方NAT协议产品 而且windriver公司自己也推出了Tornado开发平台下的NAT组件 但价位实在太高。 由于该协议本身实现的难度不大而且有l i nux或BSD的相关模块可供参考和移植所以我们决定自己实现这个协议。难点主要在于NAT收发处理函数的绑定 NAT端口地址转换ha sh表的建立及查找算法的实现。

7. 1 NAT模块主处理流程

主要包括LAN口和WAN口的I P地址转换。如图7-1所示。

图71 NAT主处理流程示意图

7.2 NAT模块初始化

NAT数据结构初始化

1) nat_session结构记录每一连接的连接信息struct nat_session

UCHAR ip_proto; 协议类型

struct in_addr src_addr dst_addr new_addr;源地址 目标地址转换后地址

/* Port numbe are in host UCHAR order: *union

/* For TCP _and_ UDP: *struct { UINT16 src_port dst_port new_port; } tcp;端口

/* For ICMP: *struct { UINT16 src_ident new_ident; } icmp;identification

} U;enum nat_session_state state; 连接状态uigned long timestamp; 时间戳

NAT_ALG *al g; 应用层网关函数指针int alg_use; 标志是否需要应用层网关

NAT_SESSION *parent; ftp中指向控制连接session的指针

NAT_SESSION *next_hash; Hash表下一表项

2 nat_interface接口结构struct nat_interface

NAT_INTERFACE *n ext; 指向下一个接口结构struct in_addr ipaddress; 接口地址转换地址

/* Pointer to table of session structures and hash table:

*

NAT_SESSION *sessio; 指向session结构表

NAT_SESSION **hashtabl e; 指向hash结构表int next_session;

/* Pointer to table of fragment structures *

NAT_FRAGMENT *fr agm ent s; 指向fr agm ent结构表

免费注册宝塔面板账户赠送价值3188礼包适合购买抵扣折扣

对于一般的用户来说,我们使用宝塔面板免费版本功能还是足够的,如果我们有需要付费插件和专业版的功能,且需要的插件比较多,实际上且长期使用的话,还是购买付费专业版或者企业版本划算一些。昨天也有在文章中分享年中促销活动。如今我们是否会发现,我们在安装宝塔面板后是必须强制我们登录账户的,否则一直有弹出登录界面,我们还是注册一个账户比较好。反正免费注册宝塔账户还有代金券赠送。 新注册宝塔账户送代金券我们注册...

数脉科技8月促销,新客减400港币,BGP、CN2+BGP、阿里云线路低至350元

数脉科技(shuhost)8月促销:香港独立服务器,自营BGP、CN2+BGP、阿里云线路,新客立减400港币/月,老用户按照优惠码减免!香港服务器带宽可选10Mbps、30Mbps、50Mbps、100Mbps带宽,支持中文本Windows、Linux等系统。官方网站:https://www.shuhost.com* 更大带宽可在选购时选择同样享受优惠。* 目前仅提供HKBGP、阿里云产品,香港...

野草云提供适合入门建站香港云服务器 年付138元起 3M带宽 2GB内存

野草云服务商在前面的文章中也有多次提到,算是一个国内的小众服务商。促销活动也不是很多,比较专注个人云服务用户业务,之前和站长聊到不少网友选择他们家是用来做网站的。这不看到商家有提供香港云服务器的优惠促销,可选CN2、BGP线路、支持Linux与windows系统,支持故障自动迁移,使用NVMe优化的Ceph集群存储,比较适合建站用户选择使用,最低年付138元 。野草云(原野草主机),公司成立于20...

adsl共享为你推荐
photoshop技术什么是ps技术ipad连不上wifi苹果ipad突然连不上网了,是怎么回事?网络是好的,手机能上网。win10445端口win的22端口和23端口作用分别是什么 ?google中国地图强大的谷歌地图,为什么中国不用起来win7关闭135端口win7下怎么关135和8909端口googleadsense我申请Google AdSense要怎样才能通过Google AdSense呀?迅雷雷鸟啊啊,想下载《看门狗》可13GB的大小,我每秒才450KB,我该怎么样才能大幅度地免费提高电脑下载appletv越狱有用apple TV的吗微信5.0是哪一年的安卓什么时候能更新微信5.0版本?阻抗fusioncharts
郑州服务器租用 如何查询ip地址 工信部域名备案系统 美国主机评论 国外空间服务商 512au 爱奇艺会员免费试用 超级服务器 空间登录首页 游戏服务器出租 photobucket qq金券 阿里云邮箱登陆地址 免备案cdn加速 hostease 蓝队云 htaccess restart blaze vi命令 更多