LDP协议笔记文档格式.docx
《LDP协议笔记文档格式.docx》由会员分享,可在线阅读,更多相关《LDP协议笔记文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
groupmulticastaddress
扩展发现:
TargetedHello,目的地址:
specificaddress
创建和维护LDP会话
创建:
传输创建和会话初始化。
传输创建
1,标签空间交换还没有建立会话。
它试图两者建立TCP连接。
两者通过TransportAddress选项TLV向对方通告一个地址。
2,两者比较A1,A2来决定谁是主动方,谁是被动方。
A1,A2不在同一个地址族,会话不可建立。
地址用无符号整型来比较A1,A2。
大的为主动方。
3,如果LSR1为主动,它试图创建TCP连接。
如果LSR1为被动,它等待LDP TCP连接的建立。
会话初始化
通过LDP初始化消息协商会话参数。
协商参数包括:
LDP协议版本,标签发布方式,计时器值,
VPI/VCI,标签控制ATM,LDCI标签帧的延时。
成功的协商就是完成了会话的创建。
LSR1端的角度。
连接创建完,LSR1以主动的角色通过发送Initializationmsg给LSR2初始化。
如果LSR1是被动,等待LSR2初始化参数的协商。
LSR1扮被动角色。
1,LSR1接收Initializationmsg,它试图使一个标识符(PDU携带)和一个hello邻居相匹配。
2,如果匹配,该邻接指定本地会话标签空间。
然后LSR1检查参数是否可接受,
如果可接受,LSR1用初始化消息提出期望被使用的参数和一个KeepAlive消息来示意LSR2参数的接收。
如果不接受,LSR1通过发送ErrorNotification回应,关闭TCP连接。
3,如果不匹配,发送ErrorNotification,关闭TCP连接。
4,如果LSR1接受一个KeepAlive响应它的初始化消息。
该会话isoperational。
5,如果LSR1接受ErrorNotification,LSR1关闭会话。
LSR2扮主动角色。
1,如果LSR1收到ErrorNotification,LSR1关闭TCP连接。
2,如果LSR1收到一个初始化消息,它检查会话参数是否可接受,
如果可接受,回应KeepAlive消息;
如果不可接受,LSR1发送ErrorNotification,关闭TCP连接。
3,如果LSR1接收一个KeepAlive消息,LSR2接受被推荐的会话参数。
4,LSR1收到初始化消息和KeepAlive消息,会话isoperational。
PDULDP头部
0
1
2
3
01234567890123456789012345678901
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Version
PDULength
|
LDPIdentifier
+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
TLV编码:
2字节:
14bit指定类型,2bit指定行为;
长度
一切出现在LDPPDU中的都可以以TLV格式编码。
WildcardFECElement
仅仅被用于LabelWithdrawandLabelReleasemsg
FEC
|0|0|FEC(0x0100)
Length
FECElement1
~
~
FECElementn
PrefixFECElementvalueencoding:
01234567890123456789012345678901
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Prefix
(2)
AddressFamily
PreLen
Prefix
FEC的处理:
地址族不支持或FEC元素类型不能被解码。
发送ErrorNotification
LabelTLV
标签TLVs:
编码标签的。
GenericLabelTLV
:
以太网和PPP
ATMLabelTLV
ATM
FrameRelayLabelTLV
帧中继链路
通常第一个:
|0|0|GenericLabel(0x0200)
Label
encodelabels:
label值为20位。
略
AddressListTLV(inAddressandAddressWithdrawmsg.)
HopCountTLV
PathVectorTLV
StatusTLV(Notificationmessages)
|U|F|Status(0x0300)
StatusCode
MessageID
MessageType
其中StatusCode为:
|E|F|
StatusData
LDP消息
|U|
MessageType
MessageLength
+
MandatoryParameters
OptionalParameters
Notification消息的处理过程。
1,LSR遇到请求通告给对等体咨询和error的这样条件,给对等体发送一个包含有关那个条件的TLV的消息
如果这个条件是一个fatal致命,StatusCode就会指明。
当发送完一个Notification消息之后,
LSR应该终止对话,关闭TCP连接,撤销所有会话状态,包括绑定的FCE。
2,LSR收到Notification,则关闭。
。
3,当LSR收到一个shutdownmsg应该传输一个Shutdown消息,然后关闭传输连接。
1,MalformedPDUorMessage
收到的PDU畸形如果:
接收者不知道LDPID或和自己无关,这就是一个fatalerror。
标记为BadLDPIdentifierStatusCode.
接收者不支持该协议版本或会话建立时版本未能协商,这就是一个fatalerror。
BadProtocolVersionStatusCode.
PDU的长度太长或太短,这就是一个fatalerror。
BadPDULengthStatusCode.
LDP消息畸形如果:
MessageTypeis<
0x8000
UnknownMessageTypeStatusCode.
MessageTypeis>
=0x8000
silentlydiscarded
TheMessageLengthistoolarge
BadMessageLengthStatusCode.
TheMessageLengthistoosmall
missingoneormoreMandatoryParameters.
MissingMessageParametersStatusCode.
2,UnknownorMalformedTLV
收到的LDP消息中的TLV畸形如果:
TheTLVLengthistoolarge
BadTLVLengthStatusCode.
theTLVtypeis<
UnknownTLVStatusCode.
theTLVtypeis>
silentlydropped.
TheTLVValueismalformed
MalformedTLVValueStatusCode.(接收者不能够解码该TLV值)
3,SessionKeepAliveTimerExpiration
KeepAliveTimerExpiredStatusCode.
4,UnilateralSessionShutdown
发完Notification,LSR会立即终止该会话
ShutdownStatusCode.
5,InitializationMessageEvents
初始化协商可能会失败,如果初始化消息中的会话参数不接受。
StatusCode依赖Sections"
InitializationMessage"
.
6,EventsResultingfromOtherMessages
InternalErrorStatusCode
Hello消息
|0|
Hello(0x0100)
CommonHelloParametersTLV
CommonHelloParametersTLV
|0|0|CommonHelloParms(0x0400)|
HoldTime
|T|R|Reserved
T
0:
LinkHello
1:
TargetedHello.
R
无请求
接收者周期性发送TargetedHellos给该Hello的源
扩展发现中
1:
检查是否它被配置发送TargetHellos给源。
忽略该请求。
Reserved
=0
OptionalParameter
Type
IPv4TransportAddress
0x0401
4
Configuration
0x0402
SequenceNumber
IPv6TransportAddress
0x0403
16
Hello消息的处理
推荐Hello传输间隔至多为holdtime的1/3。
LSR处理接受到的LDPHello:
1,检查Hello是否可接受的,决定的标准是:
是否独立实现。
2,如