OLD | NEW |
1 /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ | 1 /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ |
2 /* | 2 /* |
3 * Copyright (c) 2011-2013 Centre Tecnologic de Telecomunicacions de Catalunya (
CTTC) | 3 * Copyright (c) 2011-2018 Centre Tecnologic de Telecomunicacions de Catalunya (
CTTC) |
4 * | 4 * |
5 * This program is free software; you can redistribute it and/or modify | 5 * This program is free software; you can redistribute it and/or modify |
6 * it under the terms of the GNU General Public License version 2 as | 6 * it under the terms of the GNU General Public License version 2 as |
7 * published by the Free Software Foundation; | 7 * published by the Free Software Foundation; |
8 * | 8 * |
9 * This program is distributed in the hope that it will be useful, | 9 * This program is distributed in the hope that it will be useful, |
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
12 * GNU General Public License for more details. | 12 * GNU General Public License for more details. |
13 * | 13 * |
(...skipping 15 matching lines...) Expand all Loading... |
29 #include <ns3/data-rate.h> | 29 #include <ns3/data-rate.h> |
30 #include <ns3/epc-tft.h> | 30 #include <ns3/epc-tft.h> |
31 #include <ns3/eps-bearer.h> | 31 #include <ns3/eps-bearer.h> |
32 #include <ns3/epc-helper.h> | 32 #include <ns3/epc-helper.h> |
33 | 33 |
34 namespace ns3 { | 34 namespace ns3 { |
35 | 35 |
36 class Node; | 36 class Node; |
37 class NetDevice; | 37 class NetDevice; |
38 class VirtualNetDevice; | 38 class VirtualNetDevice; |
39 class EpcSgwPgwApplication; | 39 class EpcSgwApplication; |
| 40 class EpcPgwApplication; |
| 41 class EpcMmeApplication; |
40 class EpcX2; | 42 class EpcX2; |
41 class EpcMme; | |
42 | 43 |
43 /** | 44 /** |
44 * \ingroup lte | 45 * \ingroup lte |
45 * \brief Create an EPC network with PointToPoint links | 46 * \brief Create an EPC network with PointToPoint links |
46 * | 47 * |
47 * This Helper will create an EPC network topology comprising of a | 48 * This Helper will create an EPC network topology comprising of |
48 * single node that implements both the SGW and PGW functionality, and | 49 * three nodes: SGW, PGW and MME. |
49 * an MME node. The S1-U, X2-U and X2-C interfaces are realized over | 50 * The S1-U, X2-U, X2-C, S5 and S11 interfaces are realized over |
50 * PointToPoint links.· | 51 * PointToPoint links.· |
51 */ | 52 */ |
52 class PointToPointEpcHelper : public EpcHelper | 53 class PointToPointEpcHelper : public EpcHelper |
53 { | 54 { |
54 public: | 55 public: |
55 ·· | 56 /** |
56 /** | |
57 * Constructor | 57 * Constructor |
58 */ | 58 */ |
59 PointToPointEpcHelper (); | 59 PointToPointEpcHelper (); |
60 | 60 |
61 /** | 61 /** |
62 * Destructor | 62 * Destructor |
63 */ | 63 */ |
64 virtual ~PointToPointEpcHelper (); | 64 virtual ~PointToPointEpcHelper (); |
65 ·· | 65 ·· |
66 // inherited from Object | 66 // inherited from Object |
67 /** | 67 /** |
68 * Register this type. | 68 * Register this type. |
69 * \return The object TypeId. | 69 * \return The object TypeId. |
70 */ | 70 */ |
71 static TypeId GetTypeId (void); | 71 static TypeId GetTypeId (void); |
72 TypeId GetInstanceTypeId () const; | 72 TypeId GetInstanceTypeId () const; |
73 virtual void DoDispose (); | 73 virtual void DoDispose (); |
(...skipping 15 matching lines...) Expand all Loading... |
89 /**· | 89 /**· |
90 * helper to assign IPv4 addresses to UE devices as well as to the TUN device
of the SGW/PGW | 90 * helper to assign IPv4 addresses to UE devices as well as to the TUN device
of the SGW/PGW |
91 */ | 91 */ |
92 Ipv4AddressHelper m_uePgwAddressHelper; | 92 Ipv4AddressHelper m_uePgwAddressHelper; |
93 /**· | 93 /**· |
94 * helper to assign IPv6 addresses to UE devices as well as to the TUN device
of the SGW/PGW | 94 * helper to assign IPv6 addresses to UE devices as well as to the TUN device
of the SGW/PGW |
95 */ | 95 */ |
96 Ipv6AddressHelper m_uePgwAddressHelper6; | 96 Ipv6AddressHelper m_uePgwAddressHelper6; |
97 ·· | 97 ·· |
98 /** | 98 /** |
99 * SGW-PGW network element | 99 * SGW network element |
100 */ | 100 */ |
101 Ptr<Node> m_sgwPgw; | 101 Ptr<Node> m_sgw; |
102 | 102 |
103 /** | 103 /** |
104 * SGW-PGW application | 104 * PGW network element |
105 */ | 105 */ |
106 Ptr<EpcSgwPgwApplication> m_sgwPgwApp; | 106 Ptr<Node> m_pgw; |
| 107 |
| 108 /** |
| 109 * MME network element |
| 110 */ |
| 111 Ptr<Node> m_mme; |
| 112 |
| 113 /** |
| 114 * SGW application |
| 115 */ |
| 116 Ptr<EpcSgwApplication> m_sgwApp; |
| 117 |
| 118 /** |
| 119 * PGW application |
| 120 */ |
| 121 Ptr<EpcPgwApplication> m_pgwApp; |
| 122 |
| 123 /** |
| 124 * MME application |
| 125 */ |
| 126 Ptr<EpcMmeApplication> m_mmeApp; |
107 | 127 |
108 /** | 128 /** |
109 * TUN device implementing tunneling of user data over GTP-U/UDP/IP | 129 * TUN device implementing tunneling of user data over GTP-U/UDP/IP |
110 */ | 130 */ |
111 Ptr<VirtualNetDevice> m_tunDevice; | 131 Ptr<VirtualNetDevice> m_tunDevice; |
112 | 132 |
113 /** | 133 /** |
114 * MME network element | |
115 */ | |
116 Ptr<EpcMme> m_mme; | |
117 | |
118 /** | |
119 * S1-U interfaces | 134 * S1-U interfaces |
120 */ | 135 */ |
121 | 136 |
122 /** | 137 /** |
123 * helper to assign addresses to S1-U NetDevices· | 138 * Helper to assign addresses to S1-U NetDevices· |
124 */ | 139 */ |
125 Ipv4AddressHelper m_s1uIpv4AddressHelper;· | 140 Ipv4AddressHelper m_s1uIpv4AddressHelper;· |
126 | 141 |
127 /** | 142 /** |
128 * The data rate to be used for the next S1-U link to be created | 143 * The data rate to be used for the next S1-U link to be created |
129 */ | 144 */ |
130 DataRate m_s1uLinkDataRate; | 145 DataRate m_s1uLinkDataRate; |
131 | 146 |
132 /** | 147 /** |
133 * The delay to be used for the next S1-U link to be created | 148 * The delay to be used for the next S1-U link to be created |
134 */ | 149 */ |
135 Time m_s1uLinkDelay; | 150 Time m_s1uLinkDelay; |
136 | 151 |
137 /** | 152 /** |
138 * The MTU of the next S1-U link to be created. Note that, | 153 * The MTU of the next S1-U link to be created. Note that, |
139 * because of the additional GTP/UDP/IP tunneling overhead, | 154 * because of the additional GTP/UDP/IP tunneling overhead, |
140 * you need a MTU larger than the end-to-end MTU that you | 155 * you need a MTU larger than the end-to-end MTU that you |
141 * want to support. | 156 * want to support. |
142 */ | 157 */ |
143 uint16_t m_s1uLinkMtu; | 158 uint16_t m_s1uLinkMtu; |
144 | 159 |
145 /** | 160 /** |
146 * UDP port where the GTP-U Socket is bound, fixed by the standard as 2152 | 161 * UDP port where the GTP-U Socket is bound, fixed by the standard as 2152 |
147 */ | 162 */ |
148 uint16_t m_gtpuUdpPort; | 163 uint16_t m_gtpuUdpPort; |
| 164 /** |
| 165 * Helper to assign addresses to S1-MME NetDevices |
| 166 */ |
| 167 Ipv4AddressHelper m_s1apIpv4AddressHelper; |
| 168 |
| 169 /** |
| 170 * Helper to assign addresses to S11 NetDevices |
| 171 */ |
| 172 Ipv4AddressHelper m_s11Ipv4AddressHelper; |
| 173 |
| 174 /** |
| 175 * The data rate to be used for the next S11 link to be created |
| 176 */ |
| 177 DataRate m_s11LinkDataRate; |
| 178 |
| 179 /** |
| 180 * The delay to be used for the next S11 link to be created |
| 181 */ |
| 182 Time m_s11LinkDelay; |
| 183 |
| 184 /** |
| 185 * The MTU of the next S11 link to be created |
| 186 */ |
| 187 uint16_t m_s11LinkMtu; |
| 188 |
| 189 /** |
| 190 * UDP port where the GTPv2-C Socket is bound, fixed by the standard as 2123 |
| 191 */ |
| 192 uint16_t m_gtpcUdpPort; |
| 193 |
| 194 /** |
| 195 * S5 interfaces |
| 196 */ |
| 197 |
| 198 /** |
| 199 * Helper to assign addresses to S5 NetDevices |
| 200 */ |
| 201 Ipv4AddressHelper m_s5Ipv4AddressHelper;· |
| 202 |
| 203 /** |
| 204 * The data rate to be used for the next S5 link to be created |
| 205 */ |
| 206 DataRate m_s5LinkDataRate; |
| 207 |
| 208 /** |
| 209 * The delay to be used for the next S5 link to be created |
| 210 */ |
| 211 Time m_s5LinkDelay; |
| 212 |
| 213 /** |
| 214 * The MTU of the next S5 link to be created |
| 215 */ |
| 216 uint16_t m_s5LinkMtu; |
149 | 217 |
150 /** | 218 /** |
151 * Map storing for each IMSI the corresponding eNB NetDevice | 219 * Map storing for each IMSI the corresponding eNB NetDevice |
152 */ | 220 */ |
153 std::map<uint64_t, Ptr<NetDevice> > m_imsiEnbDeviceMap; | 221 std::map<uint64_t, Ptr<NetDevice> > m_imsiEnbDeviceMap; |
154 | 222 |
155 /** | 223 /** |
156 * helper to assign addresses to X2 NetDevices | 224 * helper to assign addresses to X2 NetDevices |
157 */ | 225 */ |
158 Ipv4AddressHelper m_x2Ipv4AddressHelper; | 226 Ipv4AddressHelper m_x2Ipv4AddressHelper; |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
192 */ | 260 */ |
193 std::string m_s1uLinkPcapPrefix; | 261 std::string m_s1uLinkPcapPrefix; |
194 }; | 262 }; |
195 | 263 |
196 | 264 |
197 | 265 |
198 | 266 |
199 } // namespace ns3 | 267 } // namespace ns3 |
200 | 268 |
201 #endif // POINT_TO_POINT_EPC_HELPER_H | 269 #endif // POINT_TO_POINT_EPC_HELPER_H |
OLD | NEW |