-
1.1.1
GARP
结构和基本概念
(dot1d:12.3)
一个桥设备或者网络终端的
GARP
参与者包括一个
GARP Applicat
ion
组件,
一个与每端
口关联的
p>
GARP Information Declaration(GID)
< br>组件。
GARP
参与者存在于每
GARP
应用的每
个端口(
per
Port, per GARP Application
)
。
桥设备中同一应用的
GARP
参与者之间的信息传
播通过
GARP
Information
Propagation(GIP)
component
p>
。下图描述了一个两端口桥设备和终
端设备中
GARP
参与者组件:
图
1
:
GARP
体系结构
1.1.1.1
GID(dot1d:12.3.2)
一个
< br>GID
实例包括一个状态机集合,该集合定义了与拥有该
GID
实例组件的
GARP
参
与者当前所有属性值的注册和宣告状态。下图描述了这种结构:
图
2
:
p>
GID
体系结构
GID
的工作方式被定义如下:
a)
The Applicant
State Transition Table
;
b)
The Registrar
State Transition Table
;
c)
这些状态机表征每个与
GARP
参与者关联属性的当前宣告状态
(Ap
plicant state
m
achines)
和注册状态
(Registrar
state machines)
;
d)
GID
服务原语
1.1.1.1.1.
宣告
(Declarations)
两个服务原语被定义,为
GID
用户提供在指定端口上申请
p>
产生
(Join)
和撤回
(Leave)
属
性宣告的能
力:
GID_t(attribute_type,
attribute_value)
GID_t(attribute_type,attribute_value) <
/p>
GID
决定受到对应原语后的行为,该行为由该属性和事件在
p>
Applicant
State
Transition
表中定义决定。
GID
请求可以被
GARP
Application
组件(一个应用发起)和
GARP
Information
Propagatio
n
(或者是传播功能发起)功能发起。
1.1.1.1.2.
注册
(Registration)
两个原语被定义,用来通知
GID
应用者一个给定属性值已经被
注册
(Join)
或者注销
(Leav
e)
:
GID_tion(attr
ibute_type,attribute_value)
GID_iton(at
tribute_type,attribute_value)
GID
根据
Registrar
State
Transition
表决定对应的行为和状态变迁。
GID Indications
可以被
GARP
应用以及
GARP
信息传播
功能接收。
1.1.1.2
GIP(dot1d:12.3.3)
GARP
信息传播
(GIP)
功能
(
function)
对于所有
GARP
应用,工作在同一种方式下,他使
得注册在桥设备端口上的属性信息被传播到
Bridge LAN
上的其他
GARP
参与者。
GIP
工作
流程如下,针对给定的
GARP
应用以及
GIP
Context
(传播环境,如
GVRP
针
对
STP
拓扑,
GMRP
针对对应
V
LAN
)
以及被
GIP Contex
t
限制的
Forwarding
状态的
端口集
(比如
STP
拓扑结构限制的桥
设备中的
Forwarding
状态端口集)
< br>:
a)
任何在集合中特定端口上被
GIP
接收的
< br>GID_tion
作为
GID_t
传播到端口集
(
桥中被
GIP Co
ntext
限制的
Forwarding
端口的集合
)
中其他端口关联的
GI
D;
b)
任
何
在
集
合
中
特
定
端
口
p>
上
被
GIP
接
p>
收
到
GID_tion
作
为
GID_t
被传播到端口集中
其他端口关联的
GID(Port P,
say)
当且仅当除了
Port
P
外,在其他任何端口上没有该属性的注册。
由于集合(下文如不特殊指明,所有端口集皆指
GIP Con
text
约束的
Forwarding
状态端
口的集合)中端口的
Forwarding
状态可能是动态改变的,下面描述的
GIP
工作方式
用来监
测这样的变化:
c)
如果一个
Forwarding
状态端口被加入到集合中,并且该端口之前注册了一个属性,<
/p>
则对应该属性的
GID_ts
被传播到集
合中其他端口的
GID
实例;
d)
如果一个
Forwarding
状态端口从集合中删除,则对应该属性的
GID_ts
被传播到集中其他端口的
GID
实例。
1.1.1.3
GARP
信息传播环境
(dot1d:12.3.4)
GARP Information Propagation Context
GIP
环境标示符便于网管控制。
<
/p>
值为
0
的标示符被用作
< br>STP
限制的
GIP
环境,
p>
GARP
应用需要指明
GARP
参与者之间
的报文交互属于哪个
GIP
Context
。
1.1.2
GARP
要求
(dot1d:12.4)
仅列出重点:
f)
建立
/
撤回
/
传播属性注册信息的反应时间(
latency
)要小,并且随
Bri
dge
LAN
diameter
线性增长;
g)
当
GA
RP
参与者出故障时,能够自愈,重新收敛;
h)
对于单个包的丢失,能够自愈,重新收敛;
i)
要正常工作于:
1)
相似性的
Bridged LANs
2)
异类性的
Bridged LANs
j)
占用的带宽比例要小,并且与
Bridged
LAN
支持的总流量无关。
1.1.3
GARP
工作流程概述<
/p>
(dot1d:12.7)
本节给出一个非正式的
GARP
协议操作流程说明,定义性的描述须参阅
S
tate
Machine
Descriptions(do
t1d:12.8)
,
Procedures(dot1d:1
2.10)
,以及
Encoding
of
GARP
Protocol
Data
Units(dot1d:12.11)
。
1.1.3.1
基础概念
(dot1d:12.7.1)
简单的,分布式的多对多协议。不需要专门选举协议将问题转变为多对一的设计;
协议对于一组关联信息中单个信息的丢失,要具有弹性,但不需要较强的健壮性;
一个
GARP
参与
者
(an Applicant
,
请求
者
)
通过发送
Join
信息
(messages)
制造一个宣告;
如果一个请求者发现其他参与者发送了两个
Jo
in
信息,
则他不需要再发送
Join
信息;
一个请求者希望撤回一个宣告
,仅需发送一个
Leave
信息便可以忘记所有相关的注
册
(registration)
。协议不需
要确认注销已经发生,因为其他参与者将维护自己的注册
信息;
f)
错误注册
(比如丢包或者伪造)
可以被定期发送
LeaveAll
p>
信息的机制清除。
LeaveAll
信息宣
布所有注册短暂中止除非一个或者多个参与者为相关注册发布进一步的
Joins
为了防止
Leave
信息丢失,这将引起另一个参与者的登记员
(Registrar)
认为已经没有成
员,需要一个附加的机制。如果一个参与者收到
Leave
信息,并且没有后续的
Join
信息,
在其中止对应注册前,
他需发送一个进
一步的信息用来提示
rejoining
(
可能引起其他参与者
的响应
)
。<
/p>
a)
b)
c)
d)
e)
1.1.3.2
GARP
消息
(dot1d:12.7.2)
本文迄今为
止已经描述了三种
GARP
的基本消息类型:
< br>Join
,
Leave
,和
p>
LeaveAll
。然
而,仅仅使用这三种
消息将最终导致协议的复杂。
因此,
协议基于这样的设计原则,即协议参与者应该交互他们的当前状态,
而不是发送
指令。四个
Attribute-
specific
消息类型被使用:
a)
Empty
:
我不准备宣布这个属性值。我没有注册该属性值,但是我关心是否存在
希望宣布他的参
与者;
b)
JoinEmpty
:
我希望宣布这个属性值。我没有注册该属性值,但是我关心是否存在
希望宣布
他的参与者;
c)
JoinIn
:我希望宣布该属性值。我注册了该值,或者不关心是否存在其他
希望宣告
他的参与者
(I will behave as
if there are)
;
d)
Leave
:我已经注册了该属性值,但我现在正在进行注销。
e)
LeaveAll
:所有注册将短暂的被注销;如果任何参与者对某注册仍感兴趣,他们需
要<
/p>
rejoin
以维护注册。
理论上
Leave
< br>消息可以有
LeaveIn
和
L
eaveEmpty
;
然而,
状态机对
待这两种消息处理是
一致的。
1.1.3.3
申请者
(Applicant)
和登记员
(Registr
ar)
(dot1d:12.7.3)
每个
< br>GARP
参与者维护一个
Leave All
协议组件。同时为每个所关心的属性维护两个协
议组件:
< br>Applicant
和
Registrar
登记员的工作是记录网段上其他参与者宣布的属性注册。他不发送任何协议消息。
< br>
申请者的工作为下面两方面:
a)
保证该参与者的玄不被其他参与者的登记员注册了;
b)
保证在撤销一个宣布后
(leaves)
,其他参与者有机会
re-
declare(rejoin)
。
1.1.3.4
登记员行为
(dot1d:12.7.4)
< br>登记员拥有一个定时器,
leave
定时器,以及三种状
态:
a)
IN
:已注册;
b)
MT
:
(Empty)
网段上所有该属性值的宣布已经被撤销;
c)
LV
:我已经注册了该属性值,但是使用定时器观察。如果在超时前不能发现任何该
属性的宣告,则我将变为
MT
;
登记员收到消息后的反映如下:
d)
Join
消息,
Join
或者
JoinEmp
ty
,引起登记员变为
IN
;
e)
如果登记员为
IN
,则
Leave
< br>或者
LeaveAll
引起它变为
LV
并且启动
leave
定时器;<
/p>
f)
Emp
ty
消息对登记员没有任何效果。
登记员不发送任何消息,
他指影响申请者发送
< br>Join
消息的类型。
如果登记员状态为
IN
,
JoinIn
被发送,
否则,
JoinEmpty
被发送。
1.1.3.5
申请者行为
(dot1d:12.7.5)
< br>与简单的登记员行为不同,
下面介绍的是申请者的行为,
假设这样一个起点即他从未发
现和发送任何消息。
如果没有消息丢失,
则申请者可以发送
Join<
/p>
或者收到
JoinIn
,
并且所有登记员应该已经
注册了他的宣布。在假设一个消息丢失的情况下,它需
要发送两个
Joins
,或者收到两个
JoinIns
,或者发送一个
Join
并且受到一个
JoinIn(in
either
order)
。这可被记录在一个简单的
计数器
中:
my_membership_msgs = 0,
1, or 2
该计数器每当发送
Join
< br>或者收到
JoinIn
时加
1<
/p>
。如果计数器值为
0
或者
1
,则
Join
消息
被发送,并且定时器的值将被减
1
。
如果一个
JoinEmpty
< br>,
Empty
,
Leave
p>
或者
LeaveAll
消息被收到,则计数
器被复位为
0
。
当申请者离开组时,他发送一个
Leave
消息。
1.1.3.5.1.
渴望的
(Anxious)
申请者
(dot1d:1
2.7.5.2)
如果整体分析和
maximizing
implementation flexibility
为主要目标,
使用计数器和标志变
量来表达协议不是一种好的方式。下面给出对应计数器值的
状态变量名前缀:
a)
V
——
Very anxious
p>
——
my_join_msgs=0
;
p>
b)
A
——
Anxious
——
my_join_msgs=1
;
c)
Q
——
Quiet
——
my_join_ms
gs=2
;
1.1.3.5.2.
Member
和
Observers
(dot1d:
12.7.5.3)
在申请者状态机环境中,成员
(Memb
er)
是准备为特定属性值制造或者维护宣告的参与
者,或者参
与者还没有发送一个
Leave
消息将自己变成一个旁观者
p>
(Observer)
。旁观者跟踪
(tr
ack)
属性状态,但是不制造宣告。
1.1.3.5.3.
Active
和
Passive
Members
(dot1d:12.7.5.3)
主动和被
动成员的概念的引出是用来最小化消息的发送,
当一组成员同时对同一属性进
行加入和离开的宣告。正如一个成员不需要发送
Join
< br>就可以成为
Quite
,也就应该允许成员
可以不发送
Leave
就成为
Observer
。
所有
Obser
ver
都是被动的。
下面描述三个前缀,
用来区
分和表示状态机中的状态:
a) A, or Active member.
b)
P, or Passive member.
c) O, or
Observer.
1.1.3.5.4.
申请者状态表
(dot1d:12.7.5.6)
表
2
:申请
者状态表
1.1.3.6
Leave
All
协议组件
(dot1d:12.7.6)
负责启动垃圾信息收集
1.1.4
状态机描述
(dot1d:12.8)
1.1.4.1
申请者状态机
(dot1d:12.8.1)
1.1.4.2
登记员状态机
(dot1d:12.8.2)
-
-
-
-
-
-
-
-
-
上一篇:星期一上班的搞笑说说
下一篇:自动化安装手册