{"id":385,"date":"2018-07-19T11:29:47","date_gmt":"2018-07-19T02:29:47","guid":{"rendered":"http:\/\/www.fatware.jp\/?page_id=385"},"modified":"2018-07-19T11:29:47","modified_gmt":"2018-07-19T02:29:47","slug":"%e3%82%bd%e3%83%bc%e3%82%b9%e8%a7%a3%e6%9e%90%ef%bc%9aue%e9%80%81%e4%bf%a1%e7%b5%8c%e8%b7%af","status":"publish","type":"page","link":"https:\/\/www.fatware.jp\/?page_id=385","title":{"rendered":"\u30bd\u30fc\u30b9\u89e3\u6790\uff1aUE\u9001\u4fe1\u7d4c\u8def"},"content":{"rendered":"<p>IPv4\u306e\u307f\u9001\u4fe1\u53ef\u80fd<\/p>\n<pre class=\"wiki-code wiki-lang\"><cite>lte-ue-net-device.cc<\/cite><code class=\"lang-C++:lte-ue-net-device.cc\"><span class=\"hljs-keyword\">bool<\/span>\r\nLteUeNetDevice::Send (Ptr&lt;Packet&gt; packet, <span class=\"hljs-keyword\">const<\/span> Address&amp; dest, <span class=\"hljs-keyword\">uint16_t<\/span> protocolNumber)\r\n{\r\n  NS_LOG_FUNCTION (<span class=\"hljs-keyword\">this<\/span> &lt;&lt; dest &lt;&lt; protocolNumber);\r\n  <span class=\"hljs-keyword\">if<\/span> (protocolNumber != Ipv4L3Protocol::PROT_NUMBER)\r\n    {\r\n      NS_LOG_INFO(<span class=\"hljs-string\">\"unsupported protocol \"<\/span> &lt;&lt; protocolNumber &lt;&lt; <span class=\"hljs-string\">\", only IPv4 is supported\"<\/span>);\r\n      <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-literal\">true<\/span>;\r\n    }\r\n  <span class=\"hljs-keyword\">return<\/span> m_nas-&gt;Send (packet);\r\n}\r\n<\/code><\/pre>\n<p>UE-NAS\u304cActive\u3067\u3042\u308b\u3053\u3068\u3002Classify\u306eID\u30c1\u30a7\u30c3\u30af\u304c\u3042\u308b<\/p>\n<pre class=\"wiki-code wiki-lang\"><cite>epc-ue-nas.cc<\/cite><code class=\"lang-C++:epc-ue-nas.cc\"><span class=\"hljs-keyword\">bool<\/span>\r\n\r\nEpcUeNas::Send (Ptr&lt;Packet&gt; packet)\r\n{\r\n  NS_LOG_FUNCTION (<span class=\"hljs-keyword\">this<\/span> &lt;&lt; packet);\r\n\r\n  <span class=\"hljs-keyword\">switch<\/span> (m_state)\r\n    {\r\n    <span class=\"hljs-keyword\">case<\/span> ACTIVE:\r\n      {\r\n        <span class=\"hljs-keyword\">uint32_t<\/span> id = m_tftClassifier.Classify (packet, EpcTft::UPLINK);\r\n        NS_ASSERT ((id &amp; <span class=\"hljs-number\">0xFFFFFF00<\/span>) == <span class=\"hljs-number\">0<\/span>);\r\n        <span class=\"hljs-keyword\">uint8_t<\/span> bid = (<span class=\"hljs-keyword\">uint8_t<\/span>) (id &amp; <span class=\"hljs-number\">0x000000FF<\/span>);\r\n        <span class=\"hljs-keyword\">if<\/span> (bid == <span class=\"hljs-number\">0<\/span>)\r\n          {\r\n            <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-literal\">false<\/span>;\r\n          }\r\n        <span class=\"hljs-keyword\">else<\/span>\r\n          {\r\n            m_asSapProvider-&gt;SendData (packet, bid);\r\n\r\n            <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-literal\">true<\/span>;\r\n          }\r\n      }\r\n      <span class=\"hljs-keyword\">break<\/span>;\r\n\r\n    <span class=\"hljs-keyword\">default<\/span>:\r\n      NS_LOG_WARN (<span class=\"hljs-keyword\">this<\/span> &lt;&lt; <span class=\"hljs-string\">\" NAS OFF, discarding packet\"<\/span>);\r\n      <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-literal\">false<\/span>;\r\n      <span class=\"hljs-keyword\">break<\/span>;\r\n    }\r\n}\r\n<\/code><\/pre>\n<p>drbdid\u306e\u30c1\u30a7\u30c3\u30af\u304c\u3042\u308b\u3002<\/p>\n<pre class=\"wiki-code wiki-lang\"><cite>lte-ue-rrc.cc<\/cite><code class=\"lang-C++:lte-ue-rrc.cc\"><span class=\"hljs-keyword\">void<\/span>\r\nLteUeRrc::DoSendData (Ptr&lt;Packet&gt; packet, <span class=\"hljs-keyword\">uint8_t<\/span> bid)\r\n{\r\n  NS_LOG_FUNCTION (<span class=\"hljs-keyword\">this<\/span> &lt;&lt; packet);\r\n\r\n  <span class=\"hljs-keyword\">uint8_t<\/span> drbid = Bid2Drbid (bid);\r\n\r\n  <span class=\"hljs-keyword\">if<\/span> (drbid != <span class=\"hljs-number\">0<\/span>)\r\n    {\r\n  <span class=\"hljs-built_in\">std<\/span>::<span class=\"hljs-built_in\">map<\/span>&lt;<span class=\"hljs-keyword\">uint8_t<\/span>, Ptr&lt;LteDataRadioBearerInfo&gt; &gt;::iterator it =   m_drbMap.find (drbid);\r\n  NS_ASSERT_MSG (it != m_drbMap.end (), <span class=\"hljs-string\">\"could not find bearer with drbid == \"<\/span> &lt;&lt; drbid);\r\n\r\n  LtePdcpSapProvider::TransmitPdcpSduParameters params;\r\n  params.pdcpSdu = packet;\r\n  params.rnti = m_rnti;\r\n  params.lcid = it-&gt;second-&gt;m_logicalChannelIdentity;\r\n\r\n  NS_LOG_LOGIC (<span class=\"hljs-keyword\">this<\/span> &lt;&lt; <span class=\"hljs-string\">\" RNTI=\"<\/span> &lt;&lt; m_rnti &lt;&lt; <span class=\"hljs-string\">\" sending packet \"<\/span> &lt;&lt; packet\r\n                     &lt;&lt; <span class=\"hljs-string\">\" on DRBID \"<\/span> &lt;&lt; (<span class=\"hljs-keyword\">uint32_t<\/span>) drbid\r\n                     &lt;&lt; <span class=\"hljs-string\">\" (LCID \"<\/span> &lt;&lt; (<span class=\"hljs-keyword\">uint32_t<\/span>) params.lcid &lt;&lt; <span class=\"hljs-string\">\")\"<\/span>\r\n                     &lt;&lt; <span class=\"hljs-string\">\" (\"<\/span> &lt;&lt; packet-&gt;GetSize () &lt;&lt; <span class=\"hljs-string\">\" bytes)\"<\/span>);\r\n  it-&gt;second-&gt;m_pdcp-&gt;GetLtePdcpSapProvider ()-&gt;TransmitPdcpSdu (params);\r\n    }\r\n}\r\n<\/code><\/pre>\n<pre class=\"wiki-code wiki-lang\"><cite>lte-ue-pdcp.cc<\/cite><code class=\"lang-C++:lte-ue-pdcp.cc\">void\r\nLtePdcp::DoTransmitPdcpSdu (Ptr&lt;Packet&gt; p)\r\n{\r\n  NS_LOG_FUNCTION (this &lt;&lt; m_rnti &lt;&lt; (uint32_t) m_lcid &lt;&lt; p-&gt;GetSize ());\r\n\r\n  LtePdcpHeader pdcpHeader;\r\n  pdcpHeader.SetSequenceNumber (m_txSequenceNumber);\r\n\r\n  m_txSequenceNumber++;\r\n  if (m_txSequenceNumber &gt; m_maxPdcpSn)\r\n    {\r\n      m_txSequenceNumber = 0;\r\n    }\r\n\r\n  pdcpHeader.SetDcBit (LtePdcpHeader::DATA_PDU);\r\n\r\n  NS_LOG_LOGIC (\"PDCP header: \" &lt;&lt; pdcpHeader);\r\n  p-&gt;AddHeader (pdcpHeader);\r\n\r\n  \/\/ Sender timestamp\r\n  PdcpTag pdcpTag (Simulator::Now ());\r\n  p-&gt;AddPacketTag (pdcpTag);\r\n  m_txPdu (m_rnti, m_lcid, p-&gt;GetSize ());\r\n\r\n  LteRlcSapProvider::TransmitPdcpPduParameters params;\r\n  params.rnti = m_rnti;\r\n  params.lcid = m_lcid;\r\n  params.pdcpPdu = p;\r\n\r\n  m_rlcSapProvider-&gt;TransmitPdcpPdu (params);\r\n}\r\n<\/code><\/pre>\n<p>\u30c1\u30a7\u30c3\u30af\u7121\u3057<br \/>\nRadio Link Control<\/p>\n<pre class=\"wiki-code wiki-lang\"><cite>lte-rlc.cc<\/cite><code class=\"lang-C++:lte-rlc.cc\">void\r\n\r\nLteRlcSm::DoNotifyTxOpportunity (uint32_t bytes, uint8_t layer, uint8_t harqId)\r\n{\r\n  NS_LOG_FUNCTION (this &lt;&lt; bytes);\r\n  LteMacSapProvider::TransmitPduParameters params;\r\n  params.pdu = Create&lt;Packet&gt; (bytes);\r\n  params.rnti = m_rnti;\r\n  params.lcid = m_lcid;\r\n  params.layer = layer;\r\n  params.harqProcessId = harqId;\r\n\r\n  \/\/ RLC Performance evaluation\r\n  RlcTag tag (Simulator::Now());\r\n  params.pdu-&gt;AddPacketTag (tag);\r\n  NS_LOG_LOGIC (\" RNTI=\" &lt;&lt; m_rnti\r\n                &lt;&lt; \" LCID=\" &lt;&lt; (uint32_t) m_lcid\r\n                &lt;&lt; \" size=\" &lt;&lt; bytes);\r\n  m_txPdu(m_rnti, m_lcid, bytes);\r\n\r\n  m_macSapProvider-&gt;TransmitPdu (params);\r\n  ReportBufferStatus ();\r\n}\r\n<\/code><\/pre>\n<p>RNTI\u78ba\u8a8d<br \/>\nm_uePhySapProvider\u306b\u306f\u3001\u30dd\u30a4\u30f3\u30bf\u6e21\u3057\u3067lte-ue-phy\u306e\u30e1\u30f3\u30d0\u304c\u5165\u308b\u3002<\/p>\n<pre class=\"wiki-code wiki-lang\"><cite>lte-ue-mac.cc<\/cite><code class=\"lang-C++:lte-ue-mac.cc\"><span class=\"hljs-keyword\">void<\/span>\r\n\r\nLteUeMac::DoTransmitPdu (LteMacSapProvider::TransmitPduParameters params)\r\n{\r\n  NS_LOG_FUNCTION (<span class=\"hljs-keyword\">this<\/span>);\r\n  NS_ASSERT_MSG (m_rnti == params.rnti, <span class=\"hljs-string\">\"RNTI mismatch between RLC and MAC\"<\/span>);\r\n  <span class=\"hljs-function\">LteRadioBearerTag <span class=\"hljs-title\">tag<\/span> <span class=\"hljs-params\">(params.rnti, params.lcid, <span class=\"hljs-number\">0<\/span> <span class=\"hljs-comment\">\/* UE works in SISO mode*\/<\/span>)<\/span><\/span>;\r\n  params.pdu-&gt;AddPacketTag (tag);\r\n  <span class=\"hljs-comment\">\/\/ store pdu in HARQ buffer<\/span>\r\n  m_miUlHarqProcessesPacket.at (m_harqProcessId)-&gt;AddPacket (params.pdu);\r\n  m_miUlHarqProcessesPacketTimer.at (m_harqProcessId) = HARQ_PERIOD;\r\n  m_uePhySapProvider-&gt;SendMacPdu (params.pdu);\r\n}\r\n<\/code><\/pre>\n<p>\u30e9\u30c3\u30d1\u30fc\u306e\u307f<\/p>\n<pre class=\"wiki-code wiki-lang\"><cite>lte-ue-phy.cc<\/cite><code class=\"lang-C++:lte-ue-phy.cc\"><span class=\"hljs-keyword\">void<\/span>\r\n\r\nLteUePhy::DoSendMacPdu (Ptr&lt;Packet&gt; p)\r\n{\r\n  NS_LOG_FUNCTION (<span class=\"hljs-keyword\">this<\/span>);\r\n\r\n  SetMacPdu (p);\r\n}\r\n<\/code><\/pre>\n<p>packetBurst\u306b\u5165\u308b<\/p>\n<pre class=\"wiki-code wiki-lang\"><cite>lte-phy.cc<\/cite><code class=\"lang-C++:lte-phy.cc\"><span class=\"hljs-keyword\">void<\/span>\r\n\r\nLtePhy::SetMacPdu (Ptr&lt;Packet&gt; p)\r\n{\r\n  m_packetBurstQueue.at (m_packetBurstQueue.size () - <span class=\"hljs-number\">1<\/span>)-&gt;AddPacket (p);\r\n\r\n}<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>IPv4\u306e\u307f\u9001\u4fe1\u53ef\u80fd lte-ue-net-device.ccbool LteU <a href=\"https:\/\/www.fatware.jp\/?page_id=385\" class=\"read-more\">\u7d9a\u304d\u3092\u8aad\u3080<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":377,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-385","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.fatware.jp\/index.php?rest_route=\/wp\/v2\/pages\/385","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fatware.jp\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.fatware.jp\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.fatware.jp\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fatware.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=385"}],"version-history":[{"count":1,"href":"https:\/\/www.fatware.jp\/index.php?rest_route=\/wp\/v2\/pages\/385\/revisions"}],"predecessor-version":[{"id":386,"href":"https:\/\/www.fatware.jp\/index.php?rest_route=\/wp\/v2\/pages\/385\/revisions\/386"}],"up":[{"embeddable":true,"href":"https:\/\/www.fatware.jp\/index.php?rest_route=\/wp\/v2\/pages\/377"}],"wp:attachment":[{"href":"https:\/\/www.fatware.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=385"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}