GARP学习总结
来源:互联网 发布:淘宝订单处理的流程 编辑:程序博客网 时间:2024/06/01 10:41
GARP(Generic Attribute Registration Protocol)通用属性注册协议,802.1D中定义的用来在参与者(Participant)之间注册属性。GARP是一个通用的协议框架,本身并没有规定注册何种属性,我们可以利用GARP协议来注册某种具体的协议,也就是GARP的实例化。802.1D定义了一个实例,GMRP(Generic Muliticast Registration Protocol),用来注册组播属性,在802 LAN中建立组播树。802.1Q定义了另一个实例,GVRP(Generic Vlan Registration Protocol),用来注册vlan属性,将端口加入某个vlan中,也就是通过协议添加vlan端口成员。
GARP协议架构
GARP参与者是GARP协议通信和处理的主体,它是基于端口(Port)的,端点设备(end station)和交换机(bridge)的每一个端口都有一个参与者,参与者包括两个逻辑单元:应用单元(Applicant)和GID(GARP Information Declaration,GARP信息声明单元)。交换机的多个参与者(端口)之间通过GIP(GARP Information Propagation,GARP信息传播单元)连接和通信,端点设备由于只有一个端口,所以没有GIP。
应用单元处理GARP应用相关的功能,具体的有:
1)属性类型和属性值,以及他们的语法和具体编码。
GMRP定义了两种属性类型:Group MAC Address和Group Service Requirement,Group MAC Address的属性值就是48bit的组播地址
2)参与者通信的组播地址
GMRP参与者通信的目的mac地址为01-80-C2-00-00-20
GVRP参与者通信的目的mac地址为01-80-C2-00-00-21
3)GARP状态机的要求
应用单元处理的是应用的信息,处理属性相关的内容,GARP协议的处理和通信功能则主要有GID来实现,GID为了每个属性值的注册和声明的维护了一个工作状态机,状态机的状态和输入事件(event)决定了GARP的注册和声明行为,具体如下:
1)Applicant State Transition Table
2)Registrar State Transition Table
3)Applicant and Registrar state machines
4)处理服务原语(service primitive)
声明(Declaration)原语:
GID_Join.request (attribute_type, attribute_value)
GID_Leave.request (attribute_type, attribute_value)
Applicant state machine根据当前状态,动作,下一跳状态和Applicant State Transition Table的事件确定下一个状态和动作
GID接收GIP和应用单元的声明原语,产生属性声明数据帧从端口发送出去。
注册(Registration)原语:
GID_Join.indication (attribute_type, attribute_value)
GID_Leave.indication (attribute_type, attribute_value)
Registrar state machine根据当前状态,动作,下一跳状态和Registrar State Transition Table的事件确定下一个状态和动作:注册和注销(de-registration)
GID向GIP和应用单元的发出注册原语,应用单元将属性进行注册或注销。GIP连接的另一端GID则将注册或注销信息从端口发送出去,这样注册信息就在网络中传播
GIP
GIP向GIP发送注册原语,GIP则向另一端的GID产生声明原语。在规定的GIP背景(GIP context)下,如果端口状态为forwarding,如果为注册信息,则向端口发送GARP注册数据帧,如果是注销信息,而且发送注册原语的端口是唯一注册到这个属性值的端口则发送GARP注销GARP PDU,如果还有其它端口注册到了这个属性值,则不发送。例如如果端口1和2都加入到了某个组播组,即端口1和2有接收这个组播组的数据设备,那么端口1注销时,其它端口不发送注销数据帧。
GIP context
目前有两种GIP context:base spanning tree(STP或RSTP建立的转发树和端口状态)和multiple spanning tree(MSTP 建立的转发树和端口状态)
属性在网络中的传播过程
上图是GARP属性属性信息的传播过程,交换机和端点设备都可以产生属性声明GARP PDU,一般情况下是端点设备发起属性声明,如端点设备加入某个组播组或某个vlan。端点设备的GARP参与者的应用单元向GID发送声明原语,GID产生属性声明GARP PDU,由MAC层提供的服务将GARP PDU从端口发送出去。交换机端口接收到GARP PDU后,MAC检查GARP PDU的DMAC为GARP group address,则将GARP PDU交给端口的GID处理,GID向端口的应用单元产生注册原语,应用单元则将当前接收端口注册到属性注册表项中(只有接收GARP的端口才会注册到属性表中,其余的只将属性传播到其它的交换机和端点设备);GID同时向GIP产生注册原语,这条注册原语被GIP转成声明原语传递给其它端口的GID,在规定的GIP context下,如果端口状态为forwarding,GID则请求MAC服务,将声明GARP PDU从端口发送出去。如果是其他状态(如RSTP端口的状态为block和disable),则不发送。其它的交换机和端点设备接收到传播的GARP声明帧后进行同样的注册和传播处理,直到GARP属性信息传播到网络中所有的交换机和端点设备。
上图是其它设备向注册属性的设备发送数据时的数据传播路径,路径与注册的路径相同,只是数据流动的方向相反。如某个设备向组播组发送数据,由注册到这个组播组的端点设备接收
GARP PDU数据结构
GARP PDU链路层采用802.2定义的LLC封装
LLC封装:
1)PDU的目的mac地址如下表所示(目前定义了2个,表中其它的暂时保留):
支持GARP的设备接收到目的MAC地址为下表中的地址的帧,则不进行转发。不支持GARP的设备则向其它所有的端口广播。
2)SMAC为发送端口的mac地址
3)源和目的LLC地址和STP的LLC地址一样,为0x42
mac层根据目的mac和协议ID(Protocol Identifier)区分GARP PDU和BPDU。GARP PDU的协议ID=1
GARP PDU :
BNF形式定义的GARP数据结构
GARP PDU ::= Protocol ID, Message {, Message}, End Mark
Protocol ID SHORT ::= 1
Message ::= Attribute Type, Attribute List
Attribute Type BYTE ::= Defined by the specific GARP Application
Attribute List ::= Attribute {,Attribute}, End Mark
Attribute ::= Ordinary Attribute | LeaveAll Attribute
Ordinary Attribute ::= Attribute Length, Attribute Event, Attribute Value
LeaveAll Attribute ::= Attribute Length, LeaveAll Event
Attribute Length BYTE ::= 2-255
Attribute Event BYTE ::= JoinEmpty | JoinIn | LeaveEmpty | LeaveIn | Empty
LeaveAll Event BYTE ::= LeaveAll
Attribute Value ::= Defined by the specific GARP Application
End Mark ::= 0x00 | End of PDU
LeaveAll ::= 0
JoinEmpty ::= 1
JoinIn ::= 2
LeaveEmpty ::= 3
LeaveIn ::= 4
Empty ::= 5
- GARP学习总结
- GARP Overview
- TCP/IP之 GARP 和GMRP
- 华为VLAN中的GARP和GVRP
- 学习总结
- 学习总结
- 学习总结
- 学习总结
- 学习总结
- 学习总结
- 学习总结
- 学习总结
- 学习总结
- 学习总结
- 学习总结
- 学习总结
- 学习总结
- 学习总结
- Nginx 负载均衡 配置详解
- HDU-4545魔法串
- asp.net 网页中播放mp4文件,IIS中设置MIME类型
- 十个免费的Web负载/压力测试工具
- UVA1364 Knights of the Round Table
- GARP学习总结
- poj3009Curling 2.0(简单dfs)
- 20+个创意十足的斜线网站设计
- lua
- Linux操作系统分析-lab2-进程的创建与可执行程序的加载
- 内核空间 访问 用户空间 flip_open
- 8086/8088微处理器的系统结构
- test
- jsonp 跨域