其实之前写“从香港机房引入google/bitbucket路由”的时候,对community value的了解还并不深入,对Juniper default BGP export/import policy的理解也不是很深入。我需要再整理一下对它们的理解。
这里有一个很好的case,
http://www.juniper.net/documentation/en_US/junos15.1/topics/example/bgp-communities.html
这里写了community value在帮助更改local preference时的应用,不过好像在结尾verify的时候,有个地方把R2 R4写错了,但是不耽误看。
今天思考的问题首先涉及到community value的传递性,和这个问题在我的环境里取决于default BGP export/import policy的问题。因为之前在香港IDC,我并没有考虑的很深,在default BGP export/import policy这块,以至于,我对于BGP路由以及其community value从hkg1-wan2 到 hkg1-wan1是怎么传过去的并不十分清楚,今天有必要弄清楚。
拓扑是这样的
|hkg1-wan1-------------------hgk1-wan2|| ---------------------| PACNET |
| AS 6623 || <---ebgp----> | AS 10026|
wan1 和 wan2 之间相互neighbor的时候,并没有在结尾添加任何default-reject, 也就是说,依照Juniper 默认的BGP readvertise策略,凡是wan2 从Pacnet那里学来的BGP路由,都应该readvertise 给wan1,那么问题来了,这个时候,如果我wan2本地针对某条路由(比如github的路由)add 了community value,那么这个value会不会随着一起readvertise,我目前认为是会的。我的结论也是会的,为了验证我的assertion我在wan2上标记了Facebook的路由,并且add了一个community value,
在不更改任何wan1配置的情况下!
wan1上show route www.facebook.com detail
[email protected]> show route www.facebook.com detail inet.0: 581816 destinations, 581963 routes (581806 active, 10 holddown, 0 hidden) 69.171.224.0/20 (1 entry, 1 announced) *BGP Preference: 170/-101 Next hop type: Indirect Address: 0xea8c51c Next-hop reference count: 1744150 Source: 10.25.255.102 Next hop type: Router, Next hop index: 607 Next hop: xxx.xxx.xxx.xxx via ae0.0, selected Session Id: 0x1b Protocol next hop: 10.25.255.102 Indirect next hop: 294c0ec 1048575 INH Session ID: 0x1c State: <Active Int Ext> Local AS: 6623 Peer AS: 6623 Age: 12:04 Metric2: 10 Validation State: unverified Task: BGP_6623.10.25.255.102+179 Announcement bits (3): 0-KRT 5-Resolve tree 4 6-RT AS path: 10026 32934 I AS path: Recorded Communities: 6623:1000 6623:6011 10026:1230 10026:32344 10026:40101 Accepted Localpref: 100 Router ID: 10.25.255.102
可以看到,wan1已经知道这个路由的community value是多少了,因为wan2 默认向wan1 重发布wan2 学到的所有BGP 路由,而Juniper又是默认send-community 的(send-community是思科命令,需要手动打),所以这个community value就被随着路由的重发布而传到了wan1。那么接下来wan1要做的就是,在wan1本地写一个community XXX members 6623:6011, XXX这个名字可以随便起,因为是本地概念,只要6623:6011这个值和上面标红的那个地方一致即可,一致之后,这个本地的名字就有了意义,就可以被当做其他用处的匹配的依据(set from community XXX, then accept),这个其他的用处就有“再次发布给大陆”,或者改一改local preference值什么的。
晚安,我爱这个世界。