嵌入式软件开发技术手册六网络.docx
- 文档编号:26902656
- 上传时间:2023-06-23
- 格式:DOCX
- 页数:22
- 大小:2.03MB
嵌入式软件开发技术手册六网络.docx
《嵌入式软件开发技术手册六网络.docx》由会员分享,可在线阅读,更多相关《嵌入式软件开发技术手册六网络.docx(22页珍藏版)》请在冰豆网上搜索。
嵌入式软件开发技术手册六网络
目录
1.LLDP协议
2.
1.LLDP协议
1.1LLDP协议概述
目前,网络设备的种类日益繁多且各自的配置错综复杂,为了使不同厂商的设备能够在网络中相互发现并交互各自的系统及配置信息,需要有一个标准的信息交流平台。
LLDP(LinkLayerDiscoveryProtocol,链路层发现协议)就是在这样的背景下产生的。
LLDP是在802.1ab中定义的二层协议,它提供了一种标准的链路层发现方式,可以将本端设备的的主要能力、管理地址、设备标识、接口标识等信息组织成不同的TLV(Type/Length/Value,类型/长度/值),并封装在LLDPDU(LinkLayerDiscoveryProtocolDataUnit,链路层发现协议数据单元)中发布给与自己直连的邻居,邻居收到这些信息后将其以标准MIB(ManagementInformationBase,管理信息库)的形式保存起来,以供网络管理系统查询及判断链路的通信状况。
LLDP不会配置也不会控制网络元素或流量,它只是报告第二层的配置。
1.2LLDP基本概念
1.2.1LLDP报文格式
封装有LLDPDU的报文称为LLDP报文,其封装格式有两种:
EthernetII和SNAP(SubnetworkAccessProtocol,子网访问协议)。
(1)EthernetII格式封装的LLDP报文
图1
如图1是以EthernetII格式封装的LLDP报文,其中各字段的含义如下:
●DestinationMACaddress:
目的MAC地址,为固定的组播MAC地址0x0180-C200-000E。
●SourceMACaddress:
源MAC地址,为端口MAC地址或设备桥MAC地址(如有端口地址则用端口MAC地址,否则用设备桥MAC地址)。
●Type:
报文类型,为0x88CC。
●Data:
数据,为LLDPDU。
●FCS:
帧检验序列。
(2)SNAP格式封装的LLDP报文
图2
如图2是以SNAP格式封装的LLDP报文,其中各字段的含义如下:
●DestinationMACaddress:
目的MAC地址,为固定的组播MAC地址0x0180-C200-000E。
●SourceMACaddress:
源MAC地址,为端口MAC地址或设备桥MAC地址(如果有端口地址则用端口MAC地址,否则用设备桥MAC地址)。
●Type:
报文类型,为0xAAAA-0300-0000-88CC。
●Data:
数据,为LLDPDU。
●FCS:
帧检验序列。
注:
Destinationaddress:
GroupMACaddressesusedbyLLDP
1.2.2LLDPDU
LLDPDU就是封装在LLDP报文数据部分的数据单元。
在组成LLDPDU之前,设备先将本地信息封装成TLV格式,再由若干个TLV组合成一个LLDPDU封装在LLDP报文的数据部分进行传送。
图3LLDPDU
如图3所示,每个LLDPDU是由ChasisIDTLV、PortIDTLV、TTLTLV起始,EndTLV截止的多个TLV构成,中间可以有零或多个可选的其它TLV。
LLDPDU从功能上主要分为两类:
Normal(常规)LLDPDUs及Shutdown(停播)LLDPDUs。
NormalLLDPDUs中TTL的值为txTTL;ShutdownLLDPDUs中TTL的值为0,并且只包括了上述四个必须的TLV
1.2.3TLV
TLV是组成LLDPDU的单元,每个TLV都代表一个信息。
LLDP可以封装的TLV包括基本TLV、802.1组织定义TLV、802.3组织定义TLV以及其他组织定义的TLV。
基本TLV是网络设备管理基础的一组TLV,802.1组织定义TLV、802.3组织定义TLV和及其他组织定义的TLV则是由标准组织或其他机构定义的TLV,用于增强对网络设备的管理,可根据实际需要选择是否在LLDPDU中发送。
TLV的基本格式:
TLV的类型:
1.3LLDP协议运行机制
LLDPAgent主要功能:
●维护LLDP本地系统MIB的当前信息
●提取LLDP本地系统MIB信息并格式化生成LLDPDU,在常规周期或者本地系统条件或状态发生变化时将其发送给远端LLDPAgent(s)
●识别并处理接收到的LLDPDU帧
●维护LLDP远端系统MIB的当前信息
●在一个或多个LDDP本地或远端系统MIB的值或状态发生变化时,及时通过方法somethingChangedLocal()及somethingChangedRemote()通知PTOPOMIBmanager及其他附加的MIBmanagers
1.3.1LLDPDU发送机制
如下的事件将会导致LLDPDU传送的发生:
●txTTR到期将会导致常规的LLDPDU的发送,这将确保远端接收系统中的相关信息不会因为TTL到期而过期。
●如果一个“新邻居”被识别,将会启用快速发送机制,在一个快速周期内(txFast)连续发送指定数量(txFastInit,默认值为4)的LLDPDU,以确保“新邻居”能被快速更新。
如果远端系统MIB因为过载(tooManyNeighbors)不能容纳新邻居的信息时,为了避免过多的PDU传输,上述快速传输的行为将会被抑制。
●如果LLDP本地系统MIB的某些条件发生变化,为了尽可能快的将本地信息变化通知到每个临近系统,LLDPDU将会被立即发送。
发送定时器状态机使用一种简单的基于信用(credit-based)的传送策略,允许一定数量(txCredit默认值为txCreditMax)的LLDPDUs快速传送,因此在本地状态快速变化的情况下,也允许信息的快速更新。
一旦信用值被耗尽,将恢复到常规的传送状态。
1.3.2LLDPDU接收机制
LLDP帧的接收由3个阶段构成:
帧的识别、有效性检查及LLDP远端系统MIB更新。
帧的识别在LLDP/LSAP(链路服务访问点)上进行,通过对目的地址及网络协议类型的值决定当前帧是否是发往本LLDPAgent的LLDP帧。
随后会对收到的LLDPDU及其携带的TLV进行有效性检查,以确定信息是否被正确构造并有效组织。
通过有效性检查后,将邻居信息保存(添加或更新)到本地设备的远端系统MIB,并根据LLDPDU携带的TTL(TimeToLive)值设置邻居信息在本地设备的老化时间,如果接收到的LLDPDU中的TTL值等于零,将立刻老化掉该邻居信息。
1.4状态机
LLDP的操作主要通过三种状态机实现:
发送状态机(TransmitStateMachine)
接收状态机(ReceiveStateMachine)
发送定时器状态机(TransmitTimerStateMachine)
1.4.1定时器或变量介绍
1.4.1.1定时器
rxInfoTTL–LLDP远端系统MIB中对象的存活期定时器
tooManyNeighborsTimer–LLDP邻居信息不能存放在LLDP远端系统MIB时间定时器
txTTR–LLDPAgent发送LLDPDU的周期,如果txFast=0,其初始值为msgTxInterval;如果txFast>0,其初始值为msgFastTx
txShutdownWhile–LLDP重新初始化(re-initialization)发生的周期
1.4.1.2系统变量
BEGIN–系统初始化进程所控制的bool变量,其值为TRUE,则所有状态机会持续的执行其初始化状态
1.4.1.3端口变量
portEnabled–该变量由系统外因素控制,其值反映了MAC服务对端口所支持的操作状态,如果可操作,其值为TRUE,否则,为FALSE
1.4.1.4LLDPAgent变量
adminStatus–LLDPAgent的使能状态:
enabledRxTx,表示可以收发LLDPDUs;enabledTxOnly,表示只能发送LLDPDUs;enabledRxOnly,表示只能接收LLDPDUs;disabled,不能收发
badFrame–所收到的LLDPDU不能通过有效性检查而被丢弃
localChange–本Agent的LLDP本地系统MIB的某值发生改变,则本变量会被方法somethingChangedLocal()设置为TRUE,而通过发送定时器状态机的操作置为FALSE
MACaddress–本Agent相关的MAC地址
msgFastTx–快速传送周期的时间间隔,范围1-3600s,默认值为1s
msgTxInterval–常规传送周期的时间间隔,范围1-3600s,默认值为30s
msgTxHold–作为msgTxInterval的倍增器,用于确定txTTL的值,范围1-100,默认值为4
newNeighbor–当接收到一个新邻居发送来的信息时,该变量会被rxProcessFrame()方法设置为TRUE,而被发送定时器状态机设置为FALSE
rcvFrame–TRUE时表示一个LLDP帧已被识别,并做好被接收状态机处理的准备
reinitDelay–adminStatus状态为disabled后重新初始化(re-initialization)的延迟时间,默认初始值应设为2s
rxChanges–接收到的LLDPDU信息不同于LLDP远端系统MIB中对应的内容
rxInfoAge–当LLDP远端系统MIB中对象的rxInfoTTL过期,该变量置为TRUE
rxTTL–接收到的TLV的存活期
remoteChanges–LLDP远端系统MIB中的某对象信息是否发生变化或者删除,其值等于(rxInfoAgeOR(rxChanges&&(rxTTL!
=0)))
tooManyNeighbors–LLDP远端系统MIB没有足够的空间存储信息
txCredit–某时刻可以传送的连续LLDPUs数量,txAddCredit()方法可以增加该变量的值,最大限限定为txCreditMax,当一个LLDPDU被发送,则该变量会减小
txCreditMax–txCredit的最大值,范围1-10,默认值为5
txFast–快速传送周期中用来计数的变量
txFastInit–txFast的初始化值,范围1-8,默认值为4
txNow–该变量备用来告诉发送状态机需要一个传送,其在发送定时器状态机中被设置为TRUE,而在传送被初始化后被发送状态机设置为FALSE
txTick–系统时钟每隔1s将其设置为TRUE,而发送定时器状态机将其置为FALSE
txTTL–LLDPDU存活期,=min(65535,(msgTxInterval*msgTxHold)+1),如果adminStatus==‘disabled’或者portEnabled==FALSE则txTTL应置为0
1.4.1.5Agent统计计数器
statsAgeoutsTotal,statsFramesDiscardedTotal,statsFramesInErrorsTotal,statsFramesInTotal,statsFramesOutTotal,statsTLVsDiscardedTotal,statsTLVsUnrecognizedTotal,lldpduLengthErrors
1.4.2状态机方法
4.2.1dec(variable-name)–变量减1
4.2.2mibConstrInfoLLDPDU()–构造LLDPDU
4.2.3mibConstrShutdownLLDPDU()–构造ShutdownLLDPDU
4.2.4mibDeleteObjects()–如果接收到的LLDPDU中的一个rxTTL==0或者rxInfoTTL过期,则该方法会根据一个给定的MSAPID删除LLDP远端系统MIB的相关信息
4.2.5mibUpdateObjects()–根据接收到的LLDPDU信息更新LLDP远端系统MIB中的相关信息
4.2.6rxInitializeLLDP()–初始化LLDP接收模块
4.2.7rxProcessFrame()–对LLDPDU做有效性检查;决定是否更新MIB;如果没有足够空间,则决定丢弃接收到的LLDPDU还是删除现有的邻居信息;设置tooManyNeighborsTimer定时器及tooManyNeighbors变量
4.2.8somethingChangedLocal()–LLDP远端系统MIB中某MSAPID相关的信息更新完成后,调用该方法通知其管理者
4.2.9txAddCredit()–增加txCredit变量,直至txCreditMax
4.2.10txFrame()–传送mibConstrInfoLLDPDU()或mibConstrShutdownLLDPDU()构造LLDPDU,传送完成后会增加statsFramesOutTotal
4.2.11txInitializeLLDP()–初始化LLDP发送模块
1.4.3发送状态机工作流程
1.4.4接收状态机工作流程
1.4.5发送定时器状态机工作流程
2.ARP协议
ARP的功能是在32bit的IP地址和采用不同网络技术的硬件地址(MAC)之间提供动态映射。
2.1ARP缓存超时
2.2ARP的改进
3.IP路由
4.RIP路由协议
4.1定时器
4.1.1更新计时器
4.1.2无效计时器
4.1.3垃圾收集计时器
4.1.4抑制计时器
如果在抑制时间超时后,同一台邻居路由器仍然通告这个有较大条数的路由,路由器则接受该路由新的度量值。
4.2消息格式
RIPv2
5.DHCP协议
DHCP可以说是BOOTP的增强版本,它分为两个部分:
一个是服务器端,而另一个是客户端。
所有的IP网路设定资料都由DHCP服务器集中管理,并负责处理客户端的DHCP要求,而客户端则会使用从服务器分配下来的IP环境资料。
DHCP共有八种报文,分别为DHCPDISCOVER,DHCPOFFER,DHCPREQUEST,DHCPACK,DHCPNAK,DHCPRELEASE,DHCPDECLINE,DHCPINFORM。
报文类型分析如下:
(1)DHCPDISCOVER报文:
DHCPCLIENT请求地址时,并不知道DHCPSERVER的位置,因此CLIENT会在本地网络内以广播的方式发送请求报文,这个报文称为DISCOVER,目的是发现网络中的DHCPSERVER,因为所有收到DISCOVER报文的SERVER都会发送回应报文,CLIENT据此可以知道网络中存在的SERVER的位置。
(2)DHCPOFFER报文:
DHCPSERVER收到DISCOVER报文后,就会在所配置的地址池中查找一个合适的IP地址,加上相应的租约期限和其他配置信息(如GATEWAY,DNSSERVER等),构造一个OFFER报文,发送给用户,告知用户本SERVER可以为其提供IP地址的分配。
(3)DHCPREQUEST报文:
DHCPCLIENT可能会收到很多OFFER,所以必须在这些回应中选择一个,也就是选择一个SERVER作为自己的目标SERVER。
CLIENT通常选择第一个回应OFFER报文的SERVER作为自己的目标SERVER,并回应一个REQUEST报文,通知SERVER它已经被选中。
(4)DHCPACK报文:
DHCPSERVER收到REQUEST报文后,根据REQUEST报文中携带的用户MAC来查找有没有相应的租约记录,如果有则发送ACK报文作为回应,通知用户可以使用分配的IP地址。
(5)DHCPNAK报文:
如果DHCPSERVER收到REQUEST报文后,没有发现有相应的租约记录或者由于某些原因无法正常分配IP地址,则发送NAK报文作为回应,通知用户无法分配合适IP地址。
(6)DHCPRELEASE报文:
当用户不再需要使用分配的IP地址时,就会主动向DHCPSERVER发送DHCPRELEASE报文,告知SERVER用户不再需要分配的IP地址,SERVER会释放被绑定的租约。
(7)DHCPDECLINE报文:
DHCPCLIENT收到SERVER回应的ACK报文后,通过地址冲突检测发现SERVER分配的地址冲突或由于其它原因导致不能使用,则发送DHCPDECLINE报文,通知SERVER所分配的IP地址不可用。
(8)DHCPINFORM报文:
DHCPCLIENT如果需要从SERVER端获取更为详细的配置信息,则发送DHCPINFORM报文向SERVER进行请求,SERVER收到该报文后,将根据租约进行查找,找到相应的配置信息后,发送DHCPACK报文回应CLIENT。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 软件 开发 技术 手册 网络