## Originator_ID ![[Pasted image 20230917212707.png]] - ORIGINATOR_ID 是RR产生的可选非传递(Optional non-transitive)属性(属性长4字节) > **可选非传递**:如果BGP路由器可以识别该属性,会遵守该属性进行选路并传递给对等体;如果BGP 路由器不支持该属性,不识别的BGP进程可以忽略包含这个属性的更新消息,并且不传递给其他的BGP邻居 - 当一条路由第一次被RR反射的时候,RR将Originator_ID属性加入这条路由,标识这条路由的发起路由器 - 只能是iBGP邻居收到的路由 - 如果一条路由中已经存在了Originator_ID属性,则RR将不会创建新的Originator_ID - 值为始发路由器的router ID,之后的设备不能修改(参考上图) - 始发路由可以是直接在该路由器上生成的路由或者从eBGP邻居接收的路由 - 选路:如果路由携带Originator_ID属性,选路过程中将比较Originator_ID的大小(不再比较Router ID),并优选Originator_ID最小的路由 - 防环:当其他BGP Speaker接收到这条路由的时候,将比较收到的Originator_ID和本地的Router ID,如果两个ID相同,BGP Speaker会忽略掉这条路由,不做处理 ```text Local router is the Originator; Discard update rcv UPDATE about 172.16.0.0/16 ·· DENIED due to: ORIGINATOR is us; ``` ## Cluster_List ![[Pasted image 20230917220317.png]] - CLUSTER_LIST 是RR产生的可选非传递(Optional non-transitive)属性,是CLUSTER_ID的集合 - Cluster_List由路由反射器产生,它由一系列的Cluster_ID组成,描述了一条路由所经过的反射器路径,这和描述路由经过的AS路径的AS_Path属性有相似之处 - 当路由反射器(RR)反射路由时,必须将本地CLUSTER_ID添加到CLUSTER_LIST的开头。如果CLUSTER_LIST为空,则必须创建一个新的CLUSTER_LIST。RR本地引入的路由,不会添加Cluster_ID属性 - 当RR在它的客户机之间或客户机与非客户机之间反射路由时,RR会把本地Cluster_ID添加到Cluster_List的前面。如果Cluster_List为空,RR就创建一个。 - 选路:BGP优选Cluster_List最短的路由(Cluster_List中的Cluster_ID个数最少) - 防环:当RR接收到一条更新路由时,RR会检查Cluster_List。如果Cluster_List中已经有本地Cluster_ID,丢弃该路由;如果没有本地Cluster_ID,将其加入Cluster_List,然后反射该更新路由。 ```text Route Reflector cluster loop;Received cluster-id 192.168.1.1 rev UPDATE w/ attr: nexthop 192.168.1.6, origin i, localpref 100,metric 0, originator 192.168.1.6, clusterlist 192.168.1.3 192.168.1.2 0.0.0.0, path, community,extended community rov UPDATE about 172.16.0.0/16 -- DENIED due to: CLUSTERLIST contains our own cluster ID; ``` originator_id和cluster_list的区别是什么呢,如下图: ![[Pasted image 20230918161636.png]] ## 参考资料 1. [rfc4456: BGP Route Reflection](https://www.rfc-editor.org/rfc/rfc4456) 2. [华为产品手册: V800R022C00SPC200](https://support.huawei.com/hedex/hdx.do?docid=DOC1100990239) 3. [《BGP Design and Implementation》](https://learning.oreilly.com/library/view/bgp-design-and/9781587058646/) 4.